<?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>220066</bug_id>
          
          <creation_ts>2020-12-21 12:20:26 -0800</creation_ts>
          <short_desc>Removed most uses of dispatch_async(dispatch_get_main_queue(), ...)</short_desc>
          <delta_ts>2021-01-26 10:53:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>koivisto</cc>
    
    <cc>philipj</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716062</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-21 12:20:26 -0800</bug_when>
    <thetext>Removed most uses of dispatch_async(dispatch_get_main_queue(), ...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716065</commentid>
    <comment_count>1</comment_count>
      <attachid>416621</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-21 12:38:23 -0800</bug_when>
    <thetext>Created attachment 416621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716071</commentid>
    <comment_count>2</comment_count>
      <attachid>416622</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-21 12:47:50 -0800</bug_when>
    <thetext>Created attachment 416622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716077</commentid>
    <comment_count>3</comment_count>
      <attachid>416625</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-21 12:58:26 -0800</bug_when>
    <thetext>Created attachment 416625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716099</commentid>
    <comment_count>4</comment_count>
      <attachid>416630</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-21 14:13:40 -0800</bug_when>
    <thetext>Created attachment 416630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716183</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-12-22 01:07:13 -0800</bug_when>
    <thetext>nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716782</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-28 12:21:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/72708297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719638</commentid>
    <comment_count>7</comment_count>
      <attachid>416630</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-01-14 10:39:05 -0800</bug_when>
    <thetext>Comment on attachment 416630
Patch

cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719639</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-14 10:44:18 -0800</bug_when>
    <thetext>Committed r271493: &lt;https://trac.webkit.org/changeset/271493&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416630.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722597</commentid>
    <comment_count>9</comment_count>
      <attachid>416630</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-26 10:53:09 -0800</bug_when>
    <thetext>Comment on attachment 416630
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextController.mm:108
&gt; +        RunLoop::main().dispatch([scheme = retainPtr(scheme)] {

Reverted this in http://trac.webkit.org/r271887</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416621</attachid>
            <date>2020-12-21 12:38:23 -0800</date>
            <delta_ts>2020-12-21 12:52:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220066-20201221123823.patch</filename>
            <type>text/plain</type>
            <size>88206</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTEyLTIxICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgLi4uKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgaGFzIHR3byBkb3du
c2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBpcyB1bmRlZmluZWQgKGFuZCBpbiBwcmFj
dGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRvCisgICAgICAgIG90aGVyIFdlYktpdCBv
cGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMgZmxha2luZXNzLgorCisgICAgICAgICgy
KSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZpcnN0IHBhaW50IG9wdGltaXphdGlvbi4K
KworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRpc3BhdGNoKCkgaW5zdGVhZC4KKworICAg
ICAgICAqIHd0Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW06CisgICAgICAgIChXVEY6OmRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWRXaXRoV2ViVGhyZWFkTG9ja0lmTmVlZGVkKToKKyAgICAgICAg
KFdURjo6Y2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKToKKwogMjAy
MC0xMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA4NjAuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9j
b2NvYS9NYWluVGhyZWFkQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY29j
b2EvTWFpblRocmVhZENvY29hLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV1RGL3d0
Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxzdGRpby5oPgogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0
Zi9SdW5Mb29wLmg+CkBAIC03MywxNCArNzQsMTYgQEAgdm9pZCBkaXNwYXRjaEFzeW5jT25NYWlu
VGhyZWFkV2l0aFdlYlRocgogewogI2lmIFVTRShXRUJfVEhSRUFEKQogICAgIGlmIChXZWJDb3Jl
V2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkgewotICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Jsb2NrID0gbWFrZUJsb2NrUHRyKGJsb2NrKV0g
ewogICAgICAgICAgICAgV2ViQ29yZVdlYlRocmVhZExvY2soKTsKICAgICAgICAgICAgIGJsb2Nr
KCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbYmxvY2sgPSBtYWtlQmxvY2tQdHIoYmxvY2spXSB7CisgICAg
ICAgIGJsb2NrKCk7CisgICAgfSk7CiB9CiAKIHZvaWQgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRj
aEFzeW5jT25NYWluVGhyZWFkKHZvaWQgKF5ibG9jaykoKSkKQEAgLTkxLDcgKzk0LDkgQEAgdm9p
ZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haQogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgYmxvY2spOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbYmxvY2sgPSBtYWtlQmxv
Y2tQdHIoYmxvY2spXSB7CisgICAgICAgIGJsb2NrKCk7CisgICAgfSk7CiB9CiAKICNpZiBVU0Uo
V0VCX1RIUkVBRCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDIwLTEy
LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
ZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
Li4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIw
MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlz
cGF0Y2hfYXN5bmMgaGFzIHR3byBkb3duc2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBp
cyB1bmRlZmluZWQgKGFuZCBpbiBwcmFjdGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRv
CisgICAgICAgIG90aGVyIFdlYktpdCBvcGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMg
Zmxha2luZXNzLgorCisgICAgICAgICgyKSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZp
cnN0IHBhaW50IG9wdGltaXphdGlvbi4KKworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRp
c3BhdGNoKCkgaW5zdGVhZC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uXSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlQZXJmb3JtSW5j
cmVtZW50QWN0aW9uXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlQZXJmb3JtRGVjcmVtZW50QWN0aW9uXSk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXR1cENvbnZlcnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1c2hTYW1wbGVzSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlc0ludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgor
ICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxsb2NdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzdFVuYmxvY2tBc3lu
YyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvd2VyU291cmNlTm90aWZpZXI6OlBvd2VyU291cmNlTm90aWZpZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRBVlBsYXllckl0ZW0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNsb25lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91bmRzT25NYWluVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6c2V0UG9zaXRpb25Pbk1haW5UaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpzZXRBbmNob3JQb2ludE9uTWFp
blRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOjptYXliZUJlY29tZVJlYWR5Rm9yTW9yZU1lZGlhRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmVucXVldWVEZWNvZGVkU2FtcGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6cmVxdWVz
dE1lZGlhRGF0YVdoZW5SZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb246Om5vdGlmeVdoZW5IYXNBdmFpbGFibGVWaWRlb0ZyYW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAg
ICgtW1dlYkFWUGxheWVyTGF5ZXIgbGF5b3V0U3VibGF5ZXJzXSk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmluYWxpemVTZXR1cCk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9FeGl0RnVsbHNjcmVlbik6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudDo6d2lsbEJlZ2luRmlyc3RUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQ6OmRpZEZpbmlzaExhc3RUcmFuc2FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCk6CisgICAgICAg
IChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5W
aWRlb0NvbnRlbnRMYXllcik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlvbkNoYW5nZWQpOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hh
bmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVy
ZWRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6cmF0ZUNoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2Vk
KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6Om11dGVkQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoTWFpblRocmVhZEFkb3B0QW5kUmVsZWFz
ZSk6CisgICAgICAgIChXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlQVZDYXB0dXJlRGV2aWNlTWFuYWdlck9ic2VydmVyIGRldmljZUNv
bm5lY3RlZERpZENoYW5nZTpdKToKKwogMjAyMC0xMi0xNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgd2Via2l0LSBwcmVmaXggdG8gU3BlZWNoUmVjb2du
aXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZp
c2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE2Niw3ICsz
MTY2LDcgQEAgLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uCiB7CiAgICAg
Ly8gSW4gY2FzZSBhbnl0aGluZyB3ZSBkbyBieSBwZXJmb3JtaW5nIHRoZSBwcmVzcyBhY3Rpb24g
Y2F1c2VzIGFuIGFsZXJ0IG9yIG90aGVyIG1vZGFsCiAgICAgLy8gYmVoYXZpb3JzLCB3ZSBuZWVk
IHRvIHJldHVybiBub3csIHNvIHRoYXQgVm9pY2VPdmVyIGRvZXNuJ3QgaGFuZyBpbmRlZmluaXRl
bHkuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7Cisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpXSB7CiAgICAgICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0
aW9uXTsKICAgICB9KTsKIH0KQEAgLTMxODUsNyArMzE4NSw3IEBAIC0gKHZvaWQpX2FjY2Vzc2li
aWxpdHlQZXJmb3JtUHJlc3NBY3Rpb24KIAogLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybUlu
Y3JlbWVudEFjdGlvbgogewotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UGVy
Zm9ybUluY3JlbWVudEFjdGlvbl07CiAgICAgfSk7CiB9CkBAIC0zMjA0LDcgKzMyMDQsNyBAQCAt
ICh2b2lkKV9hY2Nlc3NpYmlsaXR5UGVyZm9ybUluY3JlbWVudEFjCiAKIC0gKHZvaWQpYWNjZXNz
aWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb24KIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
c2VsZiwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICBbc2VsZiBf
YWNjZXNzaWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb25dOwogICAgIH0pOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0IDxtdXRleD4KICNpbXBvcnQgPHBhbC9h
dmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxzeXNsb2cuaD4K
KyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aD4KIAogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CkBAIC04Nyw3ICs4OCw3
IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0dXBDb24KIAogICAgIE9TU3Rh
dHVzIGVyciA9IEF1ZGlvQ29udmVydGVyTmV3KCZtX2lucHV0RGVzY3JpcHRpb24tPnN0cmVhbURl
c2NyaXB0aW9uKCksICZtX291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCAm
bV9jb252ZXJ0ZXIpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KCp0aGlzKSwgZXJyXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBlcnJdIHsKICAgICAgICAgICAgIEVS
Uk9SX0xPRygiQXVkaW9Db252ZXJ0ZXJOZXcgcmV0dXJuZWQgZXJyb3IgIiwgZXJyKTsKICAgICAg
ICAgfSk7CiAgICAgfQpAQCAtMTYxLDcgKzE2Miw3IEBAIHZvaWQgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdXNoU2FtcGxlc0kKIAogICAgIGlmIChtX2lucHV0U2FtcGxlT2Zmc2V0ID09IE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKSkgewogICAgICAgICBtX2lucHV0U2FtcGxlT2Zmc2V0ID0gTWVk
aWFUaW1lKDEgLSBzYW1wbGVUaW1lLnRpbWVWYWx1ZSgpLCBzYW1wbGVUaW1lLnRpbWVTY2FsZSgp
KTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2xv
Z0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBpbnB1dFNhbXBsZU9mZnNldCA9IG1faW5wdXRT
YW1wbGVPZmZzZXQudGltZVZhbHVlKCksIG1heGltdW1TYW1wbGVDb3VudCA9IG1fbWF4aW11bVNh
bXBsZUNvdW50LCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyldIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtsb2dJZGVudGlmaWVyID0gTE9HSURFTlRJ
RklFUiwgaW5wdXRTYW1wbGVPZmZzZXQgPSBtX2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVWYWx1ZSgp
LCBtYXhpbXVtU2FtcGxlQ291bnQgPSBtX21heGltdW1TYW1wbGVDb3VudCwgdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBBTFdBWVNfTE9HKGxv
Z0lkZW50aWZpZXIsICJpbnB1dCBzYW1wbGUgb2Zmc2V0IGlzICIsIGlucHV0U2FtcGxlT2Zmc2V0
LCAiLCBtYXhpbXVtU2FtcGxlQ291bnQgaXMgIiwgbWF4aW11bVNhbXBsZUNvdW50KTsKICAgICAg
ICAgfSk7CiAgICAgfQpAQCAtMjM4LDcgKzIzOSw3IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdWxsU2FtcGxlc0kKIAogICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IChlbmRG
cmFtZSAtIHNhbXBsZUNvdW50KSAtIHRpbWVTdGFtcDsKICAgICAgICAgbV9vdXRwdXRTYW1wbGVP
ZmZzZXQgLT0gY29tcHV0ZU9mZnNldERlbGF5KG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJh
dGUoKSwgbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJRVIs
IG91dHB1dFNhbXBsZU9mZnNldCA9IG1fb3V0cHV0U2FtcGxlT2Zmc2V0LCB0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtsb2dJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUiwgb3V0cHV0U2FtcGxlT2Zmc2V0
ID0gbV9vdXRwdXRTYW1wbGVPZmZzZXQsIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KCp0aGlzKV0gewogICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlmaWVyLCAic2V0dGlu
ZyBuZXcgb2Zmc2V0IHRvICIsIG91dHB1dFNhbXBsZU9mZnNldCk7CiAgICAgICAgIH0pOwogICAg
IH0KQEAgLTI0Niw3ICsyNDcsNyBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNh
bXBsZXNJCiAgICAgdGltZVN0YW1wICs9IG1fb3V0cHV0U2FtcGxlT2Zmc2V0OwogCiAgICAgaWYg
KHRpbWVTdGFtcCA8IHN0YXJ0RnJhbWUgfHwgdGltZVN0YW1wICsgc2FtcGxlQ291bnQgPiBlbmRG
cmFtZSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJRVIsIHRpbWVTdGFtcCwgc3RhcnRGcmFtZSwg
ZW5kRnJhbWUsIHNhbXBsZUNvdW50LCBvdXRwdXRTYW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBs
ZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJ
RVIsIHRpbWVTdGFtcCwgc3RhcnRGcmFtZSwgZW5kRnJhbWUsIHNhbXBsZUNvdW50LCBvdXRwdXRT
YW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBFUlJPUl9MT0cobG9nSWRlbnRpZmll
ciwgIm5vdCBlbm91Z2ggZGF0YSwgc2FtcGxlICIsIHRpbWVTdGFtcCwgIiB3aXRoIG9mZnNldCAi
LCBvdXRwdXRTYW1wbGVPZmZzZXQsICIsIHRyeWluZyB0byBnZXQgIiwgc2FtcGxlQ291bnQsICIg
c2FtcGxlcywgYnV0IG5vdCBjb21wbGV0ZWx5IGluIHJhbmdlIFsiLCBzdGFydEZyYW1lLCAiIC4u
ICIsIGVuZEZyYW1lLCAiXSIpOwogICAgICAgICB9KTsKIApAQCAtMjU5LDcgKzI2MCw3IEBAIGJv
b2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlc0kKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFdlIGFyZSB0b28gY2xvc2UgZnJvbSBlbmRGcmFtZSwgbGV0J3Mgd2Fp
dCBmb3IgbW9yZSBkYXRhIHRvIGJlIHB1c2hlZC4KICAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxl
T2Zmc2V0IC09IHNhbXBsZUNvdW50OwotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW2xvZ0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBvdXRw
dXRTYW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2xvZ0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBvdXRwdXRTYW1wbGVPZmZzZXQg
PSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
KnRoaXMpXSB7CiAgICAgICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlmaWVyLCAidXBk
YXRpbmcgb2Zmc2V0IHRvICIsIG91dHB1dFNhbXBsZU9mZnNldCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbkhlbHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCShyZXZpc2lvbiAyNzA4NjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNyArMzYyLDcgQEAgLSAoaWQpaW5pdFdpdGhDYWxs
YmFjazooTWVkaWFTZXNzaW9uSGVscAogI2VuZGlmCiAKICAgICAvLyBOb3cgcGxheWluZyB3b24n
dCB3b3JrIHVubGVzcyB3ZSB0dXJuIG9uIHRoZSBkZWxpdmVyeSBvZiByZW1vdGUgY29udHJvbCBl
dmVudHMuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKICAgICAgICAgW1tQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIHNo
YXJlZEFwcGxpY2F0aW9uXSBiZWdpblJlY2VpdmluZ1JlbW90ZUNvbnRyb2xFdmVudHNdOwogICAg
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC0zNzcsNyArMzc3LDcgQEAgLSAodm9p
ZClkZWFsbG9jCiAKICNpZiAhUExBVEZPUk0oV0FUQ0hPUykKICAgICBpZiAoIXB0aHJlYWRfbWFp
bl9ucCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtyb3V0ZURldGVjdG9yID0gV1RGTW92ZShfcm91dGVEZXRlY3RvcildICgpIG11dGFibGUg
eworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JvdXRlRGV0ZWN0b3IgPSBXVEZN
b3ZlKF9yb3V0ZURldGVjdG9yKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBMT0coTWVkaWEs
ICJzYWZlbHlUZWFyRG93biAtIGRpcGF0Y2hlZCB0byBVSSB0aHJlYWQuIik7CiAgICAgICAgICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAgICAgICAgIHJvdXRlRGV0ZWN0b3Iu
Z2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gTk87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEzNywyMyArMTM3LDEyIEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOjpjYW5IYW4KICAgICByZXR1cm4gaXNVbmJsb2NrUmVxdWVzdDsKIH0KIAotc3RhdGljIGlu
bGluZSB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKHZvaWQgKF5ibG9jaykoKSkKLXsKLSAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgICAgIFdlYlRocmVhZFJ1bihibG9jayk7Ci0jZWxzZQotICAgICAg
ICBibG9jaygpOwotI2VuZGlmCi0gICAgfSk7Ci19Ci0KIHZvaWQgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyOjpyZXF1ZXN0VW5ibG9ja0FzeW5jKERlY2lzaW9uSGFuZGxlckZ1bmN0aW9uIGRl
Y2lzaW9uSGFuZGxlcikgY29uc3QKIHsKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhf
VU5CTE9DS19IQU5ETEVSKQogICAgIGlmIChtX3dlYkZpbHRlckV2YWx1YXRvcikgewogICAgICAg
ICBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgdW5ibG9ja1dpdGhDb21wbGV0aW9uOltkZWNpc2lvbkhh
bmRsZXJdKEJPT0wgdW5ibG9ja2VkLCBOU0Vycm9yICopIHsKLSAgICAgICAgICAgIGRpc3BhdGNo
VG9NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0geworICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsKICAgICAgICAg
ICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIldlYkZpbHRlckV2YWx1YXRvciAlcyB0aGUg
dW5ibG9jayByZXF1ZXN0LlxuIiwgdW5ibG9ja2VkID8gImFsbG93ZWQiIDogImRpZCBub3QgYWxs
b3ciKTsKICAgICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAg
ICAgICAgIH0pOwpAQCAtMTY0LDcgKzE1Myw3IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyOjpyZXF1ZXMKIAogICAgIGlmIChtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKICAgICAgICAg
bV91bmJsb2NrUmVxdWVzdGVyKFtkZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5ibG9ja2VkKSB7Ci0g
ICAgICAgICAgICBkaXNwYXRjaFRvTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2Nr
ZWRdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlciwgdW5i
bG9ja2VkXSB7CiAgICAgICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKHVuYmxvY2tlZCk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9Qb3dlclNvdXJjZU5vdGlmaWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIubW0JKHJldmlzaW9uIDI3MDg2
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIlN5c3RlbUJhdHRl
cnkuaCIKICNpbXBvcnQgPG5vdGlmeS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT1BTTGli
U1BJLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ1LDcgKzQ2LDcgQEAgUG93ZXJTb3VyY2VOb3RpZmllcjo6UG93ZXJTb3VyY2VOb3RpZmll
cgogCiAgICAgLy8gSWYgdGhlIGN1cnJlbnQgdmFsdWUgb2Ygc3lzdGVtSGFzQUMoKSBpcyB1bmNh
Y2hlZCwgZm9yY2UgYSBub3RpZmljYXRpb24uCiAgICAgaWYgKCFjYWNoZWRTeXN0ZW1IYXNBQygp
KSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBp
ZiAod2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm5vdGlmeVBvd2VyU291cmNl
Q2hhbmdlZCgpOwogICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2
aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTA5LDcgKzkwOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzoKIAogICAgIFJldGFpblB0cjxBVlBsYXllcj4gc3Ryb25nUGxheWVyID0gbV9h
dlBsYXllci5nZXQoKTsKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtPiBzdHJvbmdJdGVtID0g
aXRlbTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ry
b25nUGxheWVyLCBzdHJvbmdJdGVtXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
dHJvbmdQbGF5ZXIsIHN0cm9uZ0l0ZW1dIHsKICAgICAgICAgW3N0cm9uZ1BsYXllciByZXBsYWNl
Q3VycmVudEl0ZW1XaXRoUGxheWVySXRlbTpzdHJvbmdJdGVtLmdldCgpXTsKICAgICB9KTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCShyZXZpc2lvbiAyNzA4Njkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcyLDcgKzM3Miw3IEBAIFJlZjxQbGF0
Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllckNvY28KICAgICAgICAgQVZQbGF5ZXJMYXllciAq
c291cmNlUGxheWVyTGF5ZXIgPSBhdlBsYXllckxheWVyKCk7CiAgICAgICAgIEFTU0VSVChzb3Vy
Y2VQbGF5ZXJMYXllcik7CiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtkZXN0aW5h
dGlvblBsYXllckxheWVyID0gcmV0YWluUHRyKGRlc3RpbmF0aW9uUGxheWVyTGF5ZXIpLCBzb3Vy
Y2VQbGF5ZXJMYXllciA9IHJldGFpblB0cihzb3VyY2VQbGF5ZXJMYXllcildIHsKICAgICAgICAg
ICAgIFtkZXN0aW5hdGlvblBsYXllckxheWVyIHNldFBsYXllcjpbc291cmNlUGxheWVyTGF5ZXIg
cGxheWVyXV07CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTEwOTMsNyArMTA5Myw3IEBAIGJvb2wg
UGxhdGZvcm1DQUxheWVyOjppc1dlYkxheWVyKCkKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRC
b3VuZHNPbk1haW5UaHJlYWQoQ0dSZWN0IGJvdW5kcykKIHsKICAgICBDQUxheWVyICpsYXllciA9
IG1fbGF5ZXIuZ2V0KCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAgICAgW2xheWVyIHNldEJvdW5kczpib3VuZHNd
OwogICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC0xMTAzLDcgKzExMDMsNyBA
QCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91bmRzT25NYWluVGhyCiB2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6c2V0UG9zaXRpb25Pbk1haW5UaHJlYWQoQ0dQb2ludCBwb3NpdGlvbikKIHsKICAg
ICBDQUxheWVyICpsYXllciA9IG1fbGF5ZXIuZ2V0KCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W10gewogICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAgICAgW2xheWVy
IHNldFBvc2l0aW9uOnBvc2l0aW9uXTsKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwpAQCAtMTExMyw3ICsxMTEzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFBvc2l0aW9u
T25NYWluVAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEFuY2hvclBvaW50T25NYWluVGhyZWFk
KEZsb2F0UG9pbnQzRCB2YWx1ZSkKIHsKICAgICBDQUxheWVyICpsYXllciA9IG1fbGF5ZXIuZ2V0
KCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKICAgICAgICAgW2xheWVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKHZh
bHVlLngoKSwgdmFsdWUueSgpKV07CiAgICAgICAgIFtsYXllciBzZXRBbmNob3JQb2ludFo6dmFs
dWUueigpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0J
KHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAx
LDcgKzEwMSw3IEBAIHZvaWQgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjptYXliZUIKICAg
ICB9CiAKICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBwcm90ZWN0ZWRU
aGlzIHsgdGhpcyB9OwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX25vdGlmaWNhdGlvbkNh
bGxiYWNrKQogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9ub3RpZmljYXRpb25DYWxsYmFj
aygpOwogICAgIH0pOwpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOjplbnF1ZXUKICAgICBpZiAoIXNob3VsZE5vdGlmeSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUobV9oYXNBdmFp
bGFibGVGcmFtZUNhbGxiYWNrKV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShtX2hhc0F2
YWlsYWJsZUZyYW1lQ2FsbGJhY2spXSB7CiAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgfSk7CiB9
CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OnJl
cXVlcwogCiAgICAgaWYgKG5vdGlmaWNhdGlvbkNhbGxiYWNrICYmIGlzUmVhZHlGb3JNb3JlTWVk
aWFEYXRhKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbj4g
cHJvdGVjdGVkVGhpcyB7IHRoaXMgfTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+bV9ub3RpZmljYXRpb25DYWxsYmFjaykKICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5tX25vdGlmaWNhdGlvbkNhbGxiYWNrKCk7CiAgICAgICAgIH0pOwpAQCAtNDUzLDcgKzQ1
Myw3IEBAIHZvaWQgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpzdG9wUmUKIHZvaWQgV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpub3RpZnlXaGVuSGFzQXZhaWxhYmxlVmlkZW9GcmFt
ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY2FsbGJhY2spCiB7CiAgICAgaWYgKGNhbGxiYWNrICYm
IG1fcHJvZHVjZXJRdWV1ZSAmJiAhQ01CdWZmZXJRdWV1ZUlzRW1wdHkobV9wcm9kdWNlclF1ZXVl
LmdldCgpKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbY2FsbGJhY2tdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxs
YmFja10gewogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0JKHJldmlzaW9uIDI3MDg2OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBAIC0gKHZvaWQpbGF5b3V0U3Vi
bGF5ZXJzCiAgICAgW3ZpZXcgc2V0VHJhbnNmb3JtOnRyYW5zZm9ybV07CiAKICAgICBOU1RpbWVJ
bnRlcnZhbCBhbmltYXRpb25EdXJhdGlvbiA9IFtDQVRyYW5zYWN0aW9uIGFuaW1hdGlvbkR1cmF0
aW9uXTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewor
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CiAgICAgICAgIFtOU09iamVjdCBjYW5j
ZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IocmVzb2x2ZUJvdW5kcykgb2JqZWN0Om5pbF07CiAKICAgICAgICAgX3ZpZGVvU3VibGF5ZXJG
cmFtZSA9IHRhcmdldFZpZGVvRnJhbWU7CkBAIC0xNDE1LDcgKzE0MTUsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmZpbmFsaXplU2V0dXAoKQogewotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpc10geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIodGhpcyksIHRoaXNdIHsKICAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyKSB7CiAgICAgICAgICAgICBpZiAoIW1faGFzVmlkZW9Db250ZW50TGF5ZXIgJiYgbV90
YXJnZXRNb2RlLmhhc1ZpZGVvKCkpIHsKICAgICAgICAgICAgICAgICBtX2ZpbmFsaXplU2V0dXBO
ZWVkc1ZpZGVvQ29udGVudExheWVyID0gdHJ1ZTsKQEAgLTE1MzQsNyArMTUzNCw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRXgKIAogICAgIG1fc3RhbmRieSA9IGZh
bHNlOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CisgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10gewog
ICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCiAgICAgICAgICAgICBtX2Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKICAgICB9KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJD
bGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNR
TGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtNjEsMTQgKzYxLDE0IEBAIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
ckNsaWVudDo6fldlYlNRTGkKIAogdm9pZCBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6
OndpbGxCZWdpbkZpcnN0VHJhbnNhY3Rpb24oKQogewotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFt0aGlzXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt0aGlzXSB7CiAgICAgICAgIG1faHlzdGVyZXNpcy5zdGFydCgpOwogICAgIH0pOwogfQog
CiB2b2lkIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlkRmluaXNoTGFzdFRyYW5z
YWN0aW9uKCkKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbdGhpc10geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpc10gewogICAgICAg
ICBtX2h5c3RlcmVzaXMuc3RvcCgpOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6cgogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFdlYlRocmVhZFJ1bihbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdICgpIG11dGFibGUgewogICAgICAg
ICBJbnRSZWN0IGNsaWVudFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93KG1fdmlkZW9FbGVtZW50
LmdldCgpKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjbGllbnRS
ZWN0XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNsaWVudFJlY3RdIHsKICAgICAgICAgICAg
IG1faW50ZXJmYWNlLT5zZXRJbmxpbmVSZWN0KGNsaWVudFJlY3QsIGNsaWVudFJlY3QgIT0gSW50
UmVjdCgwLCAwLCAwLCAwKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtMjU4LDcgKzI1OCw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnIKICAgICBXZWJUaHJl
YWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCB2aWRlb0Z1bGxz
Y3JlZW5MYXllciA9IHJldGFpblB0cihbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXSldICgp
IG11dGFibGUgewogICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENv
bG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50QmxhY2spXTsKICAg
ICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVs
bHNjcmVlbkxheWVyLmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIHRoaXNdICgpIG11dGFibGUgewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCB0aGlzXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFtX2ludGVyZmFjZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0y
NzgsNyArMjc4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cgog
ICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMs
IHZpZGVvRnVsbHNjcmVlbkxheWVyID0gcmV0YWluUHRyKFttX3ZpZGVvRnVsbHNjcmVlblZpZXcg
bGF5ZXJdKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRC
YWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnRC
bGFjayldOwogICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdICgp
IG11dGFibGUgewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSB7
CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2lu
dGVyZmFjZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTUsMTQgKzI5NSwx
NCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkCiB7CiAgICAgQVNT
RVJUKGlzVUlUaHJlYWQoKSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CiAgICAgICAgIG1faW50ZXJmYWNl
LT5lbnRlckZ1bGxzY3JlZW4oKTsKICAgICB9KTsKICNlbHNlCiAgICAgV2ViVGhyZWFkUnVuKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgPSByZXRhaW5QdHIoW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl0pXSAoKSBtdXRhYmxl
IHsKICAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNo
ZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudEJsYWNrKV07CiAgICAgICAgIG1f
ZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5M
YXllci5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlz
XSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhp
c10geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gewogICAgICAgICAgICAgICAgIG1faW50
ZXJmYWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
QEAgLTMyNCwxMyArMzI0LDEzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OmQKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10geworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKICAg
ICAgICAgbV9pbnRlcmZhY2UtPmNsZWFudXBGdWxsc2NyZWVuKCk7CiAgICAgfSk7CiAjZWxzZQog
ICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNd
ICgpIG11dGFibGUgewogICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRo
aXNdICgpIG11dGFibGUgewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0
aGlzXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSB7CiAgICAgICAgICAgICAgICAgbV9p
bnRlcmZhY2UtPmNsZWFudXBGdWxsc2NyZWVuKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fSk7CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZgogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFdlYlRocmVhZFJ1bihbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdICgpIG11dGFibGUgewogICAgICAg
ICBJbnRSZWN0IGNsaWVudFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93KG1fdmlkZW9FbGVtZW50
LmdldCgpKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjbGllbnRS
ZWN0XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNsaWVudFJlY3RdIHsKICAgICAgICAgICAg
IG1faW50ZXJmYWNlLT5wcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUodHJ1ZSwgY2xpZW50UmVjdCk7
CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtMzc1LDcgKzM3NSw3IEBAICAgICAgICAgICAgIG1f
aW50ZXJmYWNlLT5wcmVwYXJlZFRvUmV0dXIKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmR1cmF0aW9uQ2hhbmdlZChkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgaWYgKFdl
YlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgZHVyYXRp
b25dIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZlB0cih0aGlzKSwgZHVyYXRpb25dIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6ZAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y3VycmVudFRpbWVD
aGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7CiAgICAgaWYg
KFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY3Vy
cmVudFRpbWUsIGFuY2hvclRpbWVdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY3VycmVudFRpbWUsIGFuY2hvclRp
bWVdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmN1cnJlbnRUaW1lQ2hhbmdlZChjdXJy
ZW50VGltZSwgYW5jaG9yVGltZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC00
MDEsNyArNDAxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Ywog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVyZWRUaW1lQ2hhbmdl
ZChkb3VibGUgYnVmZmVyZWRUaW1lKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkg
ewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGJ1ZmZlcmVkVGltZV0geworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
LCBidWZmZXJlZFRpbWVdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmJ1ZmZlcmVkVGlt
ZUNoYW5nZWQoYnVmZmVyZWRUaW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTQxNCw3ICs0MTQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpi
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyYXRlQ2hhbmdlZChib29s
IGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1
cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGlzUGxheWluZywgcGxheWJh
Y2tSYXRlXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIGlzUGxheWluZywgcGxheWJhY2tSYXRlXSB7CiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5yYXRlQ2hhbmdlZChpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7
CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC00MjcsNyArNDI3LDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cgogdm9pZCBWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6aGFzVmlkZW9DaGFuZ2VkKGJvb2wgaGFzVmlkZW8pCiB7CiAgICAg
aWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
aGFzVmlkZW9dIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZlB0cih0aGlzKSwgaGFzVmlkZW9dIHsKICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmhhc1ZpZGVvQ2hhbmdlZChoYXNWaWRlbyk7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6aAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6dmlkZW9E
aW1lbnNpb25zQ2hhbmdlZChjb25zdCBGbG9hdFNpemUmIHZpZGVvRGltZW5zaW9ucykKIHsKICAg
ICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
LCB2aWRlb0RpbWVuc2lvbnMgPSB2aWRlb0RpbWVuc2lvbnNdIHsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9E
aW1lbnNpb25zID0gdmlkZW9EaW1lbnNpb25zXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT52aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHZpZGVvRGltZW5zaW9ucyk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6dgogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWVSYW5nZXMsIGRv
dWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKQogewogICAg
IGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IHBsYXRmb3JtVGltZVJhbmdlcyA9IHRpbWVSYW5nZXMucmFuZ2VzKCksIGxhc3RNb2RpZmllZFRp
bWUsIGxpdmVVcGRhdGVJbnRlcnZhbF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBwbGF0Zm9ybVRpbWVSYW5nZXMg
PSB0aW1lUmFuZ2VzLnJhbmdlcygpLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2
YWxdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChU
aW1lUmFuZ2VzOjpjcmVhdGUocGxhdGZvcm1UaW1lUmFuZ2VzKSwgbGFzdE1vZGlmaWVkVGltZSwg
bGl2ZVVwZGF0ZUludGVydmFsKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ2
Niw3ICs0NjYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VD
aGFuZ2VkKGJvb2wgY2FuUGxheUZhc3RSZXZlcnNlKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1
cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNhblBsYXlGYXN0UmV2ZXJz
ZV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCBjYW5QbGF5RmFzdFJldmVyc2VdIHsKICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY2FuUGxheUZhc3RSZXZlcnNlKTsK
ICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4OCw3ICs0ODgsNyBAQCBzdGF0aWMg
VmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiBpc29sCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpLCBvcHRpb25zID0gaXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZElu
ZGV4XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyksIG9wdGlvbnMgPSBpc29sYXRlZENvcHkob3B0aW9ucyksIHNlbGVj
dGVkSW5kZXhdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjphCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAg
IGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IG9wdGlvbnMgPSBpc29sYXRlZENvcHkob3B0aW9ucyksIHNlbGVjdGVkSW5kZXhdIHsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0
aGlzKSwgb3B0aW9ucyA9IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2VsZWN0ZWRJbmRleF0gewog
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0No
YW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1
cm47CkBAIC01MjgsNyArNTI4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6d2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGJvb2wgZGlzYWJsZWQpCiB7CiAgICAgaWYgKFdl
YlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgZGlzYWJs
ZWRdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZlB0cih0aGlzKSwgZGlzYWJsZWRdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChkaXNhYmxlZCk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6dwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6bXV0ZWRDaGFuZ2VkKGJvb2wgbXV0ZWQpCiB7CiAgICAgaWYgKFdlYlRocmVhZElz
Q3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgbXV0ZWRdIHsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0
aGlzKSwgbXV0ZWRdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm11dGVkQ2hhbmdlZCht
dXRlZCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC01NTQsNyArNTU0LDcgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bQogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6dm9sdW1lQ2hhbmdlZChkb3VibGUgdm9sdW1lKQogewog
ICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHZvbHVtZV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2b2x1bWVdIHsKICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPnZvbHVtZUNoYW5nZWQodm9sdW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTk4Myw3ICs5ODMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzCiAKICAgICBGbG9hdFNpemUgdmlkZW9EaW1lbnNpb25zID0geyAoZmxvYXQpdmlkZW9F
bGVtZW50LnZpZGVvV2lkdGgoKSwgKGZsb2F0KXZpZGVvRWxlbWVudC52aWRlb0hlaWdodCgpIH07
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIHZpZGVvRWxlbWVudENsaWVudFJlY3Qs
IHZpZGVvRGltZW5zaW9ucywgdmlld1JlZiwgbW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZV0g
eworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyksIHRoaXMsIHZpZGVvRWxlbWVudENsaWVudFJlY3QsIHZpZGVvRGltZW5zaW9ucywg
dmlld1JlZiwgbW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZV0gewogICAgICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwogCkBAIC0xMDAyLDcgKzEw
MDIsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjplCiB7CiAgICAg
QVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpIHx8IGlzTWFpblRocmVhZCgpKTsKICAgICBJbnRS
ZWN0IGNsaWVudFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93KG1fdmlkZW9FbGVtZW50LmdldCgp
KTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNsaWVudFJlY3RdIHsKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0
aGlzLCBjbGllbnRSZWN0XSB7CiAgICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgICAg
ICBtX2ludGVyZmFjZS0+ZXhpdEZ1bGxzY3JlZW4oY2xpZW50UmVjdCk7CiAgICAgfSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1t
CShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMg
dm9pZCBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkCiAgICAgLy8gV2Ugb3duIG9iaiBhdCB0
aGlzIHBvaW50LCBzbyB3ZSBkb24ndCBuZWVkIHRoZSBibG9jayB0byBpbXBsaWNpdGx5CiAgICAg
Ly8gcmV0YWluIGl0LgogICAgIF9fYmxvY2sgaWQgb2JqTm90UmV0YWluZWQgPSBvYmo7Ci0gICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICBbb2JqTm90UmV0YWluZWQgcmVsZWFzZV07
CiAgICAgfSk7CiB9CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBXZWJUaHJlYWRQb3N0Tm90aWZp
Y2F0aW9uKE5TU3RyaW5nKgogICAgIGlmIChwdGhyZWFkX21haW5fbnAoKSkKICAgICAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpu
YW1lIG9iamVjdDpvYmplY3QgdXNlckluZm86dXNlckluZm9dOwogICAgIGVsc2UgewotICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeIHsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAgICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6bmFtZSBvYmplY3Q6
b2JqZWN0IHVzZXJJbmZvOnVzZXJJbmZvXTsKICAgICAgICAgfSk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00NTYsNyArNDU2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldHVw
RgogCiAgICAgW3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU9iakMoKSBzZXRVcFBJUEZvclZpZGVv
VmlldzombGF5ZXJIb3N0ZWRWaWV3IHdpdGhGcmFtZTooTlNSZWN0KWluaXRpYWxSZWN0IGluV2lu
ZG93OnBhcmVudFdpbmRvd107CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRo
aXMpLCB0aGlzXSB7CiAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAg
ICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1bGxzY3JlZW4o
KTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZp
c2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcgKzI2MCw3
IEBAIC0gKHZvaWQpZGV2aWNlQ29ubmVjdGVkRGlkQ2hhbmdlOihOU05vdGkKICAgICBpZiAoIW1f
Y2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxm
LCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIGlmIChtX2NhbGxi
YWNrKQogICAgICAgICAgICAgbV9jYWxsYmFjay0+cmVmcmVzaENhcHR1cmVEZXZpY2VzKCk7CiAg
ICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjcxMDM2KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw5MSBAQAorMjAyMC0xMi0yMSAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZWQgbW9zdCB1
c2VzIG9mIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIC4uLikKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDA2NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRpc3BhdGNoX2Fz
eW5jIGhhcyB0d28gZG93bnNpZGVzOgorCisgICAgICAgICgxKSBJdHMgb3JkZXIgaXMgdW5kZWZp
bmVkIChhbmQgaW4gcHJhY3RpY2UgaGlnaGx5IHZhcmlhYmxlKSByZWxhdGl2ZSB0bworICAgICAg
ICBvdGhlciBXZWJLaXQgb3BlcmF0aW9ucy4gVGhpcyBzb21ldGltZXMgY2F1c2VzIGZsYWtpbmVz
cy4KKworICAgICAgICAoMikgSXQgZG9lc24ndCBob25vciB0aGUgUnVuTG9vcCBmaXJzdCBwYWlu
dCBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgV2UgY2FuIHVzZSBSdW5Mb29wOjpkaXNwYXRjaCgp
IGluc3RlYWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0
aW9uRGVsZWdhdGUubW06CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0
ZSBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpdKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
RGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06CisgICAgICAgIChXZWJLaXQ6OmRldGVybWluZUlU
UFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVN
YWMubW06CisgICAgICAgIChXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW06CisgICAg
ICAgICgrW05TQXR0cmlidXRlZFN0cmluZyBfbG9hZEZyb21IVE1MV2l0aE9wdGlvbnM6Y29udGVu
dExvYWRlcjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKCtbV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6XSk6Cisg
ICAgICAgICgrW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9y
Q3VzdG9tUHJvdG9jb2w6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFzQXN5bmNG
dW5jdGlvbjp3aXRoU291cmNlVVJMOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTppbkZy
YW1lOmluV29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
aW50ZXJuYWxEb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTp3aXRob3V0V2FpdGluZ0ZvclBh
aW50aW5nOndpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2RvQWZ0ZXJOZXh0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
Y2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZUFmdGVyU2Nyb2xsSW5WaWV3Ol0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9maXJlUHJlc2VudGF0aW9uVXBkYXRlRm9yUGVuZGluZ1N0YWJsZVN0YXRl
UHJlc2VudGF0aW9uQ2FsbGJhY2tzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZG9BZnRlck5l
eHRTdGFibGVQcmVzZW50YXRpb25VcGRhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L0F1dG9tYXRpb25DbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ6
OnJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6dHJ5SW50ZXJjZXB0TmF2aWdhdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbToKKyAg
ICAgICAgKC1bV0tQcmVmZXJlbmNlT2JzZXJ2ZXIgcHJlZmVyZW5jZURpZENoYW5nZTprZXk6ZW5j
b2RlZFZhbHVlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJJbnNwZWN0b3JQcmVm
ZXJlbmNlT2JzZXJ2ZXIubW06CisgICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9i
c2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6d2ViUHJvY2Vzc1Bvb2xIaWdoRHluYW1pY1JhbmdlRGlkQ2hhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAg
KC1bV0tET01QYXN0ZU1lbnVEZWxlZ2F0ZSBtZW51RGlkQ2xvc2U6XSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVXaW5kb3dBbmRWaWV3RnJhbWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnNldFRvcENvbnRlbnRJbnNldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpkaWRCZWNvbWVFZGl0YWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpyZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbklmTmVlZGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpFbmRv
d21lbnRTdGF0ZVRyYWNrZXI6OnJlZ2lzdGVyTW9uaXRvcklmTmVjZXNzYXJ5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbToKKyAgICAgICAgKC1bX1dLVG91
Y2hFdmVudEdlbmVyYXRvciBfc2VuZEhJREV2ZW50Ol0pOgorICAgICAgICAoLVtfV0tUb3VjaEV2
ZW50R2VuZXJhdG9yIF9zZW5kTWFya2VySElERXZlbnRXaXRoQ29tcGxldGlvbkJsb2NrOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAg
KC1bV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIF91cGRhdGVCYWNrZ3Jv
dW5kVGFza10pOgorICAgICAgICAoLVtXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01h
bmFnZXIgX2hhbmRsZUJhY2tncm91bmRUYXNrRXhwaXJhdGlvbk9uTWFpblRocmVhZF0pOgorICAg
ICAgICAoLVtXS1JCU0Fzc2VydGlvbkRlbGVnYXRlIGFzc2VydGlvbjpkaWRJbnZhbGlkYXRlV2l0
aEVycm9yOl0pOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjpQcm9jZXNzQXNz
ZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXNpZ25GaXJzdFJlc3BvbmRlckZvcldl
YlZpZXddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAg
KC1bV0tQREZWaWV3IHBkZkhvc3RWaWV3Q29udHJvbGxlckV4dGVuc2lvblByb2Nlc3NEaWRDcmFz
aDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1t
OgorICAgICAgICAoLVtXS0ZpbGVVcGxvYWRQYW5lbCBpbWFnZVBpY2tlckNvbnRyb2xsZXI6ZGlk
RmluaXNoUGlja2luZ01lZGlhV2l0aEluZm86XSk6CisgICAgICAgICgtW1dLRmlsZVVwbG9hZFBh
bmVsIGltYWdlUGlja2VyQ29udHJvbGxlcjpkaWRGaW5pc2hQaWNraW5nTXVsdGlwbGVNZWRpYVdp
dGhJbmZvOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyIHBsYWNlaG9sZGVyV2lsbE1vdmVUb1N1cGVydmlldzpdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpj
bG9uZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXR1cm5WaWRlb0NvbnRlbnRMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVs
bHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxF
eGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmRpZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4pOgorCiAyMDIwLTEyLTIxICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIE1hbnkgd2Vic2l0ZXMg
Y3Jhc2ggdW5kZXIgdG9EYXRhVVJMKCkgd2hlbiBlbmFibGluZyBHUFUgcHJvY2VzcyBmb3IgRE9N
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjcwODY5KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCAtICh2b2lkKV9kaWRSZXF1
ZXN0TWVyY2hhbnRTZXNzaW9uOihXZWJLCiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAg
IExPR19FUlJPUigiUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9t
YWluIGVycm9yICVAIiwgZXJyb3IpOwogCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
c2VsZiwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgbWVyY2hhbnRVUkwgPSByZXRh
aW5QdHIobWVyY2hhbnRVUkwpXSB7CiAgICAgICAgICAgICBBU1NFUlQoX2RpZFJlcXVlc3RNZXJj
aGFudFNlc3Npb25Db21wbGV0aW9uKTsKIAogICAgICAgICAgICAgYXV0byBwcmVzZW50ZXIgPSBf
cHJlc2VudGVyLmdldCgpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIC0gKHZvaWQpX2RpZFJlcXVlc3RN
ZXJjaGFudFNlc3Npb246KFdlYksKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHByZXNlbnRlci0+Y2xpZW50KCkucHJlc2VudGVyV2lsbFZhbGlk
YXRlTWVyY2hhbnQoKnByZXNlbnRlciwgbWVyY2hhbnRVUkwpOworICAgICAgICAgICAgcHJlc2Vu
dGVyLT5jbGllbnQoKS5wcmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudCgqcHJlc2VudGVyLCBt
ZXJjaGFudFVSTC5nZXQoKSk7CiAgICAgICAgIH0pOwogICAgIH1dOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3Mu
bW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1
bHRXZWJCcm93c2VyQ2hlY2tzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBkZXRlcm1pbmVJVFBTdGF0ZSgpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZ19pdHBRdWV1ZSwg
W2FwcFdhc0xpbmtlZE9uT3JBZnRlciwgYnVuZGxlSWRlbnRpZmllciA9IFdlYkNvcmU6OmFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigpLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGdfY3Vy
cmVudElUUFN0YXRlID0gZGV0ZXJtaW5lSVRQU3RhdGVJbnRlcm5hbChhcHBXYXNMaW5rZWRPbk9y
QWZ0ZXIsIGJ1bmRsZUlkZW50aWZpZXIpID8gSVRQU3RhdGU6OkVuYWJsZWQgOiBJVFBTdGF0ZTo6
RGlzYWJsZWQ7CiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAg
ICAgIGRpc3BhdGNoX3JlbGVhc2UoZ19pdHBRdWV1ZSk7CiAgICAgICAgICAgICBnX2l0cFF1ZXVl
ID0gbnVsbHB0cjsKICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9F
bmRvd21lbnRTdGF0ZVRyYWNrZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEVuZG93bWVudFN0YXRlVHJhY2tlcjo6cmVnaXN0
ZXJNb25pCiAgICAgICAgIFtjb25maWcgc2V0U3RhdGVEZXNjcmlwdG9yOnN0YXRlRGVzY3JpcHRv
cl07CiAKICAgICAgICAgW2NvbmZpZyBzZXRVcGRhdGVIYW5kbGVyOlt0aGlzXSAoUkJTUHJvY2Vz
c01vbml0b3IgKiBfTm9ubnVsbCBtb25pdG9yLCBSQlNQcm9jZXNzSGFuZGxlICogX05vbm51bGwg
cHJvY2VzcywgUkJTUHJvY2Vzc1N0YXRlVXBkYXRlICogX05vbm51bGwgdXBkYXRlKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFt0aGlzLCBzdGF0ZSA9IHN0YXRlRnJvbUVuZG93bWVudHModXBkYXRlLnN0YXRlLmVuZG93bWVu
dE5hbWVzcGFjZXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0aGlzLCBzdGF0ZSA9IHN0YXRlRnJvbUVuZG93bWVudHModXBkYXRlLnN0YXRlLmVu
ZG93bWVudE5hbWVzcGFjZXMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIHNldFN0YXRl
KFdURk1vdmUoc3RhdGUpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9XTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQko
cmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVu
dEdlbmVyYXRvci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIC0gKEJPT0wp
X3NlbmRISURFdmVudDooSU9ISURFdmVudFJlZilldmUKIAogICAgIGlmIChldmVudFJlZikgewog
ICAgICAgICBSZXRhaW5QdHI8SU9ISURFdmVudFJlZj4gc3Ryb25nRXZlbnQgPSBldmVudFJlZjsK
LSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICB1aW50MzJfdCBjb250ZXh0SUQgPSBbVUlBcHBs
aWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0ua2V5V2luZG93Ll9jb250ZXh0SWQ7CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTI0MCw3ICsyNDAsNyBAQCAtIChCT09MKV9z
ZW5kTWFya2VySElERXZlbnRXaXRoQ29tcGxldGlvCiAgICAgICAgIGtJT0hJREV2ZW50T3B0aW9u
Tm9uZSkpOwogICAgIAogICAgIGlmIChtYXJrZXJFdmVudCkgewotICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbWFya2VyRXZlbnQgPSBXVEZNb3ZlKG1h
cmtlckV2ZW50KV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW21hcmtlckV2
ZW50ID0gV1RGTW92ZShtYXJrZXJFdmVudCldIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgICAgICAgICBhdXRvIGNvbnRleHRJRCA9IFtVSUFwcGxpY2F0aW9uIHNo
YXJlZEFwcGxpY2F0aW9uXS5rZXlXaW5kb3cuX2NvbnRleHRJZDsKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0JKHJldmlzaW9uIDI3MDg2OSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNz
UG9vbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5CbG9ja2xpc3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViR0xCbG9ja2xpc3QuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCiBib29sIFdLQ29udGV4dElzUGx1Z0luVXBkYXRlQXZhaWxh
YmxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYpCkBAIC04Myw3ICs4NCw3IEBAIHZvaWQgV0tD
b250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMKICAgICBSZWZQdHI8QVBJOjpBcnJheT4g
YXJyYXkgPSBBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShwbHVnaW5JbmZvRGljdGlvbmFyaWVz
KSk7CiAKICAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+cmVmKCk7Ci0gICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2Jsb2NrID0gbWFrZUJsb2NrUHRyKGJsb2NrKSwgYXJyYXkgPSBXVEZN
b3ZlKGFycmF5KSwgY29udGV4dFJlZl0gewogICAgICAgICBibG9jayhXZWJLaXQ6OnRvQVBJKGFy
cmF5LmdldCgpKSwgMCk7CiAgICAgCiAgICAgICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYp
LT5kZXJlZigpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0
cmlidXRlZFN0cmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDkgQEAgKyAodm9pZClfbG9hZEZyb21IVE1MV2l0aE9w
dGlvbnM6KE5TRGljdAogICAgIGlmIChbTlNUaHJlYWQgaXNNYWluVGhyZWFkXSkKICAgICAgICAg
cnVuQ29udmVyc2lvbigpOwogICAgIGVsc2UKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgcnVuQ29udmVyc2lvbik7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbcnVuQ29udmVyc2lvbiA9IG1ha2VCbG9ja1B0cihydW5Db252ZXJzaW9u
KV0geworICAgICAgICAgICAgcnVuQ29udmVyc2lvbigpOworICAgICAgICB9KTsKIH0KIAogQGVu
ZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyNzA4Njkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOSArMTA1LDkgQEAgKyAodm9pZCly
ZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOgogICAgIGlmIChbTlNUaHJlYWQgaXNNYWlu
VGhyZWFkXSkKICAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJHbG9iYWxV
UkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoc2NoZW1lKTsKICAgICBlbHNl
IHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFr
ZUJsb2NrUHRyKFtzY2hlbWUgPSByZXRhaW5QdHIoc2NoZW1lKV0geworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUpXSB7CiAgICAgICAg
ICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2
aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhzY2hlbWUuZ2V0KCkpOwotICAgICAgICB9KS5nZXQo
KSk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApAQCAtMTE2LDkgKzExNiw5IEBAICsgKHZvaWQp
dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY28KICAgICBpZiAoW05TVGhyZWFkIGlzTWFp
blRocmVhZF0pCiAgICAgICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJHbG9i
YWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoc2NoZW1lKTsKICAgICBl
bHNlIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
bWFrZUJsb2NrUHRyKFtzY2hlbWUgPSByZXRhaW5QdHIoc2NoZW1lKV0geworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUpXSB7CiAgICAg
ICAgICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1l
QXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKHNjaGVtZS5nZXQoKSk7Ci0gICAgICAgIH0p
LmdldCgpKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI3MDg2OSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEwMjksNyArMTAyOSw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDoo
TlNTdHJpbmcgKikKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDplcnJvck1lc3NhZ2UgZm9y
S2V5Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25NZXNzYWdlRXJyb3JLZXldOwogCiAgICAgICAgIGF1
dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46V0tFcnJv
ckRvbWFpbiBjb2RlOldLRXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9uT2NjdXJyZWQgdXNlckluZm86
dXNlckluZm8uZ2V0KCldKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW2hhbmRsZXIsIGVycm9yXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbaGFuZGxlciwgZXJyb3JdIHsKICAgICAgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9
ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwogICAgICAgICAgICAgcmF3
SGFuZGxlcihuaWwsIGVycm9yLmdldCgpKTsKICAgICAgICAgfSk7CkBAIC0xMzQ0LDcgKzEzNDQs
NyBAQCAtICh2b2lkKV9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uCiB7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRlbnRWaWV3
XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCB1
cGRhdGVCbG9jayk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaCh1cGRhdGVCbG9j
ayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCShyZXZp
c2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3VGVzdGluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw5IEBAIC0gKHZvaWQp
X2RvQWZ0ZXJOZXh0VmlzaWJsZUNvbnRlbnRSZWN0VXAKICAgICBfdmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlQ2FsbGJhY2tzLmFwcGVuZChtYWtlQmxvY2tQdHIodXBkYXRlQmxvY2spKTsKICAgICBb
c2VsZiBfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVdOwogI2Vsc2UKLSAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCB1cGRhdGVCbG9jayk7CisgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt1cGRhdGVCbG9jayA9IG1ha2VCbG9ja1B0cih1cGRh
dGVCbG9jayldIHsKKyAgICAgICAgdXBkYXRlQmxvY2soKTsKKyAgICB9KTsKICNlbmRpZgogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5MjIsNyArMTkyMiw3IEBAIC0g
KHZvaWQpX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXQKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFty
ZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3JldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICBXS1dlYlZp
ZXcgKndlYlZpZXcgPSByZXRhaW5lZFNlbGYuZ2V0KCk7CiAgICAgICAgIGlmICghW3dlYlZpZXcg
X2lzVmFsaWRdKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA2MCw3ICsyMDYwLDcgQEAgLSAo
dm9pZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogCiAgICAgICAgICAgICBpZiAoIUNHUG9p
bnRFcXVhbFRvUG9pbnQoYWN0aXZlUG9pbnQsIGN1cnJlbnRQb2ludCkpIHsKICAgICAgICAgICAg
ICAgICBSZXRhaW5QdHI8V0tTY3JvbGxWaWV3PiBzdHJvbmdTY3JvbGxWaWV3ID0gX3Njcm9sbFZp
ZXc7Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3N0cm9uZ1Njcm9sbFZpZXcsIGFjdGl2ZVBvaW50XSB7CisgICAgICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdHJvbmdTY3JvbGxWaWV3LCBhY3RpdmVQb2ludF0g
ewogICAgICAgICAgICAgICAgICAgICBbc3Ryb25nU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0
OmFjdGl2ZVBvaW50IGFuaW1hdGVkOk5PXTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0KQEAgLTI0MTksNyArMjQxOSw3IEBAIC0gKHZvaWQpX2ZpcmVQcmVzZW50YXRpb25VcGRh
dGVGb3JQZW5kaW4KIHsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBzdHJvbmdTZWxmID0gc2Vs
ZjsKICAgICBbc2VsZiBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6W3N0cm9uZ1NlbGZd
IHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0
cm9uZ1NlbGZdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdHJvbmdTZWxm
XSB7CiAgICAgICAgICAgICBpZiAoW3N0cm9uZ1NlbGYtPl9zdGFibGVTdGF0ZVByZXNlbnRhdGlv
blVwZGF0ZUNhbGxiYWNrcyBjb3VudF0pCiAgICAgICAgICAgICAgICAgW3N0cm9uZ1NlbGYgX2Zp
cmVQcmVzZW50YXRpb25VcGRhdGVGb3JQZW5kaW5nU3RhYmxlU3RhdGVQcmVzZW50YXRpb25DYWxs
YmFja3NdOwogICAgICAgICB9KTsKQEAgLTI3MDAsNyArMjcwMCw3IEBAIC0gKENHUG9pbnQpX2Nv
bnZlcnRQb2ludEZyb21WaWV3VG9Db250ZW4KIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0U3RhYmxlUHJl
c2VudGF0aW9uVXBkYXRlOihkaXNwYXRjaF9ibG9ja190KXVwZGF0ZUJsb2NrCiB7CiAgICAgaWYg
KCFbc2VsZiB1c2VzU3RhbmRhcmRDb250ZW50Vmlld10pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgdXBkYXRlQmxvY2spOworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2godXBkYXRlQmxvY2spOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRp
b25DbGllbnQubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0F1dG9tYXRpb25DbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1LDkg
QEAgdm9pZCBBdXRvbWF0aW9uQ2xpZW50OjpyZXF1ZXN0QXV0b21hdGlvbgogICAgIC8vIFJlbW90
ZUluc3BlY3RvciB3aWxsIHRyeSB0byBhY3F1aXJlIGl0cyBsb2NrIHRvIHJlZ2lzdGVyIHRoZSBu
ZXcgc2Vzc2lvbiBhbmQKICAgICAvLyBkZWFkbG9jayBiZWNhdXNlIGl0J3MgYWxyZWFkeSB0YWtl
biB3aGlsZSBoYW5kbGluZyBYUEMgbWVzc2FnZXMuCiAgICAgTlNTdHJpbmcgKnJlcXVlc3RlZFNl
c3Npb25JZGVudGlmaWVyID0gc2Vzc2lvbklkZW50aWZpZXI7Ci0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3RoaXMsIHJlcXVlc3RlZFNlc3Npb25JZGVudGlmaWVyID0gcmV0YWluUHRyKHJlcXVlc3Rl
ZFNlc3Npb25JZGVudGlmaWVyKSwgY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihjb25maWd1cmF0
aW9uKV0gewogICAgICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdEF1dG9tYXRpb25T
ZXNzaW9uKQotICAgICAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX3Byb2Nlc3NQb29sOm1fcHJv
Y2Vzc1Bvb2wgZGlkUmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uV2l0aElkZW50aWZpZXI6cmVxdWVz
dGVkU2Vzc2lvbklkZW50aWZpZXIgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsKKyAgICAg
ICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9wcm9jZXNzUG9vbDptX3Byb2Nlc3NQb29sIGRpZFJl
cXVlc3RBdXRvbWF0aW9uU2Vzc2lvbldpdGhJZGVudGlmaWVyOnJlcXVlc3RlZFNlc3Npb25JZGVu
dGlmaWVyLmdldCgpIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV07CiAgICAgfSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDM5LDcgKzQzOSw3
IEBAIHN0YXRpYyB2b2lkIHRyeUludGVyY2VwdE5hdmlnYXRpb24oUmVmPEEKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOwogICAgICAgICB9KTsKICAgICAgICAgW0xTQXBw
TGluayBvcGVuV2l0aFVSTDp1cmwgY29tcGxldGlvbkhhbmRsZXI6W2xvY2FsQ29tcGxldGlvbkhh
bmRsZXJdKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbG9jYWxDb21wbGV0aW9uSGFuZGxlciwg
c3VjY2Vzc10geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtsb2NhbENv
bXBsZXRpb25IYW5kbGVyLCBzdWNjZXNzXSB7CiAgICAgICAgICAgICAgICAgKCpsb2NhbENvbXBs
ZXRpb25IYW5kbGVyKShzdWNjZXNzKTsKICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxDb21w
bGV0aW9uSGFuZGxlcjsKICAgICAgICAgICAgIH0pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQkocmV2aXNpb24gMjcw
ODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksMTMgKzE3OSwxMyBAQCAtIChpbnN0YW5jZXR5cGUp
aW5pdAogLSAodm9pZClwcmVmZXJlbmNlRGlkQ2hhbmdlOihOU1N0cmluZyAqKWRvbWFpbiBrZXk6
KE5TU3RyaW5nICopa2V5IGVuY29kZWRWYWx1ZTooTlNTdHJpbmcgKillbmNvZGVkVmFsdWUKIHsK
ICNpZiBFTkFCTEUoQ0ZQUkVGU19ESVJFQ1RfTU9ERSkKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
ZG9tYWluID0gcmV0YWluUHRyKGRvbWFpbiksIGtleSA9IHJldGFpblB0cihrZXkpLCBlbmNvZGVk
VmFsdWUgPSByZXRhaW5QdHIoZW5jb2RlZFZhbHVlKV0gewogICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGVuY29kZWRTdHJpbmc7CiAgICAgICAgIGlmIChlbmNvZGVkVmFsdWUpCi0gICAgICAgICAg
ICBlbmNvZGVkU3RyaW5nID0gU3RyaW5nKGVuY29kZWRWYWx1ZSk7CisgICAgICAgICAgICBlbmNv
ZGVkU3RyaW5nID0gU3RyaW5nKGVuY29kZWRWYWx1ZS5nZXQoKSk7CiAKICAgICAgICAgZm9yIChh
dXRvKiBwcm9jZXNzUG9vbCA6IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29s
cygpKQotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPm5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChk
b21haW4sIGtleSwgZW5jb2RlZFN0cmluZyk7CisgICAgICAgICAgICBwcm9jZXNzUG9vbC0+bm90
aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGRvbWFpbi5nZXQoKSwga2V5LmdldCgpLCBlbmNvZGVkU3Ry
aW5nKTsKICAgICB9KTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZl
ci5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAKIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9y
S2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihO
U0RpY3Rpb25hcnk8TlNLZXlWYWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdlIGNvbnRleHQ6KHZv
aWQgKiljb250ZXh0CiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICBmb3Ig
KGF1dG8qIHBvb2wgOiBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkg
ewogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb29sLT5wcm9jZXNzZXMoKS5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgICAgIGF1dG8gcHJvY2VzcyA9IHBvb2wtPnByb2Nl
c3NlcygpW2ldOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
NzMsNyArNDczLDcgQEAgc3RhdGljIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gYwog
dm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVt
Ym5haWxMb2FkT3BlcmF0aW9uICpvcGVyYXRpb24pCiB7CiAgICAgW29wZXJhdGlvbiBzZXRDb21w
bGV0aW9uQmxvY2s6XnsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBvcGVy
YXRpb24gPSByZXRhaW5QdHIob3BlcmF0aW9uKV0gewogICAgICAgICAgICAgYXV0byBpZGVudGlm
aWVyID0gW29wZXJhdGlvbiBpZGVudGlmaWVyXTsKICAgICAgICAgICAgIGF1dG8gY29udmVydGVk
SW1hZ2UgPSBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKFtvcGVyYXRpb24gdGh1bWJuYWls
XSwgV2ViQ29yZTo6SW50U2l6ZSg0MDAsIDQwMCkpOwogICAgICAgICAgICAgaWYgKCFjb252ZXJ0
ZWRJbWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtODY4LDcgKzg2OCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5vdGlmeVByZWZlcmVuY2Vz
Q2gKICNpZiBQTEFURk9STShNQUMpCiBzdGF0aWMgdm9pZCB3ZWJQcm9jZXNzUG9vbEhpZ2hEeW5h
bWljUmFuZ2VEaWRDaGFuZ2VDYWxsYmFjayhDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiwgY29uc3Qg
dm9pZCosIENGU3RyaW5nUmVmIG5vdGlmaWNhdGlvbk5hbWUsIGNvbnN0IHZvaWQqLCBDRlR5cGVS
ZWYpCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICBhdXRvIHByb3BlcnRp
ZXMgPSBXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcygpOwogICAgICAgICBmb3IgKGF1
dG8mIHBvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCiAgICAgICAgICAg
ICBwb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFNjcmVl
blByb3BlcnRpZXMocHJvcGVydGllcykpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05Mjks
NyArOTI5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlld0ltcGw6KFdlYgogCiAt
ICh2b2lkKW1lbnVEaWRDbG9zZTooTlNNZW51ICopbWVudQogewotICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtpbXBsID0gX2ltcGxdIHsKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2ltcGwgPSBfaW1wbF0gewogICAgICAgICBpZiAoaW1wbCkKICAg
ICAgICAgICAgIGltcGwtPmhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAgICAgfSk7CkBAIC0x
ODA5LDggKzE4MDksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVXaW5kb3dBbmRWaWV3RnJh
CiAKICAgICBtX2RpZFNjaGVkdWxlV2luZG93QW5kVmlld0ZyYW1lVXBkYXRlID0gdHJ1ZTsKIAot
ICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3dlYWtUaGlzXSB7CisgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gewogICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTM2LDggKzE5MzUs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRUb3BDb250ZW50SW5zZXQoQ0dGCiAKICAgICBtX2Rp
ZFNjaGVkdWxlU2V0VG9wQ29udGVudEluc2V0ID0gdHJ1ZTsKIAotICAgIGF1dG8gd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3dlYWtUaGlzXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB3ZWFrVGhpcy0+ZGlzcGF0Y2hTZXRUb3BDb250
ZW50SW5zZXQoKTsKQEAgLTI5NDAsNyArMjkzOCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRpZEJl
Y29tZUVkaXRhYmxlKCkKIHsKICAgICBbbV93aW5kb3dWaXNpYmlsaXR5T2JzZXJ2ZXIgc3RhcnRP
YnNlcnZpbmdGb250UGFuZWxdOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW10geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CiAgICAg
ICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBfcHJlZmxpZ2h0Q2hvc2Vu
U3BlbGxTZXJ2ZXJdOwogICAgIH0pOwogfQpAQCAtMzM5NCwxMCArMzM5MiwxMCBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpyZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlCiAgICAgTlNUZXh0Q2hlY2tpbmdUeXBl
cyBjaGVja2luZ1R5cGVzID0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBOU1RleHRDaGVj
a2luZ1R5cGVSZXBsYWNlbWVudCB8IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CiAgICAg
YXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKICAgICBtX2xhc3RDYW5kaWRhdGVS
ZXF1ZXN0U2VxdWVuY2VOdW1iZXIgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tl
cl0gcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3RlZFJhbmdlOnNlbGVjdGVkUmFuZ2UgaW5TdHJp
bmc6cG9zdExheW91dERhdGEucGFyYWdyYXBoQ29udGV4dEZvckNhbmRpZGF0ZVJlcXVlc3QgdHlw
ZXM6Y2hlY2tpbmdUeXBlcyBvcHRpb25zOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnKCkgY29tcGxldGlvbkhhbmRsZXI6W3dlYWtUaGlzXShOU0ludGVn
ZXIgc2VxdWVuY2VOdW1iZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKmNhbmRp
ZGF0ZXMpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgc2VxdWVu
Y2VOdW1iZXIsIGNhbmRpZGF0ZXMgPSByZXRhaW5QdHIoY2FuZGlkYXRlcyldIHsKICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
d2Vha1RoaXMtPmhhbmRsZVJlcXVlc3RlZENhbmRpZGF0ZXMoc2VxdWVuY2VOdW1iZXIsIGNhbmRp
ZGF0ZXMpOworICAgICAgICAgICAgd2Vha1RoaXMtPmhhbmRsZVJlcXVlc3RlZENhbmRpZGF0ZXMo
c2VxdWVuY2VOdW1iZXIsIGNhbmRpZGF0ZXMuZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9XTsK
IH0KQEAgLTQxNDAsNyArNDEzOCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3Bl
cmF0aW9uKGkKICAgICAgICAgICAgICAgICBpZiAoZXJyb3JPck5pbCkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3RoaXMsIHBhdGggPSBSZXRhaW5QdHI8TlNTdHJpbmc+KGZpbGVV
UkwucGF0aCksIGZpbGVOYW1lcywgZmlsZUNvdW50LCBkcmFnRGF0YSwgcGFzdGVib2FyZE5hbWVd
IHsKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHBhdGgg
PSBSZXRhaW5QdHI8TlNTdHJpbmc+KGZpbGVVUkwucGF0aCksIGZpbGVOYW1lcywgZmlsZUNvdW50
LCBkcmFnRGF0YSwgcGFzdGVib2FyZE5hbWVdIHsKICAgICAgICAgICAgICAgICAgICAgZmlsZU5h
bWVzLT5hcHBlbmQocGF0aC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlTmFt
ZXMtPnNpemUoKSA9PSBmaWxlQ291bnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0JKHJl
dmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNz
ZXJ0aW9uSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgLSAodm9pZClf
dXBkYXRlQmFja2dyb3VuZFRhc2sKICAgICB9IGVsc2UgaWYgKF9hc3NlcnRpb25zTmVlZGluZ0Jh
Y2tncm91bmRUYXNrLmNvbXB1dGVzRW1wdHkoKSkgewogICAgICAgICAvLyBSZWxlYXNlIHRoZSBi
YWNrZ3JvdW5kIHRhc2sgYXN5bmNocm9ub3VzbHkgYmVjYXVzZSByZWxlYXNpbmcgdGhlIGJhY2tn
cm91bmQgdGFzayBtYXkgZGVzdHJveSB0aGUgUHJvY2Vzc1Rocm90dGxlciBhbmQgd2UgZG9uJ3QK
ICAgICAgICAgLy8gd2FudCBpdCB0byBnZXQgZGVzdHJveWVkIHdoaWxlIGluIHRoZSBtaWRkbGUg
b2YgdXBkYXRpbmcgaXRzIGFzc2VydGlvbi4KLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgICAgICBpZiAo
X2Fzc2VydGlvbnNOZWVkaW5nQmFja2dyb3VuZFRhc2suY29tcHV0ZXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgIFtzZWxmIF9yZWxlYXNlQmFja2dyb3VuZFRhc2tdOwogICAgICAgICB9KTsKQEAg
LTIyMyw3ICsyMjMsNyBAQCAtICh2b2lkKV9oYW5kbGVCYWNrZ3JvdW5kVGFza0V4cGlyYXRpb25P
CiAgICAgLy8gdXBvbiByZXN1bWluZywgb3IgdGhlIHVzZXIgcmVhY3RpdmF0ZWQgdGhlIGFwcCBz
aG9ydGx5IGFmdGVyIGV4cGlyYXRpb24pLgogICAgIGlmIChyZW1haW5pbmdUaW1lID09IFJCU1By
b2Nlc3NUaW1lTGltaXRhdGlvbk5vbmUpIHsKICAgICAgICAgW3NlbGYgX3JlbGVhc2VCYWNrZ3Jv
dW5kVGFza107Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2Vs
ZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICAgICAgW3NlbGYgX3VwZGF0ZUJhY2tncm91
bmRUYXNrXTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI3MSw4ICsyNzEsNyBA
QCAtICh2b2lkKWFzc2VydGlvbjooUkJTQXNzZXJ0aW9uICopYXNzZXJ0CiB7CiAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdLUkJTQXNzZXJ0aW9uRGVsZWdhdGU6IGFz
c2VydGlvbiB3YXMgaW52YWxpZGF0ZWQsIGVycm9yOiAle3B1YmxpY31AIiwgZXJyb3IsIHNlbGYp
OwogCi0gICAgX193ZWFrIFdLUkJTQXNzZXJ0aW9uRGVsZWdhdGUgKndlYWtTZWxmID0gc2VsZjsK
LSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cihzZWxmKV0gewog
ICAgICAgICBXS1JCU0Fzc2VydGlvbkRlbGVnYXRlICpzdHJvbmdTZWxmID0gd2Vha1NlbGY7CiAg
ICAgICAgIGlmIChzdHJvbmdTZWxmICYmIHN0cm9uZ1NlbGYuaW52YWxpZGF0aW9uQ2FsbGJhY2sp
CiAgICAgICAgICAgICBzdHJvbmdTZWxmLmludmFsaWRhdGlvbkNhbGxiYWNrKCk7CkBAIC0zMDIs
NyArMzAxLDYgQEAgUHJvY2Vzc0Fzc2VydGlvbjo6UHJvY2Vzc0Fzc2VydGlvbihwaWRfdAogICAg
IDogbV9hc3NlcnRpb25UeXBlKGFzc2VydGlvblR5cGUpCiAgICAgLCBtX3BpZChwaWQpCiB7Ci0g
ICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKICAgICBOU1N0cmluZyAqcnVu
bmluZ0JvYXJkQXNzZXJ0aW9uTmFtZSA9IHJ1bm5pbmdCb2FyZE5hbWVGb3JBc3NlcnRpb25UeXBl
KGFzc2VydGlvblR5cGUpOwogICAgIEFTU0VSVChydW5uaW5nQm9hcmRBc3NlcnRpb25OYW1lKTsK
ICAgICBpZiAoIXBpZCkgewpAQCAtMzI0LDcgKzMyMiw3IEBAIFByb2Nlc3NBc3NlcnRpb246OlBy
b2Nlc3NBc3NlcnRpb24ocGlkX3QKICAgICBOU0Vycm9yICphY3F1aXNpdGlvbkVycm9yID0gbmls
OwogICAgIGlmICghW21fcmJzQXNzZXJ0aW9uIGFjcXVpcmVXaXRoRXJyb3I6JmFjcXVpc2l0aW9u
RXJyb3JdKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3NTdXNwZW5zaW9uLCAi
JXAgLSBQcm9jZXNzQXNzZXJ0aW9uOiBGYWlsZWQgdG8gYWNxdWlyZSBSQlMgJXtwdWJsaWN9QCBh
c3NlcnRpb24gJyV7cHVibGljfXMnIGZvciBwcm9jZXNzIHdpdGggUElEICVkLCBlcnJvcjogJXtw
dWJsaWN9QCIsIHRoaXMsIHJ1bm5pbmdCb2FyZEFzc2VydGlvbk5hbWUsIHJlYXNvbi51dGY4KCku
ZGF0YSgpLCBwaWQsIGFjcXVpc2l0aW9uRXJyb3IpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBpZiAo
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcHJvY2Vzc0Fzc2VydGlvbldhc0ludmFsaWRhdGVk
KCk7CiAgICAgICAgIH0pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lvbiAyNzA4NjkpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCAtIChCT09MKXJlc2lnbkZpcnN0
UmVzcG9uZGVyRm9yV2ViVmlldwogICAgICAgICBfcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIFdlYktpdDo6V2ViUGFnZVByb3h5
OjpBY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hNb2RlOjpJbW1lZGlhdGUpOwogCiAgICAgICAg
IGlmIChfa2V5V2ViRXZlbnRIYW5kbGVyKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vha0hhbmRsZXIgPSBXZWFrT2JqQ1B0cjxpZD4o
X2tleVdlYkV2ZW50SGFuZGxlci5nZXQoKSksIHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250
ZW50Vmlldz4oc2VsZildIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
d2Vha0hhbmRsZXIgPSBXZWFrT2JqQ1B0cjxpZD4oX2tleVdlYkV2ZW50SGFuZGxlci5nZXQoKSks
IHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZildIHsKICAgICAgICAg
ICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKICAgICAgICAgICAgICAg
ICBpZiAoIXN0cm9uZ1NlbGYgfHwgW3N0cm9uZ1NlbGYgaXNGaXJzdFJlc3BvbmRlcl0pCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS1BERlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLUERGVmlldy5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLUERGVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTA5LDcgKzUwOSw3IEBAIC0g
KHZvaWQpcGRmSG9zdFZpZXdDb250cm9sbGVyOihQREZIb3N0VmkKIC0gKHZvaWQpcGRmSG9zdFZp
ZXdDb250cm9sbGVyRXh0ZW5zaW9uUHJvY2Vzc0RpZENyYXNoOihQREZIb3N0Vmlld0NvbnRyb2xs
ZXIgKiljb250cm9sbGVyCiB7CiAgICAgLy8gRklYTUUgNDA5MTY3MjU6IFBERktpdCBzaG91bGQg
ZGlzcGF0Y2ggdGhpcyBtZXNzYWdlIHRvIHRoZSBtYWluIHRocmVhZCBsaWtlIGl0IGRvZXMgZm9y
IG90aGVyIGRlbGVnYXRlIG1lc3NhZ2VzLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFt3ZWJWaWV3ID0gX3dlYlZpZXddIHsKKyAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3dlYlZpZXcgPSBfd2ViVmlld10gewogICAgICAgICBpZiAoYXV0byBwYWdl
ID0gW3dlYlZpZXcgX3BhZ2VdKQogICAgICAgICAgICAgcGFnZS0+ZGlzcGF0Y2hQcm9jZXNzRGlk
VGVybWluYXRlKFdlYktpdDo6UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaCk7CiAgICAg
fSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2Fk
UGFuZWwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRmlsZVVwbG9hZFBhbmVsLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0JKHdvcmtpbmcgY29weSkK
QEAgLTY4MywxMiArNjgzLDEyIEBAIC0gKHZvaWQpaW1hZ2VQaWNrZXJDb250cm9sbGVyOihVSUlt
YWdlUGkKICAgICAgICAgc3VjY2Vzc0Jsb2NrOl4oTlNBcnJheSAqcHJvY2Vzc2VkUmVzdWx0cywg
TlNTdHJpbmcgKmRpc3BsYXlTdHJpbmcpIHsKICAgICAgICAgICAgIEFTU0VSVChbcHJvY2Vzc2Vk
UmVzdWx0cyBjb3VudF0gPT0gMSk7CiAgICAgICAgICAgICBfV0tGaWxlVXBsb2FkSXRlbSAqcmVz
dWx0ID0gW3Byb2Nlc3NlZFJlc3VsdHMgb2JqZWN0QXRJbmRleDowXTsKLSAgICAgICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2Vs
ZildIHsKICAgICAgICAgICAgICAgICBbc2VsZiBfY2hvb3NlRmlsZXM6QFtyZXN1bHQuZmlsZVVS
TF0gZGlzcGxheVN0cmluZzpkaXNwbGF5U3RyaW5nIGljb25JbWFnZTpyZXN1bHQuZGlzcGxheUlt
YWdlLmdldCgpXTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIGZhaWx1cmVC
bG9jazpeewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ry
b25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICAgICAgICAgIFtzZWxmIF9jYW5j
ZWxdOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTcxMiwxMiArNzEyLDEyIEBAIC0g
KHZvaWQpaW1hZ2VQaWNrZXJDb250cm9sbGVyOihVSUltYWdlUGkKICAgICAgICAgICAgICAgICAg
ICAgaWNvbkltYWdlID0gcmVzdWx0LmRpc3BsYXlJbWFnZTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2VsZiA9IHJl
dGFpblB0cihzZWxmKV0gewogICAgICAgICAgICAgICAgIFtzZWxmIF9jaG9vc2VGaWxlczpmaWxl
VVJMcyBkaXNwbGF5U3RyaW5nOmRpc3BsYXlTdHJpbmcgaWNvbkltYWdlOmljb25JbWFnZS5nZXQo
KV07CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBmYWlsdXJlQmxvY2s6XnsK
LSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYg
PSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgICAgICAgICBbc2VsZiBfY2FuY2VsXTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXJJT1MubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4OSw3ICs4ODksNyBAQCAtICh2b2lkKXBsYWNlaG9s
ZGVyV2lsbE1vdmVUb1N1cGVydmlldzooCiAgICAgaWYgKHN1cGVydmlldykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5Q
dHIoc2VsZildIHsKICAgICAgICAgaWYgKFtfd2ViVmlld1BsYWNlaG9sZGVyIHN1cGVydmlld10g
PT0gbmlsICYmIFtfd2ViVmlld1BsYWNlaG9sZGVyIHBhcmVudF0gPT0gc2VsZikKICAgICAgICAg
ICAgIFtzZWxmIGNsb3NlXTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQkocmV2aXNpb24gMjcwODY5KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3
IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0EKIAogICAgICAgICAg
ICAgQVZQbGF5ZXJMYXllciAqZGVzdGluYXRpb25QbGF5ZXJMYXllciA9IHN0YXRpY19jYXN0PEFW
UGxheWVyTGF5ZXIgKj4oY2xvbmVkTGF5ZXIuZ2V0KCkpOwogICAgICAgICAgICAgQVZQbGF5ZXJM
YXllciAqc291cmNlUGxheWVyTGF5ZXIgPSBzdGF0aWNfY2FzdDxBVlBsYXllckxheWVyICo+KHBs
YXRmb3JtTGF5ZXIoKSk7Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbZGVzdGluYXRpb25QbGF5ZXJMYXllciwgc291cmNlUGxheWVyTGF5ZXJd
IHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZGVzdGluYXRpb25QbGF5
ZXJMYXllciwgc291cmNlUGxheWVyTGF5ZXJdIHsKICAgICAgICAgICAgICAgICBbZGVzdGluYXRp
b25QbGF5ZXJMYXllciBzZXRQbGF5ZXI6W3NvdXJjZVBsYXllckxheWVyIHBsYXllcl1dOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNzA4Njkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxMCw3ICs0MTAs
NyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVSCiAgICAgICAgIGJh
Y2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAgTW9ub3RvbmljVGltZSB0aW1l
c3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3BhZ2VJRCwgdGltZXN0YW1wXSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcGFnZUlELCB0aW1lc3RhbXBdIHsKICAgICAgICAgICAg
IGlmIChXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShw
YWdlSUQpKQogICAgICAgICAgICAgICAgIHdlYlBhZ2UtPmRpZEZsdXNoTGF5ZXJUcmVlQXRUaW1l
KHRpbWVzdGFtcCk7CiAgICAgICAgIH0pOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0JKHJldmlzaW9u
IDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNyArMzc4LDcgQEAgICAgIGF1dG8g
W21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZQogICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIg
PSBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+cm9vdExheWVyKCk7CiAKICAgICBt
b2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewotICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0geworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlz
LT5tX3BhZ2UpCiAgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwg
dHJ1ZSkpOwogICAgICAgICB9KTsKQEAgLTM5Miw5ICszOTIsOSBAQCAgICAgUmVmUHRyPFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRlCiAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkg
PSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgbW9kZWwtPndhaXRG
b3JQcmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
LCB0aGlzLCBjb250ZXh0SWQsIG1vZGVsXSAoKSBtdXRhYmxlIHsgLy8gbmVlZCB0aGlzIGZvciBy
ZXR1cm4gdmlkZW8gbGF5ZXIKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlz
LCBjb250ZXh0SWQsIG1vZGVsXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywg
Y29udGV4dElkLCBtb2RlbF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBtb2RlbC0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKKyAgICAgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBy
b3RlY3RlZFRoaXMtPm1fcGFnZSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRl
bnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC00MTMs
NyArNDEzLDcgQEAgICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZQogICAg
IENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+
cm9vdExheWVyKCk7CiAKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9M
YXllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRd
ICgpIG11dGFibGUgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNv
bnRleHRJZF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICAgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVl
bihjb250ZXh0SWQpKTsKICAgICAgICAgfSk7CkBAIC00MzEsNyArNDMxLDcgQEAgICAgIGF1dG8g
W21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZQogICAgIGlmICghdmlkZW9FbGVtZW50KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRWxlbWVudCA9
IFdURk1vdmUodmlkZW9FbGVtZW50KSwgY29udGV4dElkXSB7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50
ID0gV1RGTW92ZSh2aWRlb0VsZW1lbnQpLCBjb250ZXh0SWRdIHsKICAgICAgICAgdmlkZW9FbGVt
ZW50LT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1f
cGFnZSkKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oY29u
dGV4dElkKSk7CkBAIC00NTcsNyArNDU3LDcgQEAgICAgIGlmIChpbnRlcmZhY2UtPnRhcmdldElz
RnVsbHNjcmVlbigpIAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBleGl0IGZ1bGxzY3JlZW4g
bm93IGlmIGl0IHdhcyBwcmV2aW91c2x5IHJlcXVlc3RlZCBkdXJpbmcgYW4gYW5pbWF0aW9uLgot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50XSB7CisgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVt
ZW50XSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCp2aWRlb0Vs
ZW1lbnQsIFtdKGJvb2wpIHsgfSk7CiAgICAgfSk7CkBAIC00NzIsMTUgKzQ3MiwxNSBAQCAgICAg
UmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRlCiAgICAgc3RkOjp0aWUobW9kZWws
IGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwg
aW50ZXJmYWNlXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2VdIHsKICAgICAgICAgaWYg
KHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVs
bHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAgICAgbW9kZWwtPndhaXRGb3JQ
cmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBj
b250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2UsIG1vZGVsXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2UsIG1vZGVsXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dElkLCBpbnRlcmZh
Y2VdICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgY29udGV4dElkLCBpbnRlcmZhY2VdIHsKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb250
ZXh0SWQsIGludGVyZmFjZV0gewogICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJmYWNlLT5s
YXllckhvc3RpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFj
ZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIobnVsbHB0cik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQobnVsbHB0
cik7CkBAIC01MjMsNyArNTIzLDcgQEAgICAgIGludGVyZmFjZS0+c2V0RnVsbHNjcmVlblN0YW5k
YnkoZmFscwogICAgIGlmICghdmlkZW9FbGVtZW50IHx8ICF0YXJnZXRJc0Z1bGxzY3JlZW4pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50LCBt
b2RlLCBzdGFuZGJ5XSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50LCBtb2RlLCBzdGFuZGJ5XSB7CiAg
ICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgqdmlkZW9FbGVtZW50LCBt
b2RlLCBzdGFuZGJ5KTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTEyLTIxICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlZCBtb3N0IHVzZXMgb2YgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgLi4uKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDY2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgaGFzIHR3
byBkb3duc2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBpcyB1bmRlZmluZWQgKGFuZCBp
biBwcmFjdGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRvCisgICAgICAgIG90aGVyIFdl
YktpdCBvcGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMgZmxha2luZXNzLgorCisgICAg
ICAgICgyKSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZpcnN0IHBhaW50IG9wdGltaXph
dGlvbi4KKworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRpc3BhdGNoKCkgaW5zdGVhZC4K
KworICAgICAgICAqIE1pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAg
KC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyByZWdpc3RlcldlYlZpZXc6XSk6CisgICAgICAg
ICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgdW5yZWdpc3RlcldlYlZpZXc6XSk6CisgICAg
ICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1Mgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ol0p
OgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TIGluaXRpYWxpemVHZW9sb2Nh
dGlvbkZvcldlYlZpZXc6bGlzdGVuZXI6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50SU9TOjpydW5PcGVu
UGFuZWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5t
bToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZSk6
CisKIDIwMjAtMTEtMDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAg
IEZ1cnRoZXIgcHJvZ3Jlc3MgdG93YXJkcyBtZXJnaW5nIFNldHRpbmdzLnlhbWwgaW50byBXZWJQ
cmVmZXJlbmNlcy55YW1sCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdl
b2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCShyZXZpc2lvbiAyNzA4Njkp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCAtICh2b2lkKXJlZ2lzdGVy
V2ViVmlldzooV2ViVmlldyAqKXdlYlZpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghX2lz
U3VzcGVuZGVkKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25n
U2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICAgICAgaWYgKCFfY29yZUxvY2F0aW9u
UHJvdmlkZXIpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIV9jb3JlTG9jYXRpb25VcGRhdGVM
aXN0ZW5lclByb3h5KTsKICAgICAgICAgICAgICAgICBfY29yZUxvY2F0aW9uVXBkYXRlTGlzdGVu
ZXJQcm94eSA9IGFkb3B0TlMoW1tfV2ViQ29yZUxvY2F0aW9uVXBkYXRlVGhyZWFkaW5nUHJveHkg
YWxsb2NdIGluaXRXaXRoUHJvdmlkZXI6c2VsZl0pOwpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZv
aWQpdW5yZWdpc3RlcldlYlZpZXc6KFdlYlZpZXcgKil3ZWIKICAgICBfcGVuZGluZ0luaXRpYWxQ
b3NpdGlvbldlYlZpZXcucmVtb3ZlKHdlYlZpZXcpOwogCiAgICAgaWYgKF9yZWdpc3RlcmVkV2Vi
Vmlld3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwg
c3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICAgICAgW19jb3JlTG9jYXRp
b25Qcm92aWRlciBzdG9wXTsKICAgICAgICAgfSk7CiAgICAgICAgIF9lbmFibGVIaWdoQWNjdXJh
Y3kgPSBOTzsKQEAgLTIyNiw3ICsyMjYsNyBAQCAtICh2b2lkKXNldEVuYWJsZUhpZ2hBY2N1cmFj
eTooQk9PTCllbmFiCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgp
KTsKICAgICBfZW5hYmxlSGlnaEFjY3VyYWN5ID0gX2VuYWJsZUhpZ2hBY2N1cmFjeSB8fCBlbmFi
bGVIaWdoQWNjdXJhY3k7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYg
PSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzZXRF
bmFibGVIaWdoQWNjdXJhY3k6X2VuYWJsZUhpZ2hBY2N1cmFjeV07CiAgICAgfSk7CiB9CkBAIC0y
NDEsNyArMjQxLDcgQEAgLSAodm9pZClpbml0aWFsaXplR2VvbG9jYXRpb25Gb3JXZWJWaWV3Ogog
ICAgIF93ZWJWaWV3c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uLmFkZCh3ZWJW
aWV3LCBsaXN0ZW5lcik7CiAgICAgX3RyYWNrZWRXZWJWaWV3cy5hZGQod2ViVmlldyk7CiAKLSAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
ewogICAgICAgICBpZiAoIV9jb3JlTG9jYXRpb25Qcm92aWRlcikgewogICAgICAgICAgICAgQVNT
RVJUKCFfY29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXJQcm94eSk7CiAgICAgICAgICAgICBfY29y
ZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXJQcm94eSA9IGFkb3B0TlMoW1tfV2ViQ29yZUxvY2F0aW9u
VXBkYXRlVGhyZWFkaW5nUHJveHkgYWxsb2NdIGluaXRXaXRoUHJvdmlkZXI6c2VsZl0pOwpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnRJT1M6OnJ1
bk9wZW5QYW5lbChGcgogICAgIH07CiAKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsK
LSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgICAgICBbW3dl
YlZpZXcoKSBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3KCkgcnVuT3Bl
blBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjpsaXN0ZW5lciBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dOwogICAgICAgICB9KTsKICAgICB9IGVsc2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRJT1MubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpk
aWRTZXRTZWFyY2hpbmcKIHsKICAgICBXZWJJbnNwZWN0b3IgKmluc3BlY3RvciA9IFttX2luc3Bl
Y3RlZFdlYlZpZXcgaW5zcGVjdG9yXTsKICAgICBOU1N0cmluZyAqbm90aWZpY2F0aW9uTmFtZSA9
IGVuYWJsZWQgPyBXZWJJbnNwZWN0b3JEaWRTdGFydFNlYXJjaGluZ0Zvck5vZGUgOiBXZWJJbnNw
ZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7
CiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlm
aWNhdGlvbk5hbWU6bm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6aW5zcGVjdG9yXTsKICAgICB9KTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MDg2OSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMyIEBACisyMDIwLTEyLTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgLi4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwMDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgaGFzIHR3byBkb3duc2lkZXM6CisKKyAgICAg
ICAgKDEpIEl0cyBvcmRlciBpcyB1bmRlZmluZWQgKGFuZCBpbiBwcmFjdGljZSBoaWdobHkgdmFy
aWFibGUpIHJlbGF0aXZlIHRvCisgICAgICAgIG90aGVyIFdlYktpdCBvcGVyYXRpb25zLiBUaGlz
IHNvbWV0aW1lcyBjYXVzZXMgZmxha2luZXNzLgorCisgICAgICAgICgyKSBJdCBkb2Vzbid0IGhv
bm9yIHRoZSBSdW5Mb29wIGZpcnN0IHBhaW50IG9wdGltaXphdGlvbi4KKworICAgICAgICBXZSBj
YW4gdXNlIFJ1bkxvb3A6OmRpc3BhdGNoKCkgaW5zdGVhZC4KKworICAgICAgICAqIFBsdWdpbnMv
bnBhcGkubW06CisgICAgICAgIChOUE5fUGx1Z2luVGhyZWFkQXN5bmNDYWxsKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OnJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIgaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcldpbGxQcmVwYXJlOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyB3aWxsRW50ZXJC
YWNrZ3JvdW5kV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV2ViU2FmZUFz
eW5jRm9yd2FyZGVyIGZvcndhcmRJbnZvY2F0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHBl
cmZvcm1EcmFnT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEVkaXRhYmxlOl0p
OgorCiAyMDIwLTEyLTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA3NjguCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL25wYXBpLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvbnBhcGkubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvbnBhcGkubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKIAogI2ltcG9ydCAiV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJXZWJL
aXRMb2dnaW5nLmgiCisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtMTc0LDcgKzE3NSw3IEBAIHZvaWQgTlBOX1BsdWdpblRocmVhZEFzeW5j
Q2FsbChOUFAgaW5zdGEKIHsKICAgICBXZWJOZXRzY2FwZVBsdWdpblZpZXcgKnBsdWdpblZpZXcg
PSBwbHVnaW5WaWV3Rm9ySW5zdGFuY2UoaW5zdGFuY2UpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3BsdWdpblZpZXcgPSByZXRhaW5QdHIocGx1Z2luVmlldyksIHVzZXJEYXRhLCBmdW5jXSB7
CiAgICAgICAgIGlmICghcGx1Z2luVmlldyB8fCAhcGx1Z2luVmlldy0+cGx1Z2luKSB7CiAgICAg
ICAgICAgICAvLyBUaGUgcGx1Zy1pbiBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4KICAgICAg
ICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDI3MDg2OSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEyMiwxMCArMTEyMiwxMCBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVxdWVzdENhbmRpZGF0ZXNGCiAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlcyBjaGVj
a2luZ1R5cGVzID0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBOU1RleHRDaGVja2luZ1R5
cGVSZXBsYWNlbWVudCB8IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CiAgICAgYXV0byB3
ZWFrRWRpdG9yID0gbWFrZVdlYWtQdHIoKnRoaXMpOwogICAgIG1fbGFzdENhbmRpZGF0ZVJlcXVl
c3RTZXF1ZW5jZU51bWJlciA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBy
ZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGVkUmFuZ2U6bV9yYW5nZUZvckNhbmRpZGF0ZXMgaW5T
dHJpbmc6bV9wYXJhZ3JhcGhDb250ZXh0Rm9yQ2FuZGlkYXRlUmVxdWVzdC5nZXQoKSB0eXBlczpj
aGVja2luZ1R5cGVzIG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWcoKSBjb21wbGV0aW9uSGFuZGxlcjpbd2Vha0VkaXRvcl0oTlNJbnRlZ2Vy
IHNlcXVlbmNlTnVtYmVyLCBOU0FycmF5PE5TVGV4dENoZWNraW5nUmVzdWx0ICo+ICpjYW5kaWRh
dGVzKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IF57CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha0VkaXRvciwgc2VxdWVu
Y2VOdW1iZXIsIGNhbmRpZGF0ZXMgPSByZXRhaW5QdHIoY2FuZGlkYXRlcyldIHsKICAgICAgICAg
ICAgIGlmICghd2Vha0VkaXRvcikKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB3ZWFrRWRpdG9yLT5oYW5kbGVSZXF1ZXN0ZWRDYW5kaWRhdGVzKHNlcXVlbmNlTnVtYmVyLCBj
YW5kaWRhdGVzKTsKKyAgICAgICAgICAgIHdlYWtFZGl0b3ItPmhhbmRsZVJlcXVlc3RlZENhbmRp
ZGF0ZXMoc2VxdWVuY2VOdW1iZXIsIGNhbmRpZGF0ZXMuZ2V0KCkpOwogICAgICAgICB9KTsKICAg
ICB9XTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyNzA4
NjkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM3Myw3ICsyMzczLDcgQEAgLSAodm9p
ZCl1c2UKICNpZiBVU0UoV0VCX1RIUkVBRCkKICAgICAgICAgICAgIFdlYlRocmVhZFJ1biheewog
I2Vsc2UKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9u
Z1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHN1Y2Nlc3NdIHsKICNlbmRpZgogICAgICAgICAgICAg
ICAgIGlmIChzdWNjZXNzKQogICAgICAgICAgICAgICAgICAgICBbc2VsZiByZWNlaXZlZFBvbGlj
eURlY2lzaW9uOldlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlXTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2du
aXplcldpbGxQcmUKIAogICAgIGlmICghW19pbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyIGFuaW1h
dGlvbkNvbnRyb2xsZXJdKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0
byByZW1vdmUgdGhlIGRpc3BhdGNoX2FzeW5jIHdoZW4gcmRhcjovL3Byb2JsZW0vMTk1MDI5Mjcg
aXMgcmVzb2x2ZWQuCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25n
U2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICAgICAgW3NlbGYgX2NhbmNlbEltbWVk
aWF0ZUFjdGlvbl07CiAgICAgICAgIH0pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg5
MSw3ICsxODkxLDkgQEAgKyAodm9pZCl3aWxsRW50ZXJCYWNrZ3JvdW5kV2l0aENvbXBsZXRpbwog
ewogICAgIFdlYlRocmVhZFJ1biheewogICAgICAgICBbV2ViVmlldyBfcmVsZWFzZU1lbW9yeU5v
d107Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGhh
bmRsZXIpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2hhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoaGFuZGxlcildIHsKKyAgICAgICAgICAgIGhhbmRsZXIoKTsKKyAgICAgICAgfSk7
CiAgICAgfSk7CiB9CiAKQEAgLTUwNTEsMTIgKzUwNTMsMTAgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRm9yd2FyZGVyOihfV2ViUwogCiAtICh2b2lkKWZvcndhcmRJbnZvY2F0aW9uOihOU0lu
dm9jYXRpb24gKilpbnZvY2F0aW9uCiB7Ci0gICAgLy8gU3RvcmUgX2ZvcndhcmRlciBpbiBhbiBp
dmFyIHNvIGl0IGlzIHJldGFpbmVkIGJ5IHRoZSBibG9jay4KLSAgICBfV2ViU2FmZUZvcndhcmRl
ciAqZm9yd2FyZGVyID0gX2ZvcndhcmRlcjsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkp
IHsKICAgICAgICAgW2ludm9jYXRpb24gcmV0YWluQXJndW1lbnRzXTsKLSAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtmb3J3
YXJkZXIgZm9yd2FyZEludm9jYXRpb246aW52b2NhdGlvbl07CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbZm9yd2FyZGVyID0gcmV0YWluUHRyKF9mb3J3YXJkZXIpLCBpbnZvY2F0
aW9uID0gcmV0YWluUHRyKGludm9jYXRpb24pXSB7CisgICAgICAgICAgICBbZm9yd2FyZGVyIGZv
cndhcmRJbnZvY2F0aW9uOmludm9jYXRpb24uZ2V0KCldOwogICAgICAgICB9KTsKICAgICB9IGVs
c2UKICAgICAgICAgW2ZvcndhcmRlciBmb3J3YXJkSW52b2NhdGlvbjppbnZvY2F0aW9uXTsKQEAg
LTY0NzYsNyArNjQ3Niw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0Ry
YWcKICAgICAgICAgICAgICAgICBpZiAoZXJyb3JPck5pbCkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3NlbGYsIHBhdGggPSBSZXRhaW5QdHI8TlNTdHJpbmc+KGZpbGVVUkwucGF0
aCksIGZpbGVOYW1lcywgZmlsZUNvdW50LCBkcmFnRGF0YV0geworICAgICAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgcGF0aCA9IFJldGFpblB0cjxOU1N0cmluZz4o
ZmlsZVVSTC5wYXRoKSwgZmlsZU5hbWVzLCBmaWxlQ291bnQsIGRyYWdEYXRhXSB7CiAgICAgICAg
ICAgICAgICAgICAgIGZpbGVOYW1lcy0+YXBwZW5kKHBhdGguZ2V0KCkpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoZmlsZU5hbWVzLT5zaXplKCkgPT0gZmlsZUNvdW50KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBkcmFnRGF0YS0+c2V0RmlsZU5hbWVzKCpmaWxlTmFtZXMpOwpAQCAtODAw
NCw3ICs4MDA0LDcgQEAgLSAodm9pZClzZXRFZGl0YWJsZTooQk9PTClmbGFnCiAgICAgICAgICAg
ICBfcHJpdmF0ZS0+cGFnZS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKCFmbGFnKTsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGlmIChmbGFnKSB7Ci0gICAgICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbXSB7CisgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICAgICAgICAgIFtbTlNTcGVsbENo
ZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBfcHJlZmxpZ2h0Q2hvc2VuU3BlbGxTZXJ2ZXJdOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
</data>
<flag name="commit-queue"
          id="434198"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416622</attachid>
            <date>2020-12-21 12:47:50 -0800</date>
            <delta_ts>2020-12-21 13:02:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220066-20201221124750.patch</filename>
            <type>text/plain</type>
            <size>88414</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTEyLTIxICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgLi4uKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgaGFzIHR3byBkb3du
c2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBpcyB1bmRlZmluZWQgKGFuZCBpbiBwcmFj
dGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRvCisgICAgICAgIG90aGVyIFdlYktpdCBv
cGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMgZmxha2luZXNzLgorCisgICAgICAgICgy
KSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZpcnN0IHBhaW50IG9wdGltaXphdGlvbi4K
KworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRpc3BhdGNoKCkgaW5zdGVhZC4KKworICAg
ICAgICAqIHd0Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW06CisgICAgICAgIChXVEY6OmRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWRXaXRoV2ViVGhyZWFkTG9ja0lmTmVlZGVkKToKKyAgICAgICAg
KFdURjo6Y2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKToKKwogMjAy
MC0xMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA4NjAuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9j
b2NvYS9NYWluVGhyZWFkQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY29j
b2EvTWFpblRocmVhZENvY29hLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV1RGL3d0
Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxzdGRpby5oPgogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0
Zi9SdW5Mb29wLmg+CkBAIC03MywxNCArNzQsMTYgQEAgdm9pZCBkaXNwYXRjaEFzeW5jT25NYWlu
VGhyZWFkV2l0aFdlYlRocgogewogI2lmIFVTRShXRUJfVEhSRUFEKQogICAgIGlmIChXZWJDb3Jl
V2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkgewotICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Jsb2NrID0gbWFrZUJsb2NrUHRyKGJsb2NrKV0g
ewogICAgICAgICAgICAgV2ViQ29yZVdlYlRocmVhZExvY2soKTsKICAgICAgICAgICAgIGJsb2Nr
KCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbYmxvY2sgPSBtYWtlQmxvY2tQdHIoYmxvY2spXSB7CisgICAg
ICAgIGJsb2NrKCk7CisgICAgfSk7CiB9CiAKIHZvaWQgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRj
aEFzeW5jT25NYWluVGhyZWFkKHZvaWQgKF5ibG9jaykoKSkKQEAgLTkxLDcgKzk0LDkgQEAgdm9p
ZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haQogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgYmxvY2spOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbYmxvY2sgPSBtYWtlQmxv
Y2tQdHIoYmxvY2spXSB7CisgICAgICAgIGJsb2NrKCk7CisgICAgfSk7CiB9CiAKICNpZiBVU0Uo
V0VCX1RIUkVBRCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDIwLTEy
LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
ZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
Li4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIw
MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlz
cGF0Y2hfYXN5bmMgaGFzIHR3byBkb3duc2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBp
cyB1bmRlZmluZWQgKGFuZCBpbiBwcmFjdGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRv
CisgICAgICAgIG90aGVyIFdlYktpdCBvcGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMg
Zmxha2luZXNzLgorCisgICAgICAgICgyKSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZp
cnN0IHBhaW50IG9wdGltaXphdGlvbi4KKworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRp
c3BhdGNoKCkgaW5zdGVhZC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uXSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlQZXJmb3JtSW5j
cmVtZW50QWN0aW9uXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlQZXJmb3JtRGVjcmVtZW50QWN0aW9uXSk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXR1cENvbnZlcnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1c2hTYW1wbGVzSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlc0ludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgor
ICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxsb2NdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzdFVuYmxvY2tBc3lu
YyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvd2VyU291cmNlTm90aWZpZXI6OlBvd2VyU291cmNlTm90aWZpZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRBVlBsYXllckl0ZW0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNsb25lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91bmRzT25NYWluVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6c2V0UG9zaXRpb25Pbk1haW5UaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpzZXRBbmNob3JQb2ludE9uTWFp
blRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOjptYXliZUJlY29tZVJlYWR5Rm9yTW9yZU1lZGlhRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmVucXVldWVEZWNvZGVkU2FtcGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6cmVxdWVz
dE1lZGlhRGF0YVdoZW5SZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb246Om5vdGlmeVdoZW5IYXNBdmFpbGFibGVWaWRlb0ZyYW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAg
ICgtW1dlYkFWUGxheWVyTGF5ZXIgbGF5b3V0U3VibGF5ZXJzXSk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmluYWxpemVTZXR1cCk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9FeGl0RnVsbHNjcmVlbik6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudDo6d2lsbEJlZ2luRmlyc3RUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQ6OmRpZEZpbmlzaExhc3RUcmFuc2FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCk6CisgICAgICAg
IChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5W
aWRlb0NvbnRlbnRMYXllcik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlvbkNoYW5nZWQpOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hh
bmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVy
ZWRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6cmF0ZUNoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2Vk
KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6Om11dGVkQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoTWFpblRocmVhZEFkb3B0QW5kUmVsZWFz
ZSk6CisgICAgICAgIChXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlQVZDYXB0dXJlRGV2aWNlTWFuYWdlck9ic2VydmVyIGRldmljZUNv
bm5lY3RlZERpZENoYW5nZTpdKToKKwogMjAyMC0xMi0xNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgd2Via2l0LSBwcmVmaXggdG8gU3BlZWNoUmVjb2du
aXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZp
c2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE2Niw3ICsz
MTY2LDcgQEAgLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uCiB7CiAgICAg
Ly8gSW4gY2FzZSBhbnl0aGluZyB3ZSBkbyBieSBwZXJmb3JtaW5nIHRoZSBwcmVzcyBhY3Rpb24g
Y2F1c2VzIGFuIGFsZXJ0IG9yIG90aGVyIG1vZGFsCiAgICAgLy8gYmVoYXZpb3JzLCB3ZSBuZWVk
IHRvIHJldHVybiBub3csIHNvIHRoYXQgVm9pY2VPdmVyIGRvZXNuJ3QgaGFuZyBpbmRlZmluaXRl
bHkuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7Cisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpXSB7CiAgICAgICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0
aW9uXTsKICAgICB9KTsKIH0KQEAgLTMxODUsNyArMzE4NSw3IEBAIC0gKHZvaWQpX2FjY2Vzc2li
aWxpdHlQZXJmb3JtUHJlc3NBY3Rpb24KIAogLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybUlu
Y3JlbWVudEFjdGlvbgogewotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UGVy
Zm9ybUluY3JlbWVudEFjdGlvbl07CiAgICAgfSk7CiB9CkBAIC0zMjA0LDcgKzMyMDQsNyBAQCAt
ICh2b2lkKV9hY2Nlc3NpYmlsaXR5UGVyZm9ybUluY3JlbWVudEFjCiAKIC0gKHZvaWQpYWNjZXNz
aWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb24KIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
c2VsZiwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICBbc2VsZiBf
YWNjZXNzaWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb25dOwogICAgIH0pOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0IDxtdXRleD4KICNpbXBvcnQgPHBhbC9h
dmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxzeXNsb2cuaD4K
KyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aD4KIAogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CkBAIC04Nyw3ICs4OCw3
IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0dXBDb24KIAogICAgIE9TU3Rh
dHVzIGVyciA9IEF1ZGlvQ29udmVydGVyTmV3KCZtX2lucHV0RGVzY3JpcHRpb24tPnN0cmVhbURl
c2NyaXB0aW9uKCksICZtX291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCAm
bV9jb252ZXJ0ZXIpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KCp0aGlzKSwgZXJyXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBlcnJdIHsKICAgICAgICAgICAgIEVS
Uk9SX0xPRygiQXVkaW9Db252ZXJ0ZXJOZXcgcmV0dXJuZWQgZXJyb3IgIiwgZXJyKTsKICAgICAg
ICAgfSk7CiAgICAgfQpAQCAtMTYxLDcgKzE2Miw3IEBAIHZvaWQgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdXNoU2FtcGxlc0kKIAogICAgIGlmIChtX2lucHV0U2FtcGxlT2Zmc2V0ID09IE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKSkgewogICAgICAgICBtX2lucHV0U2FtcGxlT2Zmc2V0ID0gTWVk
aWFUaW1lKDEgLSBzYW1wbGVUaW1lLnRpbWVWYWx1ZSgpLCBzYW1wbGVUaW1lLnRpbWVTY2FsZSgp
KTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2xv
Z0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBpbnB1dFNhbXBsZU9mZnNldCA9IG1faW5wdXRT
YW1wbGVPZmZzZXQudGltZVZhbHVlKCksIG1heGltdW1TYW1wbGVDb3VudCA9IG1fbWF4aW11bVNh
bXBsZUNvdW50LCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyldIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtsb2dJZGVudGlmaWVyID0gTE9HSURFTlRJ
RklFUiwgaW5wdXRTYW1wbGVPZmZzZXQgPSBtX2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVWYWx1ZSgp
LCBtYXhpbXVtU2FtcGxlQ291bnQgPSBtX21heGltdW1TYW1wbGVDb3VudCwgdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBBTFdBWVNfTE9HKGxv
Z0lkZW50aWZpZXIsICJpbnB1dCBzYW1wbGUgb2Zmc2V0IGlzICIsIGlucHV0U2FtcGxlT2Zmc2V0
LCAiLCBtYXhpbXVtU2FtcGxlQ291bnQgaXMgIiwgbWF4aW11bVNhbXBsZUNvdW50KTsKICAgICAg
ICAgfSk7CiAgICAgfQpAQCAtMjM4LDcgKzIzOSw3IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdWxsU2FtcGxlc0kKIAogICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IChlbmRG
cmFtZSAtIHNhbXBsZUNvdW50KSAtIHRpbWVTdGFtcDsKICAgICAgICAgbV9vdXRwdXRTYW1wbGVP
ZmZzZXQgLT0gY29tcHV0ZU9mZnNldERlbGF5KG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJh
dGUoKSwgbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJRVIs
IG91dHB1dFNhbXBsZU9mZnNldCA9IG1fb3V0cHV0U2FtcGxlT2Zmc2V0LCB0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtsb2dJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUiwgb3V0cHV0U2FtcGxlT2Zmc2V0
ID0gbV9vdXRwdXRTYW1wbGVPZmZzZXQsIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KCp0aGlzKV0gewogICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlmaWVyLCAic2V0dGlu
ZyBuZXcgb2Zmc2V0IHRvICIsIG91dHB1dFNhbXBsZU9mZnNldCk7CiAgICAgICAgIH0pOwogICAg
IH0KQEAgLTI0Niw3ICsyNDcsNyBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNh
bXBsZXNJCiAgICAgdGltZVN0YW1wICs9IG1fb3V0cHV0U2FtcGxlT2Zmc2V0OwogCiAgICAgaWYg
KHRpbWVTdGFtcCA8IHN0YXJ0RnJhbWUgfHwgdGltZVN0YW1wICsgc2FtcGxlQ291bnQgPiBlbmRG
cmFtZSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJRVIsIHRpbWVTdGFtcCwgc3RhcnRGcmFtZSwg
ZW5kRnJhbWUsIHNhbXBsZUNvdW50LCBvdXRwdXRTYW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBs
ZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJ
RVIsIHRpbWVTdGFtcCwgc3RhcnRGcmFtZSwgZW5kRnJhbWUsIHNhbXBsZUNvdW50LCBvdXRwdXRT
YW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBFUlJPUl9MT0cobG9nSWRlbnRpZmll
ciwgIm5vdCBlbm91Z2ggZGF0YSwgc2FtcGxlICIsIHRpbWVTdGFtcCwgIiB3aXRoIG9mZnNldCAi
LCBvdXRwdXRTYW1wbGVPZmZzZXQsICIsIHRyeWluZyB0byBnZXQgIiwgc2FtcGxlQ291bnQsICIg
c2FtcGxlcywgYnV0IG5vdCBjb21wbGV0ZWx5IGluIHJhbmdlIFsiLCBzdGFydEZyYW1lLCAiIC4u
ICIsIGVuZEZyYW1lLCAiXSIpOwogICAgICAgICB9KTsKIApAQCAtMjU5LDcgKzI2MCw3IEBAIGJv
b2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlc0kKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFdlIGFyZSB0b28gY2xvc2UgZnJvbSBlbmRGcmFtZSwgbGV0J3Mgd2Fp
dCBmb3IgbW9yZSBkYXRhIHRvIGJlIHB1c2hlZC4KICAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxl
T2Zmc2V0IC09IHNhbXBsZUNvdW50OwotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW2xvZ0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBvdXRw
dXRTYW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2xvZ0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBvdXRwdXRTYW1wbGVPZmZzZXQg
PSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
KnRoaXMpXSB7CiAgICAgICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlmaWVyLCAidXBk
YXRpbmcgb2Zmc2V0IHRvICIsIG91dHB1dFNhbXBsZU9mZnNldCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbkhlbHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCShyZXZpc2lvbiAyNzA4NjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVW5p
cXVlUmVmLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgpA
QCAtMzYyLDcgKzM2Myw3IEBAIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lvbkhl
bHAKICNlbmRpZgogCiAgICAgLy8gTm93IHBsYXlpbmcgd29uJ3Qgd29yayB1bmxlc3Mgd2UgdHVy
biBvbiB0aGUgZGVsaXZlcnkgb2YgcmVtb3RlIGNvbnRyb2wgZXZlbnRzLgotICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtdIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAg
ICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gYmVn
aW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKICAgICAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwpAQCAtMzc3LDcgKzM3OCw3IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAjaWYgIVBM
QVRGT1JNKFdBVENIT1MpCiAgICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewotICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcm91dGVEZXRlY3RvciA9
IFdURk1vdmUoX3JvdXRlRGV0ZWN0b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtyb3V0ZURldGVjdG9yID0gV1RGTW92ZShfcm91dGVEZXRlY3Rvcild
ICgpIG11dGFibGUgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAic2FmZWx5VGVhckRvd24gLSBk
aXBhdGNoZWQgdG8gVUkgdGhyZWFkLiIpOwogICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgICAgICAgICByb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9u
RW5hYmxlZCA9IE5POwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHJl
dmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMjMgKzEz
NywxMiBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuCiAgICAgcmV0
dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkaXNwYXRjaFRv
TWFpblRocmVhZCh2b2lkICheYmxvY2spKCkpCi17Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAg
ICBXZWJUaHJlYWRSdW4oYmxvY2spOwotI2Vsc2UKLSAgICAgICAgYmxvY2soKTsKLSNlbmRpZgot
ICAgIH0pOwotfQotCiB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzdFVu
YmxvY2tBc3luYyhEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiBkZWNpc2lvbkhhbmRsZXIpIGNvbnN0
CiB7CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAg
ICBpZiAobV93ZWJGaWx0ZXJFdmFsdWF0b3IpIHsKICAgICAgICAgW21fd2ViRmlsdGVyRXZhbHVh
dG9yIHVuYmxvY2tXaXRoQ29tcGxldGlvbjpbZGVjaXNpb25IYW5kbGVyXShCT09MIHVuYmxvY2tl
ZCwgTlNFcnJvciAqKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaFRvTWFpblRocmVhZChbZGVjaXNp
b25IYW5kbGVyLCB1bmJsb2NrZWRdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2Rl
Y2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CiAgICAgICAgICAgICAgICAgTE9HKENvbnRlbnRG
aWx0ZXJpbmcsICJXZWJGaWx0ZXJFdmFsdWF0b3IgJXMgdGhlIHVuYmxvY2sgcmVxdWVzdC5cbiIs
IHVuYmxvY2tlZCA/ICJhbGxvd2VkIiA6ICJkaWQgbm90IGFsbG93Iik7CiAgICAgICAgICAgICAg
ICAgZGVjaXNpb25IYW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTE2NCw3
ICsxNTMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzCiAKICAg
ICBpZiAobV91bmJsb2NrUmVxdWVzdGVyKSB7CiAgICAgICAgIG1fdW5ibG9ja1JlcXVlc3Rlcihb
ZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewotICAgICAgICAgICAgZGlzcGF0Y2hU
b01haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CisgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0gewogICAgICAgICAg
ICAgICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VO
b3RpZmllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
b3dlclNvdXJjZU5vdGlmaWVyLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Qb3dlclNvdXJjZU5vdGlmaWVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJTeXN0ZW1CYXR0ZXJ5LmgiCiAjaW1wb3J0IDxub3Rp
ZnkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvSU9QU0xpYlNQSS5oPgorI2ltcG9ydCA8d3Rm
L1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw3ICs0Niw3IEBAIFBv
d2VyU291cmNlTm90aWZpZXI6OlBvd2VyU291cmNlTm90aWZpZXIKIAogICAgIC8vIElmIHRoZSBj
dXJyZW50IHZhbHVlIG9mIHN5c3RlbUhhc0FDKCkgaXMgdW5jYWNoZWQsIGZvcmNlIGEgbm90aWZp
Y2F0aW9uLgogICAgIGlmICghY2FjaGVkU3lzdGVtSGFzQUMoKSkgewotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5ub3RpZnlQb3dlclNvdXJjZUNoYW5nZWQoKTsKICAgICAgICAg
fSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTkwOSw3ICs5
MDksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICBS
ZXRhaW5QdHI8QVZQbGF5ZXI+IHN0cm9uZ1BsYXllciA9IG1fYXZQbGF5ZXIuZ2V0KCk7CiAgICAg
UmV0YWluUHRyPEFWUGxheWVySXRlbT4gc3Ryb25nSXRlbSA9IGl0ZW07Ci0gICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1BsYXllciwgc3Ryb25nSXRl
bV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3Ryb25nUGxheWVyLCBzdHJvbmdJ
dGVtXSB7CiAgICAgICAgIFtzdHJvbmdQbGF5ZXIgcmVwbGFjZUN1cnJlbnRJdGVtV2l0aFBsYXll
ckl0ZW06c3Ryb25nSXRlbS5nZXQoKV07CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM3Miw3ICszNzIsNyBAQCBSZWY8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9y
bUNBTGF5ZXJDb2NvCiAgICAgICAgIEFWUGxheWVyTGF5ZXIgKnNvdXJjZVBsYXllckxheWVyID0g
YXZQbGF5ZXJMYXllcigpOwogICAgICAgICBBU1NFUlQoc291cmNlUGxheWVyTGF5ZXIpOwogCi0g
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZGVzdGluYXRpb25QbGF5ZXJMYXllciA9IHJl
dGFpblB0cihkZXN0aW5hdGlvblBsYXllckxheWVyKSwgc291cmNlUGxheWVyTGF5ZXIgPSByZXRh
aW5QdHIoc291cmNlUGxheWVyTGF5ZXIpXSB7CiAgICAgICAgICAgICBbZGVzdGluYXRpb25QbGF5
ZXJMYXllciBzZXRQbGF5ZXI6W3NvdXJjZVBsYXllckxheWVyIHBsYXllcl1dOwogICAgICAgICB9
KTsKICAgICB9CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNX
ZWJMYXllcigpCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91bmRzT25NYWluVGhyZWFkKENH
UmVjdCBib3VuZHMpCiB7CiAgICAgQ0FMYXllciAqbGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAgICAgICAgIFtsYXllciBzZXRCb3VuZHM6Ym91bmRzXTsKICAgICAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OnNldEJvdW5kc09uTWFpblRocgogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFBvc2l0aW9u
T25NYWluVGhyZWFkKENHUG9pbnQgcG9zaXRpb24pCiB7CiAgICAgQ0FMYXllciAqbGF5ZXIgPSBt
X2xheWVyLmdldCgpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIFtsYXllciBzZXRQb3NpdGlvbjpwb3NpdGlv
bl07CiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTExMTMsNyArMTExMyw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRQb3NpdGlvbk9uTWFpblQKIHZvaWQgUGxhdGZv
cm1DQUxheWVyOjpzZXRBbmNob3JQb2ludE9uTWFpblRocmVhZChGbG9hdFBvaW50M0QgdmFsdWUp
CiB7CiAgICAgQ0FMYXllciAqbGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtdIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAg
IFtsYXllciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZSh2YWx1ZS54KCksIHZhbHVlLnkoKSld
OwogICAgICAgICBbbGF5ZXIgc2V0QW5jaG9yUG9pbnRaOnZhbHVlLnooKV07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNl
c3Npb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCShyZXZpc2lvbiAyNzA4NjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFdl
YkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6bWF5YmVCCiAgICAgfQogCiAgICAgUmVmUHRyPFdl
YkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbj4gcHJvdGVjdGVkVGhpcyB7IHRoaXMgfTsKLSAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpc10g
eworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpc10gewogICAgICAg
ICBpZiAocHJvdGVjdGVkVGhpcy0+bV9ub3RpZmljYXRpb25DYWxsYmFjaykKICAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fbm90aWZpY2F0aW9uQ2FsbGJhY2soKTsKICAgICB9KTsKQEAgLTQx
OSw3ICs0MTksNyBAQCB2b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6ZW5xdWV1CiAg
ICAgaWYgKCFzaG91bGROb3RpZnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKG1faGFzQXZhaWxhYmxlRnJhbWVDYWxsYmFjayld
IHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUobV9oYXNBdmFpbGFibGVGcmFtZUNhbGxiYWNr
KV0gewogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0pOwogfQpAQCAtNDM3LDcgKzQzNyw3IEBA
IHZvaWQgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpyZXF1ZXMKIAogICAgIGlmIChub3Rp
ZmljYXRpb25DYWxsYmFjayAmJiBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YSgpKSB7CiAgICAgICAg
IFJlZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IHByb3RlY3RlZFRoaXMgeyB0aGlz
IH07Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtw
cm90ZWN0ZWRUaGlzXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpc10gewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fbm90aWZpY2F0aW9u
Q2FsbGJhY2spCiAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9ub3RpZmljYXRpb25D
YWxsYmFjaygpOwogICAgICAgICB9KTsKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbjo6c3RvcFJlCiB2b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbjo6bm90aWZ5V2hlbkhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGNhbGxiYWNrKQogewogICAgIGlmIChjYWxsYmFjayAmJiBtX3Byb2R1Y2VyUXVldWUgJiYg
IUNNQnVmZmVyUXVldWVJc0VtcHR5KG1fcHJvZHVjZXJRdWV1ZS5nZXQoKSkpIHsKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2NhbGxiYWNrXSB7Cisg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tdIHsKICAgICAgICAgICAg
IGNhbGxiYWNrKCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMxNyw3ICszMTcsNyBAQCAtICh2b2lkKWxheW91dFN1YmxheWVycwogICAgIFt2aWV3IHNl
dFRyYW5zZm9ybTp0cmFuc2Zvcm1dOwogCiAgICAgTlNUaW1lSW50ZXJ2YWwgYW5pbWF0aW9uRHVy
YXRpb24gPSBbQ0FUcmFuc2FjdGlvbiBhbmltYXRpb25EdXJhdGlvbl07Ci0gICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW10gewogICAgICAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVx
dWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3VuZHMpIG9i
amVjdDpuaWxdOwogCiAgICAgICAgIF92aWRlb1N1YmxheWVyRnJhbWUgPSB0YXJnZXRWaWRlb0Zy
YW1lOwpAQCAtMTQxNSw3ICsxNDE1LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6cHJlcAogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmaW5hbGl6
ZVNldHVwKCkKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlz
XSB7CiAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikgewogICAgICAgICAg
ICAgaWYgKCFtX2hhc1ZpZGVvQ29udGVudExheWVyICYmIG1fdGFyZ2V0TW9kZS5oYXNWaWRlbygp
KSB7CiAgICAgICAgICAgICAgICAgbV9maW5hbGl6ZVNldHVwTmVlZHNWaWRlb0NvbnRlbnRMYXll
ciA9IHRydWU7CkBAIC0xNTM0LDcgKzE1MzQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Ojpkb0V4CiAKICAgICBtX3N0YW5kYnkgPSBmYWxzZTsKIAotICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKSwgdGhpc10geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKICAgICAgICAgaWYgKG1fZnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyKQogICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJD
bGllbnQubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTYx
LDE0ICs2MSwxNCBAQCBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJTUUxpCiAK
IHZvaWQgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Ojp3aWxsQmVnaW5GaXJzdFRyYW5z
YWN0aW9uKCkKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbdGhpc10geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpc10gewogICAgICAg
ICBtX2h5c3RlcmVzaXMuc3RhcnQoKTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXJDbGllbnQ6OmRpZEZpbmlzaExhc3RUcmFuc2FjdGlvbigpCiB7Ci0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXNdIHsKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXNdIHsKICAgICAgICAgbV9oeXN0ZXJlc2lzLnN0b3Ao
KTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQkocmV2
aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0Miw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnIKICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgSW50UmVjdCBjbGllbnRSZWN0
ID0gZWxlbWVudFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY2xpZW50UmVjdF0geworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCB0aGlzLCBjbGllbnRSZWN0XSB7CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0SW5s
aW5lUmVjdChjbGllbnRSZWN0LCBjbGllbnRSZWN0ICE9IEludFJlY3QoMCwgMCwgMCwgMCkpOwog
ICAgICAgICB9KTsKICAgICB9KTsKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyCiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSByZXRhaW5Q
dHIoW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl0pXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
W3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdl
YkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudEJsYWNrKV07CiAgICAgICAgIG1fZnVsbHNjcmVlbk1v
ZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwg
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10geworICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgdGhpc10gewogICAgICAgICAgICAgICAgIGlmICghbV9pbnRlcmZhY2Up
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnIKICAgICBXZWJUaHJlYWRSdW4oW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXll
ciA9IHJldGFpblB0cihbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXSldICgpIG11dGFibGUg
ewogICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hl
ZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50QmxhY2spXTsKICAgICAgICAgbV9m
dWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10geworICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgdGhpc10gewogICAgICAgICAgICAgICAgIGlmICghbV9pbnRlcmZhY2UpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMjk1LDE0ICsyOTUsMTQgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZAogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7
CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKSwgdGhpc10gewogICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7
CiAgICAgfSk7CiAjZWxzZQogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyID0gcmV0YWluUHRyKFttX3Zp
ZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFt2aWRlb0Z1
bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpD
b2xvcjo6dHJhbnNwYXJlbnRCbGFjayldOwogICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCksIFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdIHsKKyAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHRoaXNdIHsKICAgICAgICAgICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2Ny
ZWVuKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC0zMjQsMTMgKzMyNCwxMyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkCiB7CiAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyksIHRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CiAgICAgICAgIG1faW50ZXJmYWNlLT5j
bGVhbnVwRnVsbHNjcmVlbigpOwogICAgIH0pOwogI2Vsc2UKICAgICBXZWJUaHJlYWRSdW4oW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10geworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgdGhpc10gewogICAgICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5jbGVhbnVwRnVs
bHNjcmVlbigpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtMzY0LDcgKzM2NCw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmYKICAgICBBU1NFUlQo
aXNVSVRocmVhZCgpKTsKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgSW50UmVjdCBjbGllbnRSZWN0
ID0gZWxlbWVudFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY2xpZW50UmVjdF0geworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCB0aGlzLCBjbGllbnRSZWN0XSB7CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+cHJlcGFy
ZWRUb1JldHVyblRvSW5saW5lKHRydWUsIGNsaWVudFJlY3QpOwogICAgICAgICB9KTsKICAgICB9
KTsKQEAgLTM3NSw3ICszNzUsNyBAQCAgICAgICAgICAgICBtX2ludGVyZmFjZS0+cHJlcGFyZWRU
b1JldHVyCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlvbkNo
YW5nZWQoZG91YmxlIGR1cmF0aW9uKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkg
ewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGR1cmF0aW9uXSB7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGR1
cmF0aW9uXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kdXJhdGlvbkNoYW5nZWQoZHVy
YXRpb24pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzg4LDcgKzM4OCw3IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmQKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgY3VycmVu
dFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQo
KSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1l
XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIodGhpcyksIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lXSB7CiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5jdXJyZW50VGltZUNoYW5nZWQoY3VycmVudFRpbWUsIGFuY2hvclRpbWUp
OwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmMKIHZvaWQgVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmJ1ZmZlcmVkVGltZUNoYW5nZWQoZG91YmxlIGJ1ZmZlcmVkVGlt
ZSkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCBidWZmZXJlZFRpbWVdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgYnVmZmVyZWRUaW1lXSB7CiAg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5idWZmZXJlZFRpbWVDaGFuZ2VkKGJ1ZmZlcmVkVGlt
ZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC00MTQsNyArNDE0LDcgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Ygogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6cmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBs
YXliYWNrUmF0ZSkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZV0geworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
LCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZV0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
cmF0ZUNoYW5nZWQoaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnIKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6Omhh
c1ZpZGVvQ2hhbmdlZChib29sIGhhc1ZpZGVvKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJl
bnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGhhc1ZpZGVvXSB7CisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIGhhc1ZpZGVvXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5oYXNWaWRlb0NoYW5n
ZWQoaGFzVmlkZW8pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDQwLDcgKzQ0
MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmgKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQoY29u
c3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3Vy
cmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9EaW1lbnNpb25zID0g
dmlkZW9EaW1lbnNpb25zXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRGltZW5zaW9ucyA9IHZpZGVvRGlt
ZW5zaW9uc10gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+dmlkZW9EaW1lbnNpb25zQ2hh
bmdlZCh2aWRlb0RpbWVuc2lvbnMpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NDUzLDcgKzQ1Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnYK
IHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNlZWthYmxlUmFuZ2VzQ2hh
bmdlZChjb25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGlt
ZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJy
ZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBwbGF0Zm9ybVRpbWVSYW5nZXMg
PSB0aW1lUmFuZ2VzLnJhbmdlcygpLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2
YWxdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZlB0cih0aGlzKSwgcGxhdGZvcm1UaW1lUmFuZ2VzID0gdGltZVJhbmdlcy5yYW5nZXMo
KSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsXSB7CiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5zZWVrYWJsZVJhbmdlc0NoYW5nZWQoVGltZVJhbmdlczo6Y3JlYXRlKHBs
YXRmb3JtVGltZVJhbmdlcyksIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZhbCk7
CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29sIGNhblBsYXlG
YXN0UmV2ZXJzZSkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCBjYW5QbGF5RmFzdFJldmVyc2VdIHsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY2Fu
UGxheUZhc3RSZXZlcnNlXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYW5QbGF5RmFz
dFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CkBAIC00ODgsNyArNDg4LDcgQEAgc3RhdGljIFZlY3RvcjxNZWRpYVNlbGVjdGlv
bk9wdGlvbj4gaXNvbAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlv
bk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgaWYgKFdl
YlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgb3B0aW9u
cyA9IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2VsZWN0ZWRJbmRleF0geworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBv
cHRpb25zID0gaXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0
aW9ucywgc2VsZWN0ZWRJbmRleCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC01
MDEsNyArNTAxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YQog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0
aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJy
ZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBvcHRpb25zID0gaXNvbGF0ZWRD
b3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIG9wdGlvbnMgPSBpc29s
YXRlZENvcHkob3B0aW9ucyksIHNlbGVjdGVkSW5kZXhdIHsKICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVj
dGVkSW5kZXgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTI4LDcgKzUyOCw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmUKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVk
Q2hhbmdlZChib29sIGRpc2FibGVkKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkg
ewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGRpc2FibGVkXSB7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGRp
c2FibGVkXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT53aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZENoYW5nZWQoZGlzYWJsZWQpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OncKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6Om11dGVkQ2hhbmdl
ZChib29sIG11dGVkKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIG11dGVkXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIG11dGVkXSB7CiAgICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tdXRlZENoYW5nZWQobXV0ZWQpOwogICAgICAgICB9KTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6Om0KIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OnZvbHVtZUNoYW5nZWQoZG91YmxlIHZvbHVtZSkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXND
dXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2b2x1bWVdIHsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0
aGlzKSwgdm9sdW1lXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT52b2x1bWVDaGFuZ2Vk
KHZvbHVtZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC05ODMsNyArOTgzLDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cwogCiAgICAgRmxvYXRT
aXplIHZpZGVvRGltZW5zaW9ucyA9IHsgKGZsb2F0KXZpZGVvRWxlbWVudC52aWRlb1dpZHRoKCks
IChmbG9hdCl2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQoKSB9OwogCi0gICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpLCB0aGlzLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWRlb0RpbWVuc2lvbnMsIHZp
ZXdSZWYsIG1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmVdIHsKKyAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCB2aWRl
b0VsZW1lbnRDbGllbnRSZWN0LCB2aWRlb0RpbWVuc2lvbnMsIHZpZXdSZWYsIG1vZGUsIGFsbG93
c1BpY3R1cmVJblBpY3R1cmVdIHsKICAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAg
ICAgIFdlYlRocmVhZExvY2soKTsKIApAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1
cnJlbnQoKSB8fCBpc01haW5UaHJlYWQoKSk7CiAgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gZWxl
bWVudFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0gICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpLCB0aGlzLCBjbGllbnRSZWN0XSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY2xpZW50UmVjdF0gewog
ICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICAgICAgbV9pbnRlcmZhY2UtPmV4aXRG
dWxsc2NyZWVuKGNsaWVudFJlY3QpOwogICAgIH0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQkocmV2aXNpb24gMjcwODY5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTAsNyArMjkwLDcgQEAgc3RhdGljIHZvaWQgTWFpblRocmVhZEFkb3B0
QW5kUmVsZWFzZShpZAogICAgIC8vIFdlIG93biBvYmogYXQgdGhpcyBwb2ludCwgc28gd2UgZG9u
J3QgbmVlZCB0aGUgYmxvY2sgdG8gaW1wbGljaXRseQogICAgIC8vIHJldGFpbiBpdC4KICAgICBf
X2Jsb2NrIGlkIG9iak5vdFJldGFpbmVkID0gb2JqOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtd
IHsKICAgICAgICAgW29iak5vdFJldGFpbmVkIHJlbGVhc2VdOwogICAgIH0pOwogfQpAQCAtNDM3
LDcgKzQzNyw3IEBAIHZvaWQgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihOU1N0cmluZyoKICAg
ICBpZiAocHRocmVhZF9tYWluX25wKCkpCiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6bmFtZSBvYmplY3Q6b2JqZWN0IHVz
ZXJJbmZvOnVzZXJJbmZvXTsKICAgICBlbHNlIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbXSB7CiAgICAgICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5hbWUgb2JqZWN0Om9iamVjdCB1c2VySW5mbzp1c2Vy
SW5mb107CiAgICAgICAgIH0pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQkocmV2
aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXR1cEYKIAogICAgIFt2aWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VPYmpDKCkgc2V0VXBQSVBGb3JWaWRlb1ZpZXc6JmxheWVySG9zdGVkVmll
dyB3aXRoRnJhbWU6KE5TUmVjdClpbml0aWFsUmVjdCBpbldpbmRvdzpwYXJlbnRXaW5kb3ddOwog
Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10gewogICAgICAg
ICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCiAgICAgICAgICAgICBtX2Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlci0+ZGlkU2V0dXBGdWxsc2NyZWVuKCk7CiAgICAgfSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFu
YWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MCw3ICsyNjAsNyBAQCAtICh2b2lkKWRldmljZUNv
bm5lY3RlZERpZENoYW5nZTooTlNOb3RpCiAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBe
eworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgcHJvdGVjdGVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKV0gewogICAgICAgICBpZiAobV9jYWxsYmFjaykKICAgICAgICAgICAgIG1f
Y2FsbGJhY2stPnJlZnJlc2hDYXB0dXJlRGV2aWNlcygpOwogICAgIH0pOwpJbmRleDogU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI3MTAzNikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjAtMTItMjEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmVkIG1vc3QgdXNlcyBvZiBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAuLi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBkaXNwYXRjaF9hc3luYyBoYXMgdHdvIGRvd25zaWRl
czoKKworICAgICAgICAoMSkgSXRzIG9yZGVyIGlzIHVuZGVmaW5lZCAoYW5kIGluIHByYWN0aWNl
IGhpZ2hseSB2YXJpYWJsZSkgcmVsYXRpdmUgdG8KKyAgICAgICAgb3RoZXIgV2ViS2l0IG9wZXJh
dGlvbnMuIFRoaXMgc29tZXRpbWVzIGNhdXNlcyBmbGFraW5lc3MuCisKKyAgICAgICAgKDIpIEl0
IGRvZXNuJ3QgaG9ub3IgdGhlIFJ1bkxvb3AgZmlyc3QgcGFpbnQgb3B0aW1pemF0aW9uLgorCisg
ICAgICAgIFdlIGNhbiB1c2UgUnVuTG9vcDo6ZGlzcGF0Y2goKSBpbnN0ZWFkLgorCisgICAgICAg
ICogUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZFJlcXVlc3RNZXJjaGFu
dFNlc3Npb246XSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hl
Y2tzLm1tOgorICAgICAgICAoV2ViS2l0OjpkZXRlcm1pbmVJVFBTdGF0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOgorICAgICAgICAoV0tD
b250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tOgorICAgICAgICAoK1tOU0F0dHJpYnV0ZWRT
dHJpbmcgX2xvYWRGcm9tSFRNTFdpdGhPcHRpb25zOmNvbnRlbnRMb2FkZXI6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIubW06CisgICAgICAgICgrW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBy
ZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOl0pOgorICAgICAgICAoK1tXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5jRnVuY3Rpb246d2l0aFNvdXJjZVVS
TDp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6aW5GcmFtZTppbldvcmxkOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2ludGVybmFsRG9BZnRlck5leHRQ
cmVzZW50YXRpb25VcGRhdGU6d2l0aG91dFdhaXRpbmdGb3JQYWludGluZzp3aXRob3V0V2FpdGlu
Z0ZvckFuaW1hdGVkUmVzaXplOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4dFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2NoZWR1bGVWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGVBZnRlclNjcm9sbEluVmlldzpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91
cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZmlyZVBy
ZXNlbnRhdGlvblVwZGF0ZUZvclBlbmRpbmdTdGFibGVTdGF0ZVByZXNlbnRhdGlvbkNhbGxiYWNr
c10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RvQWZ0ZXJOZXh0U3RhYmxlUHJlc2VudGF0aW9u
VXBkYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50OjpyZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06Cisg
ICAgICAgIChXZWJLaXQ6OnRyeUludGVyY2VwdE5hdmlnYXRpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW06CisgICAgICAgICgtW1dLUHJlZmVyZW5j
ZU9ic2VydmVyIHByZWZlcmVuY2VEaWRDaGFuZ2U6a2V5OmVuY29kZWRWYWx1ZTpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyLm1tOgor
ICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlciBvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OndlYlByb2Nl
c3NQb29sSGlnaER5bmFtaWNSYW5nZURpZENoYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgICgtW1dLRE9NUGFzdGVNZW51RGVs
ZWdhdGUgbWVudURpZENsb3NlOl0pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBk
YXRlV2luZG93QW5kVmlld0ZyYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRUb3BDb250ZW50SW5zZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkQmVj
b21lRWRpdGFibGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdENhbmRp
ZGF0ZXNGb3JTZWxlY3Rpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0VuZG93bWVudFN0
YXRlVHJhY2tlci5tbToKKyAgICAgICAgKFdlYktpdDo6RW5kb3dtZW50U3RhdGVUcmFja2VyOjpy
ZWdpc3Rlck1vbml0b3JJZk5lY2Vzc2FyeSk6CisgICAgICAgICogVUlQcm9jZXNzL19XS1RvdWNo
RXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW19XS1RvdWNoRXZlbnRHZW5lcmF0b3IgX3Nl
bmRISURFdmVudDpdKToKKyAgICAgICAgKC1bX1dLVG91Y2hFdmVudEdlbmVyYXRvciBfc2VuZE1h
cmtlckhJREV2ZW50V2l0aENvbXBsZXRpb25CbG9jazpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW06CisgICAgICAgICgtW1dLUHJvY2Vzc0Fzc2VydGlv
bkJhY2tncm91bmRUYXNrTWFuYWdlciBfdXBkYXRlQmFja2dyb3VuZFRhc2tdKToKKyAgICAgICAg
KC1bV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIF9oYW5kbGVCYWNrZ3Jv
dW5kVGFza0V4cGlyYXRpb25Pbk1haW5UaHJlYWRdKToKKyAgICAgICAgKC1bV0tSQlNBc3NlcnRp
b25EZWxlZ2F0ZSBhc3NlcnRpb246ZGlkSW52YWxpZGF0ZVdpdGhFcnJvcjpdKToKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc0Fzc2VydGlvbjo6UHJvY2Vzc0Fzc2VydGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgcmVzaWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3XSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERGVmlldyBwZGZIb3N0
Vmlld0NvbnRyb2xsZXJFeHRlbnNpb25Qcm9jZXNzRGlkQ3Jhc2g6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAgKC1bV0tGaWxl
VXBsb2FkUGFuZWwgaW1hZ2VQaWNrZXJDb250cm9sbGVyOmRpZEZpbmlzaFBpY2tpbmdNZWRpYVdp
dGhJbmZvOl0pOgorICAgICAgICAoLVtXS0ZpbGVVcGxvYWRQYW5lbCBpbWFnZVBpY2tlckNvbnRy
b2xsZXI6ZGlkRmluaXNoUGlja2luZ011bHRpcGxlTWVkaWFXaXRoSW5mbzpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklP
Uy5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBwbGFjZWhvbGRl
cldpbGxNb3ZlVG9TdXBlcnZpZXc6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Ojp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4pOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4p
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFu
dXBGdWxsc2NyZWVuKToKKwogMjAyMC0xMi0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYW55IHdlYnNpdGVzIGNyYXNoIHVuZGVyIHRvRGF0YVVS
TCgpIHdoZW4gZW5hYmxpbmcgR1BVIHByb2Nlc3MgZm9yIERPTQpJbmRleDogU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0
aW9uRGVsZWdhdGUubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzUsNyArMTM1LDcgQEAgLSAodm9pZClfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjoo
V2ViSwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFr
ZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9y
KTsKIAotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBe
eworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHByb3RlY3RlZFNlbGYg
PSByZXRhaW5QdHIoc2VsZiksIG1lcmNoYW50VVJMID0gcmV0YWluUHRyKG1lcmNoYW50VVJMKV0g
ewogICAgICAgICAgICAgQVNTRVJUKF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlv
bik7CiAKICAgICAgICAgICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQoKTsKQEAg
LTE0NCw3ICsxNDQsNyBAQCAtICh2b2lkKV9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOihXZWJL
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBw
cmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlcldpbGxWYWxpZGF0ZU1lcmNoYW50KCpwcmVzZW50
ZXIsIG1lcmNoYW50VVJMKTsKKyAgICAgICAgICAgIHByZXNlbnRlci0+Y2xpZW50KCkucHJlc2Vu
dGVyV2lsbFZhbGlkYXRlTWVyY2hhbnQoKnByZXNlbnRlciwgbWVyY2hhbnRVUkwuZ2V0KCkpOwog
ICAgICAgICB9KTsKICAgICB9XTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCShyZXZpc2lvbiAyNzA4Njkp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgZGV0ZXJtaW5lSVRQU3Rh
dGUoKQogICAgIGRpc3BhdGNoX2FzeW5jKGdfaXRwUXVldWUsIFthcHBXYXNMaW5rZWRPbk9yQWZ0
ZXIsIGJ1bmRsZUlkZW50aWZpZXIgPSBXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBnX2N1cnJlbnRJVFBTdGF0ZSA9IGRldGVy
bWluZUlUUFN0YXRlSW50ZXJuYWwoYXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlm
aWVyKSA/IElUUFN0YXRlOjpFbmFibGVkIDogSVRQU3RhdGU6OkRpc2FibGVkOwogCi0gICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CiAgICAgICAgICAgICBkaXNwYXRjaF9yZWxlYXNl
KGdfaXRwUXVldWUpOwogICAgICAgICAgICAgZ19pdHBRdWV1ZSA9IG51bGxwdHI7CiAgICAgICAg
IH0pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRW5kb3dtZW50U3RhdGVUcmFja2Vy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRl
VHJhY2tlci5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RW5kb3dtZW50U3RhdGVUcmFja2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcg
QEAgdm9pZCBFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnJlZ2lzdGVyTW9uaQogICAgICAgICBbY29u
ZmlnIHNldFN0YXRlRGVzY3JpcHRvcjpzdGF0ZURlc2NyaXB0b3JdOwogCiAgICAgICAgIFtjb25m
aWcgc2V0VXBkYXRlSGFuZGxlcjpbdGhpc10gKFJCU1Byb2Nlc3NNb25pdG9yICogX05vbm51bGwg
bW9uaXRvciwgUkJTUHJvY2Vzc0hhbmRsZSAqIF9Ob25udWxsIHByb2Nlc3MsIFJCU1Byb2Nlc3NT
dGF0ZVVwZGF0ZSAqIF9Ob25udWxsIHVwZGF0ZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbdGhpcywgc3RhdGUgPSBzdGF0
ZUZyb21FbmRvd21lbnRzKHVwZGF0ZS5zdGF0ZS5lbmRvd21lbnROYW1lc3BhY2VzKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc3RhdGUg
PSBzdGF0ZUZyb21FbmRvd21lbnRzKHVwZGF0ZS5zdGF0ZS5lbmRvd21lbnROYW1lc3BhY2VzKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBzZXRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW0JKHJldmlzaW9uIDI3MDg2OSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCAtIChCT09MKV9zZW5kSElERXZlbnQ6KElPSElE
RXZlbnRSZWYpZXZlCiAKICAgICBpZiAoZXZlbnRSZWYpIHsKICAgICAgICAgUmV0YWluUHRyPElP
SElERXZlbnRSZWY+IHN0cm9uZ0V2ZW50ID0gZXZlbnRSZWY7Ci0gICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbXSB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
ICAgICAgICAgdWludDMyX3QgY29udGV4dElEID0gW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGlj
YXRpb25dLmtleVdpbmRvdy5fY29udGV4dElkOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECkBAIC0yNDAsNyArMjQwLDcgQEAgLSAoQk9PTClfc2VuZE1hcmtlckhJREV2ZW50V2l0
aENvbXBsZXRpbwogICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpKTsKICAgICAKICAgICBp
ZiAobWFya2VyRXZlbnQpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW21hcmtlckV2ZW50ID0gV1RGTW92ZShtYXJrZXJFdmVudCldIHsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFttYXJrZXJFdmVudCA9IFdURk1vdmUobWFya2Vy
RXZlbnQpXSB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAg
ICAgYXV0byBjb250ZXh0SUQgPSBbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0ua2V5
V2luZG93Ll9jb250ZXh0SWQ7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0Nv
bnRleHRQcml2YXRlTWFjLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgPFdl
YkNvcmUvUGx1Z2luQmxvY2tsaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkdMQmxvY2tsaXN0
Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
IAogYm9vbCBXS0NvbnRleHRJc1BsdWdJblVwZGF0ZUF2YWlsYWJsZShXS0NvbnRleHRSZWYsIFdL
U3RyaW5nUmVmKQpAQCAtODMsNyArODQsNyBAQCB2b2lkIFdLQ29udGV4dEdldEluZm9Gb3JJbnN0
YWxsZWRQbHVnSW5zCiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gQVBJOjpBcnJheTo6
Y3JlYXRlKFdURk1vdmUocGx1Z2luSW5mb0RpY3Rpb25hcmllcykpOwogCiAgICAgV2ViS2l0Ojp0
b0ltcGwoY29udGV4dFJlZiktPnJlZigpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF4oKSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtibG9j
ayA9IG1ha2VCbG9ja1B0cihibG9jayksIGFycmF5ID0gV1RGTW92ZShhcnJheSksIGNvbnRleHRS
ZWZdIHsKICAgICAgICAgYmxvY2soV2ViS2l0Ojp0b0FQSShhcnJheS5nZXQoKSksIDApOwogICAg
IAogICAgICAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+ZGVyZWYoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRl
ZFN0cmluZy5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcg
KzMzNSw5IEBAICsgKHZvaWQpX2xvYWRGcm9tSFRNTFdpdGhPcHRpb25zOihOU0RpY3QKICAgICBp
ZiAoW05TVGhyZWFkIGlzTWFpblRocmVhZF0pCiAgICAgICAgIHJ1bkNvbnZlcnNpb24oKTsKICAg
ICBlbHNlCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IHJ1bkNvbnZlcnNpb24pOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3J1bkNv
bnZlcnNpb24gPSBtYWtlQmxvY2tQdHIocnVuQ29udmVyc2lvbildIHsKKyAgICAgICAgICAgIHJ1
bkNvbnZlcnNpb24oKTsKKyAgICAgICAgfSk7CiB9CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTA1LDkgKzEwNSw5IEBAICsgKHZvaWQpcmVnaXN0ZXJTY2hlbWVGb3JDdXN0
b21Qcm90b2NvbDoKICAgICBpZiAoW05TVGhyZWFkIGlzTWFpblRocmVhZF0pCiAgICAgICAgIFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0
b21Qcm90b2NvbEhhbmRsZXJzKHNjaGVtZSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbc2NoZW1lID0g
cmV0YWluUHRyKHNjaGVtZSldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
Y2hlbWUgPSByZXRhaW5QdHIoc2NoZW1lKV0gewogICAgICAgICAgICAgV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFu
ZGxlcnMoc2NoZW1lLmdldCgpKTsKLSAgICAgICAgfSkuZ2V0KCkpOworICAgICAgICB9KTsKICAg
ICB9CiB9CiAKQEAgLTExNiw5ICsxMTYsOSBAQCArICh2b2lkKXVucmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvCiAgICAgaWYgKFtOU1RocmVhZCBpc01haW5UaHJlYWRdKQogICAgICAgICBX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdD
dXN0b21Qcm90b2NvbEhhbmRsZXJzKHNjaGVtZSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbc2NoZW1l
ID0gcmV0YWluUHRyKHNjaGVtZSldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtzY2hlbWUgPSByZXRhaW5QdHIoc2NoZW1lKV0gewogICAgICAgICAgICAgV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6dW5yZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9j
b2xIYW5kbGVycyhzY2hlbWUuZ2V0KCkpOwotICAgICAgICB9KS5nZXQoKSk7CisgICAgICAgIH0p
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI5LDcgKzEw
MjksNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopCiAgICAgICAg
IFt1c2VySW5mbyBzZXRPYmplY3Q6ZXJyb3JNZXNzYWdlIGZvcktleTpfV0tKYXZhU2NyaXB0RXhj
ZXB0aW9uTWVzc2FnZUVycm9yS2V5XTsKIAogICAgICAgICBhdXRvIGVycm9yID0gYWRvcHROUyhb
W05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
SmF2YVNjcmlwdEV4Y2VwdGlvbk9jY3VycmVkIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7Ci0g
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtoYW5kbGVy
LCBlcnJvcl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2hhbmRsZXIsIGVy
cm9yXSB7CiAgICAgICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoaWQsIE5TRXJy
b3IgKikpaGFuZGxlci5nZXQoKTsKICAgICAgICAgICAgIHJhd0hhbmRsZXIobmlsLCBlcnJvci5n
ZXQoKSk7CiAgICAgICAgIH0pOwpAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgLSAodm9pZClfaW50ZXJu
YWxEb0FmdGVyTmV4dFByZXNlbnRhdGlvbgogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRDb250ZW50Vmlld10pIHsKLSAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgdXBkYXRlQmxvY2spOworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2godXBkYXRlQmxvY2spOwogICAgICAgICByZXR1cm47
CiAgICAgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3VGVzdGluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTExNCw3ICsxMTQsOSBAQCAtICh2b2lkKV9kb0FmdGVyTmV4dFZpc2libGVD
b250ZW50UmVjdFVwCiAgICAgX3Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUNhbGxiYWNrcy5hcHBl
bmQobWFrZUJsb2NrUHRyKHVwZGF0ZUJsb2NrKSk7CiAgICAgW3NlbGYgX3NjaGVkdWxlVmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlXTsKICNlbHNlCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgdXBkYXRlQmxvY2spOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbdXBkYXRlQmxvY2sgPSBtYWtlQmxvY2tQdHIodXBkYXRlQmxvY2spXSB7CisgICAgICAg
IHVwZGF0ZUJsb2NrKCk7CisgICAgfSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHJldmlzaW9uIDI3MDg2
OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTIyLDcgKzE5MjIsNyBAQCAtICh2b2lkKV9zY2hlZHVsZVZpc2li
bGVDb250ZW50UmVjdFVwZGF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcmV0YWluZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZXRhaW5lZFNlbGYg
PSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gcmV0YWlu
ZWRTZWxmLmdldCgpOwogICAgICAgICBpZiAoIVt3ZWJWaWV3IF9pc1ZhbGlkXSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTIwNjAsNyArMjA2MCw3IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVD
b250ZW50UmVjdHMKIAogICAgICAgICAgICAgaWYgKCFDR1BvaW50RXF1YWxUb1BvaW50KGFjdGl2
ZVBvaW50LCBjdXJyZW50UG9pbnQpKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPFdLU2Ny
b2xsVmlldz4gc3Ryb25nU2Nyb2xsVmlldyA9IF9zY3JvbGxWaWV3OwotICAgICAgICAgICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdTY3JvbGxW
aWV3LCBhY3RpdmVQb2ludF0geworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbc3Ryb25nU2Nyb2xsVmlldywgYWN0aXZlUG9pbnRdIHsKICAgICAgICAgICAgICAgICAg
ICAgW3N0cm9uZ1Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDphY3RpdmVQb2ludCBhbmltYXRl
ZDpOT107CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CkBAIC0yNDE5LDcgKzI0
MTksNyBAQCAtICh2b2lkKV9maXJlUHJlc2VudGF0aW9uVXBkYXRlRm9yUGVuZGluCiB7CiAgICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gc3Ryb25nU2VsZiA9IHNlbGY7CiAgICAgW3NlbGYgX2RvQWZ0
ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOltzdHJvbmdTZWxmXSB7Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdTZWxmXSB7CisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3Ryb25nU2VsZl0gewogICAgICAgICAgICAgaWYg
KFtzdHJvbmdTZWxmLT5fc3RhYmxlU3RhdGVQcmVzZW50YXRpb25VcGRhdGVDYWxsYmFja3MgY291
bnRdKQogICAgICAgICAgICAgICAgIFtzdHJvbmdTZWxmIF9maXJlUHJlc2VudGF0aW9uVXBkYXRl
Rm9yUGVuZGluZ1N0YWJsZVN0YXRlUHJlc2VudGF0aW9uQ2FsbGJhY2tzXTsKICAgICAgICAgfSk7
CkBAIC0yNzAwLDcgKzI3MDAsNyBAQCAtIChDR1BvaW50KV9jb252ZXJ0UG9pbnRGcm9tVmlld1Rv
Q29udGVuCiAtICh2b2lkKV9kb0FmdGVyTmV4dFN0YWJsZVByZXNlbnRhdGlvblVwZGF0ZTooZGlz
cGF0Y2hfYmxvY2tfdCl1cGRhdGVCbG9jawogewogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJk
Q29udGVudFZpZXddKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIHVwZGF0ZUJsb2NrKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KHVwZGF0ZUJsb2NrKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50Lm1tCShyZXZpc2lv
biAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xp
ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5ICs4NSw5IEBAIHZvaWQgQXV0b21hdGlvbkNs
aWVudDo6cmVxdWVzdEF1dG9tYXRpb24KICAgICAvLyBSZW1vdGVJbnNwZWN0b3Igd2lsbCB0cnkg
dG8gYWNxdWlyZSBpdHMgbG9jayB0byByZWdpc3RlciB0aGUgbmV3IHNlc3Npb24gYW5kCiAgICAg
Ly8gZGVhZGxvY2sgYmVjYXVzZSBpdCdzIGFscmVhZHkgdGFrZW4gd2hpbGUgaGFuZGxpbmcgWFBD
IG1lc3NhZ2VzLgogICAgIE5TU3RyaW5nICpyZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllciA9IHNl
c3Npb25JZGVudGlmaWVyOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCByZXF1ZXN0ZWRT
ZXNzaW9uSWRlbnRpZmllciA9IHJldGFpblB0cihyZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllciks
IGNvbmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoY29uZmlndXJhdGlvbildIHsKICAgICAgICAgaWYg
KG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbikKLSAgICAgICAgICAg
IFttX2RlbGVnYXRlLmdldCgpIF9wcm9jZXNzUG9vbDptX3Byb2Nlc3NQb29sIGRpZFJlcXVlc3RB
dXRvbWF0aW9uU2Vzc2lvbldpdGhJZGVudGlmaWVyOnJlcXVlc3RlZFNlc3Npb25JZGVudGlmaWVy
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CisgICAgICAgICAgICBbbV9kZWxlZ2F0ZS5n
ZXQoKSBfcHJvY2Vzc1Bvb2w6bV9wcm9jZXNzUG9vbCBkaWRSZXF1ZXN0QXV0b21hdGlvblNlc3Np
b25XaXRoSWRlbnRpZmllcjpyZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllci5nZXQoKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lv
biAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCB0cnlJ
bnRlcmNlcHROYXZpZ2F0aW9uKFJlZjxBCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6dXJs
IGNvbXBsZXRpb25IYW5kbGVyOltsb2NhbENvbXBsZXRpb25IYW5kbGVyXShCT09MIHN1Y2Nlc3Ms
IE5TRXJyb3IgKikgewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW2xvY2FsQ29tcGxldGlvbkhhbmRsZXIsIHN1Y2Nlc3NdIHsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbG9jYWxDb21wbGV0aW9uSGFuZGxlciwgc3Vj
Y2Vzc10gewogICAgICAgICAgICAgICAgICgqbG9jYWxDb21wbGV0aW9uSGFuZGxlcikoc3VjY2Vz
cyk7CiAgICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsQ29tcGxldGlvbkhhbmRsZXI7CiAgICAg
ICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVu
Y2VPYnNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTc5LDEzICsxNzksMTMgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKIC0gKHZvaWQpcHJlZmVy
ZW5jZURpZENoYW5nZTooTlNTdHJpbmcgKilkb21haW4ga2V5OihOU1N0cmluZyAqKWtleSBlbmNv
ZGVkVmFsdWU6KE5TU3RyaW5nICopZW5jb2RlZFZhbHVlCiB7CiAjaWYgRU5BQkxFKENGUFJFRlNf
RElSRUNUX01PREUpCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2RvbWFpbiA9IHJldGFpblB0cihk
b21haW4pLCBrZXkgPSByZXRhaW5QdHIoa2V5KSwgZW5jb2RlZFZhbHVlID0gcmV0YWluUHRyKGVu
Y29kZWRWYWx1ZSldIHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBlbmNvZGVkU3RyaW5nOwog
ICAgICAgICBpZiAoZW5jb2RlZFZhbHVlKQotICAgICAgICAgICAgZW5jb2RlZFN0cmluZyA9IFN0
cmluZyhlbmNvZGVkVmFsdWUpOworICAgICAgICAgICAgZW5jb2RlZFN0cmluZyA9IFN0cmluZyhl
bmNvZGVkVmFsdWUuZ2V0KCkpOwogCiAgICAgICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKLSAgICAgICAgICAgIHBy
b2Nlc3NQb29sLT5ub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluLCBrZXksIGVuY29kZWRT
dHJpbmcpOworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPm5vdGlmeVByZWZlcmVuY2VzQ2hhbmdl
ZChkb21haW4uZ2V0KCksIGtleS5nZXQoKSwgZW5jb2RlZFN0cmluZyk7CiAgICAgfSk7CiAjZW5k
aWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkluc3BlY3RvclBy
ZWZlcmVuY2VPYnNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0JKHJldmlzaW9uIDI3MDg2
OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkluc3BlY3RvclByZWZlcmVu
Y2VPYnNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdAogCiAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICop
a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5TS2V5VmFs
dWVDaGFuZ2VLZXksIGlkPiAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAogewotICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAgZm9yIChhdXRvKiBwb29sIDogV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcG9vbC0+cHJvY2Vzc2VzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgICAgICAgICBhdXRvIHByb2Nlc3MgPSBwb29sLT5wcm9jZXNzZXMoKVtpXTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
CShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDczLDcgKzQ3Myw3IEBAIHN0YXRp
YyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGMKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAq
b3BlcmF0aW9uKQogewogICAgIFtvcGVyYXRpb24gc2V0Q29tcGxldGlvbkJsb2NrOl57Ci0gICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgb3BlcmF0aW9uID0gcmV0YWluUHRyKG9w
ZXJhdGlvbildIHsKICAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFtvcGVyYXRpb24gaWRl
bnRpZmllcl07CiAgICAgICAgICAgICBhdXRvIGNvbnZlcnRlZEltYWdlID0gY29udmVydFBsYXRm
b3JtSW1hZ2VUb0JpdG1hcChbb3BlcmF0aW9uIHRodW1ibmFpbF0sIFdlYkNvcmU6OkludFNpemUo
NDAwLCA0MDApKTsKICAgICAgICAgICAgIGlmICghY29udmVydGVkSW1hZ2UpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTg2OCw3ICs4NjgsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNlc0NoCiAjaWYgUExBVEZPUk0oTUFD
KQogc3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Bvb2xIaWdoRHluYW1pY1JhbmdlRGlkQ2hhbmdlQ2Fs
bGJhY2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnN0IHZvaWQqLCBDRlN0cmluZ1JlZiBu
b3RpZmljYXRpb25OYW1lLCBjb25zdCB2b2lkKiwgQ0ZUeXBlUmVmKQogewotICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtdIHsKICAgICAgICAgYXV0byBwcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29sbGVj
dFNjcmVlblByb3BlcnRpZXMoKTsKICAgICAgICAgZm9yIChhdXRvJiBwb29sIDogV2ViUHJvY2Vz
c1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQogICAgICAgICAgICAgcG9vbC0+c2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRTY3JlZW5Qcm9wZXJ0aWVzKHByb3BlcnRp
ZXMpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTI5LDcgKzkyOSw3IEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdlYlZpZXdJbXBsOihXZWIKIAogLSAodm9pZCltZW51RGlkQ2xvc2U6
KE5TTWVudSAqKW1lbnUKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbaW1wbCA9IF9pbXBsXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtp
bXBsID0gX2ltcGxdIHsKICAgICAgICAgaWYgKGltcGwpCiAgICAgICAgICAgICBpbXBsLT5oYW5k
bGVET01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9u
c2U6OkRlbmllZEZvckdlc3R1cmUpOwogICAgIH0pOwpAQCAtMTgwOSw4ICsxODA5LDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6dXBkYXRlV2luZG93QW5kVmlld0ZyYQogCiAgICAgbV9kaWRTY2hlZHVs
ZVdpbmRvd0FuZFZpZXdGcmFtZVVwZGF0ZSA9IHRydWU7CiAKLSAgICBhdXRvIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFt3ZWFrVGhpc10geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMTkzNiw4ICsxOTM1LDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6c2V0VG9wQ29udGVudEluc2V0KENHRgogCiAgICAgbV9kaWRTY2hlZHVsZVNldFRvcENvbnRl
bnRJbnNldCA9IHRydWU7CiAKLSAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
OwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFrVGhp
c10geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgd2Vha1RoaXMtPmRpc3BhdGNoU2V0VG9wQ29udGVudEluc2V0KCk7CkBAIC0yOTQw
LDcgKzI5MzgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRCZWNvbWVFZGl0YWJsZSgpCiB7CiAg
ICAgW21fd2luZG93VmlzaWJpbGl0eU9ic2VydmVyIHN0YXJ0T2JzZXJ2aW5nRm9udFBhbmVsXTsK
IAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtdIHsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICBbW05TU3BlbGxDaGVja2Vy
IHNoYXJlZFNwZWxsQ2hlY2tlcl0gX3ByZWZsaWdodENob3NlblNwZWxsU2VydmVyXTsKICAgICB9
KTsKIH0KQEAgLTMzOTQsMTAgKzMzOTIsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdENh
bmRpZGF0ZXNGb3JTZQogICAgIE5TVGV4dENoZWNraW5nVHlwZXMgY2hlY2tpbmdUeXBlcyA9IE5T
VGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQg
fCBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyk7CiAgICAgbV9sYXN0Q2FuZGlkYXRlUmVxdWVzdFNlcXVlbmNlTnVtYmVy
ID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlcXVlc3RDYW5kaWRhdGVz
Rm9yU2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlIGluU3RyaW5nOnBvc3RMYXlvdXREYXRhLnBh
cmFncmFwaENvbnRleHRGb3JDYW5kaWRhdGVSZXF1ZXN0IHR5cGVzOmNoZWNraW5nVHlwZXMgb3B0
aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygp
IGNvbXBsZXRpb25IYW5kbGVyOlt3ZWFrVGhpc10oTlNJbnRlZ2VyIHNlcXVlbmNlTnVtYmVyLCBO
U0FycmF5PE5TVGV4dENoZWNraW5nUmVzdWx0ICo+ICpjYW5kaWRhdGVzKSB7Ci0gICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIHNlcXVlbmNlTnVtYmVyLCBjYW5kaWRhdGVz
ID0gcmV0YWluUHRyKGNhbmRpZGF0ZXMpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5oYW5kbGVSZXF1
ZXN0ZWRDYW5kaWRhdGVzKHNlcXVlbmNlTnVtYmVyLCBjYW5kaWRhdGVzKTsKKyAgICAgICAgICAg
IHdlYWtUaGlzLT5oYW5kbGVSZXF1ZXN0ZWRDYW5kaWRhdGVzKHNlcXVlbmNlTnVtYmVyLCBjYW5k
aWRhdGVzLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfV07CiB9CkBAIC00MTQwLDcgKzQxMzgs
NyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpCiAgICAgICAgICAg
ICAgICAgaWYgKGVycm9yT3JOaWwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt0
aGlzLCBwYXRoID0gUmV0YWluUHRyPE5TU3RyaW5nPihmaWxlVVJMLnBhdGgpLCBmaWxlTmFtZXMs
IGZpbGVDb3VudCwgZHJhZ0RhdGEsIHBhc3RlYm9hcmROYW1lXSB7CisgICAgICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwYXRoID0gUmV0YWluUHRyPE5TU3RyaW5n
PihmaWxlVVJMLnBhdGgpLCBmaWxlTmFtZXMsIGZpbGVDb3VudCwgZHJhZ0RhdGEsIHBhc3RlYm9h
cmROYW1lXSB7CiAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lcy0+YXBwZW5kKHBhdGguZ2V0
KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZU5hbWVzLT5zaXplKCkgPT0gZmlsZUNv
dW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIC0gKHZvaWQpX3VwZGF0ZUJhY2tncm91bmRUYXNr
CiAgICAgfSBlbHNlIGlmIChfYXNzZXJ0aW9uc05lZWRpbmdCYWNrZ3JvdW5kVGFzay5jb21wdXRl
c0VtcHR5KCkpIHsKICAgICAgICAgLy8gUmVsZWFzZSB0aGUgYmFja2dyb3VuZCB0YXNrIGFzeW5j
aHJvbm91c2x5IGJlY2F1c2UgcmVsZWFzaW5nIHRoZSBiYWNrZ3JvdW5kIHRhc2sgbWF5IGRlc3Ry
b3kgdGhlIFByb2Nlc3NUaHJvdHRsZXIgYW5kIHdlIGRvbid0CiAgICAgICAgIC8vIHdhbnQgaXQg
dG8gZ2V0IGRlc3Ryb3llZCB3aGlsZSBpbiB0aGUgbWlkZGxlIG9mIHVwZGF0aW5nIGl0cyBhc3Nl
cnRpb24uCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IF57CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2VsZiA9
IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICAgICAgaWYgKF9hc3NlcnRpb25zTmVlZGluZ0Jh
Y2tncm91bmRUYXNrLmNvbXB1dGVzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBbc2VsZiBfcmVs
ZWFzZUJhY2tncm91bmRUYXNrXTsKICAgICAgICAgfSk7CkBAIC0yMjMsNyArMjIzLDcgQEAgLSAo
dm9pZClfaGFuZGxlQmFja2dyb3VuZFRhc2tFeHBpcmF0aW9uTwogICAgIC8vIHVwb24gcmVzdW1p
bmcsIG9yIHRoZSB1c2VyIHJlYWN0aXZhdGVkIHRoZSBhcHAgc2hvcnRseSBhZnRlciBleHBpcmF0
aW9uKS4KICAgICBpZiAocmVtYWluaW5nVGltZSA9PSBSQlNQcm9jZXNzVGltZUxpbWl0YXRpb25O
b25lKSB7CiAgICAgICAgIFtzZWxmIF9yZWxlYXNlQmFja2dyb3VuZFRhc2tdOwotICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZild
IHsKICAgICAgICAgICAgIFtzZWxmIF91cGRhdGVCYWNrZ3JvdW5kVGFza107CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CkBAIC0yNzEsOCArMjcxLDcgQEAgLSAodm9pZClhc3NlcnRpb246
KFJCU0Fzc2VydGlvbiAqKWFzc2VydAogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiJXAgLSBXS1JCU0Fzc2VydGlvbkRlbGVnYXRlOiBhc3NlcnRpb24gd2FzIGludmFsaWRh
dGVkLCBlcnJvcjogJXtwdWJsaWN9QCIsIGVycm9yLCBzZWxmKTsKIAotICAgIF9fd2VhayBXS1JC
U0Fzc2VydGlvbkRlbGVnYXRlICp3ZWFrU2VsZiA9IHNlbGY7Ci0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3dlYWtTZWxmID0gV2Vha09iakNQdHIoc2VsZildIHsKICAgICAgICAgV0tSQlNBc3NlcnRp
b25EZWxlZ2F0ZSAqc3Ryb25nU2VsZiA9IHdlYWtTZWxmOwogICAgICAgICBpZiAoc3Ryb25nU2Vs
ZiAmJiBzdHJvbmdTZWxmLmludmFsaWRhdGlvbkNhbGxiYWNrKQogICAgICAgICAgICAgc3Ryb25n
U2VsZi5pbnZhbGlkYXRpb25DYWxsYmFjaygpOwpAQCAtMzAyLDcgKzMwMSw2IEBAIFByb2Nlc3NB
c3NlcnRpb246OlByb2Nlc3NBc3NlcnRpb24ocGlkX3QKICAgICA6IG1fYXNzZXJ0aW9uVHlwZShh
c3NlcnRpb25UeXBlKQogICAgICwgbV9waWQocGlkKQogewotICAgIGF1dG8gd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyk7CiAgICAgTlNTdHJpbmcgKnJ1bm5pbmdCb2FyZEFzc2VydGlvbk5h
bWUgPSBydW5uaW5nQm9hcmROYW1lRm9yQXNzZXJ0aW9uVHlwZShhc3NlcnRpb25UeXBlKTsKICAg
ICBBU1NFUlQocnVubmluZ0JvYXJkQXNzZXJ0aW9uTmFtZSk7CiAgICAgaWYgKCFwaWQpIHsKQEAg
LTMyNCw3ICszMjIsNyBAQCBQcm9jZXNzQXNzZXJ0aW9uOjpQcm9jZXNzQXNzZXJ0aW9uKHBpZF90
CiAgICAgTlNFcnJvciAqYWNxdWlzaXRpb25FcnJvciA9IG5pbDsKICAgICBpZiAoIVttX3Jic0Fz
c2VydGlvbiBhY3F1aXJlV2l0aEVycm9yOiZhY3F1aXNpdGlvbkVycm9yXSkgewogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gUHJvY2Vzc0Fzc2VydGlv
bjogRmFpbGVkIHRvIGFjcXVpcmUgUkJTICV7cHVibGljfUAgYXNzZXJ0aW9uICcle3B1YmxpY31z
JyBmb3IgcHJvY2VzcyB3aXRoIFBJRCAlZCwgZXJyb3I6ICV7cHVibGljfUAiLCB0aGlzLCBydW5u
aW5nQm9hcmRBc3NlcnRpb25OYW1lLCByZWFzb24udXRmOCgpLmRhdGEoKSwgcGlkLCBhY3F1aXNp
dGlvbkVycm9yKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAg
ICAgICAgIHByb2Nlc3NBc3NlcnRpb25XYXNJbnZhbGlkYXRlZCgpOwogICAgICAgICB9KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTQ0OCw3ICsxNDQ4LDcgQEAgLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlckZvcldlYlZpZXcK
ICAgICAgICAgX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNGb2N1c2VkLCBXZWJLaXQ6OldlYlBhZ2VQcm94eTo6QWN0aXZpdHlTdGF0ZUNoYW5n
ZURpc3BhdGNoTW9kZTo6SW1tZWRpYXRlKTsKIAogICAgICAgICBpZiAoX2tleVdlYkV2ZW50SGFu
ZGxlcikgewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3dlYWtIYW5kbGVyID0gV2Vha09iakNQdHI8aWQ+KF9rZXlXZWJFdmVudEhhbmRsZXIu
Z2V0KCkpLCB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpXSB7Cisg
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtIYW5kbGVyID0gV2Vha09i
akNQdHI8aWQ+KF9rZXlXZWJFdmVudEhhbmRsZXIuZ2V0KCkpLCB3ZWFrU2VsZiA9IFdlYWtPYmpD
UHRyPFdLQ29udGVudFZpZXc+KHNlbGYpXSB7CiAgICAgICAgICAgICAgICAgYXV0byBzdHJvbmdT
ZWxmID0gd2Vha1NlbGYuZ2V0KCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHJvbmdTZWxmIHx8
IFtzdHJvbmdTZWxmIGlzRmlyc3RSZXNwb25kZXJdKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0JKHJldmlz
aW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTUwOSw3ICs1MDksNyBAQCAtICh2b2lkKXBkZkhvc3RWaWV3Q29u
dHJvbGxlcjooUERGSG9zdFZpCiAtICh2b2lkKXBkZkhvc3RWaWV3Q29udHJvbGxlckV4dGVuc2lv
blByb2Nlc3NEaWRDcmFzaDooUERGSG9zdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgogewog
ICAgIC8vIEZJWE1FIDQwOTE2NzI1OiBQREZLaXQgc2hvdWxkIGRpc3BhdGNoIHRoaXMgbWVzc2Fn
ZSB0byB0aGUgbWFpbiB0aHJlYWQgbGlrZSBpdCBkb2VzIGZvciBvdGhlciBkZWxlZ2F0ZSBtZXNz
YWdlcy4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vi
VmlldyA9IF93ZWJWaWV3XSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWJWaWV3
ID0gX3dlYlZpZXddIHsKICAgICAgICAgaWYgKGF1dG8gcGFnZSA9IFt3ZWJWaWV3IF9wYWdlXSkK
ICAgICAgICAgICAgIHBhZ2UtPmRpc3BhdGNoUHJvY2Vzc0RpZFRlcm1pbmF0ZShXZWJLaXQ6OlBy
b2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpOwogICAgIH0pOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5t
bQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRmlsZVVwbG9hZFBhbmVsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02ODMsMTIgKzY4MywxMiBA
QCAtICh2b2lkKWltYWdlUGlja2VyQ29udHJvbGxlcjooVUlJbWFnZVBpCiAgICAgICAgIHN1Y2Nl
c3NCbG9jazpeKE5TQXJyYXkgKnByb2Nlc3NlZFJlc3VsdHMsIE5TU3RyaW5nICpkaXNwbGF5U3Ry
aW5nKSB7CiAgICAgICAgICAgICBBU1NFUlQoW3Byb2Nlc3NlZFJlc3VsdHMgY291bnRdID09IDEp
OwogICAgICAgICAgICAgX1dLRmlsZVVwbG9hZEl0ZW0gKnJlc3VsdCA9IFtwcm9jZXNzZWRSZXN1
bHRzIG9iamVjdEF0SW5kZXg6MF07Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgICAgICAg
ICAgW3NlbGYgX2Nob29zZUZpbGVzOkBbcmVzdWx0LmZpbGVVUkxdIGRpc3BsYXlTdHJpbmc6ZGlz
cGxheVN0cmluZyBpY29uSW1hZ2U6cmVzdWx0LmRpc3BsYXlJbWFnZS5nZXQoKV07CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBmYWlsdXJlQmxvY2s6XnsKLSAgICAgICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIo
c2VsZildIHsKICAgICAgICAgICAgICAgICBbc2VsZiBfY2FuY2VsXTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9CkBAIC03MTIsMTIgKzcxMiwxMiBAQCAtICh2b2lkKWltYWdlUGlja2VyQ29u
dHJvbGxlcjooVUlJbWFnZVBpCiAgICAgICAgICAgICAgICAgICAgIGljb25JbWFnZSA9IHJlc3Vs
dC5kaXNwbGF5SW1hZ2U7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAg
ICAgICAgICAgICAgICBbc2VsZiBfY2hvb3NlRmlsZXM6ZmlsZVVSTHMgZGlzcGxheVN0cmluZzpk
aXNwbGF5U3RyaW5nIGljb25JbWFnZTppY29uSW1hZ2UuZ2V0KCldOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KICAgICAgICAgZmFpbHVyZUJsb2NrOl57Ci0gICAgICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7
CiAgICAgICAgICAgICAgICAgW3NlbGYgX2NhbmNlbF07CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9T
Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVs
bHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC04ODksNyArODg5LDcgQEAgLSAodm9pZClwbGFjZWhvbGRlcldpbGxNb3ZlVG9TdXBlcnZp
ZXc6KAogICAgIGlmIChzdXBlcnZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAg
IGlmIChbX3dlYlZpZXdQbGFjZWhvbGRlciBzdXBlcnZpZXddID09IG5pbCAmJiBbX3dlYlZpZXdQ
bGFjZWhvbGRlciBwYXJlbnRdID09IHNlbGYpCiAgICAgICAgICAgICBbc2VsZiBjbG9zZV07CiAg
ICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20ubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20ubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBSZWY8V2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBCiAKICAgICAgICAgICAgIEFWUGxheWVyTGF5ZXIgKmRl
c3RpbmF0aW9uUGxheWVyTGF5ZXIgPSBzdGF0aWNfY2FzdDxBVlBsYXllckxheWVyICo+KGNsb25l
ZExheWVyLmdldCgpKTsKICAgICAgICAgICAgIEFWUGxheWVyTGF5ZXIgKnNvdXJjZVBsYXllckxh
eWVyID0gc3RhdGljX2Nhc3Q8QVZQbGF5ZXJMYXllciAqPihwbGF0Zm9ybUxheWVyKCkpOwotICAg
ICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2Rlc3Rp
bmF0aW9uUGxheWVyTGF5ZXIsIHNvdXJjZVBsYXllckxheWVyXSB7CisgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2Rlc3RpbmF0aW9uUGxheWVyTGF5ZXIsIHNvdXJjZVBsYXll
ckxheWVyXSB7CiAgICAgICAgICAgICAgICAgW2Rlc3RpbmF0aW9uUGxheWVyTGF5ZXIgc2V0UGxh
eWVyOltzb3VyY2VQbGF5ZXJMYXllciBwbGF5ZXJdXTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUgogICAgICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5m
bHVzaCgpOwogCiAgICAgICAgIE1vbm90b25pY1RpbWUgdGltZXN0YW1wID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwYWdlSUQsIHRpbWVzdGFtcF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3BhZ2VJRCwgdGltZXN0YW1wXSB7CiAgICAgICAgICAgICBpZiAoV2ViUGFnZSogd2ViUGFn
ZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKSkKICAgICAgICAgICAg
ICAgICB3ZWJQYWdlLT5kaWRGbHVzaExheWVyVHJlZUF0VGltZSh0aW1lc3RhbXApOwogICAgICAg
ICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzc4LDcgKzM3OCw3IEBAICAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9
IGVuc3VyZU1vZGUKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJmYWNlLT5sYXllckhv
c3RpbmdDb250ZXh0KCktPnJvb3RMYXllcigpOwogCiAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4
dElkXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQogICAgICAgICAg
ICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIHRydWUpKTsKICAgICAgICAgfSk7
CkBAIC0zOTIsOSArMzkyLDkgQEAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VD
b250ZQogICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRl
cmZhY2UoY29udGV4dElkKTsKIAogICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVU
aGVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkLCBt
b2RlbF0gKCkgbXV0YWJsZSB7IC8vIG5lZWQgdGhpcyBmb3IgcmV0dXJuIHZpZGVvIGxheWVyCi0g
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkLCBtb2RlbF0g
KCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZCwgbW9kZWxdICgp
IG11dGFibGUgewogICAgICAgICAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5p
bCwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0
SWRdICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgdGhpcywgY29udGV4dElkXSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29u
dGV4dElkXSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2Up
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCBm
YWxzZSkpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAtNDEzLDcgKzQxMyw3IEBAICAgICBhdXRv
IFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGUKICAgICBDQUxheWVyKiB2aWRlb0xheWVy
ID0gaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnJvb3RMYXllcigpOwogCiAgICAg
bW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKLSAgICAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhp
cy0+bV9wYWdlKQogICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAg
ICAgIH0pOwpAQCAtNDMxLDcgKzQzMSw3IEBAICAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9
IGVuc3VyZU1vZGUKICAgICBpZiAoIXZpZGVvRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1lbnQgPSBXVEZNb3ZlKHZpZGVvRWxlbWVu
dCksIGNvbnRleHRJZF0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRWxlbWVudCA9IFdURk1vdmUodmlkZW9FbGVt
ZW50KSwgY29udGV4dElkXSB7CiAgICAgICAgIHZpZGVvRWxlbWVudC0+d2lsbEV4aXRGdWxsc2Ny
ZWVuKCk7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6UHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwpAQCAtNDU3LDcg
KzQ1Nyw3IEBAICAgICBpZiAoaW50ZXJmYWNlLT50YXJnZXRJc0Z1bGxzY3JlZW4oKSAKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gZXhpdCBmdWxsc2NyZWVuIG5vdyBpZiBpdCB3YXMgcHJldmlv
dXNseSByZXF1ZXN0ZWQgZHVyaW5nIGFuIGFuaW1hdGlvbi4KLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHZpZGVvRWxlbWVudF0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRWxlbWVudF0gewogICAgICAgICBpZiAo
cHJvdGVjdGVkVGhpcy0+bV9wYWdlKQogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZXhpdFZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgqdmlkZW9FbGVtZW50LCBbXShib29sKSB7IH0p
OwogICAgIH0pOwpAQCAtNDcyLDE1ICs0NzIsMTUgQEAgICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZQogICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZV0geworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7
CiAgICAgfSk7CiAjZWxzZQogICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVu
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2Us
IG1vZGVsXSgpIG11dGFibGUgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNv
bnRleHRJZCwgaW50ZXJmYWNlLCBtb2RlbF0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGNvbnRleHRJZCwgaW50ZXJmYWNlLCBtb2RlbF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBt
b2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlXSAoKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRleHRJZCwgaW50ZXJm
YWNlXSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2VdIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRl
eHQoKS0+c2V0Um9vdExheWVyKG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaW50
ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KG51bGxwdHIpOwpAQCAtNTIzLDcgKzUyMyw3
IEBAICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5TdGFuZGJ5KGZhbHMKICAgICBpZiAoIXZp
ZGVvRWxlbWVudCB8fCAhdGFyZ2V0SXNGdWxsc2NyZWVuKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRWxlbWVudCwgbW9kZSwgc3RhbmRieV0geworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHZpZGVvRWxlbWVudCwgbW9kZSwgc3RhbmRieV0gewogICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+bV9wYWdlKQogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZW50ZXJWaWRlb0Z1bGxz
Y3JlZW5Gb3JWaWRlb0VsZW1lbnQoKnZpZGVvRWxlbWVudCwgbW9kZSwgc3RhbmRieSk7CiAgICAg
fSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzA4NjkpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyOSBAQAorMjAyMC0xMi0yMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZWQgbW9zdCB1c2VzIG9mIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIC4uLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMDA2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGRpc3BhdGNoX2FzeW5jIGhhcyB0d28gZG93bnNpZGVzOgorCisgICAg
ICAgICgxKSBJdHMgb3JkZXIgaXMgdW5kZWZpbmVkIChhbmQgaW4gcHJhY3RpY2UgaGlnaGx5IHZh
cmlhYmxlKSByZWxhdGl2ZSB0bworICAgICAgICBvdGhlciBXZWJLaXQgb3BlcmF0aW9ucy4gVGhp
cyBzb21ldGltZXMgY2F1c2VzIGZsYWtpbmVzcy4KKworICAgICAgICAoMikgSXQgZG9lc24ndCBo
b25vciB0aGUgUnVuTG9vcCBmaXJzdCBwYWludCBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgV2Ug
Y2FuIHVzZSBSdW5Mb29wOjpkaXNwYXRjaCgpIGluc3RlYWQuCisKKyAgICAgICAgKiBNaXNjL1dl
Ykdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJv
dmlkZXJJT1MgcmVnaXN0ZXJXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIHVucmVnaXN0ZXJXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlv
blByb3ZpZGVySU9TIHNldEVuYWJsZUhpZ2hBY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcklPUyBpbml0aWFsaXplR2VvbG9jYXRpb25Gb3JXZWJWaWV3Omxpc3Rl
bmVyOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbToK
KyAgICAgICAgKFdlYkNocm9tZUNsaWVudElPUzo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW06CisgICAgICAgIChXZWJJbnNw
ZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUpOgorCiAyMDIwLTExLTA2ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBGdXJ0aGVyIHByb2dyZXNzIHRv
d2FyZHMgbWVyZ2luZyBTZXR0aW5ncy55YW1sIGludG8gV2ViUHJlZmVyZW5jZXMueWFtbApJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzgsNyArMTc4LDcgQEAgLSAodm9pZClyZWdpc3RlcldlYlZpZXc6KFdlYlZpZXcgKil3
ZWJWaQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIV9pc1N1c3BlbmRlZCkgewotICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2Vs
ZildIHsKICAgICAgICAgICAgIGlmICghX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFfY29yZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXJQcm94eSk7CiAgICAg
ICAgICAgICAgICAgX2NvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyUHJveHkgPSBhZG9wdE5TKFtb
X1dlYkNvcmVMb2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IGFsbG9jXSBpbml0V2l0aFByb3Zp
ZGVyOnNlbGZdKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKXVucmVnaXN0ZXJXZWJWaWV3
OihXZWJWaWV3ICopd2ViCiAgICAgX3BlbmRpbmdJbml0aWFsUG9zaXRpb25XZWJWaWV3LnJlbW92
ZSh3ZWJWaWV3KTsKIAogICAgIGlmIChfcmVnaXN0ZXJlZFdlYlZpZXdzLmlzRW1wdHkoKSkgewot
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5Q
dHIoc2VsZildIHsKICAgICAgICAgICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF07CiAg
ICAgICAgIH0pOwogICAgICAgICBfZW5hYmxlSGlnaEFjY3VyYWN5ID0gTk87CkBAIC0yMjYsNyAr
MjI2LDcgQEAgLSAodm9pZClzZXRFbmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpZW5hYgogewogICAg
IEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CiAgICAgX2VuYWJsZUhpZ2hB
Y2N1cmFjeSA9IF9lbmFibGVIaWdoQWNjdXJhY3kgfHwgZW5hYmxlSGlnaEFjY3VyYWN5OwotICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7
CiAgICAgICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ol9l
bmFibGVIaWdoQWNjdXJhY3ldOwogICAgIH0pOwogfQpAQCAtMjQxLDcgKzI0MSw3IEBAIC0gKHZv
aWQpaW5pdGlhbGl6ZUdlb2xvY2F0aW9uRm9yV2ViVmlldzoKICAgICBfd2ViVmlld3NXYWl0aW5n
Rm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbi5hZGQod2ViVmlldywgbGlzdGVuZXIpOwogICAg
IF90cmFja2VkV2ViVmlld3MuYWRkKHdlYlZpZXcpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgaWYgKCFfY29y
ZUxvY2F0aW9uUHJvdmlkZXIpIHsKICAgICAgICAgICAgIEFTU0VSVCghX2NvcmVMb2NhdGlvblVw
ZGF0ZUxpc3RlbmVyUHJveHkpOwogICAgICAgICAgICAgX2NvcmVMb2NhdGlvblVwZGF0ZUxpc3Rl
bmVyUHJveHkgPSBhZG9wdE5TKFtbX1dlYkNvcmVMb2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5
IGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOnNlbGZdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJ
T1MubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcg
KzE0Niw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50SU9TOjpydW5PcGVuUGFuZWwoRnIKICAgICB9
OwogCiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpc10gewogICAgICAgICAgICAgW1t3ZWJWaWV3KCkgX1VJS2l0RGVsZWdh
dGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldygpIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25X
aXRoUmVzdWx0TGlzdGVuZXI6bGlzdGVuZXIgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsK
ICAgICAgICAgfSk7CiAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9T
Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3
ICsxMDYsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nCiB7CiAg
ICAgV2ViSW5zcGVjdG9yICppbnNwZWN0b3IgPSBbbV9pbnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rv
cl07CiAgICAgTlNTdHJpbmcgKm5vdGlmaWNhdGlvbk5hbWUgPSBlbmFibGVkID8gV2ViSW5zcGVj
dG9yRGlkU3RhcnRTZWFyY2hpbmdGb3JOb2RlIDogV2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGlu
Z0Zvck5vZGU7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5vdGlmaWNh
dGlvbk5hbWUgb2JqZWN0Omluc3BlY3Rvcl07CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0xMi0y
MSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZWQg
bW9zdCB1c2VzIG9mIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIC4u
LikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDA2
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRpc3Bh
dGNoX2FzeW5jIGhhcyB0d28gZG93bnNpZGVzOgorCisgICAgICAgICgxKSBJdHMgb3JkZXIgaXMg
dW5kZWZpbmVkIChhbmQgaW4gcHJhY3RpY2UgaGlnaGx5IHZhcmlhYmxlKSByZWxhdGl2ZSB0bwor
ICAgICAgICBvdGhlciBXZWJLaXQgb3BlcmF0aW9ucy4gVGhpcyBzb21ldGltZXMgY2F1c2VzIGZs
YWtpbmVzcy4KKworICAgICAgICAoMikgSXQgZG9lc24ndCBob25vciB0aGUgUnVuTG9vcCBmaXJz
dCBwYWludCBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgV2UgY2FuIHVzZSBSdW5Mb29wOjpkaXNw
YXRjaCgpIGluc3RlYWQuCisKKyAgICAgICAgKiBQbHVnaW5zL25wYXBpLm1tOgorICAgICAgICAo
TlBOX1BsdWdpblRocmVhZEFzeW5jQ2FsbCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW06CisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIGltbWVkaWF0
ZUFjdGlvblJlY29nbml6ZXJXaWxsUHJlcGFyZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgd2lsbEVudGVyQmFja2dyb3VuZFdpdGhDb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dlYlNhZmVBc3luY0ZvcndhcmRlciBmb3J3YXJk
SW52b2NhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJsZTpdKToKKwogMjAyMC0xMi0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjcwNzY4LgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9ucGFw
aS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL25wYXBp
Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L25wYXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbXBvcnQgIldl
Yk5ldHNjYXBlUGx1Z2luVmlldy5oIgogI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgorI2ltcG9y
dCA8d3RmL1J1bkxvb3AuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE3NCw3
ICsxNzUsNyBAQCB2b2lkIE5QTl9QbHVnaW5UaHJlYWRBc3luY0NhbGwoTlBQIGluc3RhCiB7CiAg
ICAgV2ViTmV0c2NhcGVQbHVnaW5WaWV3ICpwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0Zvckluc3Rh
bmNlKGluc3RhbmNlKTsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwbHVnaW5WaWV3ID0gcmV0
YWluUHRyKHBsdWdpblZpZXcpLCB1c2VyRGF0YSwgZnVuY10gewogICAgICAgICBpZiAoIXBsdWdp
blZpZXcgfHwgIXBsdWdpblZpZXctPnBsdWdpbikgewogICAgICAgICAgICAgLy8gVGhlIHBsdWct
aW4gaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQuCiAgICAgICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTExMjIsMTAgKzExMjIsMTAgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDYW5k
aWRhdGVzRgogICAgIE5TVGV4dENoZWNraW5nVHlwZXMgY2hlY2tpbmdUeXBlcyA9IE5TVGV4dENo
ZWNraW5nVHlwZVNwZWxsaW5nIHwgTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgfCBOU1Rl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwogICAgIGF1dG8gd2Vha0VkaXRvciA9IG1ha2VXZWFr
UHRyKCp0aGlzKTsKICAgICBtX2xhc3RDYW5kaWRhdGVSZXF1ZXN0U2VxdWVuY2VOdW1iZXIgPSBb
W05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVxdWVzdENhbmRpZGF0ZXNGb3JT
ZWxlY3RlZFJhbmdlOm1fcmFuZ2VGb3JDYW5kaWRhdGVzIGluU3RyaW5nOm1fcGFyYWdyYXBoQ29u
dGV4dEZvckNhbmRpZGF0ZVJlcXVlc3QuZ2V0KCkgdHlwZXM6Y2hlY2tpbmdUeXBlcyBvcHRpb25z
Om5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgY29t
cGxldGlvbkhhbmRsZXI6W3dlYWtFZGl0b3JdKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwgTlNB
cnJheTxOU1RleHRDaGVja2luZ1Jlc3VsdCAqPiAqY2FuZGlkYXRlcykgewotICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3dlYWtFZGl0b3IsIHNlcXVlbmNlTnVtYmVyLCBjYW5kaWRhdGVz
ID0gcmV0YWluUHRyKGNhbmRpZGF0ZXMpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtFZGl0b3Ip
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2Vha0VkaXRvci0+aGFuZGxl
UmVxdWVzdGVkQ2FuZGlkYXRlcyhzZXF1ZW5jZU51bWJlciwgY2FuZGlkYXRlcyk7CisgICAgICAg
ICAgICB3ZWFrRWRpdG9yLT5oYW5kbGVSZXF1ZXN0ZWRDYW5kaWRhdGVzKHNlcXVlbmNlTnVtYmVy
LCBjYW5kaWRhdGVzLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfV07CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIzNzMsNyArMjM3Myw3IEBAIC0gKHZvaWQpdXNlCiAjaWYgVVNFKFdFQl9U
SFJFQUQpCiAgICAgICAgICAgICBXZWJUaHJlYWRSdW4oXnsKICNlbHNlCi0gICAgICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNl
bGYpLCBzdWNjZXNzXSB7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBpZiAoc3VjY2VzcykKICAg
ICAgICAgICAgICAgICAgICAgW3NlbGYgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjpXZWJDb3JlOjpQ
b2xpY3lBY3Rpb246Oklnbm9yZV07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
CShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsx
OTksNyBAQCAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsUHJlCiAKICAgICBp
ZiAoIVtfaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplciBhbmltYXRpb25Db250cm9sbGVyXSkgewog
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVtb3ZlIHRoZSBkaXNwYXRj
aF9hc3luYyB3aGVuIHJkYXI6Ly9wcm9ibGVtLzE5NTAyOTI3IGlzIHJlc29sdmVkLgotICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2Vs
ZildIHsKICAgICAgICAgICAgIFtzZWxmIF9jYW5jZWxJbW1lZGlhdGVBY3Rpb25dOwogICAgICAg
ICB9KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4OTEsNyArMTg5MSw5IEBAICsgKHZv
aWQpd2lsbEVudGVyQmFja2dyb3VuZFdpdGhDb21wbGV0aW8KIHsKICAgICBXZWJUaHJlYWRSdW4o
XnsKICAgICAgICAgW1dlYlZpZXcgX3JlbGVhc2VNZW1vcnlOb3ddOwotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBoYW5kbGVyKTsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGhhbmRsZXIpXSB7
CisgICAgICAgICAgICBoYW5kbGVyKCk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC01
MDUxLDEyICs1MDUzLDEwIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZvcndhcmRlcjooX1dl
YlMKIAogLSAodm9pZClmb3J3YXJkSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlv
bgogewotICAgIC8vIFN0b3JlIF9mb3J3YXJkZXIgaW4gYW4gaXZhciBzbyBpdCBpcyByZXRhaW5l
ZCBieSB0aGUgYmxvY2suCi0gICAgX1dlYlNhZmVGb3J3YXJkZXIgKmZvcndhcmRlciA9IF9mb3J3
YXJkZXI7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CiAgICAgICAgIFtpbnZvY2F0
aW9uIHJldGFpbkFyZ3VtZW50c107Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAgICBbZm9yd2FyZGVyIGZvcndhcmRJbnZvY2F0
aW9uOmludm9jYXRpb25dOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Zvcndh
cmRlciA9IHJldGFpblB0cihfZm9yd2FyZGVyKSwgaW52b2NhdGlvbiA9IHJldGFpblB0cihpbnZv
Y2F0aW9uKV0geworICAgICAgICAgICAgW2ZvcndhcmRlciBmb3J3YXJkSW52b2NhdGlvbjppbnZv
Y2F0aW9uLmdldCgpXTsKICAgICAgICAgfSk7CiAgICAgfSBlbHNlCiAgICAgICAgIFtmb3J3YXJk
ZXIgZm9yd2FyZEludm9jYXRpb246aW52b2NhdGlvbl07CkBAIC02NDc2LDcgKzY0NzYsNyBAQCAt
IChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnCiAgICAgICAgICAgICAgICAg
aWYgKGVycm9yT3JOaWwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzZWxmLCBw
YXRoID0gUmV0YWluUHRyPE5TU3RyaW5nPihmaWxlVVJMLnBhdGgpLCBmaWxlTmFtZXMsIGZpbGVD
b3VudCwgZHJhZ0RhdGFdIHsKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3NlbGYsIHBhdGggPSBSZXRhaW5QdHI8TlNTdHJpbmc+KGZpbGVVUkwucGF0aCksIGZpbGVO
YW1lcywgZmlsZUNvdW50LCBkcmFnRGF0YV0gewogICAgICAgICAgICAgICAgICAgICBmaWxlTmFt
ZXMtPmFwcGVuZChwYXRoLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVOYW1l
cy0+c2l6ZSgpID09IGZpbGVDb3VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ0Rh
dGEtPnNldEZpbGVOYW1lcygqZmlsZU5hbWVzKTsKQEAgLTgwMDQsNyArODAwNCw3IEBAIC0gKHZv
aWQpc2V0RWRpdGFibGU6KEJPT0wpZmxhZwogICAgICAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyghZmxhZyk7CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgICAgICBpZiAoZmxhZykgewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW10geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtdIHsKICAgICAgICAgICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gX3ByZWZsaWdodENob3NlblNwZWxsU2VydmVyXTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="434202"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416625</attachid>
            <date>2020-12-21 12:58:26 -0800</date>
            <delta_ts>2020-12-21 14:13:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220066-20201221125826.patch</filename>
            <type>text/plain</type>
            <size>88490</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTEyLTIxICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgLi4uKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgaGFzIHR3byBkb3du
c2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBpcyB1bmRlZmluZWQgKGFuZCBpbiBwcmFj
dGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRvCisgICAgICAgIG90aGVyIFdlYktpdCBv
cGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMgZmxha2luZXNzLgorCisgICAgICAgICgy
KSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZpcnN0IHBhaW50IG9wdGltaXphdGlvbi4K
KworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRpc3BhdGNoKCkgaW5zdGVhZC4KKworICAg
ICAgICAqIHd0Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW06CisgICAgICAgIChXVEY6OmRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWRXaXRoV2ViVGhyZWFkTG9ja0lmTmVlZGVkKToKKyAgICAgICAg
KFdURjo6Y2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKToKKwogMjAy
MC0xMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA4NjAuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9j
b2NvYS9NYWluVGhyZWFkQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY29j
b2EvTWFpblRocmVhZENvY29hLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV1RGL3d0
Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxzdGRpby5oPgogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0
Zi9SdW5Mb29wLmg+CkBAIC03MywxNCArNzQsMTYgQEAgdm9pZCBkaXNwYXRjaEFzeW5jT25NYWlu
VGhyZWFkV2l0aFdlYlRocgogewogI2lmIFVTRShXRUJfVEhSRUFEKQogICAgIGlmIChXZWJDb3Jl
V2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkgewotICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Jsb2NrID0gbWFrZUJsb2NrUHRyKGJsb2NrKV0g
ewogICAgICAgICAgICAgV2ViQ29yZVdlYlRocmVhZExvY2soKTsKICAgICAgICAgICAgIGJsb2Nr
KCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbYmxvY2sgPSBtYWtlQmxvY2tQdHIoYmxvY2spXSB7CisgICAg
ICAgIGJsb2NrKCk7CisgICAgfSk7CiB9CiAKIHZvaWQgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRj
aEFzeW5jT25NYWluVGhyZWFkKHZvaWQgKF5ibG9jaykoKSkKQEAgLTkxLDcgKzk0LDkgQEAgdm9p
ZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haQogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgYmxvY2spOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbYmxvY2sgPSBtYWtlQmxv
Y2tQdHIoYmxvY2spXSB7CisgICAgICAgIGJsb2NrKCk7CisgICAgfSk7CiB9CiAKICNpZiBVU0Uo
V0VCX1RIUkVBRCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDIwLTEy
LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
ZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
Li4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIw
MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlz
cGF0Y2hfYXN5bmMgaGFzIHR3byBkb3duc2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBp
cyB1bmRlZmluZWQgKGFuZCBpbiBwcmFjdGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRv
CisgICAgICAgIG90aGVyIFdlYktpdCBvcGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMg
Zmxha2luZXNzLgorCisgICAgICAgICgyKSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZp
cnN0IHBhaW50IG9wdGltaXphdGlvbi4KKworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRp
c3BhdGNoKCkgaW5zdGVhZC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uXSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlQZXJmb3JtSW5j
cmVtZW50QWN0aW9uXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlQZXJmb3JtRGVjcmVtZW50QWN0aW9uXSk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXR1cENvbnZlcnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1c2hTYW1wbGVzSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlc0ludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgor
ICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxsb2NdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzdFVuYmxvY2tBc3lu
YyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvd2VyU291cmNlTm90aWZpZXI6OlBvd2VyU291cmNlTm90aWZpZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRBVlBsYXllckl0ZW0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNsb25lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91bmRzT25NYWluVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6c2V0UG9zaXRpb25Pbk1haW5UaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpzZXRBbmNob3JQb2ludE9uTWFp
blRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOjptYXliZUJlY29tZVJlYWR5Rm9yTW9yZU1lZGlhRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmVucXVldWVEZWNvZGVkU2FtcGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6cmVxdWVz
dE1lZGlhRGF0YVdoZW5SZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb246Om5vdGlmeVdoZW5IYXNBdmFpbGFibGVWaWRlb0ZyYW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAg
ICgtW1dlYkFWUGxheWVyTGF5ZXIgbGF5b3V0U3VibGF5ZXJzXSk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmluYWxpemVTZXR1cCk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9FeGl0RnVsbHNjcmVlbik6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudDo6d2lsbEJlZ2luRmlyc3RUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQ6OmRpZEZpbmlzaExhc3RUcmFuc2FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCk6CisgICAgICAg
IChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5W
aWRlb0NvbnRlbnRMYXllcik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlvbkNoYW5nZWQpOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hh
bmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVy
ZWRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6cmF0ZUNoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2Vk
KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6Om11dGVkQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoTWFpblRocmVhZEFkb3B0QW5kUmVsZWFz
ZSk6CisgICAgICAgIChXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlQVZDYXB0dXJlRGV2aWNlTWFuYWdlck9ic2VydmVyIGRldmljZUNv
bm5lY3RlZERpZENoYW5nZTpdKToKKwogMjAyMC0xMi0xNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgd2Via2l0LSBwcmVmaXggdG8gU3BlZWNoUmVjb2du
aXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZp
c2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE2Niw3ICsz
MTY2LDcgQEAgLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uCiB7CiAgICAg
Ly8gSW4gY2FzZSBhbnl0aGluZyB3ZSBkbyBieSBwZXJmb3JtaW5nIHRoZSBwcmVzcyBhY3Rpb24g
Y2F1c2VzIGFuIGFsZXJ0IG9yIG90aGVyIG1vZGFsCiAgICAgLy8gYmVoYXZpb3JzLCB3ZSBuZWVk
IHRvIHJldHVybiBub3csIHNvIHRoYXQgVm9pY2VPdmVyIGRvZXNuJ3QgaGFuZyBpbmRlZmluaXRl
bHkuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7Cisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpXSB7CiAgICAgICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0
aW9uXTsKICAgICB9KTsKIH0KQEAgLTMxODUsNyArMzE4NSw3IEBAIC0gKHZvaWQpX2FjY2Vzc2li
aWxpdHlQZXJmb3JtUHJlc3NBY3Rpb24KIAogLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybUlu
Y3JlbWVudEFjdGlvbgogewotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UGVy
Zm9ybUluY3JlbWVudEFjdGlvbl07CiAgICAgfSk7CiB9CkBAIC0zMjA0LDcgKzMyMDQsNyBAQCAt
ICh2b2lkKV9hY2Nlc3NpYmlsaXR5UGVyZm9ybUluY3JlbWVudEFjCiAKIC0gKHZvaWQpYWNjZXNz
aWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb24KIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
c2VsZiwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICBbc2VsZiBf
YWNjZXNzaWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb25dOwogICAgIH0pOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0IDxtdXRleD4KICNpbXBvcnQgPHBhbC9h
dmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxzeXNsb2cuaD4K
KyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aD4KIAogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CkBAIC04Nyw3ICs4OCw3
IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0dXBDb24KIAogICAgIE9TU3Rh
dHVzIGVyciA9IEF1ZGlvQ29udmVydGVyTmV3KCZtX2lucHV0RGVzY3JpcHRpb24tPnN0cmVhbURl
c2NyaXB0aW9uKCksICZtX291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCAm
bV9jb252ZXJ0ZXIpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KCp0aGlzKSwgZXJyXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBlcnJdIHsKICAgICAgICAgICAgIEVS
Uk9SX0xPRygiQXVkaW9Db252ZXJ0ZXJOZXcgcmV0dXJuZWQgZXJyb3IgIiwgZXJyKTsKICAgICAg
ICAgfSk7CiAgICAgfQpAQCAtMTYxLDcgKzE2Miw3IEBAIHZvaWQgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdXNoU2FtcGxlc0kKIAogICAgIGlmIChtX2lucHV0U2FtcGxlT2Zmc2V0ID09IE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKSkgewogICAgICAgICBtX2lucHV0U2FtcGxlT2Zmc2V0ID0gTWVk
aWFUaW1lKDEgLSBzYW1wbGVUaW1lLnRpbWVWYWx1ZSgpLCBzYW1wbGVUaW1lLnRpbWVTY2FsZSgp
KTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2xv
Z0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBpbnB1dFNhbXBsZU9mZnNldCA9IG1faW5wdXRT
YW1wbGVPZmZzZXQudGltZVZhbHVlKCksIG1heGltdW1TYW1wbGVDb3VudCA9IG1fbWF4aW11bVNh
bXBsZUNvdW50LCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyldIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtsb2dJZGVudGlmaWVyID0gTE9HSURFTlRJ
RklFUiwgaW5wdXRTYW1wbGVPZmZzZXQgPSBtX2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVWYWx1ZSgp
LCBtYXhpbXVtU2FtcGxlQ291bnQgPSBtX21heGltdW1TYW1wbGVDb3VudCwgdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBBTFdBWVNfTE9HKGxv
Z0lkZW50aWZpZXIsICJpbnB1dCBzYW1wbGUgb2Zmc2V0IGlzICIsIGlucHV0U2FtcGxlT2Zmc2V0
LCAiLCBtYXhpbXVtU2FtcGxlQ291bnQgaXMgIiwgbWF4aW11bVNhbXBsZUNvdW50KTsKICAgICAg
ICAgfSk7CiAgICAgfQpAQCAtMjM4LDcgKzIzOSw3IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdWxsU2FtcGxlc0kKIAogICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IChlbmRG
cmFtZSAtIHNhbXBsZUNvdW50KSAtIHRpbWVTdGFtcDsKICAgICAgICAgbV9vdXRwdXRTYW1wbGVP
ZmZzZXQgLT0gY29tcHV0ZU9mZnNldERlbGF5KG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJh
dGUoKSwgbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJRVIs
IG91dHB1dFNhbXBsZU9mZnNldCA9IG1fb3V0cHV0U2FtcGxlT2Zmc2V0LCB0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtsb2dJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUiwgb3V0cHV0U2FtcGxlT2Zmc2V0
ID0gbV9vdXRwdXRTYW1wbGVPZmZzZXQsIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KCp0aGlzKV0gewogICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlmaWVyLCAic2V0dGlu
ZyBuZXcgb2Zmc2V0IHRvICIsIG91dHB1dFNhbXBsZU9mZnNldCk7CiAgICAgICAgIH0pOwogICAg
IH0KQEAgLTI0Niw3ICsyNDcsNyBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNh
bXBsZXNJCiAgICAgdGltZVN0YW1wICs9IG1fb3V0cHV0U2FtcGxlT2Zmc2V0OwogCiAgICAgaWYg
KHRpbWVTdGFtcCA8IHN0YXJ0RnJhbWUgfHwgdGltZVN0YW1wICsgc2FtcGxlQ291bnQgPiBlbmRG
cmFtZSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJRVIsIHRpbWVTdGFtcCwgc3RhcnRGcmFtZSwg
ZW5kRnJhbWUsIHNhbXBsZUNvdW50LCBvdXRwdXRTYW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBs
ZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJ
RVIsIHRpbWVTdGFtcCwgc3RhcnRGcmFtZSwgZW5kRnJhbWUsIHNhbXBsZUNvdW50LCBvdXRwdXRT
YW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBFUlJPUl9MT0cobG9nSWRlbnRpZmll
ciwgIm5vdCBlbm91Z2ggZGF0YSwgc2FtcGxlICIsIHRpbWVTdGFtcCwgIiB3aXRoIG9mZnNldCAi
LCBvdXRwdXRTYW1wbGVPZmZzZXQsICIsIHRyeWluZyB0byBnZXQgIiwgc2FtcGxlQ291bnQsICIg
c2FtcGxlcywgYnV0IG5vdCBjb21wbGV0ZWx5IGluIHJhbmdlIFsiLCBzdGFydEZyYW1lLCAiIC4u
ICIsIGVuZEZyYW1lLCAiXSIpOwogICAgICAgICB9KTsKIApAQCAtMjU5LDcgKzI2MCw3IEBAIGJv
b2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlc0kKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFdlIGFyZSB0b28gY2xvc2UgZnJvbSBlbmRGcmFtZSwgbGV0J3Mgd2Fp
dCBmb3IgbW9yZSBkYXRhIHRvIGJlIHB1c2hlZC4KICAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxl
T2Zmc2V0IC09IHNhbXBsZUNvdW50OwotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW2xvZ0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBvdXRw
dXRTYW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2xvZ0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBvdXRwdXRTYW1wbGVPZmZzZXQg
PSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
KnRoaXMpXSB7CiAgICAgICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlmaWVyLCAidXBk
YXRpbmcgb2Zmc2V0IHRvICIsIG91dHB1dFNhbXBsZU9mZnNldCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbkhlbHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCShyZXZpc2lvbiAyNzA4NjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVW5p
cXVlUmVmLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgpA
QCAtMzYyLDcgKzM2Myw3IEBAIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lvbkhl
bHAKICNlbmRpZgogCiAgICAgLy8gTm93IHBsYXlpbmcgd29uJ3Qgd29yayB1bmxlc3Mgd2UgdHVy
biBvbiB0aGUgZGVsaXZlcnkgb2YgcmVtb3RlIGNvbnRyb2wgZXZlbnRzLgotICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtdIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAg
ICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gYmVn
aW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKICAgICAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwpAQCAtMzc3LDcgKzM3OCw3IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAjaWYgIVBM
QVRGT1JNKFdBVENIT1MpCiAgICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewotICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcm91dGVEZXRlY3RvciA9
IFdURk1vdmUoX3JvdXRlRGV0ZWN0b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtyb3V0ZURldGVjdG9yID0gV1RGTW92ZShfcm91dGVEZXRlY3Rvcild
ICgpIG11dGFibGUgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAic2FmZWx5VGVhckRvd24gLSBk
aXBhdGNoZWQgdG8gVUkgdGhyZWFkLiIpOwogICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgICAgICAgICByb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9u
RW5hYmxlZCA9IE5POwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHJl
dmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMjMgKzEz
NywxMiBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuCiAgICAgcmV0
dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkaXNwYXRjaFRv
TWFpblRocmVhZCh2b2lkICheYmxvY2spKCkpCi17Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAg
ICBXZWJUaHJlYWRSdW4oYmxvY2spOwotI2Vsc2UKLSAgICAgICAgYmxvY2soKTsKLSNlbmRpZgot
ICAgIH0pOwotfQotCiB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzdFVu
YmxvY2tBc3luYyhEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiBkZWNpc2lvbkhhbmRsZXIpIGNvbnN0
CiB7CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAg
ICBpZiAobV93ZWJGaWx0ZXJFdmFsdWF0b3IpIHsKICAgICAgICAgW21fd2ViRmlsdGVyRXZhbHVh
dG9yIHVuYmxvY2tXaXRoQ29tcGxldGlvbjpbZGVjaXNpb25IYW5kbGVyXShCT09MIHVuYmxvY2tl
ZCwgTlNFcnJvciAqKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaFRvTWFpblRocmVhZChbZGVjaXNp
b25IYW5kbGVyLCB1bmJsb2NrZWRdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2Rl
Y2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CiAgICAgICAgICAgICAgICAgTE9HKENvbnRlbnRG
aWx0ZXJpbmcsICJXZWJGaWx0ZXJFdmFsdWF0b3IgJXMgdGhlIHVuYmxvY2sgcmVxdWVzdC5cbiIs
IHVuYmxvY2tlZCA/ICJhbGxvd2VkIiA6ICJkaWQgbm90IGFsbG93Iik7CiAgICAgICAgICAgICAg
ICAgZGVjaXNpb25IYW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTE2NCw3
ICsxNTMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzCiAKICAg
ICBpZiAobV91bmJsb2NrUmVxdWVzdGVyKSB7CiAgICAgICAgIG1fdW5ibG9ja1JlcXVlc3Rlcihb
ZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewotICAgICAgICAgICAgZGlzcGF0Y2hU
b01haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CisgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0gewogICAgICAgICAg
ICAgICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VO
b3RpZmllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
b3dlclNvdXJjZU5vdGlmaWVyLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Qb3dlclNvdXJjZU5vdGlmaWVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJTeXN0ZW1CYXR0ZXJ5LmgiCiAjaW1wb3J0IDxub3Rp
ZnkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvSU9QU0xpYlNQSS5oPgorI2ltcG9ydCA8d3Rm
L1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw3ICs0Niw3IEBAIFBv
d2VyU291cmNlTm90aWZpZXI6OlBvd2VyU291cmNlTm90aWZpZXIKIAogICAgIC8vIElmIHRoZSBj
dXJyZW50IHZhbHVlIG9mIHN5c3RlbUhhc0FDKCkgaXMgdW5jYWNoZWQsIGZvcmNlIGEgbm90aWZp
Y2F0aW9uLgogICAgIGlmICghY2FjaGVkU3lzdGVtSGFzQUMoKSkgewotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5ub3RpZnlQb3dlclNvdXJjZUNoYW5nZWQoKTsKICAgICAgICAg
fSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTkwOSw3ICs5
MDksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICBS
ZXRhaW5QdHI8QVZQbGF5ZXI+IHN0cm9uZ1BsYXllciA9IG1fYXZQbGF5ZXIuZ2V0KCk7CiAgICAg
UmV0YWluUHRyPEFWUGxheWVySXRlbT4gc3Ryb25nSXRlbSA9IGl0ZW07Ci0gICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1BsYXllciwgc3Ryb25nSXRl
bV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3Ryb25nUGxheWVyLCBzdHJvbmdJ
dGVtXSB7CiAgICAgICAgIFtzdHJvbmdQbGF5ZXIgcmVwbGFjZUN1cnJlbnRJdGVtV2l0aFBsYXll
ckl0ZW06c3Ryb25nSXRlbS5nZXQoKV07CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM3Miw3ICszNzIsNyBAQCBSZWY8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9y
bUNBTGF5ZXJDb2NvCiAgICAgICAgIEFWUGxheWVyTGF5ZXIgKnNvdXJjZVBsYXllckxheWVyID0g
YXZQbGF5ZXJMYXllcigpOwogICAgICAgICBBU1NFUlQoc291cmNlUGxheWVyTGF5ZXIpOwogCi0g
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZGVzdGluYXRpb25QbGF5ZXJMYXllciA9IHJl
dGFpblB0cihkZXN0aW5hdGlvblBsYXllckxheWVyKSwgc291cmNlUGxheWVyTGF5ZXIgPSByZXRh
aW5QdHIoc291cmNlUGxheWVyTGF5ZXIpXSB7CiAgICAgICAgICAgICBbZGVzdGluYXRpb25QbGF5
ZXJMYXllciBzZXRQbGF5ZXI6W3NvdXJjZVBsYXllckxheWVyIHBsYXllcl1dOwogICAgICAgICB9
KTsKICAgICB9CkBAIC0xMDkyLDggKzEwOTIsNyBAQCBib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNX
ZWJMYXllcigpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3VuZHNPbk1haW5UaHJlYWQo
Q0dSZWN0IGJvdW5kcykKIHsKLSAgICBDQUxheWVyICpsYXllciA9IG1fbGF5ZXIuZ2V0KCk7Ci0g
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2xheWVyID0gbV9sYXllciwgYm91bmRzXSB7CiAgICAgICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBbbGF5ZXIgc2V0Qm91bmRzOmJv
dW5kc107CiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTExMDIsOCArMTEw
MSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3VuZHNPbk1haW5UaHIKIAogdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OnNldFBvc2l0aW9uT25NYWluVGhyZWFkKENHUG9pbnQgcG9zaXRpb24p
CiB7Ci0gICAgQ0FMYXllciAqbGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtsYXllciA9IG1fbGF5ZXIsIHBvc2l0aW9uXSB7CiAgICAgICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogICAgICAgICBbbGF5ZXIgc2V0UG9zaXRpb246cG9zaXRpb25dOwog
ICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC0xMTEyLDggKzExMTAsNyBAQCB2
b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0UG9zaXRpb25Pbk1haW5UCiAKIHZvaWQgUGxhdGZvcm1D
QUxheWVyOjpzZXRBbmNob3JQb2ludE9uTWFpblRocmVhZChGbG9hdFBvaW50M0QgdmFsdWUpCiB7
Ci0gICAgQ0FMYXllciAqbGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtsYXllciA9IG1fbGF5ZXIsIHZhbHVlXSB7CiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogICAgICAgICBbbGF5ZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UodmFs
dWUueCgpLCB2YWx1ZS55KCkpXTsKICAgICAgICAgW2xheWVyIHNldEFuY2hvclBvaW50Wjp2YWx1
ZS56KCldOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQko
cmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEs
NyArMTAxLDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246Om1heWJlQgogICAg
IH0KIAogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IHByb3RlY3RlZFRo
aXMgeyB0aGlzIH07Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXNdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fbm90aWZpY2F0aW9uQ2Fs
bGJhY2spCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX25vdGlmaWNhdGlvbkNhbGxiYWNr
KCk7CiAgICAgfSk7CkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lv
blNlc3Npb246OmVucXVldQogICAgIGlmICghc2hvdWxkTm90aWZ5KQogICAgICAgICByZXR1cm47
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShtX2hhc0F2YWls
YWJsZUZyYW1lQ2FsbGJhY2spXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKG1faGFzQXZh
aWxhYmxlRnJhbWVDYWxsYmFjayldIHsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9KTsKIH0K
QEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6cmVx
dWVzCiAKICAgICBpZiAobm90aWZpY2F0aW9uQ2FsbGJhY2sgJiYgaXNSZWFkeUZvck1vcmVNZWRp
YURhdGEoKSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBw
cm90ZWN0ZWRUaGlzIHsgdGhpcyB9OwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpc10geworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXNdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5tX25vdGlmaWNhdGlvbkNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1fbm90aWZpY2F0aW9uQ2FsbGJhY2soKTsKICAgICAgICAgfSk7CkBAIC00NTMsNyArNDUz
LDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OnN0b3BSZQogdm9pZCBXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb246Om5vdGlmeVdoZW5IYXNBdmFpbGFibGVWaWRlb0ZyYW1l
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjYWxsYmFjaykKIHsKICAgICBpZiAoY2FsbGJhY2sgJiYg
bV9wcm9kdWNlclF1ZXVlICYmICFDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX3Byb2R1Y2VyUXVldWUu
Z2V0KCkpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtjYWxsYmFja10geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxi
YWNrXSB7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQkocmV2aXNpb24gMjcwODY5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDcgQEAgLSAodm9pZClsYXlvdXRTdWJs
YXllcnMKICAgICBbdmlldyBzZXRUcmFuc2Zvcm06dHJhbnNmb3JtXTsKIAogICAgIE5TVGltZUlu
dGVydmFsIGFuaW1hdGlvbkR1cmF0aW9uID0gW0NBVHJhbnNhY3Rpb24gYW5pbWF0aW9uRHVyYXRp
b25dOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Cisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAgW05TT2JqZWN0IGNhbmNl
bFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cihyZXNvbHZlQm91bmRzKSBvYmplY3Q6bmlsXTsKIAogICAgICAgICBfdmlkZW9TdWJsYXllckZy
YW1lID0gdGFyZ2V0VmlkZW9GcmFtZTsKQEAgLTE0MTUsNyArMTQxNSw3IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXAKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZmluYWxpemVTZXR1cCgpCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0
aGlzXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZlB0cih0aGlzKSwgdGhpc10gewogICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIpIHsKICAgICAgICAgICAgIGlmICghbV9oYXNWaWRlb0NvbnRlbnRMYXllciAmJiBtX3Rh
cmdldE1vZGUuaGFzVmlkZW8oKSkgewogICAgICAgICAgICAgICAgIG1fZmluYWxpemVTZXR1cE5l
ZWRzVmlkZW9Db250ZW50TGF5ZXIgPSB0cnVlOwpAQCAtMTUzNCw3ICsxNTM0LDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9FeAogCiAgICAgbV9zdGFuZGJ5ID0gZmFs
c2U7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CiAg
ICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgICAgIG1fZnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogICAgIH0pOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02MSwxNCArNjEsMTQgQEAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
Q2xpZW50Ojp+V2ViU1FMaQogCiB2b2lkIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudDo6
d2lsbEJlZ2luRmlyc3RUcmFuc2FjdGlvbigpCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3RoaXNdIHsKICAgICAgICAgbV9oeXN0ZXJlc2lzLnN0YXJ0KCk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaWRGaW5pc2hMYXN0VHJhbnNh
Y3Rpb24oKQogewotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFt0aGlzXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAg
IG1faHlzdGVyZXNpcy5zdG9wKCk7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpyCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAg
IEludFJlY3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1lbnQu
Z2V0KCkpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNsaWVudFJl
Y3RdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY2xpZW50UmVjdF0gewogICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPnNldElubGluZVJlY3QoY2xpZW50UmVjdCwgY2xpZW50UmVjdCAhPSBJbnRS
ZWN0KDAsIDAsIDAsIDApKTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0yNTgsNyArMjU4LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cgogICAgIFdlYlRocmVh
ZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIHZpZGVvRnVsbHNj
cmVlbkxheWVyID0gcmV0YWluUHRyKFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29s
b3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayldOwogICAg
ICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxs
c2NyZWVuTGF5ZXIuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgdGhpc10gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIHRoaXNdIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdIHsKICAgICAgICAgICAgICAg
ICBpZiAoIW1faW50ZXJmYWNlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI3
OCw3ICsyNzgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyCiAg
ICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywg
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSByZXRhaW5QdHIoW21fdmlkZW9GdWxsc2NyZWVuVmlldyBs
YXllcl0pXSAoKSBtdXRhYmxlIHsKICAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJh
Y2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudEJs
YWNrKV07CiAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihuaWwsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdIHsK
KyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdIHsKICAgICAgICAgICAgICAgICBpZiAoIW1faW50
ZXJmYWNlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5NSwxNCArMjk1LDE0
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmQKIHsKICAgICBBU1NF
UlQoaXNVSVRocmVhZCgpKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKSwgdGhpc10geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKICAgICAgICAgbV9pbnRlcmZhY2Ut
PmVudGVyRnVsbHNjcmVlbigpOwogICAgIH0pOwogI2Vsc2UKICAgICBXZWJUaHJlYWRSdW4oW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXll
ciA9IHJldGFpblB0cihbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXSldICgpIG11dGFibGUg
ewogICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hl
ZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50QmxhY2spXTsKICAgICAgICAgbV9m
dWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxh
eWVyLmdldCgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNd
ICgpIG11dGFibGUgewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlz
XSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzXSB7CiAgICAgICAgICAgICAgICAgbV9pbnRl
cmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpA
QCAtMzI0LDEzICszMjQsMTMgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6ZAogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10gewogICAg
ICAgICBtX2ludGVyZmFjZS0+Y2xlYW51cEZ1bGxzY3JlZW4oKTsKICAgICB9KTsKICNlbHNlCiAg
ICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10g
KCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhp
c10gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRo
aXNdIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdIHsKICAgICAgICAgICAgICAgICBtX2lu
dGVyZmFjZS0+Y2xlYW51cEZ1bGxzY3JlZW4oKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpmCiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAg
IEludFJlY3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1lbnQu
Z2V0KCkpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNsaWVudFJl
Y3RdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY2xpZW50UmVjdF0gewogICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPnByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSh0cnVlLCBjbGllbnRSZWN0KTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgICAgICAgICAgICAgbV9p
bnRlcmZhY2UtPnByZXBhcmVkVG9SZXR1cgogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6ZHVyYXRpb25DaGFuZ2VkKGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBpZiAoV2Vi
VGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBkdXJhdGlv
bl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCBkdXJhdGlvbl0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpkCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjdXJyZW50VGltZUNo
YW5nZWQoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKICAgICBpZiAo
V2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjdXJy
ZW50VGltZSwgYW5jaG9yVGltZV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjdXJyZW50VGltZSwgYW5jaG9yVGlt
ZV0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3VycmVudFRpbWVDaGFuZ2VkKGN1cnJl
bnRUaW1lLCBhbmNob3JUaW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQw
MSw3ICs0MDEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpidWZmZXJlZFRpbWVDaGFuZ2Vk
KGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7
Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgYnVmZmVyZWRUaW1lXSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IGJ1ZmZlcmVkVGltZV0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YnVmZmVyZWRUaW1l
Q2hhbmdlZChidWZmZXJlZFRpbWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NDE0LDcgKzQxNCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmIK
IHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJhdGVDaGFuZ2VkKGJvb2wg
aXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3Vy
cmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgaXNQbGF5aW5nLCBwbGF5YmFj
a1JhdGVdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZlB0cih0aGlzKSwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGVdIHsKICAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPnJhdGVDaGFuZ2VkKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsK
ICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpoYXNWaWRlb0NoYW5nZWQoYm9vbCBoYXNWaWRlbykKIHsKICAgICBp
ZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBo
YXNWaWRlb10geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBoYXNWaWRlb10gewogICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+aGFzVmlkZW9DaGFuZ2VkKGhhc1ZpZGVvKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpoCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp2aWRlb0Rp
bWVuc2lvbnNDaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zKQogewogICAg
IGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IHZpZGVvRGltZW5zaW9ucyA9IHZpZGVvRGltZW5zaW9uc10geworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0Rp
bWVuc2lvbnMgPSB2aWRlb0RpbWVuc2lvbnNdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PnZpZGVvRGltZW5zaW9uc0NoYW5nZWQodmlkZW9EaW1lbnNpb25zKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0Ojp2CiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYgdGltZVJhbmdlcywgZG91
YmxlIGxhc3RNb2RpZmllZFRpbWUsIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwpCiB7CiAgICAg
aWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
cGxhdGZvcm1UaW1lUmFuZ2VzID0gdGltZVJhbmdlcy5yYW5nZXMoKSwgbGFzdE1vZGlmaWVkVGlt
ZSwgbGl2ZVVwZGF0ZUludGVydmFsXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHBsYXRmb3JtVGltZVJhbmdlcyA9
IHRpbWVSYW5nZXMucmFuZ2VzKCksIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZh
bF0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2Vla2FibGVSYW5nZXNDaGFuZ2VkKFRp
bWVSYW5nZXM6OmNyZWF0ZShwbGF0Zm9ybVRpbWVSYW5nZXMpLCBsYXN0TW9kaWZpZWRUaW1lLCBs
aXZlVXBkYXRlSW50ZXJ2YWwpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDY2
LDcgKzQ2Niw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnMKIHZv
aWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNo
YW5nZWQoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3Vy
cmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY2FuUGxheUZhc3RSZXZlcnNl
XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIodGhpcyksIGNhblBsYXlGYXN0UmV2ZXJzZV0gewogICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjYW5QbGF5RmFzdFJldmVyc2UpOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHN0YXRpYyBW
ZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IGlzb2wKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBW
ZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZElu
ZGV4KQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIG9wdGlvbnMgPSBpc29sYXRlZENvcHkob3B0aW9ucyksIHNlbGVjdGVkSW5k
ZXhdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZlB0cih0aGlzKSwgb3B0aW9ucyA9IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2VsZWN0
ZWRJbmRleF0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmEKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNl
bGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAg
aWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
b3B0aW9ucyA9IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2VsZWN0ZWRJbmRleF0geworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRo
aXMpLCBvcHRpb25zID0gaXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CiAg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTUyOCw3ICs1MjgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjplCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoYm9vbCBkaXNhYmxlZCkKIHsKICAgICBpZiAoV2Vi
VGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBkaXNhYmxl
ZF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCBkaXNhYmxlZF0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGRpc2FibGVkKTsKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3CiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjptdXRlZENoYW5nZWQoYm9vbCBtdXRlZCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXND
dXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBtdXRlZF0geworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRo
aXMpLCBtdXRlZF0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bXV0ZWRDaGFuZ2VkKG11
dGVkKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU1NCw3ICs1NTQsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjptCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp2b2x1bWVDaGFuZ2VkKGRvdWJsZSB2b2x1bWUpCiB7CiAg
ICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KSwgdm9sdW1lXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZvbHVtZV0gewogICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+dm9sdW1lQ2hhbmdlZCh2b2x1bWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwpAQCAtOTgzLDcgKzk4Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OnMKIAogICAgIEZsb2F0U2l6ZSB2aWRlb0RpbWVuc2lvbnMgPSB7IChmbG9hdCl2aWRlb0Vs
ZW1lbnQudmlkZW9XaWR0aCgpLCAoZmxvYXQpdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KCkgfTsK
IAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwg
dmlkZW9EaW1lbnNpb25zLCB2aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlXSB7
CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKSwgdGhpcywgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlkZW9EaW1lbnNpb25zLCB2
aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlXSB7CiAgICAgICAgIEFTU0VSVChp
c1VJVGhyZWFkKCkpOwogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAKQEAgLTEwMDIsNyArMTAw
Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmUKIHsKICAgICBB
U1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkpOwogICAgIEludFJl
Y3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1lbnQuZ2V0KCkp
OwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY2xpZW50UmVjdF0geworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRo
aXMsIGNsaWVudFJlY3RdIHsKICAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgICAg
IG1faW50ZXJmYWNlLT5leGl0RnVsbHNjcmVlbihjbGllbnRSZWN0KTsKICAgICB9KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0J
KHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyB2
b2lkIE1haW5UaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQKICAgICAvLyBXZSBvd24gb2JqIGF0IHRo
aXMgcG9pbnQsIHNvIHdlIGRvbid0IG5lZWQgdGhlIGJsb2NrIHRvIGltcGxpY2l0bHkKICAgICAv
LyByZXRhaW4gaXQuCiAgICAgX19ibG9jayBpZCBvYmpOb3RSZXRhaW5lZCA9IG9iajsKLSAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbXSB7CiAgICAgICAgIFtvYmpOb3RSZXRhaW5lZCByZWxlYXNlXTsK
ICAgICB9KTsKIH0KQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIFdlYlRocmVhZFBvc3ROb3RpZmlj
YXRpb24oTlNTdHJpbmcqCiAgICAgaWYgKHB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5h
bWUgb2JqZWN0Om9iamVjdCB1c2VySW5mbzp1c2VySW5mb107CiAgICAgZWxzZSB7Ci0gICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4geworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpuYW1lIG9iamVjdDpv
YmplY3QgdXNlckluZm86dXNlckluZm9dOwogICAgICAgICB9KTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ1Niw3ICs0NTYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6c2V0dXBG
CiAKICAgICBbdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQygpIHNldFVwUElQRm9yVmlkZW9W
aWV3OiZsYXllckhvc3RlZFZpZXcgd2l0aEZyYW1lOihOU1JlY3QpaW5pdGlhbFJlY3QgaW5XaW5k
b3c6cGFyZW50V2luZG93XTsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10geworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHRoaXNdIHsKICAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQogICAg
ICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZFNldHVwRnVsbHNjcmVlbigp
OwogICAgIH0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0JKHJldmlz
aW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNyArMjYwLDcg
QEAgLSAodm9pZClkZXZpY2VDb25uZWN0ZWREaWRDaGFuZ2U6KE5TTm90aQogICAgIGlmICghbV9j
YWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYs
IHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgaWYgKG1fY2FsbGJh
Y2spCiAgICAgICAgICAgICBtX2NhbGxiYWNrLT5yZWZyZXNoQ2FwdHVyZURldmljZXMoKTsKICAg
ICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzEwMzYpCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDIwLTEyLTIxICBHZW9m
ZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlZCBtb3N0IHVz
ZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgLi4uKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDY2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlzcGF0Y2hfYXN5
bmMgaGFzIHR3byBkb3duc2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBpcyB1bmRlZmlu
ZWQgKGFuZCBpbiBwcmFjdGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRvCisgICAgICAg
IG90aGVyIFdlYktpdCBvcGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMgZmxha2luZXNz
LgorCisgICAgICAgICgyKSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZpcnN0IHBhaW50
IG9wdGltaXphdGlvbi4KKworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRpc3BhdGNoKCkg
aW5zdGVhZC4KKworICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRl
IF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOl0pOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9E
ZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbToKKyAgICAgICAgKFdlYktpdDo6ZGV0ZXJtaW5lSVRQ
U3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1h
Yy5tbToKKyAgICAgICAgKFdLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQbHVnSW5zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmluZy5tbToKKyAgICAg
ICAgKCtbTlNBdHRyaWJ1dGVkU3RyaW5nIF9sb2FkRnJvbUhUTUxXaXRoT3B0aW9uczpjb250ZW50
TG9hZGVyOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoK1tXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpdKToKKyAg
ICAgICAgKCtbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHVucmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1
bmN0aW9uOndpdGhTb3VyY2VVUkw6d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmluRnJh
bWU6aW5Xb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9p
bnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOndpdGhvdXRXYWl0aW5nRm9yUGFp
bnRpbmc6d2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfZG9BZnRlck5leHRWaXNpYmxlQ29udGVudFJlY3RVcGRhdGU6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nj
aGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlQWZ0ZXJTY3JvbGxJblZpZXc6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c10pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2ZpcmVQcmVzZW50YXRpb25VcGRhdGVGb3JQZW5kaW5nU3RhYmxlU3RhdGVQ
cmVzZW50YXRpb25DYWxsYmFja3NdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kb0FmdGVyTmV4
dFN0YWJsZVByZXNlbnRhdGlvblVwZGF0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvbkNsaWVudDo6
cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0Ojp0cnlJbnRlcmNlcHROYXZpZ2F0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tOgorICAg
ICAgICAoLVtXS1ByZWZlcmVuY2VPYnNlcnZlciBwcmVmZXJlbmNlRGlkQ2hhbmdlOmtleTplbmNv
ZGVkVmFsdWU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYkluc3BlY3RvclByZWZl
cmVuY2VPYnNlcnZlci5tbToKKyAgICAgICAgKC1bV0tXZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2Jz
ZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0Ojp3ZWJQcm9jZXNzUG9vbEhpZ2hEeW5hbWljUmFuZ2VEaWRDaGFuZ2VDYWxsYmFj
ayk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
LVtXS0RPTVBhc3RlTWVudURlbGVnYXRlIG1lbnVEaWRDbG9zZTpdKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnVwZGF0ZVdpbmRvd0FuZFZpZXdGcmFtZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0VG9wQ29udGVudEluc2V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmRpZEJlY29tZUVkaXRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uSWZOZWVkZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIubW06CisgICAgICAgIChXZWJLaXQ6OkVuZG93
bWVudFN0YXRlVHJhY2tlcjo6cmVnaXN0ZXJNb25pdG9ySWZOZWNlc3NhcnkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoLVtfV0tUb3Vj
aEV2ZW50R2VuZXJhdG9yIF9zZW5kSElERXZlbnQ6XSk6CisgICAgICAgICgtW19XS1RvdWNoRXZl
bnRHZW5lcmF0b3IgX3NlbmRNYXJrZXJISURFdmVudFdpdGhDb21wbGV0aW9uQmxvY2s6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tOgorICAgICAgICAo
LVtXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIgX3VwZGF0ZUJhY2tncm91
bmRUYXNrXSk6CisgICAgICAgICgtW1dLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRUYXNrTWFu
YWdlciBfaGFuZGxlQmFja2dyb3VuZFRhc2tFeHBpcmF0aW9uT25NYWluVGhyZWFkXSk6CisgICAg
ICAgICgtW1dLUkJTQXNzZXJ0aW9uRGVsZWdhdGUgYXNzZXJ0aW9uOmRpZEludmFsaWRhdGVXaXRo
RXJyb3I6XSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NBc3NlcnRpb246OlByb2Nlc3NBc3Nl
cnRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVyRm9yV2Vi
Vmlld10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tOgorICAgICAgICAo
LVtXS1BERlZpZXcgcGRmSG9zdFZpZXdDb250cm9sbGVyRXh0ZW5zaW9uUHJvY2Vzc0RpZENyYXNo
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW06
CisgICAgICAgICgtW1dLRmlsZVVwbG9hZFBhbmVsIGltYWdlUGlja2VyQ29udHJvbGxlcjpkaWRG
aW5pc2hQaWNraW5nTWVkaWFXaXRoSW5mbzpdKToKKyAgICAgICAgKC1bV0tGaWxlVXBsb2FkUGFu
ZWwgaW1hZ2VQaWNrZXJDb250cm9sbGVyOmRpZEZpbmlzaFBpY2tpbmdNdWx0aXBsZU1lZGlhV2l0
aEluZm86XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIgcGxhY2Vob2xkZXJXaWxsTW92ZVRvU3VwZXJ2aWV3Ol0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNs
b25lIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJldHVyblZpZGVvQ29udGVudExheWVy
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4
aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6CisKIDIwMjAtMTItMjEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFueSB3ZWJzaXRlcyBj
cmFzaCB1bmRlciB0b0RhdGFVUkwoKSB3aGVuIGVuYWJsaW5nIEdQVSBwcm9jZXNzIGZvciBET00K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlv
bkRlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2Ev
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM1LDcgKzEzNSw3IEBAIC0gKHZvaWQpX2RpZFJlcXVl
c3RNZXJjaGFudFNlc3Npb246KFdlYksKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21h
aW4gZXJyb3IgJUAiLCBlcnJvcik7CiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
ZWxmLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBtZXJjaGFudFVSTCA9IHJldGFp
blB0cihtZXJjaGFudFVSTCldIHsKICAgICAgICAgICAgIEFTU0VSVChfZGlkUmVxdWVzdE1lcmNo
YW50U2Vzc2lvbkNvbXBsZXRpb24pOwogCiAgICAgICAgICAgICBhdXRvIHByZXNlbnRlciA9IF9w
cmVzZW50ZXIuZ2V0KCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgLSAodm9pZClfZGlkUmVxdWVzdE1l
cmNoYW50U2Vzc2lvbjooV2ViSwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJXaWxsVmFsaWRh
dGVNZXJjaGFudCgqcHJlc2VudGVyLCBtZXJjaGFudFVSTCk7CisgICAgICAgICAgICBwcmVzZW50
ZXItPmNsaWVudCgpLnByZXNlbnRlcldpbGxWYWxpZGF0ZU1lcmNoYW50KCpwcmVzZW50ZXIsIG1l
cmNoYW50VVJMLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfV07CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5t
bQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVs
dFdlYkJyb3dzZXJDaGVja3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCB2
b2lkIGRldGVybWluZUlUUFN0YXRlKCkKICAgICBkaXNwYXRjaF9hc3luYyhnX2l0cFF1ZXVlLCBb
YXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29yZTo6YXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgZ19jdXJy
ZW50SVRQU3RhdGUgPSBkZXRlcm1pbmVJVFBTdGF0ZUludGVybmFsKGFwcFdhc0xpbmtlZE9uT3JB
ZnRlciwgYnVuZGxlSWRlbnRpZmllcikgPyBJVFBTdGF0ZTo6RW5hYmxlZCA6IElUUFN0YXRlOjpE
aXNhYmxlZDsKIAotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICAg
ICAgZGlzcGF0Y2hfcmVsZWFzZShnX2l0cFF1ZXVlKTsKICAgICAgICAgICAgIGdfaXRwUXVldWUg
PSBudWxscHRyOwogICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Vu
ZG93bWVudFN0YXRlVHJhY2tlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0VuZG93bWVudFN0YXRlVHJhY2tlci5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgRW5kb3dtZW50U3RhdGVUcmFja2VyOjpyZWdpc3Rl
ck1vbmkKICAgICAgICAgW2NvbmZpZyBzZXRTdGF0ZURlc2NyaXB0b3I6c3RhdGVEZXNjcmlwdG9y
XTsKIAogICAgICAgICBbY29uZmlnIHNldFVwZGF0ZUhhbmRsZXI6W3RoaXNdIChSQlNQcm9jZXNz
TW9uaXRvciAqIF9Ob25udWxsIG1vbml0b3IsIFJCU1Byb2Nlc3NIYW5kbGUgKiBfTm9ubnVsbCBw
cm9jZXNzLCBSQlNQcm9jZXNzU3RhdGVVcGRhdGUgKiBfTm9ubnVsbCB1cGRhdGUpIG11dGFibGUg
ewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3RoaXMsIHN0YXRlID0gc3RhdGVGcm9tRW5kb3dtZW50cyh1cGRhdGUuc3RhdGUuZW5kb3dtZW50
TmFtZXNwYWNlcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHN0YXRlID0gc3RhdGVGcm9tRW5kb3dtZW50cyh1cGRhdGUuc3RhdGUuZW5k
b3dtZW50TmFtZXNwYWNlcyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgc2V0U3RhdGUo
V1RGTW92ZShzdGF0ZSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH1dOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tCShy
ZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50
R2VuZXJhdG9yLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDcgQEAgLSAoQk9PTClf
c2VuZEhJREV2ZW50OihJT0hJREV2ZW50UmVmKWV2ZQogCiAgICAgaWYgKGV2ZW50UmVmKSB7CiAg
ICAgICAgIFJldGFpblB0cjxJT0hJREV2ZW50UmVmPiBzdHJvbmdFdmVudCA9IGV2ZW50UmVmOwot
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KICAgICAgICAgICAgIHVpbnQzMl90IGNvbnRleHRJRCA9IFtVSUFwcGxp
Y2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXS5rZXlXaW5kb3cuX2NvbnRleHRJZDsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtMjQwLDcgKzI0MCw3IEBAIC0gKEJPT0wpX3Nl
bmRNYXJrZXJISURFdmVudFdpdGhDb21wbGV0aW8KICAgICAgICAga0lPSElERXZlbnRPcHRpb25O
b25lKSk7CiAgICAgCiAgICAgaWYgKG1hcmtlckV2ZW50KSB7Ci0gICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFttYXJrZXJFdmVudCA9IFdURk1vdmUobWFy
a2VyRXZlbnQpXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbWFya2VyRXZl
bnQgPSBXVEZNb3ZlKG1hcmtlckV2ZW50KV0gewogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICAgICAgICAgIGF1dG8gY29udGV4dElEID0gW1VJQXBwbGljYXRpb24gc2hh
cmVkQXBwbGljYXRpb25dLmtleVdpbmRvdy5fY29udGV4dElkOwogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tDb250ZXh0UHJpdmF0ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQkocmV2aXNpb24gMjcwODY5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQ
b29sLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdpbkJsb2NrbGlzdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJHTEJsb2NrbGlzdC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKIGJvb2wgV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVBdmFpbGFi
bGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZikKQEAgLTgzLDcgKzg0LDcgQEAgdm9pZCBXS0Nv
bnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucwogICAgIFJlZlB0cjxBUEk6OkFycmF5PiBh
cnJheSA9IEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHBsdWdpbkluZm9EaWN0aW9uYXJpZXMp
KTsKIAogICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5yZWYoKTsKLSAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgeworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbYmxvY2sgPSBtYWtlQmxvY2tQdHIoYmxvY2spLCBhcnJheSA9IFdURk1v
dmUoYXJyYXkpLCBjb250ZXh0UmVmXSB7CiAgICAgICAgIGJsb2NrKFdlYktpdDo6dG9BUEkoYXJy
YXkuZ2V0KCkpLCAwKTsKICAgICAKICAgICAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZikt
PmRlcmVmKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRy
aWJ1dGVkU3RyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMzNSw3ICszMzUsOSBAQCArICh2b2lkKV9sb2FkRnJvbUhUTUxXaXRoT3B0
aW9uczooTlNEaWN0CiAgICAgaWYgKFtOU1RocmVhZCBpc01haW5UaHJlYWRdKQogICAgICAgICBy
dW5Db252ZXJzaW9uKCk7CiAgICAgZWxzZQotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBydW5Db252ZXJzaW9uKTsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtydW5Db252ZXJzaW9uID0gbWFrZUJsb2NrUHRyKHJ1bkNvbnZlcnNpb24p
XSB7CisgICAgICAgICAgICBydW5Db252ZXJzaW9uKCk7CisgICAgICAgIH0pOwogfQogCiBAZW5k
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI3MDg2OSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNSw5ICsxMDUsOSBAQCArICh2b2lkKXJl
Z2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6CiAgICAgaWYgKFtOU1RocmVhZCBpc01haW5U
aHJlYWRdKQogICAgICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3Rlckdsb2JhbFVS
TFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhzY2hlbWUpOwogICAgIGVsc2Ug
ewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtl
QmxvY2tQdHIoW3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUpXSB7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbc2NoZW1lID0gcmV0YWluUHRyKHNjaGVtZSldIHsKICAgICAgICAg
ICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZp
bmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKHNjaGVtZS5nZXQoKSk7Ci0gICAgICAgIH0pLmdldCgp
KTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCkBAIC0xMTYsOSArMTE2LDkgQEAgKyAodm9pZCl1
bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jbwogICAgIGlmIChbTlNUaHJlYWQgaXNNYWlu
VGhyZWFkXSkKICAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlckdsb2Jh
bFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhzY2hlbWUpOwogICAgIGVs
c2UgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBt
YWtlQmxvY2tQdHIoW3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUpXSB7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbc2NoZW1lID0gcmV0YWluUHRyKHNjaGVtZSldIHsKICAgICAg
ICAgICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVB
c0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoc2NoZW1lLmdldCgpKTsKLSAgICAgICAgfSku
Z2V0KCkpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjcwODY5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTAyOSw3ICsxMDI5LDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihO
U1N0cmluZyAqKQogICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OmVycm9yTWVzc2FnZSBmb3JL
ZXk6X1dLSmF2YVNjcmlwdEV4Y2VwdGlvbk1lc3NhZ2VFcnJvcktleV07CiAKICAgICAgICAgYXV0
byBlcnJvciA9IGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpXS0Vycm9y
RG9tYWluIGNvZGU6V0tFcnJvckphdmFTY3JpcHRFeGNlcHRpb25PY2N1cnJlZCB1c2VySW5mbzp1
c2VySW5mby5nZXQoKV0pOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbaGFuZGxlciwgZXJyb3JdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtoYW5kbGVyLCBlcnJvcl0gewogICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0g
KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7CiAgICAgICAgICAgICByYXdI
YW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOwogICAgICAgICB9KTsKQEAgLTEzNDQsNyArMTM0NCw3
IEBAIC0gKHZvaWQpX2ludGVybmFsRG9BZnRlck5leHRQcmVzZW50YXRpb24KIHsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXdd
KSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIHVw
ZGF0ZUJsb2NrKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKHVwZGF0ZUJsb2Nr
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0JKHJldmlz
aW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdUZXN0aW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDkgQEAgLSAodm9pZClf
ZG9BZnRlck5leHRWaXNpYmxlQ29udGVudFJlY3RVcAogICAgIF92aXNpYmxlQ29udGVudFJlY3RV
cGRhdGVDYWxsYmFja3MuYXBwZW5kKG1ha2VCbG9ja1B0cih1cGRhdGVCbG9jaykpOwogICAgIFtz
ZWxmIF9zY2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZV07CiAjZWxzZQotICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIHVwZGF0ZUJsb2NrKTsKKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3VwZGF0ZUJsb2NrID0gbWFrZUJsb2NrUHRyKHVwZGF0
ZUJsb2NrKV0geworICAgICAgICB1cGRhdGVCbG9jaygpOworICAgIH0pOwogI2VuZGlmCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkyMiw3ICsxOTIyLDcgQEAgLSAo
dm9pZClfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Jl
dGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIFdLV2ViVmll
dyAqd2ViVmlldyA9IHJldGFpbmVkU2VsZi5nZXQoKTsKICAgICAgICAgaWYgKCFbd2ViVmlldyBf
aXNWYWxpZF0pCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYwLDcgKzIwNjAsNyBAQCAtICh2
b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAKICAgICAgICAgICAgIGlmICghQ0dQb2lu
dEVxdWFsVG9Qb2ludChhY3RpdmVQb2ludCwgY3VycmVudFBvaW50KSkgewogICAgICAgICAgICAg
ICAgIFJldGFpblB0cjxXS1Njcm9sbFZpZXc+IHN0cm9uZ1Njcm9sbFZpZXcgPSBfc2Nyb2xsVmll
dzsKLSAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbc3Ryb25nU2Nyb2xsVmlldywgYWN0aXZlUG9pbnRdIHsKKyAgICAgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0cm9uZ1Njcm9sbFZpZXcsIGFjdGl2ZVBvaW50XSB7
CiAgICAgICAgICAgICAgICAgICAgIFtzdHJvbmdTY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6
YWN0aXZlUG9pbnQgYW5pbWF0ZWQ6Tk9dOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfQpAQCAtMjQxOSw3ICsyNDE5LDcgQEAgLSAodm9pZClfZmlyZVByZXNlbnRhdGlvblVwZGF0
ZUZvclBlbmRpbgogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHN0cm9uZ1NlbGYgPSBzZWxm
OwogICAgIFtzZWxmIF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTpbc3Ryb25nU2VsZl0g
ewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ry
b25nU2VsZl0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0cm9uZ1NlbGZd
IHsKICAgICAgICAgICAgIGlmIChbc3Ryb25nU2VsZi0+X3N0YWJsZVN0YXRlUHJlc2VudGF0aW9u
VXBkYXRlQ2FsbGJhY2tzIGNvdW50XSkKICAgICAgICAgICAgICAgICBbc3Ryb25nU2VsZiBfZmly
ZVByZXNlbnRhdGlvblVwZGF0ZUZvclBlbmRpbmdTdGFibGVTdGF0ZVByZXNlbnRhdGlvbkNhbGxi
YWNrc107CiAgICAgICAgIH0pOwpAQCAtMjcwMCw3ICsyNzAwLDcgQEAgLSAoQ0dQb2ludClfY29u
dmVydFBvaW50RnJvbVZpZXdUb0NvbnRlbgogLSAodm9pZClfZG9BZnRlck5leHRTdGFibGVQcmVz
ZW50YXRpb25VcGRhdGU6KGRpc3BhdGNoX2Jsb2NrX3QpdXBkYXRlQmxvY2sKIHsKICAgICBpZiAo
IVtzZWxmIHVzZXNTdGFuZGFyZENvbnRlbnRWaWV3XSkgewotICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCB1cGRhdGVCbG9jayk7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaCh1cGRhdGVCbG9jayk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlv
bkNsaWVudC5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvQXV0b21hdGlvbkNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtODUsOSArODUsOSBA
QCB2b2lkIEF1dG9tYXRpb25DbGllbnQ6OnJlcXVlc3RBdXRvbWF0aW9uCiAgICAgLy8gUmVtb3Rl
SW5zcGVjdG9yIHdpbGwgdHJ5IHRvIGFjcXVpcmUgaXRzIGxvY2sgdG8gcmVnaXN0ZXIgdGhlIG5l
dyBzZXNzaW9uIGFuZAogICAgIC8vIGRlYWRsb2NrIGJlY2F1c2UgaXQncyBhbHJlYWR5IHRha2Vu
IHdoaWxlIGhhbmRsaW5nIFhQQyBtZXNzYWdlcy4KICAgICBOU1N0cmluZyAqcmVxdWVzdGVkU2Vz
c2lvbklkZW50aWZpZXIgPSBzZXNzaW9uSWRlbnRpZmllcjsKLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgcmVxdWVzdGVkU2Vzc2lvbklkZW50aWZpZXIgPSByZXRhaW5QdHIocmVxdWVzdGVk
U2Vzc2lvbklkZW50aWZpZXIpLCBjb25maWd1cmF0aW9uID0gcmV0YWluUHRyKGNvbmZpZ3VyYXRp
b24pXSB7CiAgICAgICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24pCi0gICAgICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfcHJvY2Vzc1Bvb2w6bV9wcm9j
ZXNzUG9vbCBkaWRSZXF1ZXN0QXV0b21hdGlvblNlc3Npb25XaXRoSWRlbnRpZmllcjpyZXF1ZXN0
ZWRTZXNzaW9uSWRlbnRpZmllciBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOworICAgICAg
ICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX3Byb2Nlc3NQb29sOm1fcHJvY2Vzc1Bvb2wgZGlkUmVx
dWVzdEF1dG9tYXRpb25TZXNzaW9uV2l0aElkZW50aWZpZXI6cmVxdWVzdGVkU2Vzc2lvbklkZW50
aWZpZXIuZ2V0KCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXTsKICAgICB9KTsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDcg
QEAgc3RhdGljIHZvaWQgdHJ5SW50ZXJjZXB0TmF2aWdhdGlvbihSZWY8QQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CiAgICAgICAgIH0pOwogICAgICAgICBbTFNBcHBM
aW5rIG9wZW5XaXRoVVJMOnVybCBjb21wbGV0aW9uSGFuZGxlcjpbbG9jYWxDb21wbGV0aW9uSGFu
ZGxlcl0oQk9PTCBzdWNjZXNzLCBOU0Vycm9yICopIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtsb2NhbENvbXBsZXRpb25IYW5kbGVyLCBz
dWNjZXNzXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2xvY2FsQ29t
cGxldGlvbkhhbmRsZXIsIHN1Y2Nlc3NdIHsKICAgICAgICAgICAgICAgICAoKmxvY2FsQ29tcGxl
dGlvbkhhbmRsZXIpKHN1Y2Nlc3MpOwogICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbENvbXBs
ZXRpb25IYW5kbGVyOwogICAgICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tCShyZXZpc2lvbiAyNzA4
NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMyArMTc5LDEzIEBAIC0gKGluc3RhbmNldHlwZSlp
bml0CiAtICh2b2lkKXByZWZlcmVuY2VEaWRDaGFuZ2U6KE5TU3RyaW5nICopZG9tYWluIGtleToo
TlNTdHJpbmcgKilrZXkgZW5jb2RlZFZhbHVlOihOU1N0cmluZyAqKWVuY29kZWRWYWx1ZQogewog
I2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtk
b21haW4gPSByZXRhaW5QdHIoZG9tYWluKSwga2V5ID0gcmV0YWluUHRyKGtleSksIGVuY29kZWRW
YWx1ZSA9IHJldGFpblB0cihlbmNvZGVkVmFsdWUpXSB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmlu
Zz4gZW5jb2RlZFN0cmluZzsKICAgICAgICAgaWYgKGVuY29kZWRWYWx1ZSkKLSAgICAgICAgICAg
IGVuY29kZWRTdHJpbmcgPSBTdHJpbmcoZW5jb2RlZFZhbHVlKTsKKyAgICAgICAgICAgIGVuY29k
ZWRTdHJpbmcgPSBTdHJpbmcoZW5jb2RlZFZhbHVlLmdldCgpKTsKIAogICAgICAgICBmb3IgKGF1
dG8qIHByb2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xz
KCkpCi0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGRv
bWFpbiwga2V5LCBlbmNvZGVkU3RyaW5nKTsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5ub3Rp
ZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluLmdldCgpLCBrZXkuZ2V0KCksIGVuY29kZWRTdHJp
bmcpOwogICAgIH0pOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVy
Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDcg
KzY3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKIAogLSAodm9pZClvYnNlcnZlVmFsdWVGb3JL
ZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5T
RGljdGlvbmFyeTxOU0tleVZhbHVlQ2hhbmdlS2V5LCBpZD4gKiljaGFuZ2UgY29udGV4dDoodm9p
ZCAqKWNvbnRleHQKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CiAgICAgICAgIGZvciAo
YXV0byogcG9vbCA6IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKSB7
CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvb2wtPnByb2Nlc3NlcygpLnNp
emUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBwcm9jZXNzID0gcG9vbC0+cHJvY2Vz
c2VzKClbaV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3
Myw3ICs0NzMsNyBAQCBzdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24oV0tRTFRodW1i
bmFpbExvYWRPcGVyYXRpb24gKm9wZXJhdGlvbikKIHsKICAgICBbb3BlcmF0aW9uIHNldENvbXBs
ZXRpb25CbG9jazpeewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIG9wZXJh
dGlvbiA9IHJldGFpblB0cihvcGVyYXRpb24pXSB7CiAgICAgICAgICAgICBhdXRvIGlkZW50aWZp
ZXIgPSBbb3BlcmF0aW9uIGlkZW50aWZpZXJdOwogICAgICAgICAgICAgYXV0byBjb252ZXJ0ZWRJ
bWFnZSA9IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoW29wZXJhdGlvbiB0aHVtYm5haWxd
LCBXZWJDb3JlOjpJbnRTaXplKDQwMCwgNDAwKSk7CiAgICAgICAgICAgICBpZiAoIWNvbnZlcnRl
ZEltYWdlKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC04NjgsNyArODY4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6bm90aWZ5UHJlZmVyZW5jZXND
aAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyB2b2lkIHdlYlByb2Nlc3NQb29sSGlnaER5bmFt
aWNSYW5nZURpZENoYW5nZUNhbGxiYWNrKENNTm90aWZpY2F0aW9uQ2VudGVyUmVmLCBjb25zdCB2
b2lkKiwgQ0ZTdHJpbmdSZWYgbm90aWZpY2F0aW9uTmFtZSwgY29uc3Qgdm9pZCosIENGVHlwZVJl
ZikKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewor
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CiAgICAgICAgIGF1dG8gcHJvcGVydGll
cyA9IFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCk7CiAgICAgICAgIGZvciAoYXV0
byYgcG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKICAgICAgICAgICAg
IHBvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0U2NyZWVu
UHJvcGVydGllcyhwcm9wZXJ0aWVzKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTkyOSw3
ICs5MjksNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3SW1wbDooV2ViCiAKIC0g
KHZvaWQpbWVudURpZENsb3NlOihOU01lbnUgKiltZW51CiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2ltcGwgPSBfaW1wbF0geworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbaW1wbCA9IF9pbXBsXSB7CiAgICAgICAgIGlmIChpbXBsKQogICAg
ICAgICAgICAgaW1wbC0+aGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpE
T01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlKTsKICAgICB9KTsKQEAgLTE4
MDksOCArMTgwOSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVdpbmRvd0FuZFZpZXdGcmEK
IAogICAgIG1fZGlkU2NoZWR1bGVXaW5kb3dBbmRWaWV3RnJhbWVVcGRhdGUgPSB0cnVlOwogCi0g
ICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vha1RoaXNdIHsKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE5MzYsOCArMTkzNSw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFRvcENvbnRlbnRJbnNldChDR0YKIAogICAgIG1fZGlk
U2NoZWR1bGVTZXRUb3BDb250ZW50SW5zZXQgPSB0cnVlOwogCi0gICAgYXV0byB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbd2Vha1RoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHdlYWtUaGlzLT5kaXNwYXRjaFNldFRvcENvbnRl
bnRJbnNldCgpOwpAQCAtMjk0MCw3ICsyOTM4LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQmVj
b21lRWRpdGFibGUoKQogewogICAgIFttX3dpbmRvd1Zpc2liaWxpdHlPYnNlcnZlciBzdGFydE9i
c2VydmluZ0ZvbnRQYW5lbF07CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAg
ICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIF9wcmVmbGlnaHRDaG9zZW5T
cGVsbFNlcnZlcl07CiAgICAgfSk7CiB9CkBAIC0zMzk0LDEwICszMzkyLDEwIEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnJlcXVlc3RDYW5kaWRhdGVzRm9yU2UKICAgICBOU1RleHRDaGVja2luZ1R5cGVz
IGNoZWNraW5nVHlwZXMgPSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IE5TVGV4dENoZWNr
aW5nVHlwZVJlcGxhY2VtZW50IHwgTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKICAgICBh
dXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwogICAgIG1fbGFzdENhbmRpZGF0ZVJl
cXVlc3RTZXF1ZW5jZU51bWJlciA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2Vy
XSByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGVkUmFuZ2U6c2VsZWN0ZWRSYW5nZSBpblN0cmlu
Zzpwb3N0TGF5b3V0RGF0YS5wYXJhZ3JhcGhDb250ZXh0Rm9yQ2FuZGlkYXRlUmVxdWVzdCB0eXBl
czpjaGVja2luZ1R5cGVzIG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxD
aGVja2VyRG9jdW1lbnRUYWcoKSBjb21wbGV0aW9uSGFuZGxlcjpbd2Vha1RoaXNdKE5TSW50ZWdl
ciBzZXF1ZW5jZU51bWJlciwgTlNBcnJheTxOU1RleHRDaGVja2luZ1Jlc3VsdCAqPiAqY2FuZGlk
YXRlcykgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzLCBzZXF1ZW5j
ZU51bWJlciwgY2FuZGlkYXRlcyA9IHJldGFpblB0cihjYW5kaWRhdGVzKV0gewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3
ZWFrVGhpcy0+aGFuZGxlUmVxdWVzdGVkQ2FuZGlkYXRlcyhzZXF1ZW5jZU51bWJlciwgY2FuZGlk
YXRlcyk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+aGFuZGxlUmVxdWVzdGVkQ2FuZGlkYXRlcyhz
ZXF1ZW5jZU51bWJlciwgY2FuZGlkYXRlcy5nZXQoKSk7CiAgICAgICAgIH0pOwogICAgIH1dOwog
fQpAQCAtNDE0MCw3ICs0MTM4LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVy
YXRpb24oaQogICAgICAgICAgICAgICAgIGlmIChlcnJvck9yTmlsKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbdGhpcywgcGF0aCA9IFJldGFpblB0cjxOU1N0cmluZz4oZmlsZVVS
TC5wYXRoKSwgZmlsZU5hbWVzLCBmaWxlQ291bnQsIGRyYWdEYXRhLCBwYXN0ZWJvYXJkTmFtZV0g
eworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcGF0aCA9
IFJldGFpblB0cjxOU1N0cmluZz4oZmlsZVVSTC5wYXRoKSwgZmlsZU5hbWVzLCBmaWxlQ291bnQs
IGRyYWdEYXRhLCBwYXN0ZWJvYXJkTmFtZV0gewogICAgICAgICAgICAgICAgICAgICBmaWxlTmFt
ZXMtPmFwcGVuZChwYXRoLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVOYW1l
cy0+c2l6ZSgpID09IGZpbGVDb3VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQkocmV2
aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3Nl
cnRpb25JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCAtICh2b2lkKV91
cGRhdGVCYWNrZ3JvdW5kVGFzawogICAgIH0gZWxzZSBpZiAoX2Fzc2VydGlvbnNOZWVkaW5nQmFj
a2dyb3VuZFRhc2suY29tcHV0ZXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFJlbGVhc2UgdGhlIGJh
Y2tncm91bmQgdGFzayBhc3luY2hyb25vdXNseSBiZWNhdXNlIHJlbGVhc2luZyB0aGUgYmFja2dy
b3VuZCB0YXNrIG1heSBkZXN0cm95IHRoZSBQcm9jZXNzVGhyb3R0bGVyIGFuZCB3ZSBkb24ndAog
ICAgICAgICAvLyB3YW50IGl0IHRvIGdldCBkZXN0cm95ZWQgd2hpbGUgaW4gdGhlIG1pZGRsZSBv
ZiB1cGRhdGluZyBpdHMgYXNzZXJ0aW9uLgotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgICAgIGlmIChf
YXNzZXJ0aW9uc05lZWRpbmdCYWNrZ3JvdW5kVGFzay5jb21wdXRlc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgW3NlbGYgX3JlbGVhc2VCYWNrZ3JvdW5kVGFza107CiAgICAgICAgIH0pOwpAQCAt
MjIzLDcgKzIyMyw3IEBAIC0gKHZvaWQpX2hhbmRsZUJhY2tncm91bmRUYXNrRXhwaXJhdGlvbk8K
ICAgICAvLyB1cG9uIHJlc3VtaW5nLCBvciB0aGUgdXNlciByZWFjdGl2YXRlZCB0aGUgYXBwIHNo
b3J0bHkgYWZ0ZXIgZXhwaXJhdGlvbikuCiAgICAgaWYgKHJlbWFpbmluZ1RpbWUgPT0gUkJTUHJv
Y2Vzc1RpbWVMaW1pdGF0aW9uTm9uZSkgewogICAgICAgICBbc2VsZiBfcmVsZWFzZUJhY2tncm91
bmRUYXNrXTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdTZWxm
ID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgICAgICBbc2VsZiBfdXBkYXRlQmFja2dyb3Vu
ZFRhc2tdOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxLDggKzI3MSw3IEBA
IC0gKHZvaWQpYXNzZXJ0aW9uOihSQlNBc3NlcnRpb24gKilhc3NlcnQKIHsKICAgICBSRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV0tSQlNBc3NlcnRpb25EZWxlZ2F0ZTogYXNz
ZXJ0aW9uIHdhcyBpbnZhbGlkYXRlZCwgZXJyb3I6ICV7cHVibGljfUAiLCBlcnJvciwgc2VsZik7
CiAKLSAgICBfX3dlYWsgV0tSQlNBc3NlcnRpb25EZWxlZ2F0ZSAqd2Vha1NlbGYgPSBzZWxmOwot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyKHNlbGYpXSB7CiAg
ICAgICAgIFdLUkJTQXNzZXJ0aW9uRGVsZWdhdGUgKnN0cm9uZ1NlbGYgPSB3ZWFrU2VsZjsKICAg
ICAgICAgaWYgKHN0cm9uZ1NlbGYgJiYgc3Ryb25nU2VsZi5pbnZhbGlkYXRpb25DYWxsYmFjaykK
ICAgICAgICAgICAgIHN0cm9uZ1NlbGYuaW52YWxpZGF0aW9uQ2FsbGJhY2soKTsKQEAgLTMwMiw3
ICszMDEsNiBAQCBQcm9jZXNzQXNzZXJ0aW9uOjpQcm9jZXNzQXNzZXJ0aW9uKHBpZF90CiAgICAg
OiBtX2Fzc2VydGlvblR5cGUoYXNzZXJ0aW9uVHlwZSkKICAgICAsIG1fcGlkKHBpZCkKIHsKLSAg
ICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwogICAgIE5TU3RyaW5nICpydW5u
aW5nQm9hcmRBc3NlcnRpb25OYW1lID0gcnVubmluZ0JvYXJkTmFtZUZvckFzc2VydGlvblR5cGUo
YXNzZXJ0aW9uVHlwZSk7CiAgICAgQVNTRVJUKHJ1bm5pbmdCb2FyZEFzc2VydGlvbk5hbWUpOwog
ICAgIGlmICghcGlkKSB7CkBAIC0zMjQsNyArMzIyLDcgQEAgUHJvY2Vzc0Fzc2VydGlvbjo6UHJv
Y2Vzc0Fzc2VydGlvbihwaWRfdAogICAgIE5TRXJyb3IgKmFjcXVpc2l0aW9uRXJyb3IgPSBuaWw7
CiAgICAgaWYgKCFbbV9yYnNBc3NlcnRpb24gYWNxdWlyZVdpdGhFcnJvcjomYWNxdWlzaXRpb25F
cnJvcl0pIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIFByb2Nlc3NBc3NlcnRpb246IEZhaWxlZCB0byBhY3F1aXJlIFJCUyAle3B1YmxpY31AIGFz
c2VydGlvbiAnJXtwdWJsaWN9cycgZm9yIHByb2Nlc3Mgd2l0aCBQSUQgJWQsIGVycm9yOiAle3B1
YmxpY31AIiwgdGhpcywgcnVubmluZ0JvYXJkQXNzZXJ0aW9uTmFtZSwgcmVhc29uLnV0ZjgoKS5k
YXRhKCksIHBpZCwgYWNxdWlzaXRpb25FcnJvcik7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKICAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICBwcm9jZXNzQXNzZXJ0aW9uV2FzSW52YWxpZGF0ZWQo
KTsKICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDI3MDg2OSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE0NDgsNyArMTQ0OCw3IEBAIC0gKEJPT0wpcmVzaWduRmlyc3RS
ZXNwb25kZXJGb3JXZWJWaWV3CiAgICAgICAgIF9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgV2ViS2l0OjpXZWJQYWdlUHJveHk6
OkFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSk7CiAKICAgICAgICAg
aWYgKF9rZXlXZWJFdmVudEhhbmRsZXIpIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFrSGFuZGxlciA9IFdlYWtPYmpDUHRyPGlkPihf
a2V5V2ViRXZlbnRIYW5kbGVyLmdldCgpKSwgd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRl
bnRWaWV3PihzZWxmKV0geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3
ZWFrSGFuZGxlciA9IFdlYWtPYmpDUHRyPGlkPihfa2V5V2ViRXZlbnRIYW5kbGVyLmdldCgpKSwg
d2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKV0gewogICAgICAgICAg
ICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwogICAgICAgICAgICAgICAg
IGlmICghc3Ryb25nU2VsZiB8fCBbc3Ryb25nU2VsZiBpc0ZpcnN0UmVzcG9uZGVyXSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLUERGVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tQREZWaWV3Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tQREZWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MDksNyArNTA5LDcgQEAgLSAo
dm9pZClwZGZIb3N0Vmlld0NvbnRyb2xsZXI6KFBERkhvc3RWaQogLSAodm9pZClwZGZIb3N0Vmll
d0NvbnRyb2xsZXJFeHRlbnNpb25Qcm9jZXNzRGlkQ3Jhc2g6KFBERkhvc3RWaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIKIHsKICAgICAvLyBGSVhNRSA0MDkxNjcyNTogUERGS2l0IHNob3VsZCBk
aXNwYXRjaCB0aGlzIG1lc3NhZ2UgdG8gdGhlIG1haW4gdGhyZWFkIGxpa2UgaXQgZG9lcyBmb3Ig
b3RoZXIgZGVsZWdhdGUgbWVzc2FnZXMuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3dlYlZpZXcgPSBfd2ViVmlld10geworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbd2ViVmlldyA9IF93ZWJWaWV3XSB7CiAgICAgICAgIGlmIChhdXRvIHBhZ2Ug
PSBbd2ViVmlldyBfcGFnZV0pCiAgICAgICAgICAgICBwYWdlLT5kaXNwYXRjaFByb2Nlc3NEaWRU
ZXJtaW5hdGUoV2ViS2l0OjpQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoKTsKICAgICB9
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQ
YW5lbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGaWxlVXBsb2FkUGFuZWwubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQkod29ya2luZyBjb3B5KQpA
QCAtNjgzLDEyICs2ODMsMTIgQEAgLSAodm9pZClpbWFnZVBpY2tlckNvbnRyb2xsZXI6KFVJSW1h
Z2VQaQogICAgICAgICBzdWNjZXNzQmxvY2s6XihOU0FycmF5ICpwcm9jZXNzZWRSZXN1bHRzLCBO
U1N0cmluZyAqZGlzcGxheVN0cmluZykgewogICAgICAgICAgICAgQVNTRVJUKFtwcm9jZXNzZWRS
ZXN1bHRzIGNvdW50XSA9PSAxKTsKICAgICAgICAgICAgIF9XS0ZpbGVVcGxvYWRJdGVtICpyZXN1
bHQgPSBbcHJvY2Vzc2VkUmVzdWx0cyBvYmplY3RBdEluZGV4OjBdOwotICAgICAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxm
KV0gewogICAgICAgICAgICAgICAgIFtzZWxmIF9jaG9vc2VGaWxlczpAW3Jlc3VsdC5maWxlVVJM
XSBkaXNwbGF5U3RyaW5nOmRpc3BsYXlTdHJpbmcgaWNvbkltYWdlOnJlc3VsdC5kaXNwbGF5SW1h
Z2UuZ2V0KCldOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgZmFpbHVyZUJs
b2NrOl57Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJv
bmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgICAgICAgICAgW3NlbGYgX2NhbmNl
bF07CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtNzEyLDEyICs3MTIsMTIgQEAgLSAo
dm9pZClpbWFnZVBpY2tlckNvbnRyb2xsZXI6KFVJSW1hZ2VQaQogICAgICAgICAgICAgICAgICAg
ICBpY29uSW1hZ2UgPSByZXN1bHQuZGlzcGxheUltYWdlOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0
YWluUHRyKHNlbGYpXSB7CiAgICAgICAgICAgICAgICAgW3NlbGYgX2Nob29zZUZpbGVzOmZpbGVV
UkxzIGRpc3BsYXlTdHJpbmc6ZGlzcGxheVN0cmluZyBpY29uSW1hZ2U6aWNvbkltYWdlLmdldCgp
XTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIGZhaWx1cmVCbG9jazpeewot
ICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
KyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2VsZiA9
IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICAgICAgICAgIFtzZWxmIF9jYW5jZWxdOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtODg5LDcgKzg4OSw3IEBAIC0gKHZvaWQpcGxhY2Vob2xk
ZXJXaWxsTW92ZVRvU3VwZXJ2aWV3OigKICAgICBpZiAoc3VwZXJ2aWV3KQogICAgICAgICByZXR1
cm47CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewor
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0
cihzZWxmKV0gewogICAgICAgICBpZiAoW193ZWJWaWV3UGxhY2Vob2xkZXIgc3VwZXJ2aWV3XSA9
PSBuaWwgJiYgW193ZWJWaWV3UGxhY2Vob2xkZXIgcGFyZW50XSA9PSBzZWxmKQogICAgICAgICAg
ICAgW3NlbGYgY2xvc2VdOwogICAgIH0pOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCShyZXZpc2lvbiAyNzA4NjkpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcg
QEAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQQogCiAgICAgICAgICAg
ICBBVlBsYXllckxheWVyICpkZXN0aW5hdGlvblBsYXllckxheWVyID0gc3RhdGljX2Nhc3Q8QVZQ
bGF5ZXJMYXllciAqPihjbG9uZWRMYXllci5nZXQoKSk7CiAgICAgICAgICAgICBBVlBsYXllckxh
eWVyICpzb3VyY2VQbGF5ZXJMYXllciA9IHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4ocGxh
dGZvcm1MYXllcigpKTsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtkZXN0aW5hdGlvblBsYXllckxheWVyLCBzb3VyY2VQbGF5ZXJMYXllcl0g
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtkZXN0aW5hdGlvblBsYXll
ckxheWVyLCBzb3VyY2VQbGF5ZXJMYXllcl0gewogICAgICAgICAgICAgICAgIFtkZXN0aW5hdGlv
blBsYXllckxheWVyIHNldFBsYXllcjpbc291cmNlUGxheWVyTGF5ZXIgcGxheWVyXV07CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDI3MDg2OSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEwLDcgKzQxMCw3
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVIKICAgICAgICAgYmFj
a2luZ1N0b3JlRmx1c2hlci0+Zmx1c2goKTsKIAogICAgICAgICBNb25vdG9uaWNUaW1lIHRpbWVz
dGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcGFnZUlELCB0aW1lc3RhbXBdIHsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwYWdlSUQsIHRpbWVzdGFtcF0gewogICAgICAgICAgICAg
aWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBh
Z2VJRCkpCiAgICAgICAgICAgICAgICAgd2ViUGFnZS0+ZGlkRmx1c2hMYXllclRyZWVBdFRpbWUo
dGltZXN0YW1wKTsKICAgICAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQkocmV2aXNpb24g
MjcwODY5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCAgICAgYXV0byBb
bW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlCiAgICAgQ0FMYXllciogdmlkZW9MYXllciA9
IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5yb290TGF5ZXIoKTsKIAogICAgIG1v
ZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMt
Pm1fcGFnZSkKICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0
cnVlKSk7CiAgICAgICAgIH0pOwpAQCAtMzkyLDkgKzM5Miw5IEBAICAgICBSZWZQdHI8VmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQ29udGUKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9
IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBtb2RlbC0+d2FpdEZv
clByZXBhcmVkRm9ySW5saW5lVGhlbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IHRoaXMsIGNvbnRleHRJZCwgbW9kZWxdICgpIG11dGFibGUgeyAvLyBuZWVkIHRoaXMgZm9yIHJl
dHVybiB2aWRlbyBsYXllcgotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMs
IGNvbnRleHRJZCwgbW9kZWxdICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBj
b250ZXh0SWQsIG1vZGVsXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIG1vZGVsLT5zZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0geworICAgICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgICAgICAgICBpZiAocHJv
dGVjdGVkVGhpcy0+bV9wYWdlKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVu
dExheWVyKGNvbnRleHRJZCwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTQxMyw3
ICs0MTMsNyBAQCAgICAgYXV0byBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlCiAgICAg
Q0FMYXllciogdmlkZW9MYXllciA9IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5y
b290TGF5ZXIoKTsKIAogICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xh
eWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29u
dGV4dElkXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAg
ICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVu
KGNvbnRleHRJZCkpOwogICAgICAgICB9KTsKQEAgLTQzMSw3ICs0MzEsNyBAQCAgICAgYXV0byBb
bW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlCiAgICAgaWYgKCF2aWRlb0VsZW1lbnQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50ID0g
V1RGTW92ZSh2aWRlb0VsZW1lbnQpLCBjb250ZXh0SWRdIHsKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1lbnQg
PSBXVEZNb3ZlKHZpZGVvRWxlbWVudCksIGNvbnRleHRJZF0gewogICAgICAgICB2aWRlb0VsZW1l
bnQtPndpbGxFeGl0RnVsbHNjcmVlbigpOwogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9w
YWdlKQogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihjb250
ZXh0SWQpKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCAgICAgaWYgKGludGVyZmFjZS0+dGFyZ2V0SXNG
dWxsc2NyZWVuKCkgCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIGV4aXQgZnVsbHNjcmVlbiBu
b3cgaWYgaXQgd2FzIHByZXZpb3VzbHkgcmVxdWVzdGVkIGR1cmluZyBhbiBhbmltYXRpb24uCi0g
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1lbnRdIHsKKyAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1l
bnRdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKICAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoKnZpZGVvRWxl
bWVudCwgW10oYm9vbCkgeyB9KTsKICAgICB9KTsKQEAgLTQ3MiwxNSArNDcyLDE1IEBAICAgICBS
ZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGUKICAgICBzdGQ6OnRpZShtb2RlbCwg
aW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBp
bnRlcmZhY2VdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZV0gewogICAgICAgICBpZiAo
cHJvdGVjdGVkVGhpcy0+bV9wYWdlKQogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxs
c2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwogI2Vsc2UKICAgICBtb2RlbC0+d2FpdEZvclBy
ZXBhcmVkRm9ySW5saW5lVGhlbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNv
bnRleHRJZCwgaW50ZXJmYWNlLCBtb2RlbF0oKSBtdXRhYmxlIHsKLSAgICAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdICgpIG11dGFibGUg
eworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdICgpIG11dGFi
bGUgewogICAgICAgICAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFj
ZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBjb250ZXh0SWQsIGludGVyZmFjZV0geworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRl
eHRJZCwgaW50ZXJmYWNlXSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcmZhY2UtPmxh
eWVySG9zdGluZ0NvbnRleHQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNl
LT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNldFJvb3RMYXllcihudWxscHRyKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChudWxscHRy
KTsKQEAgLTUyMyw3ICs1MjMsNyBAQCAgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2NyZWVuU3RhbmRi
eShmYWxzCiAgICAgaWYgKCF2aWRlb0VsZW1lbnQgfHwgIXRhcmdldElzRnVsbHNjcmVlbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1lbnQsIG1v
ZGUsIHN0YW5kYnldIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1lbnQsIG1vZGUsIHN0YW5kYnldIHsKICAg
ICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKICAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCp2aWRlb0VsZW1lbnQsIG1v
ZGUsIHN0YW5kYnkpOwogICAgIH0pOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwko
cmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTItMjEgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmVkIG1vc3QgdXNlcyBvZiBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAuLi4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAwNjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBkaXNwYXRjaF9hc3luYyBoYXMgdHdv
IGRvd25zaWRlczoKKworICAgICAgICAoMSkgSXRzIG9yZGVyIGlzIHVuZGVmaW5lZCAoYW5kIGlu
IHByYWN0aWNlIGhpZ2hseSB2YXJpYWJsZSkgcmVsYXRpdmUgdG8KKyAgICAgICAgb3RoZXIgV2Vi
S2l0IG9wZXJhdGlvbnMuIFRoaXMgc29tZXRpbWVzIGNhdXNlcyBmbGFraW5lc3MuCisKKyAgICAg
ICAgKDIpIEl0IGRvZXNuJ3QgaG9ub3IgdGhlIFJ1bkxvb3AgZmlyc3QgcGFpbnQgb3B0aW1pemF0
aW9uLgorCisgICAgICAgIFdlIGNhbiB1c2UgUnVuTG9vcDo6ZGlzcGF0Y2goKSBpbnN0ZWFkLgor
CisgICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAo
LVtXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TIHJlZ2lzdGVyV2ViVmlldzpdKToKKyAgICAgICAg
KC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyB1bnJlZ2lzdGVyV2ViVmlldzpdKToKKyAgICAg
ICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyBzZXRFbmFibGVIaWdoQWNjdXJhY3k6XSk6
CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgaW5pdGlhbGl6ZUdlb2xvY2F0
aW9uRm9yV2ViVmlldzpsaXN0ZW5lcjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnRJT1MubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnRJT1M6OnJ1bk9wZW5Q
YW5lbCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1t
OgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKToK
KwogMjAyMC0xMS0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
RnVydGhlciBwcm9ncmVzcyB0b3dhcmRzIG1lcmdpbmcgU2V0dGluZ3MueWFtbCBpbnRvIFdlYlBy
ZWZlcmVuY2VzLnlhbWwKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHJldmlzaW9uIDI3MDg2OSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIC0gKHZvaWQpcmVnaXN0ZXJX
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFfaXNT
dXNwZW5kZWQpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdT
ZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgICAgICBpZiAoIV9jb3JlTG9jYXRpb25Q
cm92aWRlcikgewogICAgICAgICAgICAgICAgIEFTU0VSVCghX2NvcmVMb2NhdGlvblVwZGF0ZUxp
c3RlbmVyUHJveHkpOwogICAgICAgICAgICAgICAgIF9jb3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5l
clByb3h5ID0gYWRvcHROUyhbW19XZWJDb3JlTG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBh
bGxvY10gaW5pdFdpdGhQcm92aWRlcjpzZWxmXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgLSAodm9p
ZCl1bnJlZ2lzdGVyV2ViVmlldzooV2ViVmlldyAqKXdlYgogICAgIF9wZW5kaW5nSW5pdGlhbFBv
c2l0aW9uV2ViVmlldy5yZW1vdmUod2ViVmlldyk7CiAKICAgICBpZiAoX3JlZ2lzdGVyZWRXZWJW
aWV3cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBz
dHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgICAgICBbX2NvcmVMb2NhdGlv
blByb3ZpZGVyIHN0b3BdOwogICAgICAgICB9KTsKICAgICAgICAgX2VuYWJsZUhpZ2hBY2N1cmFj
eSA9IE5POwpAQCAtMjI2LDcgKzIyNiw3IEBAIC0gKHZvaWQpc2V0RW5hYmxlSGlnaEFjY3VyYWN5
OihCT09MKWVuYWIKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkp
OwogICAgIF9lbmFibGVIaWdoQWNjdXJhY3kgPSBfZW5hYmxlSGlnaEFjY3VyYWN5IHx8IGVuYWJs
ZUhpZ2hBY2N1cmFjeTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2VsZiA9
IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVyIHNldEVu
YWJsZUhpZ2hBY2N1cmFjeTpfZW5hYmxlSGlnaEFjY3VyYWN5XTsKICAgICB9KTsKIH0KQEAgLTI0
MSw3ICsyNDEsNyBAQCAtICh2b2lkKWluaXRpYWxpemVHZW9sb2NhdGlvbkZvcldlYlZpZXc6CiAg
ICAgX3dlYlZpZXdzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24uYWRkKHdlYlZp
ZXcsIGxpc3RlbmVyKTsKICAgICBfdHJhY2tlZFdlYlZpZXdzLmFkZCh3ZWJWaWV3KTsKIAotICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7
CiAgICAgICAgIGlmICghX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIV9jb3JlTG9jYXRpb25VcGRhdGVMaXN0ZW5lclByb3h5KTsKICAgICAgICAgICAgIF9jb3Jl
TG9jYXRpb25VcGRhdGVMaXN0ZW5lclByb3h5ID0gYWRvcHROUyhbW19XZWJDb3JlTG9jYXRpb25V
cGRhdGVUaHJlYWRpbmdQcm94eSBhbGxvY10gaW5pdFdpdGhQcm92aWRlcjpzZWxmXSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudElPUzo6cnVu
T3BlblBhbmVsKEZyCiAgICAgfTsKIAogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewot
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXNdIHsKICAgICAgICAgICAgIFtbd2Vi
VmlldygpIF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcoKSBydW5PcGVu
UGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOmxpc3RlbmVyIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl07CiAgICAgICAgIH0pOwogICAgIH0gZWxzZQpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudElPUy5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRp
ZFNldFNlYXJjaGluZwogewogICAgIFdlYkluc3BlY3RvciAqaW5zcGVjdG9yID0gW21faW5zcGVj
dGVkV2ViVmlldyBpbnNwZWN0b3JdOwogICAgIE5TU3RyaW5nICpub3RpZmljYXRpb25OYW1lID0g
ZW5hYmxlZCA/IFdlYkluc3BlY3RvckRpZFN0YXJ0U2VhcmNoaW5nRm9yTm9kZSA6IFdlYkluc3Bl
Y3RvckRpZFN0b3BTZWFyY2hpbmdGb3JOb2RlOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsK
ICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZp
Y2F0aW9uTmFtZTpub3RpZmljYXRpb25OYW1lIG9iamVjdDppbnNwZWN0b3JdOwogICAgIH0pOwog
fQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjcwODY5KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMjAtMTItMjEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW1vdmVkIG1vc3QgdXNlcyBvZiBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCAuLi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjAwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBkaXNwYXRjaF9hc3luYyBoYXMgdHdvIGRvd25zaWRlczoKKworICAgICAg
ICAoMSkgSXRzIG9yZGVyIGlzIHVuZGVmaW5lZCAoYW5kIGluIHByYWN0aWNlIGhpZ2hseSB2YXJp
YWJsZSkgcmVsYXRpdmUgdG8KKyAgICAgICAgb3RoZXIgV2ViS2l0IG9wZXJhdGlvbnMuIFRoaXMg
c29tZXRpbWVzIGNhdXNlcyBmbGFraW5lc3MuCisKKyAgICAgICAgKDIpIEl0IGRvZXNuJ3QgaG9u
b3IgdGhlIFJ1bkxvb3AgZmlyc3QgcGFpbnQgb3B0aW1pemF0aW9uLgorCisgICAgICAgIFdlIGNh
biB1c2UgUnVuTG9vcDo6ZGlzcGF0Y2goKSBpbnN0ZWFkLgorCisgICAgICAgICogUGx1Z2lucy9u
cGFwaS5tbToKKyAgICAgICAgKE5QTl9QbHVnaW5UaHJlYWRBc3luY0NhbGwpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6cmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlciBpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyV2lsbFByZXBhcmU6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IHdpbGxFbnRlckJh
Y2tncm91bmRXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XZWJTYWZlQXN5
bmNGb3J3YXJkZXIgZm9yd2FyZEludm9jYXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgcGVy
Zm9ybURyYWdPcGVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0RWRpdGFibGU6XSk6
CisKIDIwMjAtMTItMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MDc2OC4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvbnBhcGkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9ucGFwaS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9ucGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogCiAjaW1wb3J0ICJXZWJOZXRzY2FwZVBsdWdpblZpZXcuaCIKICNpbXBvcnQgIldlYktp
dExvZ2dpbmcuaCIKKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC0xNzQsNyArMTc1LDcgQEAgdm9pZCBOUE5fUGx1Z2luVGhyZWFkQXN5bmND
YWxsKE5QUCBpbnN0YQogewogICAgIFdlYk5ldHNjYXBlUGx1Z2luVmlldyAqcGx1Z2luVmlldyA9
IHBsdWdpblZpZXdGb3JJbnN0YW5jZShpbnN0YW5jZSk7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbcGx1Z2luVmlldyA9IHJldGFpblB0cihwbHVnaW5WaWV3KSwgdXNlckRhdGEsIGZ1bmNdIHsK
ICAgICAgICAgaWYgKCFwbHVnaW5WaWV3IHx8ICFwbHVnaW5WaWV3LT5wbHVnaW4pIHsKICAgICAg
ICAgICAgIC8vIFRoZSBwbHVnLWluIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkLgogICAgICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNpb24gMjcwODY5KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIyLDEwICsxMTIyLDEwIEBAIHZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZXF1ZXN0Q2FuZGlkYXRlc0YKICAgICBOU1RleHRDaGVja2luZ1R5cGVzIGNoZWNr
aW5nVHlwZXMgPSBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IE5TVGV4dENoZWNraW5nVHlw
ZVJlcGxhY2VtZW50IHwgTlNUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKICAgICBhdXRvIHdl
YWtFZGl0b3IgPSBtYWtlV2Vha1B0cigqdGhpcyk7CiAgICAgbV9sYXN0Q2FuZGlkYXRlUmVxdWVz
dFNlcXVlbmNlTnVtYmVyID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJl
cXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0ZWRSYW5nZTptX3JhbmdlRm9yQ2FuZGlkYXRlcyBpblN0
cmluZzptX3BhcmFncmFwaENvbnRleHRGb3JDYW5kaWRhdGVSZXF1ZXN0LmdldCgpIHR5cGVzOmNo
ZWNraW5nVHlwZXMgb3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNr
ZXJEb2N1bWVudFRhZygpIGNvbXBsZXRpb25IYW5kbGVyOlt3ZWFrRWRpdG9yXShOU0ludGVnZXIg
c2VxdWVuY2VOdW1iZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKmNhbmRpZGF0
ZXMpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrRWRpdG9yLCBzZXF1ZW5j
ZU51bWJlciwgY2FuZGlkYXRlcyA9IHJldGFpblB0cihjYW5kaWRhdGVzKV0gewogICAgICAgICAg
ICAgaWYgKCF3ZWFrRWRpdG9yKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHdlYWtFZGl0b3ItPmhhbmRsZVJlcXVlc3RlZENhbmRpZGF0ZXMoc2VxdWVuY2VOdW1iZXIsIGNh
bmRpZGF0ZXMpOworICAgICAgICAgICAgd2Vha0VkaXRvci0+aGFuZGxlUmVxdWVzdGVkQ2FuZGlk
YXRlcyhzZXF1ZW5jZU51bWJlciwgY2FuZGlkYXRlcy5nZXQoKSk7CiAgICAgICAgIH0pOwogICAg
IH1dOwogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDI3MDg2
OSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzczLDcgKzIzNzMsNyBAQCAtICh2b2lk
KXVzZQogI2lmIFVTRShXRUJfVEhSRUFEKQogICAgICAgICAgICAgV2ViVGhyZWFkUnVuKF57CiAj
ZWxzZQotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25n
U2VsZiA9IHJldGFpblB0cihzZWxmKSwgc3VjY2Vzc10gewogI2VuZGlmCiAgICAgICAgICAgICAg
ICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgIFtzZWxmIHJlY2VpdmVkUG9saWN5
RGVjaXNpb246V2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmVdOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgLSAodm9pZClpbW1lZGlhdGVBY3Rpb25SZWNvZ25p
emVyV2lsbFByZQogCiAgICAgaWYgKCFbX2ltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIgYW5pbWF0
aW9uQ29udHJvbGxlcl0pIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRv
IHJlbW92ZSB0aGUgZGlzcGF0Y2hfYXN5bmMgd2hlbiByZGFyOi8vcHJvYmxlbS8xOTUwMjkyNyBp
cyByZXNvbHZlZC4KLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdT
ZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgICAgICBbc2VsZiBfY2FuY2VsSW1tZWRp
YXRlQWN0aW9uXTsKICAgICAgICAgfSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODkx
LDcgKzE4OTEsOSBAQCArICh2b2lkKXdpbGxFbnRlckJhY2tncm91bmRXaXRoQ29tcGxldGlvCiB7
CiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAgICAgIFtXZWJWaWV3IF9yZWxlYXNlTWVtb3J5Tm93
XTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgaGFu
ZGxlcik7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbaGFuZGxlciA9IG1ha2VC
bG9ja1B0cihoYW5kbGVyKV0geworICAgICAgICAgICAgaGFuZGxlcigpOworICAgICAgICB9KTsK
ICAgICB9KTsKIH0KIApAQCAtNTA1MSwxMiArNTA1MywxMCBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGb3J3YXJkZXI6KF9XZWJTCiAKIC0gKHZvaWQpZm9yd2FyZEludm9jYXRpb246KE5TSW52
b2NhdGlvbiAqKWludm9jYXRpb24KIHsKLSAgICAvLyBTdG9yZSBfZm9yd2FyZGVyIGluIGFuIGl2
YXIgc28gaXQgaXMgcmV0YWluZWQgYnkgdGhlIGJsb2NrLgotICAgIF9XZWJTYWZlRm9yd2FyZGVy
ICpmb3J3YXJkZXIgPSBfZm9yd2FyZGVyOwogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkg
ewogICAgICAgICBbaW52b2NhdGlvbiByZXRhaW5Bcmd1bWVudHNdOwotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgW2Zvcndh
cmRlciBmb3J3YXJkSW52b2NhdGlvbjppbnZvY2F0aW9uXTsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtmb3J3YXJkZXIgPSByZXRhaW5QdHIoX2ZvcndhcmRlciksIGludm9jYXRp
b24gPSByZXRhaW5QdHIoaW52b2NhdGlvbildIHsKKyAgICAgICAgICAgIFtmb3J3YXJkZXIgZm9y
d2FyZEludm9jYXRpb246aW52b2NhdGlvbi5nZXQoKV07CiAgICAgICAgIH0pOwogICAgIH0gZWxz
ZQogICAgICAgICBbZm9yd2FyZGVyIGZvcndhcmRJbnZvY2F0aW9uOmludm9jYXRpb25dOwpAQCAt
NjQ3Niw3ICs2NDc2LDcgQEAgLSAoQk9PTClwZXJmb3JtRHJhZ09wZXJhdGlvbjooaWQgPE5TRHJh
ZwogICAgICAgICAgICAgICAgIGlmIChlcnJvck9yTmlsKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc2VsZiwgcGF0aCA9IFJldGFpblB0cjxOU1N0cmluZz4oZmlsZVVSTC5wYXRo
KSwgZmlsZU5hbWVzLCBmaWxlQ291bnQsIGRyYWdEYXRhXSB7CisgICAgICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBwYXRoID0gUmV0YWluUHRyPE5TU3RyaW5nPihm
aWxlVVJMLnBhdGgpLCBmaWxlTmFtZXMsIGZpbGVDb3VudCwgZHJhZ0RhdGFdIHsKICAgICAgICAg
ICAgICAgICAgICAgZmlsZU5hbWVzLT5hcHBlbmQocGF0aC5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChmaWxlTmFtZXMtPnNpemUoKSA9PSBmaWxlQ291bnQpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRyYWdEYXRhLT5zZXRGaWxlTmFtZXMoKmZpbGVOYW1lcyk7CkBAIC04MDA0
LDcgKzgwMDQsNyBAQCAtICh2b2lkKXNldEVkaXRhYmxlOihCT09MKWZsYWcKICAgICAgICAgICAg
IF9wcml2YXRlLT5wYWdlLT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoIWZsYWcpOwog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgaWYgKGZsYWcpIHsKLSAgICAgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtdIHsKKyAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CiAgICAgICAgICAgICAgICAgW1tOU1NwZWxsQ2hl
Y2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIF9wcmVmbGlnaHRDaG9zZW5TcGVsbFNlcnZlcl07CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416630</attachid>
            <date>2020-12-21 14:13:40 -0800</date>
            <delta_ts>2021-01-14 10:44:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220066-20201221141339.patch</filename>
            <type>text/plain</type>
            <size>91501</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTEyLTIxICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgLi4uKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgaGFzIHR3byBkb3du
c2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBpcyB1bmRlZmluZWQgKGFuZCBpbiBwcmFj
dGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRvCisgICAgICAgIG90aGVyIFdlYktpdCBv
cGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMgZmxha2luZXNzLgorCisgICAgICAgICgy
KSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZpcnN0IHBhaW50IG9wdGltaXphdGlvbi4K
KworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRpc3BhdGNoKCkgaW5zdGVhZC4KKworICAg
ICAgICAqIHd0Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW06CisgICAgICAgIChXVEY6OmRpc3Bh
dGNoQXN5bmNPbk1haW5UaHJlYWRXaXRoV2ViVGhyZWFkTG9ja0lmTmVlZGVkKToKKyAgICAgICAg
KFdURjo6Y2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRjaEFzeW5jT25NYWluVGhyZWFkKToKKwogMjAy
MC0xMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA4NjAuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9j
b2NvYS9NYWluVGhyZWFkQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY29j
b2EvTWFpblRocmVhZENvY29hLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV1RGL3d0
Zi9jb2NvYS9NYWluVGhyZWFkQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxzdGRpby5oPgogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0
Zi9SdW5Mb29wLmg+CkBAIC03MywxNCArNzQsMTYgQEAgdm9pZCBkaXNwYXRjaEFzeW5jT25NYWlu
VGhyZWFkV2l0aFdlYlRocgogewogI2lmIFVTRShXRUJfVEhSRUFEKQogICAgIGlmIChXZWJDb3Jl
V2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkgewotICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Jsb2NrID0gbWFrZUJsb2NrUHRyKGJsb2NrKV0g
ewogICAgICAgICAgICAgV2ViQ29yZVdlYlRocmVhZExvY2soKTsKICAgICAgICAgICAgIGJsb2Nr
KCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbYmxvY2sgPSBtYWtlQmxvY2tQdHIoYmxvY2spXSB7CisgICAg
ICAgIGJsb2NrKCk7CisgICAgfSk7CiB9CiAKIHZvaWQgY2FsbE9uV2ViVGhyZWFkT3JEaXNwYXRj
aEFzeW5jT25NYWluVGhyZWFkKHZvaWQgKF5ibG9jaykoKSkKQEAgLTkxLDcgKzk0LDkgQEAgdm9p
ZCBjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haQogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgYmxvY2spOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbYmxvY2sgPSBtYWtlQmxv
Y2tQdHIoYmxvY2spXSB7CisgICAgICAgIGJsb2NrKCk7CisgICAgfSk7CiB9CiAKICNpZiBVU0Uo
V0VCX1RIUkVBRCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDIwLTEy
LTIxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
ZCBtb3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
Li4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIw
MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlz
cGF0Y2hfYXN5bmMgaGFzIHR3byBkb3duc2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBp
cyB1bmRlZmluZWQgKGFuZCBpbiBwcmFjdGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRv
CisgICAgICAgIG90aGVyIFdlYktpdCBvcGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMg
Zmxha2luZXNzLgorCisgICAgICAgICgyKSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZp
cnN0IHBhaW50IG9wdGltaXphdGlvbi4KKworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRp
c3BhdGNoKCkgaW5zdGVhZC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uXSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlQZXJmb3JtSW5j
cmVtZW50QWN0aW9uXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlQZXJmb3JtRGVjcmVtZW50QWN0aW9uXSk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXR1cENvbnZlcnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1c2hTYW1wbGVzSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlc0ludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOgor
ICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGRlYWxsb2NdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzdFVuYmxvY2tBc3lu
YyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvd2VyU291cmNlTm90aWZpZXI6OlBvd2VyU291cmNlTm90aWZpZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRBVlBsYXllckl0ZW0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNsb25lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91bmRzT25NYWluVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6c2V0UG9zaXRpb25Pbk1haW5UaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpzZXRBbmNob3JQb2ludE9uTWFp
blRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOjptYXliZUJlY29tZVJlYWR5Rm9yTW9yZU1lZGlhRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmVucXVldWVEZWNvZGVkU2FtcGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6cmVxdWVz
dE1lZGlhRGF0YVdoZW5SZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb246Om5vdGlmeVdoZW5IYXNBdmFpbGFibGVWaWRlb0ZyYW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAg
ICgtW1dlYkFWUGxheWVyTGF5ZXIgbGF5b3V0U3VibGF5ZXJzXSk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmluYWxpemVTZXR1cCk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9FeGl0RnVsbHNjcmVlbik6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudDo6d2lsbEJlZ2luRmlyc3RUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQ6OmRpZEZpbmlzaExhc3RUcmFuc2FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCk6CisgICAgICAg
IChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXR1cm5W
aWRlb0NvbnRlbnRMYXllcik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlvbkNoYW5nZWQpOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmN1cnJlbnRUaW1lQ2hh
bmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YnVmZmVy
ZWRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6cmF0ZUNoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2Vk
KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAg
ICAgKFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp3aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6Om11dGVkQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoTWFpblRocmVhZEFkb3B0QW5kUmVsZWFz
ZSk6CisgICAgICAgIChXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpzZXR1cEZ1bGxzY3JlZW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlQVZDYXB0dXJlRGV2aWNlTWFuYWdlck9ic2VydmVyIGRldmljZUNv
bm5lY3RlZERpZENoYW5nZTpdKToKKwogMjAyMC0xMi0xNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgd2Via2l0LSBwcmVmaXggdG8gU3BlZWNoUmVjb2du
aXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZp
c2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE2Niw3ICsz
MTY2LDcgQEAgLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uCiB7CiAgICAg
Ly8gSW4gY2FzZSBhbnl0aGluZyB3ZSBkbyBieSBwZXJmb3JtaW5nIHRoZSBwcmVzcyBhY3Rpb24g
Y2F1c2VzIGFuIGFsZXJ0IG9yIG90aGVyIG1vZGFsCiAgICAgLy8gYmVoYXZpb3JzLCB3ZSBuZWVk
IHRvIHJldHVybiBub3csIHNvIHRoYXQgVm9pY2VPdmVyIGRvZXNuJ3QgaGFuZyBpbmRlZmluaXRl
bHkuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7Cisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpXSB7CiAgICAgICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0
aW9uXTsKICAgICB9KTsKIH0KQEAgLTMxODUsNyArMzE4NSw3IEBAIC0gKHZvaWQpX2FjY2Vzc2li
aWxpdHlQZXJmb3JtUHJlc3NBY3Rpb24KIAogLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybUlu
Y3JlbWVudEFjdGlvbgogewotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UGVy
Zm9ybUluY3JlbWVudEFjdGlvbl07CiAgICAgfSk7CiB9CkBAIC0zMjA0LDcgKzMyMDQsNyBAQCAt
ICh2b2lkKV9hY2Nlc3NpYmlsaXR5UGVyZm9ybUluY3JlbWVudEFjCiAKIC0gKHZvaWQpYWNjZXNz
aWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb24KIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
c2VsZiwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICBbc2VsZiBf
YWNjZXNzaWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb25dOwogICAgIH0pOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0IDxtdXRleD4KICNpbXBvcnQgPHBhbC9h
dmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxzeXNsb2cuaD4K
KyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aD4KIAogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CkBAIC04Nyw3ICs4OCw3
IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0dXBDb24KIAogICAgIE9TU3Rh
dHVzIGVyciA9IEF1ZGlvQ29udmVydGVyTmV3KCZtX2lucHV0RGVzY3JpcHRpb24tPnN0cmVhbURl
c2NyaXB0aW9uKCksICZtX291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCAm
bV9jb252ZXJ0ZXIpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KCp0aGlzKSwgZXJyXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBlcnJdIHsKICAgICAgICAgICAgIEVS
Uk9SX0xPRygiQXVkaW9Db252ZXJ0ZXJOZXcgcmV0dXJuZWQgZXJyb3IgIiwgZXJyKTsKICAgICAg
ICAgfSk7CiAgICAgfQpAQCAtMTYxLDcgKzE2Miw3IEBAIHZvaWQgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdXNoU2FtcGxlc0kKIAogICAgIGlmIChtX2lucHV0U2FtcGxlT2Zmc2V0ID09IE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKSkgewogICAgICAgICBtX2lucHV0U2FtcGxlT2Zmc2V0ID0gTWVk
aWFUaW1lKDEgLSBzYW1wbGVUaW1lLnRpbWVWYWx1ZSgpLCBzYW1wbGVUaW1lLnRpbWVTY2FsZSgp
KTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2xv
Z0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBpbnB1dFNhbXBsZU9mZnNldCA9IG1faW5wdXRT
YW1wbGVPZmZzZXQudGltZVZhbHVlKCksIG1heGltdW1TYW1wbGVDb3VudCA9IG1fbWF4aW11bVNh
bXBsZUNvdW50LCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyldIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtsb2dJZGVudGlmaWVyID0gTE9HSURFTlRJ
RklFUiwgaW5wdXRTYW1wbGVPZmZzZXQgPSBtX2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVWYWx1ZSgp
LCBtYXhpbXVtU2FtcGxlQ291bnQgPSBtX21heGltdW1TYW1wbGVDb3VudCwgdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBBTFdBWVNfTE9HKGxv
Z0lkZW50aWZpZXIsICJpbnB1dCBzYW1wbGUgb2Zmc2V0IGlzICIsIGlucHV0U2FtcGxlT2Zmc2V0
LCAiLCBtYXhpbXVtU2FtcGxlQ291bnQgaXMgIiwgbWF4aW11bVNhbXBsZUNvdW50KTsKICAgICAg
ICAgfSk7CiAgICAgfQpAQCAtMjM4LDcgKzIzOSw3IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdWxsU2FtcGxlc0kKIAogICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IChlbmRG
cmFtZSAtIHNhbXBsZUNvdW50KSAtIHRpbWVTdGFtcDsKICAgICAgICAgbV9vdXRwdXRTYW1wbGVP
ZmZzZXQgLT0gY29tcHV0ZU9mZnNldERlbGF5KG1fb3V0cHV0RGVzY3JpcHRpb24tPnNhbXBsZVJh
dGUoKSwgbV9sYXN0UHVzaGVkU2FtcGxlQ291bnQpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJRVIs
IG91dHB1dFNhbXBsZU9mZnNldCA9IG1fb3V0cHV0U2FtcGxlT2Zmc2V0LCB0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtsb2dJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUiwgb3V0cHV0U2FtcGxlT2Zmc2V0
ID0gbV9vdXRwdXRTYW1wbGVPZmZzZXQsIHRoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KCp0aGlzKV0gewogICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlmaWVyLCAic2V0dGlu
ZyBuZXcgb2Zmc2V0IHRvICIsIG91dHB1dFNhbXBsZU9mZnNldCk7CiAgICAgICAgIH0pOwogICAg
IH0KQEAgLTI0Niw3ICsyNDcsNyBAQCBib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNh
bXBsZXNJCiAgICAgdGltZVN0YW1wICs9IG1fb3V0cHV0U2FtcGxlT2Zmc2V0OwogCiAgICAgaWYg
KHRpbWVTdGFtcCA8IHN0YXJ0RnJhbWUgfHwgdGltZVN0YW1wICsgc2FtcGxlQ291bnQgPiBlbmRG
cmFtZSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJRVIsIHRpbWVTdGFtcCwgc3RhcnRGcmFtZSwg
ZW5kRnJhbWUsIHNhbXBsZUNvdW50LCBvdXRwdXRTYW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBs
ZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbG9nSWRlbnRpZmllciA9IExPR0lERU5USUZJ
RVIsIHRpbWVTdGFtcCwgc3RhcnRGcmFtZSwgZW5kRnJhbWUsIHNhbXBsZUNvdW50LCBvdXRwdXRT
YW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIoKnRoaXMpXSB7CiAgICAgICAgICAgICBFUlJPUl9MT0cobG9nSWRlbnRpZmll
ciwgIm5vdCBlbm91Z2ggZGF0YSwgc2FtcGxlICIsIHRpbWVTdGFtcCwgIiB3aXRoIG9mZnNldCAi
LCBvdXRwdXRTYW1wbGVPZmZzZXQsICIsIHRyeWluZyB0byBnZXQgIiwgc2FtcGxlQ291bnQsICIg
c2FtcGxlcywgYnV0IG5vdCBjb21wbGV0ZWx5IGluIHJhbmdlIFsiLCBzdGFydEZyYW1lLCAiIC4u
ICIsIGVuZEZyYW1lLCAiXSIpOwogICAgICAgICB9KTsKIApAQCAtMjU5LDcgKzI2MCw3IEBAIGJv
b2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlc0kKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFdlIGFyZSB0b28gY2xvc2UgZnJvbSBlbmRGcmFtZSwgbGV0J3Mgd2Fp
dCBmb3IgbW9yZSBkYXRhIHRvIGJlIHB1c2hlZC4KICAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxl
T2Zmc2V0IC09IHNhbXBsZUNvdW50OwotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW2xvZ0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBvdXRw
dXRTYW1wbGVPZmZzZXQgPSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIoKnRoaXMpXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2xvZ0lkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSLCBvdXRwdXRTYW1wbGVPZmZzZXQg
PSBtX291dHB1dFNhbXBsZU9mZnNldCwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
KnRoaXMpXSB7CiAgICAgICAgICAgICAgICAgQUxXQVlTX0xPRyhsb2dJZGVudGlmaWVyLCAidXBk
YXRpbmcgb2Zmc2V0IHRvICIsIG91dHB1dFNhbXBsZU9mZnNldCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbkhlbHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCShyZXZpc2lvbiAyNzA4NjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVW5p
cXVlUmVmLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgpA
QCAtMzYyLDcgKzM2Myw3IEBAIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lvbkhl
bHAKICNlbmRpZgogCiAgICAgLy8gTm93IHBsYXlpbmcgd29uJ3Qgd29yayB1bmxlc3Mgd2UgdHVy
biBvbiB0aGUgZGVsaXZlcnkgb2YgcmVtb3RlIGNvbnRyb2wgZXZlbnRzLgotICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtdIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAg
ICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gYmVn
aW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKICAgICAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwpAQCAtMzc3LDcgKzM3OCw3IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAjaWYgIVBM
QVRGT1JNKFdBVENIT1MpCiAgICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewotICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcm91dGVEZXRlY3RvciA9
IFdURk1vdmUoX3JvdXRlRGV0ZWN0b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtyb3V0ZURldGVjdG9yID0gV1RGTW92ZShfcm91dGVEZXRlY3Rvcild
ICgpIG11dGFibGUgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAic2FmZWx5VGVhckRvd24gLSBk
aXBhdGNoZWQgdG8gVUkgdGhyZWFkLiIpOwogICAgICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgICAgICAgICByb3V0ZURldGVjdG9yLmdldCgpLnJvdXRlRGV0ZWN0aW9u
RW5hYmxlZCA9IE5POwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHJl
dmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMjMgKzEz
NywxMiBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuCiAgICAgcmV0
dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkaXNwYXRjaFRv
TWFpblRocmVhZCh2b2lkICheYmxvY2spKCkpCi17Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAg
ICBXZWJUaHJlYWRSdW4oYmxvY2spOwotI2Vsc2UKLSAgICAgICAgYmxvY2soKTsKLSNlbmRpZgot
ICAgIH0pOwotfQotCiB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzdFVu
YmxvY2tBc3luYyhEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiBkZWNpc2lvbkhhbmRsZXIpIGNvbnN0
CiB7CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAg
ICBpZiAobV93ZWJGaWx0ZXJFdmFsdWF0b3IpIHsKICAgICAgICAgW21fd2ViRmlsdGVyRXZhbHVh
dG9yIHVuYmxvY2tXaXRoQ29tcGxldGlvbjpbZGVjaXNpb25IYW5kbGVyXShCT09MIHVuYmxvY2tl
ZCwgTlNFcnJvciAqKSB7Ci0gICAgICAgICAgICBkaXNwYXRjaFRvTWFpblRocmVhZChbZGVjaXNp
b25IYW5kbGVyLCB1bmJsb2NrZWRdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2Rl
Y2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CiAgICAgICAgICAgICAgICAgTE9HKENvbnRlbnRG
aWx0ZXJpbmcsICJXZWJGaWx0ZXJFdmFsdWF0b3IgJXMgdGhlIHVuYmxvY2sgcmVxdWVzdC5cbiIs
IHVuYmxvY2tlZCA/ICJhbGxvd2VkIiA6ICJkaWQgbm90IGFsbG93Iik7CiAgICAgICAgICAgICAg
ICAgZGVjaXNpb25IYW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTE2NCw3
ICsxNTMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzCiAKICAg
ICBpZiAobV91bmJsb2NrUmVxdWVzdGVyKSB7CiAgICAgICAgIG1fdW5ibG9ja1JlcXVlc3Rlcihb
ZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewotICAgICAgICAgICAgZGlzcGF0Y2hU
b01haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CisgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0gewogICAgICAgICAg
ICAgICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VO
b3RpZmllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
b3dlclNvdXJjZU5vdGlmaWVyLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Qb3dlclNvdXJjZU5vdGlmaWVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJTeXN0ZW1CYXR0ZXJ5LmgiCiAjaW1wb3J0IDxub3Rp
ZnkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvSU9QU0xpYlNQSS5oPgorI2ltcG9ydCA8d3Rm
L1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw3ICs0Niw3IEBAIFBv
d2VyU291cmNlTm90aWZpZXI6OlBvd2VyU291cmNlTm90aWZpZXIKIAogICAgIC8vIElmIHRoZSBj
dXJyZW50IHZhbHVlIG9mIHN5c3RlbUhhc0FDKCkgaXMgdW5jYWNoZWQsIGZvcmNlIGEgbm90aWZp
Y2F0aW9uLgogICAgIGlmICghY2FjaGVkU3lzdGVtSGFzQUMoKSkgewotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0gewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5ub3RpZnlQb3dlclNvdXJjZUNoYW5nZWQoKTsKICAgICAgICAg
fSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTkwOSw3ICs5
MDksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICBS
ZXRhaW5QdHI8QVZQbGF5ZXI+IHN0cm9uZ1BsYXllciA9IG1fYXZQbGF5ZXIuZ2V0KCk7CiAgICAg
UmV0YWluUHRyPEFWUGxheWVySXRlbT4gc3Ryb25nSXRlbSA9IGl0ZW07Ci0gICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1BsYXllciwgc3Ryb25nSXRl
bV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3Ryb25nUGxheWVyLCBzdHJvbmdJ
dGVtXSB7CiAgICAgICAgIFtzdHJvbmdQbGF5ZXIgcmVwbGFjZUN1cnJlbnRJdGVtV2l0aFBsYXll
ckl0ZW06c3Ryb25nSXRlbS5nZXQoKV07CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM3Miw3ICszNzIsNyBAQCBSZWY8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9y
bUNBTGF5ZXJDb2NvCiAgICAgICAgIEFWUGxheWVyTGF5ZXIgKnNvdXJjZVBsYXllckxheWVyID0g
YXZQbGF5ZXJMYXllcigpOwogICAgICAgICBBU1NFUlQoc291cmNlUGxheWVyTGF5ZXIpOwogCi0g
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZGVzdGluYXRpb25QbGF5ZXJMYXllciA9IHJl
dGFpblB0cihkZXN0aW5hdGlvblBsYXllckxheWVyKSwgc291cmNlUGxheWVyTGF5ZXIgPSByZXRh
aW5QdHIoc291cmNlUGxheWVyTGF5ZXIpXSB7CiAgICAgICAgICAgICBbZGVzdGluYXRpb25QbGF5
ZXJMYXllciBzZXRQbGF5ZXI6W3NvdXJjZVBsYXllckxheWVyIHBsYXllcl1dOwogICAgICAgICB9
KTsKICAgICB9CkBAIC0xMDkyLDggKzEwOTIsNyBAQCBib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNX
ZWJMYXllcigpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3VuZHNPbk1haW5UaHJlYWQo
Q0dSZWN0IGJvdW5kcykKIHsKLSAgICBDQUxheWVyICpsYXllciA9IG1fbGF5ZXIuZ2V0KCk7Ci0g
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2xheWVyID0gbV9sYXllciwgYm91bmRzXSB7CiAgICAgICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBbbGF5ZXIgc2V0Qm91bmRzOmJv
dW5kc107CiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTExMDIsOCArMTEw
MSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3VuZHNPbk1haW5UaHIKIAogdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OnNldFBvc2l0aW9uT25NYWluVGhyZWFkKENHUG9pbnQgcG9zaXRpb24p
CiB7Ci0gICAgQ0FMYXllciAqbGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtsYXllciA9IG1fbGF5ZXIsIHBvc2l0aW9uXSB7CiAgICAgICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogICAgICAgICBbbGF5ZXIgc2V0UG9zaXRpb246cG9zaXRpb25dOwog
ICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC0xMTEyLDggKzExMTAsNyBAQCB2
b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0UG9zaXRpb25Pbk1haW5UCiAKIHZvaWQgUGxhdGZvcm1D
QUxheWVyOjpzZXRBbmNob3JQb2ludE9uTWFpblRocmVhZChGbG9hdFBvaW50M0QgdmFsdWUpCiB7
Ci0gICAgQ0FMYXllciAqbGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtsYXllciA9IG1fbGF5ZXIsIHZhbHVlXSB7CiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogICAgICAgICBbbGF5ZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UodmFs
dWUueCgpLCB2YWx1ZS55KCkpXTsKICAgICAgICAgW2xheWVyIHNldEFuY2hvclBvaW50Wjp2YWx1
ZS56KCldOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQko
cmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEs
NyArMTAxLDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246Om1heWJlQgogICAg
IH0KIAogICAgIFJlZlB0cjxXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24+IHByb3RlY3RlZFRo
aXMgeyB0aGlzIH07Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXNdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fbm90aWZpY2F0aW9uQ2Fs
bGJhY2spCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX25vdGlmaWNhdGlvbkNhbGxiYWNr
KCk7CiAgICAgfSk7CkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lv
blNlc3Npb246OmVucXVldQogICAgIGlmICghc2hvdWxkTm90aWZ5KQogICAgICAgICByZXR1cm47
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShtX2hhc0F2YWls
YWJsZUZyYW1lQ2FsbGJhY2spXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKG1faGFzQXZh
aWxhYmxlRnJhbWVDYWxsYmFjayldIHsKICAgICAgICAgY2FsbGJhY2soKTsKICAgICB9KTsKIH0K
QEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6cmVx
dWVzCiAKICAgICBpZiAobm90aWZpY2F0aW9uQ2FsbGJhY2sgJiYgaXNSZWFkeUZvck1vcmVNZWRp
YURhdGEoKSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBw
cm90ZWN0ZWRUaGlzIHsgdGhpcyB9OwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpc10geworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXNdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5tX25vdGlmaWNhdGlvbkNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1fbm90aWZpY2F0aW9uQ2FsbGJhY2soKTsKICAgICAgICAgfSk7CkBAIC00NTMsNyArNDUz
LDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OnN0b3BSZQogdm9pZCBXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb246Om5vdGlmeVdoZW5IYXNBdmFpbGFibGVWaWRlb0ZyYW1l
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjYWxsYmFjaykKIHsKICAgICBpZiAoY2FsbGJhY2sgJiYg
bV9wcm9kdWNlclF1ZXVlICYmICFDTUJ1ZmZlclF1ZXVlSXNFbXB0eShtX3Byb2R1Y2VyUXVldWUu
Z2V0KCkpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtjYWxsYmFja10geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxi
YWNrXSB7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQkocmV2aXNpb24gMjcwODY5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDcgQEAgLSAodm9pZClsYXlvdXRTdWJs
YXllcnMKICAgICBbdmlldyBzZXRUcmFuc2Zvcm06dHJhbnNmb3JtXTsKIAogICAgIE5TVGltZUlu
dGVydmFsIGFuaW1hdGlvbkR1cmF0aW9uID0gW0NBVHJhbnNhY3Rpb24gYW5pbWF0aW9uRHVyYXRp
b25dOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Cisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRy
KHNlbGYpLCB0YXJnZXRWaWRlb0ZyYW1lLCBhbmltYXRpb25EdXJhdGlvbl0gewogICAgICAgICBb
TlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOwogCiAgICAgICAgIF92
aWRlb1N1YmxheWVyRnJhbWUgPSB0YXJnZXRWaWRlb0ZyYW1lOwpAQCAtMTQxNSw3ICsxNDE1LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcAogCiB2b2lkIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmaW5hbGl6ZVNldHVwKCkKIHsKLSAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CiAgICAgICAgIGlmIChtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcikgewogICAgICAgICAgICAgaWYgKCFtX2hhc1ZpZGVvQ29udGVu
dExheWVyICYmIG1fdGFyZ2V0TW9kZS5oYXNWaWRlbygpKSB7CiAgICAgICAgICAgICAgICAgbV9m
aW5hbGl6ZVNldHVwTmVlZHNWaWRlb0NvbnRlbnRMYXllciA9IHRydWU7CkBAIC0xNTM0LDcgKzE1
MzQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0V4CiAKICAgICBt
X3N0YW5kYnkgPSBmYWxzZTsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10geworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHRoaXNdIHsKICAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQogICAg
ICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7
CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0JKHJldmlzaW9uIDI3MDg2
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNr
ZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTYxLDE0ICs2MSwxNCBAQCBXZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJTUUxpCiAKIHZvaWQgV2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyQ2xpZW50Ojp3aWxsQmVnaW5GaXJzdFRyYW5zYWN0aW9uKCkKIHsKLSAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbdGhpc10geworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpc10gewogICAgICAgICBtX2h5c3RlcmVzaXMuc3RhcnQoKTsK
ICAgICB9KTsKIH0KIAogdm9pZCBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpZEZp
bmlzaExhc3RUcmFuc2FjdGlvbigpCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3RoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Ro
aXNdIHsKICAgICAgICAgbV9oeXN0ZXJlc2lzLnN0b3AoKTsKICAgICB9KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OnIKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBXZWJU
aHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvdyht
X3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
dGhpcywgY2xpZW50UmVjdF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjbGllbnRSZWN0XSB7
CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0SW5saW5lUmVjdChjbGllbnRSZWN0LCBjbGll
bnRSZWN0ICE9IEludFJlY3QoMCwgMCwgMCwgMCkpOwogICAgICAgICB9KTsKICAgICB9KTsKQEAg
LTI1OCw3ICsyNTgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpy
CiAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhp
cywgdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSByZXRhaW5QdHIoW21fdmlkZW9GdWxsc2NyZWVuVmll
dyBsYXllcl0pXSAoKSBtdXRhYmxlIHsKICAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNl
dEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVu
dEJsYWNrKV07CiAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gewog
ICAgICAgICAgICAgICAgIGlmICghbV9pbnRlcmZhY2UpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OnIKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IHJldGFpblB0cihbbV92aWRlb0Z1
bGxzY3JlZW5WaWV3IGxheWVyXSldICgpIG11dGFibGUgewogICAgICAgICBbdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6
OnRyYW5zcGFyZW50QmxhY2spXTsKICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgdGhpc10geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gewogICAgICAgICAgICAg
ICAgIGlmICghbV9pbnRlcmZhY2UpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
Mjk1LDE0ICsyOTUsMTQgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
ZAogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10gewogICAgICAg
ICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgfSk7CiAjZWxzZQogICAgIFdl
YlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIHZpZGVv
RnVsbHNjcmVlbkxheWVyID0gcmV0YWluUHRyKFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJd
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3Jv
dW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayld
OwogICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlk
ZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgdGhpc10gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIHRoaXNdIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdIHsKICAgICAgICAg
ICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CkBAIC0zMjQsMTMgKzMyNCwxMyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpkCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
LCB0aGlzXSB7CiAgICAgICAgIG1faW50ZXJmYWNlLT5jbGVhbnVwRnVsbHNjcmVlbigpOwogICAg
IH0pOwogI2Vsc2UKICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCB0aGlzXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgdGhpc10geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpc10gewogICAgICAg
ICAgICAgICAgIG1faW50ZXJmYWNlLT5jbGVhbnVwRnVsbHNjcmVlbigpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0pOwpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmYKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBXZWJU
aHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvdyht
X3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
dGhpcywgY2xpZW50UmVjdF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjbGllbnRSZWN0XSB7
CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKHRydWUs
IGNsaWVudFJlY3QpOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTM3NSw3ICszNzUsNyBAQCAg
ICAgICAgICAgICBtX2ludGVyZmFjZS0+cHJlcGFyZWRUb1JldHVyCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkdXJhdGlvbkNoYW5nZWQoZG91YmxlIGR1cmF0aW9uKQog
ewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
dGhpcyksIGR1cmF0aW9uXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGR1cmF0aW9uXSB7CiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5kdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmQKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OmN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1l
KQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyksIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lXSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGN1cnJlbnRU
aW1lLCBhbmNob3JUaW1lXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jdXJyZW50VGlt
ZUNoYW5nZWQoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwogICAgICAgICB9KTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmMKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmJ1ZmZl
cmVkVGltZUNoYW5nZWQoZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKICAgICBpZiAoV2ViVGhyZWFk
SXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBidWZmZXJlZFRpbWVd
IHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZlB0cih0aGlzKSwgYnVmZmVyZWRUaW1lXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5idWZmZXJlZFRpbWVDaGFuZ2VkKGJ1ZmZlcmVkVGltZSk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6Ygogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmF0
ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAgICBpZiAo
V2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBpc1Bs
YXlpbmcsIHBsYXliYWNrUmF0ZV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0
ZV0gewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmF0ZUNoYW5nZWQoaXNQbGF5aW5nLCBw
bGF5YmFja1JhdGUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDI3LDcgKzQy
Nyw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnIKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6Omhhc1ZpZGVvQ2hhbmdlZChib29sIGhhc1Zp
ZGVvKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIGhhc1ZpZGVvXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGhhc1ZpZGVvXSB7CiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5oYXNWaWRlb0NoYW5nZWQoaGFzVmlkZW8pOwogICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmgKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQoY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVu
c2lvbnMpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZlB0cih0aGlzKSwgdmlkZW9EaW1lbnNpb25zID0gdmlkZW9EaW1lbnNpb25zXSB7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
dGhpcyksIHZpZGVvRGltZW5zaW9ucyA9IHZpZGVvRGltZW5zaW9uc10gewogICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCh2aWRlb0RpbWVuc2lvbnMpOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnYKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJiB0
aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRl
cnZhbCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpLCBwbGF0Zm9ybVRpbWVSYW5nZXMgPSB0aW1lUmFuZ2VzLnJhbmdlcygpLCBs
YXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWxdIHsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgcGxhdGZv
cm1UaW1lUmFuZ2VzID0gdGltZVJhbmdlcy5yYW5nZXMoKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2
ZVVwZGF0ZUludGVydmFsXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZWVrYWJsZVJh
bmdlc0NoYW5nZWQoVGltZVJhbmdlczo6Y3JlYXRlKHBsYXRmb3JtVGltZVJhbmdlcyksIGxhc3RN
b2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZhbCk7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6cwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y2FuUGxh
eUZhc3RSZXZlcnNlQ2hhbmdlZChib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKIHsKICAgICBpZiAo
V2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjYW5Q
bGF5RmFzdFJldmVyc2VdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY2FuUGxheUZhc3RSZXZlcnNlXSB7CiAgICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNhblBsYXlG
YXN0UmV2ZXJzZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC00ODgsNyArNDg4
LDcgQEAgc3RhdGljIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gaXNvbAogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnND
aGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0g
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgb3B0aW9ucyA9IGlzb2xhdGVkQ29weShvcHRpb25z
KSwgc2VsZWN0ZWRJbmRleF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBvcHRpb25zID0gaXNvbGF0ZWRDb3B5KG9w
dGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC01MDEsNyArNTAxLDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6YQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpLCBvcHRpb25zID0gaXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZElu
ZGV4XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyksIG9wdGlvbnMgPSBpc29sYXRlZENvcHkob3B0aW9ucyksIHNlbGVj
dGVkSW5kZXhdIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogICAgICAgICB9KTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmUKIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sIGRpc2FibGVkKQog
ewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
dGhpcyksIGRpc2FibGVkXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGRpc2FibGVkXSB7CiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoZGlzYWJs
ZWQpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTQxLDcgKzU0MSw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OncKIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6Om11dGVkQ2hhbmdlZChib29sIG11dGVkKQogewogICAgIGlm
IChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIG11
dGVkXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyksIG11dGVkXSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5t
dXRlZENoYW5nZWQobXV0ZWQpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTU0
LDcgKzU1NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6Om0KIHZv
aWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnZvbHVtZUNoYW5nZWQoZG91Ymxl
IHZvbHVtZSkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCB2b2x1bWVdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdm9sdW1lXSB7CiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT52b2x1bWVDaGFuZ2VkKHZvbHVtZSk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CkBAIC05ODMsNyArOTgzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6cwogCiAgICAgRmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucyA9IHsg
KGZsb2F0KXZpZGVvRWxlbWVudC52aWRlb1dpZHRoKCksIChmbG9hdCl2aWRlb0VsZW1lbnQudmlk
ZW9IZWlnaHQoKSB9OwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCB2aWRlb0VsZW1l
bnRDbGllbnRSZWN0LCB2aWRlb0RpbWVuc2lvbnMsIHZpZXdSZWYsIG1vZGUsIGFsbG93c1BpY3R1
cmVJblBpY3R1cmVdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWRl
b0RpbWVuc2lvbnMsIHZpZXdSZWYsIG1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmVdIHsKICAg
ICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAgICAgICAgIFdlYlRocmVhZExvY2soKTsKIApA
QCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6ZQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBpc01haW5UaHJlYWQo
KSk7CiAgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvdyhtX3ZpZGVv
RWxlbWVudC5nZXQoKSk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjbGllbnRSZWN0
XSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKSwgdGhpcywgY2xpZW50UmVjdF0gewogICAgICAgICBBU1NFUlQoaXNVSVRocmVh
ZCgpKTsKICAgICAgICAgbV9pbnRlcmZhY2UtPmV4aXRGdWxsc2NyZWVuKGNsaWVudFJlY3QpOwog
ICAgIH0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhy
ZWFkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZC5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODksOSArMjg5
LDggQEAgc3RhdGljIHZvaWQgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpZAogI2VuZGlmCiAg
ICAgLy8gV2Ugb3duIG9iaiBhdCB0aGlzIHBvaW50LCBzbyB3ZSBkb24ndCBuZWVkIHRoZSBibG9j
ayB0byBpbXBsaWNpdGx5CiAgICAgLy8gcmV0YWluIGl0LgotICAgIF9fYmxvY2sgaWQgb2JqTm90
UmV0YWluZWQgPSBvYmo7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKLSAgICAgICAgW29iak5vdFJldGFpbmVkIHJlbGVhc2VdOworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbb2JqXSB7CisgICAgICAgIFtvYmogcmVsZWFzZV07CiAgICAgfSk7
CiB9CiAKQEAgLTQzNyw4ICs0MzYsOCBAQCB2b2lkIFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24o
TlNTdHJpbmcqCiAgICAgaWYgKHB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5hbWUgb2Jq
ZWN0Om9iamVjdCB1c2VySW5mbzp1c2VySW5mb107CiAgICAgZWxzZSB7Ci0gICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4gewotICAgICAgICAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpu
YW1lIG9iamVjdDpvYmplY3QgdXNlckluZm86dXNlckluZm9dOworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW25hbWUgPSByZXRhaW5QdHIobmFtZSksIG9iamVjdCA9IHJldGFpblB0
cihvYmplY3QpLCB1c2VySW5mbyA9IHJldGFpblB0cih1c2VySW5mbyldIHsKKyAgICAgICAgICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5h
bWU6bmFtZS5nZXQoKSBvYmplY3Q6b2JqZWN0LmdldCgpIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgp
XTsKICAgICAgICAgfSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCShyZXZp
c2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NTYsNyArNDU2LDcgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldHVwRgogCiAgICAgW3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU9iakMoKSBzZXRVcFBJUEZvclZpZGVvVmlldzombGF5ZXJIb3N0ZWRWaWV3
IHdpdGhGcmFtZTooTlNSZWN0KWluaXRpYWxSZWN0IGluV2luZG93OnBhcmVudFdpbmRvd107CiAK
LSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CiAgICAgICAg
IGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgICAgIG1fZnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1bGxzY3JlZW4oKTsKICAgICB9KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcgKzI2MCw3IEBAIC0gKHZvaWQpZGV2aWNlQ29u
bmVjdGVkRGlkQ2hhbmdlOihOU05vdGkKICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIGlmIChtX2NhbGxiYWNrKQogICAgICAgICAgICAgbV9j
YWxsYmFjay0+cmVmcmVzaENhcHR1cmVEZXZpY2VzKCk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMjcxMDM2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw5MSBAQAorMjAyMC0xMi0yMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZWQgbW9zdCB1c2VzIG9mIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIC4uLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDA2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGRpc3BhdGNoX2FzeW5jIGhhcyB0d28gZG93bnNpZGVz
OgorCisgICAgICAgICgxKSBJdHMgb3JkZXIgaXMgdW5kZWZpbmVkIChhbmQgaW4gcHJhY3RpY2Ug
aGlnaGx5IHZhcmlhYmxlKSByZWxhdGl2ZSB0bworICAgICAgICBvdGhlciBXZWJLaXQgb3BlcmF0
aW9ucy4gVGhpcyBzb21ldGltZXMgY2F1c2VzIGZsYWtpbmVzcy4KKworICAgICAgICAoMikgSXQg
ZG9lc24ndCBob25vciB0aGUgUnVuTG9vcCBmaXJzdCBwYWludCBvcHRpbWl6YXRpb24uCisKKyAg
ICAgICAgV2UgY2FuIHVzZSBSdW5Mb29wOjpkaXNwYXRjaCgpIGluc3RlYWQuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW06CisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkUmVxdWVzdE1lcmNoYW50
U2Vzc2lvbjpdKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVj
a3MubW06CisgICAgICAgIChXZWJLaXQ6OmRldGVybWluZUlUUFN0YXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW06CisgICAgICAgIChXS0Nv
bnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW06CisgICAgICAgICgrW05TQXR0cmlidXRlZFN0
cmluZyBfbG9hZEZyb21IVE1MV2l0aE9wdGlvbnM6Y29udGVudExvYWRlcjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5tbToKKyAgICAgICAgKCtbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHJl
Z2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6XSk6CisgICAgICAgICgrW1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFzQXN5bmNGdW5jdGlvbjp3aXRoU291cmNlVVJM
OndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTppbkZyYW1lOmluV29ybGQ6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaW50ZXJuYWxEb0FmdGVyTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZTp3aXRob3V0V2FpdGluZ0ZvclBhaW50aW5nOndpdGhvdXRXYWl0aW5n
Rm9yQW5pbWF0ZWRSZXNpemU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdUZXN0aW5nLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RvQWZ0ZXJOZXh0VmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY2hlZHVsZVZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUFmdGVyU2Nyb2xsSW5WaWV3Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Vw
ZGF0ZVZpc2libGVDb250ZW50UmVjdHNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9maXJlUHJl
c2VudGF0aW9uVXBkYXRlRm9yUGVuZGluZ1N0YWJsZVN0YXRlUHJlc2VudGF0aW9uQ2FsbGJhY2tz
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZG9BZnRlck5leHRTdGFibGVQcmVzZW50YXRpb25V
cGRhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQubW06
CisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ6OnJlcXVlc3RBdXRvbWF0aW9uU2Vz
c2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAg
ICAgICAgKFdlYktpdDo6dHJ5SW50ZXJjZXB0TmF2aWdhdGlvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNl
T2JzZXJ2ZXIgcHJlZmVyZW5jZURpZENoYW5nZTprZXk6ZW5jb2RlZFZhbHVlOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW06Cisg
ICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJlZmVyZW5jZU9ic2VydmVyIG9ic2VydmVWYWx1ZUZv
cktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6d2ViUHJvY2Vz
c1Bvb2xIaWdoRHluYW1pY1JhbmdlRGlkQ2hhbmdlQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKC1bV0tET01QYXN0ZU1lbnVEZWxl
Z2F0ZSBtZW51RGlkQ2xvc2U6XSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRh
dGVXaW5kb3dBbmRWaWV3RnJhbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dFRvcENvbnRlbnRJbnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRCZWNv
bWVFZGl0YWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnBlcmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRW5kb3dtZW50U3Rh
dGVUcmFja2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpFbmRvd21lbnRTdGF0ZVRyYWNrZXI6OnJl
Z2lzdGVyTW9uaXRvcklmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvX1dLVG91Y2hF
dmVudEdlbmVyYXRvci5tbToKKyAgICAgICAgKC1bX1dLVG91Y2hFdmVudEdlbmVyYXRvciBfc2Vu
ZEhJREV2ZW50Ol0pOgorICAgICAgICAoLVtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIF9zZW5kTWFy
a2VySElERXZlbnRXaXRoQ29tcGxldGlvbkJsb2NrOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzQXNzZXJ0aW9u
QmFja2dyb3VuZFRhc2tNYW5hZ2VyIF91cGRhdGVCYWNrZ3JvdW5kVGFza10pOgorICAgICAgICAo
LVtXS1Byb2Nlc3NBc3NlcnRpb25CYWNrZ3JvdW5kVGFza01hbmFnZXIgX2hhbmRsZUJhY2tncm91
bmRUYXNrRXhwaXJhdGlvbk9uTWFpblRocmVhZF0pOgorICAgICAgICAoLVtXS1JCU0Fzc2VydGlv
bkRlbGVnYXRlIGFzc2VydGlvbjpkaWRJbnZhbGlkYXRlV2l0aEVycm9yOl0pOgorICAgICAgICAo
V2ViS2l0OjpQcm9jZXNzQXNzZXJ0aW9uOjpQcm9jZXNzQXNzZXJ0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyByZXNpZ25GaXJzdFJlc3BvbmRlckZvcldlYlZpZXddKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAgKC1bV0tQREZWaWV3IHBkZkhvc3RW
aWV3Q29udHJvbGxlckV4dGVuc2lvblByb2Nlc3NEaWRDcmFzaDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tOgorICAgICAgICAoLVtXS0ZpbGVV
cGxvYWRQYW5lbCBpbWFnZVBpY2tlckNvbnRyb2xsZXI6ZGlkRmluaXNoUGlja2luZ01lZGlhV2l0
aEluZm86XSk6CisgICAgICAgICgtW1dLRmlsZVVwbG9hZFBhbmVsIGltYWdlUGlja2VyQ29udHJv
bGxlcjpkaWRGaW5pc2hQaWNraW5nTXVsdGlwbGVNZWRpYVdpdGhJbmZvOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9T
Lm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHBsYWNlaG9sZGVy
V2lsbE1vdmVUb1N1cGVydmlldzpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZSBjb25zdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OnVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51
cEZ1bGxzY3JlZW4pOgorCiAyMDIwLTEyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIE1hbnkgd2Vic2l0ZXMgY3Jhc2ggdW5kZXIgdG9EYXRhVVJM
KCkgd2hlbiBlbmFibGluZyBHUFUgcHJvY2VzcyBmb3IgRE9NCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEzNSw3ICsxMzUsNyBAQCAtICh2b2lkKV9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOihX
ZWJLCiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIExPR19FUlJPUigiUEtDYW5NYWtl
UGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwgZXJyb3Ip
OwogCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgcHJvdGVjdGVkU2VsZiA9
IHJldGFpblB0cihzZWxmKSwgbWVyY2hhbnRVUkwgPSByZXRhaW5QdHIobWVyY2hhbnRVUkwpXSB7
CiAgICAgICAgICAgICBBU1NFUlQoX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9u
KTsKIAogICAgICAgICAgICAgYXV0byBwcmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgpOwpAQCAt
MTQ0LDcgKzE0NCw3IEBAIC0gKHZvaWQpX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KFdlYksK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHBy
ZXNlbnRlci0+Y2xpZW50KCkucHJlc2VudGVyV2lsbFZhbGlkYXRlTWVyY2hhbnQoKnByZXNlbnRl
ciwgbWVyY2hhbnRVUkwpOworICAgICAgICAgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50
ZXJXaWxsVmFsaWRhdGVNZXJjaGFudCgqcHJlc2VudGVyLCBtZXJjaGFudFVSTC5nZXQoKSk7CiAg
ICAgICAgIH0pOwogICAgIH1dOwogfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
RGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0JKHJldmlzaW9uIDI3MDg2OSkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBkZXRlcm1pbmVJVFBTdGF0
ZSgpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZ19pdHBRdWV1ZSwgW2FwcFdhc0xpbmtlZE9uT3JBZnRl
ciwgYnVuZGxlSWRlbnRpZmllciA9IFdlYkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigpLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGdfY3VycmVudElUUFN0YXRlID0gZGV0ZXJt
aW5lSVRQU3RhdGVJbnRlcm5hbChhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGJ1bmRsZUlkZW50aWZp
ZXIpID8gSVRQU3RhdGU6OkVuYWJsZWQgOiBJVFBTdGF0ZTo6RGlzYWJsZWQ7CiAKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAgICAgIGRpc3BhdGNoX3JlbGVhc2Uo
Z19pdHBRdWV1ZSk7CiAgICAgICAgICAgICBnX2l0cFF1ZXVlID0gbnVsbHB0cjsKICAgICAgICAg
fSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FbmRvd21lbnRTdGF0ZVRyYWNrZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRW5kb3dtZW50U3RhdGVU
cmFja2VyLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9F
bmRvd21lbnRTdGF0ZVRyYWNrZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmgi
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEwNCw3ICsxMDUsNyBAQCB2b2lkIEVuZG93
bWVudFN0YXRlVHJhY2tlcjo6cmVnaXN0ZXJNb25pCiAgICAgICAgIFtjb25maWcgc2V0U3RhdGVE
ZXNjcmlwdG9yOnN0YXRlRGVzY3JpcHRvcl07CiAKICAgICAgICAgW2NvbmZpZyBzZXRVcGRhdGVI
YW5kbGVyOlt0aGlzXSAoUkJTUHJvY2Vzc01vbml0b3IgKiBfTm9ubnVsbCBtb25pdG9yLCBSQlNQ
cm9jZXNzSGFuZGxlICogX05vbm51bGwgcHJvY2VzcywgUkJTUHJvY2Vzc1N0YXRlVXBkYXRlICog
X05vbm51bGwgdXBkYXRlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt0aGlzLCBzdGF0ZSA9IHN0YXRlRnJvbUVuZG93bWVu
dHModXBkYXRlLnN0YXRlLmVuZG93bWVudE5hbWVzcGFjZXMpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzdGF0ZSA9IHN0YXRlRnJvbUVu
ZG93bWVudHModXBkYXRlLnN0YXRlLmVuZG93bWVudE5hbWVzcGFjZXMpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIHNldFN0YXRlKFdURk1vdmUoc3RhdGUpKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZl
bnRHZW5lcmF0b3IubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dL
VG91Y2hFdmVudEdlbmVyYXRvci5tbQkocmV2aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9JT0tpdFNQSS5oPgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQg
PHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAogU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLKEJhY2tCb2FyZFNlcnZpY2VzKQpAQCAtMjEyLDggKzIxMyw3IEBA
IC0gKEJPT0wpX3NlbmRISURFdmVudDooSU9ISURFdmVudFJlZilldmUKICAgICAgICAgX2lvU3lz
dGVtQ2xpZW50ID0gSU9ISURFdmVudFN5c3RlbUNsaWVudENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0KTsKIAogICAgIGlmIChldmVudFJlZikgewotICAgICAgICBSZXRhaW5QdHI8SU9ISURFdmVu
dFJlZj4gc3Ryb25nRXZlbnQgPSBldmVudFJlZjsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtzdHJvbmdFdmVudCA9IHJldGFpblB0cihldmVudFJlZildIHsKIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICB1aW50MzJfdCBjb250ZXh0SUQgPSBb
VUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0ua2V5V2luZG93Ll9jb250ZXh0SWQ7CiBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTI0MCw3ICsyNDAsNyBAQCAtIChC
T09MKV9zZW5kTWFya2VySElERXZlbnRXaXRoQ29tcGxldGlvCiAgICAgICAgIGtJT0hJREV2ZW50
T3B0aW9uTm9uZSkpOwogICAgIAogICAgIGlmIChtYXJrZXJFdmVudCkgewotICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbWFya2VyRXZlbnQgPSBXVEZN
b3ZlKG1hcmtlckV2ZW50KV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW21h
cmtlckV2ZW50ID0gV1RGTW92ZShtYXJrZXJFdmVudCldIHsKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgICAgICAgICBhdXRvIGNvbnRleHRJRCA9IFtVSUFwcGxpY2F0
aW9uIHNoYXJlZEFwcGxpY2F0aW9uXS5rZXlXaW5kb3cuX2NvbnRleHRJZDsKIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0JKHJldmlzaW9uIDI3
MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2
YXRlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5CbG9ja2xpc3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViR0xCbG9ja2xpc3QuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBib29sIFdLQ29udGV4dElzUGx1Z0luVXBkYXRl
QXZhaWxhYmxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYpCkBAIC04Myw3ICs4NCw3IEBAIHZv
aWQgV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMKICAgICBSZWZQdHI8QVBJOjpB
cnJheT4gYXJyYXkgPSBBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShwbHVnaW5JbmZvRGljdGlv
bmFyaWVzKSk7CiAKICAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+cmVmKCk7Ci0gICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2Jsb2NrID0gbWFrZUJsb2NrUHRyKGJsb2NrKSwgYXJyYXkg
PSBXVEZNb3ZlKGFycmF5KSwgY29udGV4dFJlZl0gewogICAgICAgICBibG9jayhXZWJLaXQ6OnRv
QVBJKGFycmF5LmdldCgpKSwgMCk7CiAgICAgCiAgICAgICAgIFdlYktpdDo6dG9JbXBsKGNvbnRl
eHRSZWYpLT5kZXJlZigpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L05TQXR0cmlidXRlZFN0cmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCShyZXZpc2lvbiAyNzA4NjkpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDkgQEAgKyAodm9pZClfbG9hZEZyb21IVE1M
V2l0aE9wdGlvbnM6KE5TRGljdAogICAgIGlmIChbTlNUaHJlYWQgaXNNYWluVGhyZWFkXSkKICAg
ICAgICAgcnVuQ29udmVyc2lvbigpOwogICAgIGVsc2UKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgcnVuQ29udmVyc2lvbik7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcnVuQ29udmVyc2lvbiA9IG1ha2VCbG9ja1B0cihydW5Db252
ZXJzaW9uKV0geworICAgICAgICAgICAgcnVuQ29udmVyc2lvbigpOworICAgICAgICB9KTsKIH0K
IAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAy
NzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOSArMTA1LDkgQEAgKyAo
dm9pZClyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOgogICAgIGlmIChbTlNUaHJlYWQg
aXNNYWluVGhyZWFkXSkKICAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJH
bG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoc2NoZW1lKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgbWFrZUJsb2NrUHRyKFtzY2hlbWUgPSByZXRhaW5QdHIoc2NoZW1lKV0geworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUpXSB7CiAg
ICAgICAgICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3Rlckdsb2JhbFVSTFNjaGVt
ZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhzY2hlbWUuZ2V0KCkpOwotICAgICAgICB9
KS5nZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApAQCAtMTE2LDkgKzExNiw5IEBAICsg
KHZvaWQpdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY28KICAgICBpZiAoW05TVGhyZWFk
IGlzTWFpblRocmVhZF0pCiAgICAgICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0
ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoc2NoZW1lKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgbWFrZUJsb2NrUHRyKFtzY2hlbWUgPSByZXRhaW5QdHIoc2NoZW1lKV0geworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUpXSB7
CiAgICAgICAgICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyR2xvYmFsVVJM
U2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKHNjaGVtZS5nZXQoKSk7Ci0gICAg
ICAgIH0pLmdldCgpKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI3MDg2
OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEwMjksNyArMTAyOSw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNj
cmlwdDooTlNTdHJpbmcgKikKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDplcnJvck1lc3Nh
Z2UgZm9yS2V5Ol9XS0phdmFTY3JpcHRFeGNlcHRpb25NZXNzYWdlRXJyb3JLZXldOwogCiAgICAg
ICAgIGF1dG8gZXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46
V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9uT2NjdXJyZWQgdXNl
ckluZm86dXNlckluZm8uZ2V0KCldKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW2hhbmRsZXIsIGVycm9yXSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbaGFuZGxlciwgZXJyb3JdIHsKICAgICAgICAgICAgIGF1dG8gcmF3SGFu
ZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwogICAgICAgICAg
ICAgcmF3SGFuZGxlcihuaWwsIGVycm9yLmdldCgpKTsKICAgICAgICAgfSk7CkBAIC0xMzQ0LDcg
KzEzNDQsOSBAQCAtICh2b2lkKV9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uCiB7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRl
bnRWaWV3XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCB1cGRhdGVCbG9jayk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdXBk
YXRlQmxvY2sgPSBtYWtlQmxvY2tQdHIodXBkYXRlQmxvY2spXSB7CisgICAgICAgICAgICB1cGRh
dGVCbG9jaygpOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rpbmcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1Rlc3RpbmcubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQs
NyArMTE0LDkgQEAgLSAodm9pZClfZG9BZnRlck5leHRWaXNpYmxlQ29udGVudFJlY3RVcAogICAg
IF92aXNpYmxlQ29udGVudFJlY3RVcGRhdGVDYWxsYmFja3MuYXBwZW5kKG1ha2VCbG9ja1B0cih1
cGRhdGVCbG9jaykpOwogICAgIFtzZWxmIF9zY2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0
ZV07CiAjZWxzZQotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IHVwZGF0ZUJsb2NrKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3VwZGF0ZUJsb2Nr
ID0gbWFrZUJsb2NrUHRyKHVwZGF0ZUJsb2NrKV0geworICAgICAgICB1cGRhdGVCbG9jaygpOwor
ICAgIH0pOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTkyMiw3ICsxOTIyLDcgQEAgLSAodm9pZClfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRh
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3JldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
XSB7CiAgICAgICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IHJldGFpbmVkU2VsZi5nZXQoKTsKICAg
ICAgICAgaWYgKCFbd2ViVmlldyBfaXNWYWxpZF0pCiAgICAgICAgICAgICByZXR1cm47CkBAIC0y
MDYwLDcgKzIwNjAsNyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAKICAg
ICAgICAgICAgIGlmICghQ0dQb2ludEVxdWFsVG9Qb2ludChhY3RpdmVQb2ludCwgY3VycmVudFBv
aW50KSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxXS1Njcm9sbFZpZXc+IHN0cm9uZ1Nj
cm9sbFZpZXcgPSBfc2Nyb2xsVmlldzsKLSAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nU2Nyb2xsVmlldywgYWN0aXZlUG9pbnRd
IHsKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0cm9uZ1Njcm9s
bFZpZXcsIGFjdGl2ZVBvaW50XSB7CiAgICAgICAgICAgICAgICAgICAgIFtzdHJvbmdTY3JvbGxW
aWV3IHNldENvbnRlbnRPZmZzZXQ6YWN0aXZlUG9pbnQgYW5pbWF0ZWQ6Tk9dOwogICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgfQpAQCAtMjQxOSw3ICsyNDE5LDcgQEAgLSAodm9pZClf
ZmlyZVByZXNlbnRhdGlvblVwZGF0ZUZvclBlbmRpbgogewogICAgIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHN0cm9uZ1NlbGYgPSBzZWxmOwogICAgIFtzZWxmIF9kb0FmdGVyTmV4dFByZXNlbnRhdGlv
blVwZGF0ZTpbc3Ryb25nU2VsZl0gewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nU2VsZl0geworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3N0cm9uZ1NlbGZdIHsKICAgICAgICAgICAgIGlmIChbc3Ryb25nU2VsZi0+X3N0
YWJsZVN0YXRlUHJlc2VudGF0aW9uVXBkYXRlQ2FsbGJhY2tzIGNvdW50XSkKICAgICAgICAgICAg
ICAgICBbc3Ryb25nU2VsZiBfZmlyZVByZXNlbnRhdGlvblVwZGF0ZUZvclBlbmRpbmdTdGFibGVT
dGF0ZVByZXNlbnRhdGlvbkNhbGxiYWNrc107CiAgICAgICAgIH0pOwpAQCAtMjcwMCw3ICsyNzAw
LDkgQEAgLSAoQ0dQb2ludClfY29udmVydFBvaW50RnJvbVZpZXdUb0NvbnRlbgogLSAodm9pZClf
ZG9BZnRlck5leHRTdGFibGVQcmVzZW50YXRpb25VcGRhdGU6KGRpc3BhdGNoX2Jsb2NrX3QpdXBk
YXRlQmxvY2sKIHsKICAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFyZENvbnRlbnRWaWV3XSkgewot
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCB1cGRhdGVC
bG9jayk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdXBkYXRlQmxvY2sgPSBt
YWtlQmxvY2tQdHIodXBkYXRlQmxvY2spXSB7CisgICAgICAgICAgICB1cGRhdGVCbG9jaygpOwor
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50Lm1tCShyZXZpc2lvbiAy
NzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5ICs4NSw5IEBAIHZvaWQgQXV0b21hdGlvbkNsaWVu
dDo6cmVxdWVzdEF1dG9tYXRpb24KICAgICAvLyBSZW1vdGVJbnNwZWN0b3Igd2lsbCB0cnkgdG8g
YWNxdWlyZSBpdHMgbG9jayB0byByZWdpc3RlciB0aGUgbmV3IHNlc3Npb24gYW5kCiAgICAgLy8g
ZGVhZGxvY2sgYmVjYXVzZSBpdCdzIGFscmVhZHkgdGFrZW4gd2hpbGUgaGFuZGxpbmcgWFBDIG1l
c3NhZ2VzLgogICAgIE5TU3RyaW5nICpyZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllciA9IHNlc3Np
b25JZGVudGlmaWVyOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCByZXF1ZXN0ZWRTZXNz
aW9uSWRlbnRpZmllciA9IHJldGFpblB0cihyZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllciksIGNv
bmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoY29uZmlndXJhdGlvbildIHsKICAgICAgICAgaWYgKG1f
ZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbikKLSAgICAgICAgICAgIFtt
X2RlbGVnYXRlLmdldCgpIF9wcm9jZXNzUG9vbDptX3Byb2Nlc3NQb29sIGRpZFJlcXVlc3RBdXRv
bWF0aW9uU2Vzc2lvbldpdGhJZGVudGlmaWVyOnJlcXVlc3RlZFNlc3Npb25JZGVudGlmaWVyIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CisgICAgICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQo
KSBfcHJvY2Vzc1Bvb2w6bV9wcm9jZXNzUG9vbCBkaWRSZXF1ZXN0QXV0b21hdGlvblNlc3Npb25X
aXRoSWRlbnRpZmllcjpyZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllci5nZXQoKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAy
NzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCB0cnlJbnRl
cmNlcHROYXZpZ2F0aW9uKFJlZjxBCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNj
ZXNzKTsKICAgICAgICAgfSk7CiAgICAgICAgIFtMU0FwcExpbmsgb3BlbldpdGhVUkw6dXJsIGNv
bXBsZXRpb25IYW5kbGVyOltsb2NhbENvbXBsZXRpb25IYW5kbGVyXShCT09MIHN1Y2Nlc3MsIE5T
RXJyb3IgKikgewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW2xvY2FsQ29tcGxldGlvbkhhbmRsZXIsIHN1Y2Nlc3NdIHsKKyAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbG9jYWxDb21wbGV0aW9uSGFuZGxlciwgc3VjY2Vz
c10gewogICAgICAgICAgICAgICAgICgqbG9jYWxDb21wbGV0aW9uSGFuZGxlcikoc3VjY2Vzcyk7
CiAgICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAg
ICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VP
YnNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
cmVmZXJlbmNlT2JzZXJ2ZXIubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTc5LDEzICsxNzksMTMgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKIC0gKHZvaWQpcHJlZmVyZW5j
ZURpZENoYW5nZTooTlNTdHJpbmcgKilkb21haW4ga2V5OihOU1N0cmluZyAqKWtleSBlbmNvZGVk
VmFsdWU6KE5TU3RyaW5nICopZW5jb2RlZFZhbHVlCiB7CiAjaWYgRU5BQkxFKENGUFJFRlNfRElS
RUNUX01PREUpCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2RvbWFpbiA9IHJldGFpblB0cihkb21h
aW4pLCBrZXkgPSByZXRhaW5QdHIoa2V5KSwgZW5jb2RlZFZhbHVlID0gcmV0YWluUHRyKGVuY29k
ZWRWYWx1ZSldIHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBlbmNvZGVkU3RyaW5nOwogICAg
ICAgICBpZiAoZW5jb2RlZFZhbHVlKQotICAgICAgICAgICAgZW5jb2RlZFN0cmluZyA9IFN0cmlu
ZyhlbmNvZGVkVmFsdWUpOworICAgICAgICAgICAgZW5jb2RlZFN0cmluZyA9IFN0cmluZyhlbmNv
ZGVkVmFsdWUuZ2V0KCkpOwogCiAgICAgICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKLSAgICAgICAgICAgIHByb2Nl
c3NQb29sLT5ub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluLCBrZXksIGVuY29kZWRTdHJp
bmcpOworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPm5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChk
b21haW4uZ2V0KCksIGtleS5nZXQoKSwgZW5jb2RlZFN0cmluZyk7CiAgICAgfSk7CiAjZW5kaWYK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkluc3BlY3RvclByZWZl
cmVuY2VPYnNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJJbnNwZWN0b3JQcmVmZXJlbmNlT2JzZXJ2ZXIubW0JKHJldmlzaW9uIDI3MDg2OSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYkluc3BlY3RvclByZWZlcmVuY2VP
YnNlcnZlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdAogCiAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5
UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5TS2V5VmFsdWVD
aGFuZ2VLZXksIGlkPiAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAogewotICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAgZm9yIChhdXRvKiBwb29sIDogV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcG9vbC0+cHJvY2Vzc2VzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIHByb2Nlc3MgPSBwb29sLT5wcm9jZXNzZXMoKVtpXTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCShy
ZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDczLDcgKzQ3Myw3IEBAIHN0YXRpYyBS
ZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGMKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqb3Bl
cmF0aW9uKQogewogICAgIFtvcGVyYXRpb24gc2V0Q29tcGxldGlvbkJsb2NrOl57Ci0gICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgb3BlcmF0aW9uID0gcmV0YWluUHRyKG9wZXJh
dGlvbildIHsKICAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFtvcGVyYXRpb24gaWRlbnRp
Zmllcl07CiAgICAgICAgICAgICBhdXRvIGNvbnZlcnRlZEltYWdlID0gY29udmVydFBsYXRmb3Jt
SW1hZ2VUb0JpdG1hcChbb3BlcmF0aW9uIHRodW1ibmFpbF0sIFdlYkNvcmU6OkludFNpemUoNDAw
LCA0MDApKTsKICAgICAgICAgICAgIGlmICghY29udmVydGVkSW1hZ2UpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0J
KHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTg2OCw3ICs4NjgsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNlc0NoCiAjaWYgUExBVEZPUk0oTUFDKQog
c3RhdGljIHZvaWQgd2ViUHJvY2Vzc1Bvb2xIaWdoRHluYW1pY1JhbmdlRGlkQ2hhbmdlQ2FsbGJh
Y2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnN0IHZvaWQqLCBDRlN0cmluZ1JlZiBub3Rp
ZmljYXRpb25OYW1lLCBjb25zdCB2b2lkKiwgQ0ZUeXBlUmVmKQogewotICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtdIHsKICAgICAgICAgYXV0byBwcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29sbGVjdFNj
cmVlblByb3BlcnRpZXMoKTsKICAgICAgICAgZm9yIChhdXRvJiBwb29sIDogV2ViUHJvY2Vzc1Bv
b2w6OmFsbFByb2Nlc3NQb29scygpKQogICAgICAgICAgICAgcG9vbC0+c2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRTY3JlZW5Qcm9wZXJ0aWVzKHByb3BlcnRpZXMp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTI5LDcgKzkyOSw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFdlYlZpZXdJbXBsOihXZWIKIAogLSAodm9pZCltZW51RGlkQ2xvc2U6KE5T
TWVudSAqKW1lbnUKIHsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbaW1wbCA9IF9pbXBsXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtpbXBs
ID0gX2ltcGxdIHsKICAgICAgICAgaWYgKGltcGwpCiAgICAgICAgICAgICBpbXBsLT5oYW5kbGVE
T01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6
OkRlbmllZEZvckdlc3R1cmUpOwogICAgIH0pOwpAQCAtMTgwOSw4ICsxODA5LDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6dXBkYXRlV2luZG93QW5kVmlld0ZyYQogCiAgICAgbV9kaWRTY2hlZHVsZVdp
bmRvd0FuZFZpZXdGcmFtZVVwZGF0ZSA9IHRydWU7CiAKLSAgICBhdXRvIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFt3ZWFrVGhpc10geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMTkzNiw4ICsxOTM1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
c2V0VG9wQ29udGVudEluc2V0KENHRgogCiAgICAgbV9kaWRTY2hlZHVsZVNldFRvcENvbnRlbnRJ
bnNldCA9IHRydWU7CiAKLSAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFrVGhpc10g
eworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgd2Vha1RoaXMtPmRpc3BhdGNoU2V0VG9wQ29udGVudEluc2V0KCk7CkBAIC0yOTQwLDcg
KzI5MzgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRCZWNvbWVFZGl0YWJsZSgpCiB7CiAgICAg
W21fd2luZG93VmlzaWJpbGl0eU9ic2VydmVyIHN0YXJ0T2JzZXJ2aW5nRm9udFBhbmVsXTsKIAot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtdIHsKKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewogICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl0gX3ByZWZsaWdodENob3NlblNwZWxsU2VydmVyXTsKICAgICB9KTsK
IH0KQEAgLTMzOTQsMTAgKzMzOTIsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdENhbmRp
ZGF0ZXNGb3JTZQogICAgIE5TVGV4dENoZWNraW5nVHlwZXMgY2hlY2tpbmdUeXBlcyA9IE5TVGV4
dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgTlNUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQgfCBO
U1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyk7CiAgICAgbV9sYXN0Q2FuZGlkYXRlUmVxdWVzdFNlcXVlbmNlTnVtYmVyID0g
W1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlcXVlc3RDYW5kaWRhdGVzRm9y
U2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlIGluU3RyaW5nOnBvc3RMYXlvdXREYXRhLnBhcmFn
cmFwaENvbnRleHRGb3JDYW5kaWRhdGVSZXF1ZXN0IHR5cGVzOmNoZWNraW5nVHlwZXMgb3B0aW9u
czpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIGNv
bXBsZXRpb25IYW5kbGVyOlt3ZWFrVGhpc10oTlNJbnRlZ2VyIHNlcXVlbmNlTnVtYmVyLCBOU0Fy
cmF5PE5TVGV4dENoZWNraW5nUmVzdWx0ICo+ICpjYW5kaWRhdGVzKSB7Ci0gICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIHNlcXVlbmNlTnVtYmVyLCBjYW5kaWRhdGVzID0g
cmV0YWluUHRyKGNhbmRpZGF0ZXMpXSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5oYW5kbGVSZXF1ZXN0
ZWRDYW5kaWRhdGVzKHNlcXVlbmNlTnVtYmVyLCBjYW5kaWRhdGVzKTsKKyAgICAgICAgICAgIHdl
YWtUaGlzLT5oYW5kbGVSZXF1ZXN0ZWRDYW5kaWRhdGVzKHNlcXVlbmNlTnVtYmVyLCBjYW5kaWRh
dGVzLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfV07CiB9CkBAIC00MTQwLDcgKzQxMzgsNyBA
QCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpCiAgICAgICAgICAgICAg
ICAgaWYgKGVycm9yT3JOaWwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt0aGlz
LCBwYXRoID0gUmV0YWluUHRyPE5TU3RyaW5nPihmaWxlVVJMLnBhdGgpLCBmaWxlTmFtZXMsIGZp
bGVDb3VudCwgZHJhZ0RhdGEsIHBhc3RlYm9hcmROYW1lXSB7CisgICAgICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwYXRoID0gUmV0YWluUHRyPE5TU3RyaW5nPihm
aWxlVVJMLnBhdGgpLCBmaWxlTmFtZXMsIGZpbGVDb3VudCwgZHJhZ0RhdGEsIHBhc3RlYm9hcmRO
YW1lXSB7CiAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lcy0+YXBwZW5kKHBhdGguZ2V0KCkp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZU5hbWVzLT5zaXplKCkgPT0gZmlsZUNvdW50
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
cm9jZXNzQXNzZXJ0aW9uSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIC0gKHZvaWQpX3VwZGF0ZUJhY2tncm91bmRUYXNrCiAg
ICAgfSBlbHNlIGlmIChfYXNzZXJ0aW9uc05lZWRpbmdCYWNrZ3JvdW5kVGFzay5jb21wdXRlc0Vt
cHR5KCkpIHsKICAgICAgICAgLy8gUmVsZWFzZSB0aGUgYmFja2dyb3VuZCB0YXNrIGFzeW5jaHJv
bm91c2x5IGJlY2F1c2UgcmVsZWFzaW5nIHRoZSBiYWNrZ3JvdW5kIHRhc2sgbWF5IGRlc3Ryb3kg
dGhlIFByb2Nlc3NUaHJvdHRsZXIgYW5kIHdlIGRvbid0CiAgICAgICAgIC8vIHdhbnQgaXQgdG8g
Z2V0IGRlc3Ryb3llZCB3aGlsZSBpbiB0aGUgbWlkZGxlIG9mIHVwZGF0aW5nIGl0cyBhc3NlcnRp
b24uCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2VsZiA9IHJl
dGFpblB0cihzZWxmKV0gewogICAgICAgICAgICAgaWYgKF9hc3NlcnRpb25zTmVlZGluZ0JhY2tn
cm91bmRUYXNrLmNvbXB1dGVzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBbc2VsZiBfcmVsZWFz
ZUJhY2tncm91bmRUYXNrXTsKICAgICAgICAgfSk7CkBAIC0yMjMsNyArMjIzLDcgQEAgLSAodm9p
ZClfaGFuZGxlQmFja2dyb3VuZFRhc2tFeHBpcmF0aW9uTwogICAgIC8vIHVwb24gcmVzdW1pbmcs
IG9yIHRoZSB1c2VyIHJlYWN0aXZhdGVkIHRoZSBhcHAgc2hvcnRseSBhZnRlciBleHBpcmF0aW9u
KS4KICAgICBpZiAocmVtYWluaW5nVGltZSA9PSBSQlNQcm9jZXNzVGltZUxpbWl0YXRpb25Ob25l
KSB7CiAgICAgICAgIFtzZWxmIF9yZWxlYXNlQmFja2dyb3VuZFRhc2tdOwotICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsK
ICAgICAgICAgICAgIFtzZWxmIF91cGRhdGVCYWNrZ3JvdW5kVGFza107CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CkBAIC0yNzEsMTEgKzI3MSwxMCBAQCAtICh2b2lkKWFzc2VydGlvbjoo
UkJTQXNzZXJ0aW9uICopYXNzZXJ0CiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCAtIFdLUkJTQXNzZXJ0aW9uRGVsZWdhdGU6IGFzc2VydGlvbiB3YXMgaW52YWxpZGF0
ZWQsIGVycm9yOiAle3B1YmxpY31AIiwgZXJyb3IsIHNlbGYpOwogCi0gICAgX193ZWFrIFdLUkJT
QXNzZXJ0aW9uRGVsZWdhdGUgKndlYWtTZWxmID0gc2VsZjsKLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICBXS1JCU0Fzc2VydGlvbkRlbGVn
YXRlICpzdHJvbmdTZWxmID0gd2Vha1NlbGY7Ci0gICAgICAgIGlmIChzdHJvbmdTZWxmICYmIHN0
cm9uZ1NlbGYuaW52YWxpZGF0aW9uQ2FsbGJhY2spCi0gICAgICAgICAgICBzdHJvbmdTZWxmLmlu
dmFsaWRhdGlvbkNhbGxiYWNrKCk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFr
U2VsZiA9IFdlYWtPYmpDUHRyPFdLUkJTQXNzZXJ0aW9uRGVsZWdhdGU+KHNlbGYpXSB7CisgICAg
ICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoc3Ryb25n
U2VsZiAmJiBzdHJvbmdTZWxmLmdldCgpLmludmFsaWRhdGlvbkNhbGxiYWNrKQorICAgICAgICAg
ICAgc3Ryb25nU2VsZi5nZXQoKS5pbnZhbGlkYXRpb25DYWxsYmFjaygpOwogICAgIH0pOwogfQog
QGVuZApAQCAtMzAyLDcgKzMwMSw2IEBAIFByb2Nlc3NBc3NlcnRpb246OlByb2Nlc3NBc3NlcnRp
b24ocGlkX3QKICAgICA6IG1fYXNzZXJ0aW9uVHlwZShhc3NlcnRpb25UeXBlKQogICAgICwgbV9w
aWQocGlkKQogewotICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CiAgICAg
TlNTdHJpbmcgKnJ1bm5pbmdCb2FyZEFzc2VydGlvbk5hbWUgPSBydW5uaW5nQm9hcmROYW1lRm9y
QXNzZXJ0aW9uVHlwZShhc3NlcnRpb25UeXBlKTsKICAgICBBU1NFUlQocnVubmluZ0JvYXJkQXNz
ZXJ0aW9uTmFtZSk7CiAgICAgaWYgKCFwaWQpIHsKQEAgLTMyNCw5ICszMjIsOSBAQCBQcm9jZXNz
QXNzZXJ0aW9uOjpQcm9jZXNzQXNzZXJ0aW9uKHBpZF90CiAgICAgTlNFcnJvciAqYWNxdWlzaXRp
b25FcnJvciA9IG5pbDsKICAgICBpZiAoIVttX3Jic0Fzc2VydGlvbiBhY3F1aXJlV2l0aEVycm9y
OiZhY3F1aXNpdGlvbkVycm9yXSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNz
U3VzcGVuc2lvbiwgIiVwIC0gUHJvY2Vzc0Fzc2VydGlvbjogRmFpbGVkIHRvIGFjcXVpcmUgUkJT
ICV7cHVibGljfUAgYXNzZXJ0aW9uICcle3B1YmxpY31zJyBmb3IgcHJvY2VzcyB3aXRoIFBJRCAl
ZCwgZXJyb3I6ICV7cHVibGljfUAiLCB0aGlzLCBydW5uaW5nQm9hcmRBc3NlcnRpb25OYW1lLCBy
ZWFzb24udXRmOCgpLmRhdGEoKSwgcGlkLCBhY3F1aXNpdGlvbkVycm9yKTsKLSAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gewogICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHByb2Nlc3NBc3NlcnRpb25X
YXNJbnZhbGlkYXRlZCgpOworICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNzQXNzZXJ0
aW9uV2FzSW52YWxpZGF0ZWQoKTsKICAgICAgICAgfSk7CiAgICAgfSBlbHNlCiAgICAgICAgIFJF
TEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBQcm9jZXNzQXNzZXJ0aW9uOiBTdWNj
ZXNzZnVsbHkgdG9vayBSQlMgJXtwdWJsaWN9QCBhc3NlcnRpb24gJyV7cHVibGljfXMnIGZvciBw
cm9jZXNzIHdpdGggUElEICVkIiwgdGhpcywgcnVubmluZ0JvYXJkQXNzZXJ0aW9uTmFtZSwgcmVh
c29uLnV0ZjgoKS5kYXRhKCksIHBpZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDI3
MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NDgsNyArMTQ0OCw3IEBAIC0gKEJPT0wpcmVz
aWduRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3CiAgICAgICAgIF9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OkFjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaE1vZGU6OkltbWVkaWF0ZSk7CiAK
ICAgICAgICAgaWYgKF9rZXlXZWJFdmVudEhhbmRsZXIpIHsKLSAgICAgICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFrSGFuZGxlciA9IFdlYWtPYmpD
UHRyPGlkPihfa2V5V2ViRXZlbnRIYW5kbGVyLmdldCgpKSwgd2Vha1NlbGYgPSBXZWFrT2JqQ1B0
cjxXS0NvbnRlbnRWaWV3PihzZWxmKV0geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt3ZWFrSGFuZGxlciA9IFdlYWtPYmpDUHRyPGlkPihfa2V5V2ViRXZlbnRIYW5kbGVy
LmdldCgpKSwgd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKV0gewog
ICAgICAgICAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwogICAgICAg
ICAgICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCBbc3Ryb25nU2VsZiBpc0ZpcnN0UmVzcG9uZGVy
XSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLUERGVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tQREZWaWV3Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MDksNyArNTA5
LDcgQEAgLSAodm9pZClwZGZIb3N0Vmlld0NvbnRyb2xsZXI6KFBERkhvc3RWaQogLSAodm9pZClw
ZGZIb3N0Vmlld0NvbnRyb2xsZXJFeHRlbnNpb25Qcm9jZXNzRGlkQ3Jhc2g6KFBERkhvc3RWaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKIHsKICAgICAvLyBGSVhNRSA0MDkxNjcyNTogUERGS2l0
IHNob3VsZCBkaXNwYXRjaCB0aGlzIG1lc3NhZ2UgdG8gdGhlIG1haW4gdGhyZWFkIGxpa2UgaXQg
ZG9lcyBmb3Igb3RoZXIgZGVsZWdhdGUgbWVzc2FnZXMuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3dlYlZpZXcgPSBfd2ViVmlld10geworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbd2ViVmlldyA9IF93ZWJWaWV3XSB7CiAgICAgICAgIGlmIChh
dXRvIHBhZ2UgPSBbd2ViVmlldyBfcGFnZV0pCiAgICAgICAgICAgICBwYWdlLT5kaXNwYXRjaFBy
b2Nlc3NEaWRUZXJtaW5hdGUoV2ViS2l0OjpQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNo
KTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zp
bGVVcGxvYWRQYW5lbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjgzLDEyICs2ODMsMTIgQEAgLSAodm9pZClpbWFnZVBpY2tlckNvbnRyb2xs
ZXI6KFVJSW1hZ2VQaQogICAgICAgICBzdWNjZXNzQmxvY2s6XihOU0FycmF5ICpwcm9jZXNzZWRS
ZXN1bHRzLCBOU1N0cmluZyAqZGlzcGxheVN0cmluZykgewogICAgICAgICAgICAgQVNTRVJUKFtw
cm9jZXNzZWRSZXN1bHRzIGNvdW50XSA9PSAxKTsKICAgICAgICAgICAgIF9XS0ZpbGVVcGxvYWRJ
dGVtICpyZXN1bHQgPSBbcHJvY2Vzc2VkUmVzdWx0cyBvYmplY3RBdEluZGV4OjBdOwotICAgICAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAg
ICAgICAgICAgICBbc2VsZiBfY2hvb3NlRmlsZXM6QFtyZXN1bHQuZmlsZVVSTF0gZGlzcGxheVN0
cmluZzpkaXNwbGF5U3RyaW5nIGljb25JbWFnZTpyZXN1bHQuZGlzcGxheUltYWdlLmdldCgpXTsK
KyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2VsZiA9
IHJldGFpblB0cihzZWxmKSwgcmVzdWx0ID0gcmV0YWluUHRyKHJlc3VsdCksIGRpc3BsYXlTdHJp
bmcgPSByZXRhaW5QdHIoZGlzcGxheVN0cmluZyldIHsKKyAgICAgICAgICAgICAgICBbc2VsZiBf
Y2hvb3NlRmlsZXM6QFtyZXN1bHQuZ2V0KCkuZmlsZVVSTF0gZGlzcGxheVN0cmluZzpkaXNwbGF5
U3RyaW5nLmdldCgpIGljb25JbWFnZTpyZXN1bHQuZ2V0KCkuZGlzcGxheUltYWdlLmdldCgpXTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIGZhaWx1cmVCbG9jazpeewotICAg
ICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgc3Ryb25nU2VsZiA9IHJl
dGFpblB0cihzZWxmKV0gewogICAgICAgICAgICAgICAgIFtzZWxmIF9jYW5jZWxdOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTcxMiwxMiArNzEyLDEyIEBAIC0gKHZvaWQpaW1hZ2VQ
aWNrZXJDb250cm9sbGVyOihVSUltYWdlUGkKICAgICAgICAgICAgICAgICAgICAgaWNvbkltYWdl
ID0gcmVzdWx0LmRpc3BsYXlJbWFnZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgICAg
ICBbc2VsZiBfY2hvb3NlRmlsZXM6ZmlsZVVSTHMgZGlzcGxheVN0cmluZzpkaXNwbGF5U3RyaW5n
IGljb25JbWFnZTppY29uSW1hZ2UuZ2V0KCldOworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBmaWxlVVJMcyA9
IHJldGFpblB0cihmaWxlVVJMcyksIGRpc3BsYXlTdHJpbmcgPSByZXRhaW5QdHIoZGlzcGxheVN0
cmluZyksIGljb25JbWFnZV0geworICAgICAgICAgICAgICAgIFtzZWxmIF9jaG9vc2VGaWxlczpm
aWxlVVJMcy5nZXQoKSBkaXNwbGF5U3RyaW5nOmRpc3BsYXlTdHJpbmcuZ2V0KCkgaWNvbkltYWdl
Omljb25JbWFnZS5nZXQoKV07CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBm
YWlsdXJlQmxvY2s6XnsKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Nl
bGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgICAgICAgICBbc2Vs
ZiBfY2FuY2VsXTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2Ny
ZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0JKHJldmlzaW9uIDI3MDg2OSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4OSw3ICs4ODksNyBAQCAt
ICh2b2lkKXBsYWNlaG9sZGVyV2lsbE1vdmVUb1N1cGVydmlldzooCiAgICAgaWYgKHN1cGVydmll
dykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9u
Z1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgaWYgKFtfd2ViVmlld1BsYWNlaG9s
ZGVyIHN1cGVydmlld10gPT0gbmlsICYmIFtfd2ViVmlld1BsYWNlaG9sZGVyIHBhcmVudF0gPT0g
c2VsZikKICAgICAgICAgICAgIFtzZWxmIGNsb3NlXTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVDdXN0b20ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQkocmV2
aXNpb24gMjcwODY5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTEyLDcgKzExMiw3IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3Jt
Q0EKIAogICAgICAgICAgICAgQVZQbGF5ZXJMYXllciAqZGVzdGluYXRpb25QbGF5ZXJMYXllciA9
IHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4oY2xvbmVkTGF5ZXIuZ2V0KCkpOwogICAgICAg
ICAgICAgQVZQbGF5ZXJMYXllciAqc291cmNlUGxheWVyTGF5ZXIgPSBzdGF0aWNfY2FzdDxBVlBs
YXllckxheWVyICo+KHBsYXRmb3JtTGF5ZXIoKSk7Ci0gICAgICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbZGVzdGluYXRpb25QbGF5ZXJMYXllciwgc291
cmNlUGxheWVyTGF5ZXJdIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
ZGVzdGluYXRpb25QbGF5ZXJMYXllciwgc291cmNlUGxheWVyTGF5ZXJdIHsKICAgICAgICAgICAg
ICAgICBbZGVzdGluYXRpb25QbGF5ZXJMYXllciBzZXRQbGF5ZXI6W3NvdXJjZVBsYXllckxheWVy
IHBsYXllcl1dOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCShy
ZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRh
dGVSCiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKICAgICAgICAgTW9u
b3RvbmljVGltZSB0aW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3BhZ2VJRCwgdGltZXN0YW1w
XSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcGFnZUlELCB0aW1lc3RhbXBd
IHsKICAgICAgICAgICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpKQogICAgICAgICAgICAgICAgIHdlYlBhZ2UtPmRpZEZsdXNo
TGF5ZXJUcmVlQXRUaW1lKHRpbWVzdGFtcCk7CiAgICAgICAgIH0pOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0JKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNyArMzc4
LDcgQEAgICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZQogICAgIENBTGF5
ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+cm9vdExh
eWVyKCk7CiAKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11
dGFibGUgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJ
ZF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgIGlm
IChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExh
eWVyKGNvbnRleHRJZCwgdHJ1ZSkpOwogICAgICAgICB9KTsKQEAgLTM5Miw5ICszOTIsOSBAQCAg
ICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRlCiAgICAgc3RkOjp0aWUobW9k
ZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAg
ICAgbW9kZWwtPndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWQsIG1vZGVsXSAoKSBtdXRhYmxlIHsgLy8g
bmVlZCB0aGlzIGZvciByZXR1cm4gdmlkZW8gbGF5ZXIKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWQsIG1vZGVsXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgdGhpcywgY29udGV4dElkLCBtb2RlbF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsK
KyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpT
ZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSk7CiAgICAgICAgICAgICAg
ICAgfSk7CkBAIC00MTMsNyArNDEzLDcgQEAgICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0g
ZW5zdXJlTW9kZQogICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheWVySG9z
dGluZ0NvbnRleHQoKS0+cm9vdExheWVyKCk7CiAKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0
aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHRoaXMsIGNvbnRleHRJZF0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0
SWRdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAgICAg
ICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICAgICAgfSk7CkBAIC00MzEsNyArNDMx
LDcgQEAgICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZQogICAgIGlmICgh
dmlkZW9FbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IHZpZGVvRWxlbWVudCA9IFdURk1vdmUodmlkZW9FbGVtZW50KSwgY29udGV4dElkXSB7CisgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KSwgdmlkZW9FbGVtZW50ID0gV1RGTW92ZSh2aWRlb0VsZW1lbnQpLCBjb250ZXh0SWRdIHsKICAg
ICAgICAgdmlkZW9FbGVtZW50LT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgaWYgKHBy
b3RlY3RlZFRoaXMtPm1fcGFnZSkKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhp
dEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CkBAIC00NTcsNyArNDU3LDcgQEAgICAgIGlmIChpbnRl
cmZhY2UtPnRhcmdldElzRnVsbHNjcmVlbigpIAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBl
eGl0IGZ1bGxzY3JlZW4gbm93IGlmIGl0IHdhcyBwcmV2aW91c2x5IHJlcXVlc3RlZCBkdXJpbmcg
YW4gYW5pbWF0aW9uLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50XSB7Cisg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0
aGlzKSwgdmlkZW9FbGVtZW50XSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2Up
CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KCp2aWRlb0VsZW1lbnQsIFtdKGJvb2wpIHsgfSk7CiAgICAgfSk7CkBAIC00NzIsMTUg
KzQ3MiwxNSBAQCAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRlCiAgICAg
c3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250
ZXh0SWQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2Vd
IHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAgICAg
bW9kZWwtPndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2UsIG1v
ZGVsXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2Us
IG1vZGVsXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29u
dGV4dElkLCBpbnRlcmZhY2VdICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2VdIHsKKyAgICAgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZV0gewogICAgICAgICAgICAgICAgICAgICBp
ZiAoaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIobnVs
bHB0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGlu
Z0NvbnRleHQobnVsbHB0cik7CkBAIC01MjMsNyArNTIzLDcgQEAgICAgIGludGVyZmFjZS0+c2V0
RnVsbHNjcmVlblN0YW5kYnkoZmFscwogICAgIGlmICghdmlkZW9FbGVtZW50IHx8ICF0YXJnZXRJ
c0Z1bGxzY3JlZW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dmlkZW9FbGVtZW50LCBtb2RlLCBzdGFuZGJ5XSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50LCBtb2Rl
LCBzdGFuZGJ5XSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgq
dmlkZW9FbGVtZW50LCBtb2RlLCBzdGFuZGJ5KTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MDg2OSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTEyLTIx
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlZCBt
b3N0IHVzZXMgb2YgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgLi4u
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGlzcGF0
Y2hfYXN5bmMgaGFzIHR3byBkb3duc2lkZXM6CisKKyAgICAgICAgKDEpIEl0cyBvcmRlciBpcyB1
bmRlZmluZWQgKGFuZCBpbiBwcmFjdGljZSBoaWdobHkgdmFyaWFibGUpIHJlbGF0aXZlIHRvCisg
ICAgICAgIG90aGVyIFdlYktpdCBvcGVyYXRpb25zLiBUaGlzIHNvbWV0aW1lcyBjYXVzZXMgZmxh
a2luZXNzLgorCisgICAgICAgICgyKSBJdCBkb2Vzbid0IGhvbm9yIHRoZSBSdW5Mb29wIGZpcnN0
IHBhaW50IG9wdGltaXphdGlvbi4KKworICAgICAgICBXZSBjYW4gdXNlIFJ1bkxvb3A6OmRpc3Bh
dGNoKCkgaW5zdGVhZC4KKworICAgICAgICAqIE1pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklP
Uy5tbToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyByZWdpc3RlcldlYlZp
ZXc6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgdW5yZWdpc3Rlcldl
YlZpZXc6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1Mgc2V0RW5hYmxl
SGlnaEFjY3VyYWN5Ol0pOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TIGlu
aXRpYWxpemVHZW9sb2NhdGlvbkZvcldlYlZpZXc6bGlzdGVuZXI6XSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xp
ZW50SU9TOjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2Vh
cmNoaW5nRm9yTm9kZSk6CisKIDIwMjAtMTEtMDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZ1cnRoZXIgcHJvZ3Jlc3MgdG93YXJkcyBtZXJnaW5nIFNldHRpbmdz
LnlhbWwgaW50byBXZWJQcmVmZXJlbmNlcy55YW1sCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCShy
ZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9W
ZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNzgsNyArMTc5LDcgQEAg
LSAodm9pZClyZWdpc3RlcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIV9pc1N1c3BlbmRlZCkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgICAgIGlm
ICghX2NvcmVMb2NhdGlvblByb3ZpZGVyKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFfY29y
ZUxvY2F0aW9uVXBkYXRlTGlzdGVuZXJQcm94eSk7CiAgICAgICAgICAgICAgICAgX2NvcmVMb2Nh
dGlvblVwZGF0ZUxpc3RlbmVyUHJveHkgPSBhZG9wdE5TKFtbX1dlYkNvcmVMb2NhdGlvblVwZGF0
ZVRocmVhZGluZ1Byb3h5IGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOnNlbGZdKTsKQEAgLTIwOCw3
ICsyMDksNyBAQCAtICh2b2lkKXVucmVnaXN0ZXJXZWJWaWV3OihXZWJWaWV3ICopd2ViCiAgICAg
X3BlbmRpbmdJbml0aWFsUG9zaXRpb25XZWJWaWV3LnJlbW92ZSh3ZWJWaWV3KTsKIAogICAgIGlm
IChfcmVnaXN0ZXJlZFdlYlZpZXdzLmlzRW1wdHkoKSkgewotICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAg
ICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIgc3RvcF07CiAgICAgICAgIH0pOwogICAgICAgICBf
ZW5hYmxlSGlnaEFjY3VyYWN5ID0gTk87CkBAIC0yMjYsNyArMjI3LDcgQEAgLSAodm9pZClzZXRF
bmFibGVIaWdoQWNjdXJhY3k6KEJPT0wpZW5hYgogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0xv
Y2tlZE9yRGlzYWJsZWQoKSk7CiAgICAgX2VuYWJsZUhpZ2hBY2N1cmFjeSA9IF9lbmFibGVIaWdo
QWNjdXJhY3kgfHwgZW5hYmxlSGlnaEFjY3VyYWN5OwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
ZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIFtfY29yZUxvY2F0
aW9uUHJvdmlkZXIgc2V0RW5hYmxlSGlnaEFjY3VyYWN5Ol9lbmFibGVIaWdoQWNjdXJhY3ldOwog
ICAgIH0pOwogfQpAQCAtMjQxLDcgKzI0Miw3IEBAIC0gKHZvaWQpaW5pdGlhbGl6ZUdlb2xvY2F0
aW9uRm9yV2ViVmlldzoKICAgICBfd2ViVmlld3NXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9y
aXphdGlvbi5hZGQod2ViVmlldywgbGlzdGVuZXIpOwogICAgIF90cmFja2VkV2ViVmlld3MuYWRk
KHdlYlZpZXcpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9uZ1NlbGYgPSBy
ZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgaWYgKCFfY29yZUxvY2F0aW9uUHJvdmlkZXIpIHsK
ICAgICAgICAgICAgIEFTU0VSVCghX2NvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyUHJveHkpOwog
ICAgICAgICAgICAgX2NvcmVMb2NhdGlvblVwZGF0ZUxpc3RlbmVyUHJveHkgPSBhZG9wdE5TKFtb
X1dlYkNvcmVMb2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IGFsbG9jXSBpbml0V2l0aFByb3Zp
ZGVyOnNlbGZdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0JKHJldmlzaW9uIDI3MDg2
OSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDggKzE0Niw4IEBAIHZvaWQgV2ViQ2hy
b21lQ2xpZW50SU9TOjpydW5PcGVuUGFuZWwoRnIKICAgICB9OwogCiAgICAgaWYgKFdlYlRocmVh
ZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57Ci0gICAgICAgICAgICBbW3dlYlZpZXcoKSBfVUlLaXREZWxlZ2F0ZUZvcndh
cmRlcl0gd2ViVmlldzp3ZWJWaWV3KCkgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1
bHRMaXN0ZW5lcjpsaXN0ZW5lciBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGxpc3RlbmVyID0gcmV0YWluUHRyKGxp
c3RlbmVyKSwgY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihjb25maWd1cmF0aW9uKV0geworICAg
ICAgICAgICAgW1t3ZWJWaWV3KCkgX1VJS2l0RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2Vi
VmlldygpIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6bGlzdGVu
ZXIuZ2V0KCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXTsKICAgICAgICAgfSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIFtbd2ViVmlldygpIF9VSUtpdERlbGVnYXRlRm9yd2FyZGVy
XSB3ZWJWaWV3OndlYlZpZXcoKSBydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExp
c3RlbmVyOmxpc3RlbmVyIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEwNCwxMCArMTA0LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
OnNob3dQYWludFJlY3QoYwogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNo
aW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiB7Ci0gICAgV2ViSW5zcGVjdG9yICppbnNwZWN0b3Ig
PSBbbV9pbnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl07CiAgICAgTlNTdHJpbmcgKm5vdGlmaWNh
dGlvbk5hbWUgPSBlbmFibGVkID8gV2ViSW5zcGVjdG9yRGlkU3RhcnRTZWFyY2hpbmdGb3JOb2Rl
IDogV2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zvck5vZGU7Ci0gICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpub3RpZmljYXRpb25O
YW1lIG9iamVjdDppbnNwZWN0b3JdOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbm90
aWZpY2F0aW9uTmFtZSA9IHJldGFpblB0cihub3RpZmljYXRpb25OYW1lKSwgaW5zcGVjdG9yID0g
cmV0YWluUHRyKFttX2luc3BlY3RlZFdlYlZpZXcgaW5zcGVjdG9yXSldIHsKKyAgICAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpu
b3RpZmljYXRpb25OYW1lLmdldCgpIG9iamVjdDppbnNwZWN0b3IuZ2V0KCldOwogICAgIH0pOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzA4NjkpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMiBAQAorMjAyMC0xMi0yMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZWQgbW9zdCB1c2VzIG9mIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIC4uLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMDA2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGRpc3BhdGNoX2FzeW5jIGhhcyB0d28gZG93bnNpZGVzOgorCisgICAg
ICAgICgxKSBJdHMgb3JkZXIgaXMgdW5kZWZpbmVkIChhbmQgaW4gcHJhY3RpY2UgaGlnaGx5IHZh
cmlhYmxlKSByZWxhdGl2ZSB0bworICAgICAgICBvdGhlciBXZWJLaXQgb3BlcmF0aW9ucy4gVGhp
cyBzb21ldGltZXMgY2F1c2VzIGZsYWtpbmVzcy4KKworICAgICAgICAoMikgSXQgZG9lc24ndCBo
b25vciB0aGUgUnVuTG9vcCBmaXJzdCBwYWludCBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgV2Ug
Y2FuIHVzZSBSdW5Mb29wOjpkaXNwYXRjaCgpIGluc3RlYWQuCisKKyAgICAgICAgKiBQbHVnaW5z
L25wYXBpLm1tOgorICAgICAgICAoTlBOX1BsdWdpblRocmVhZEFzeW5jQ2FsbCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpyZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbik6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICogV2ViVmlldy9XZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyIGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsUHJlcGFyZTpdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgd2lsbEVudGVy
QmFja2dyb3VuZFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dlYlNhZmVB
c3luY0ZvcndhcmRlciBmb3J3YXJkSW52b2NhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBw
ZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJsZTpd
KToKKwogMjAyMC0xMi0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjcwNzY4LgpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9ucGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL25wYXBpLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL25wYXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luVmlldy5oIgogI2ltcG9ydCAiV2Vi
S2l0TG9nZ2luZy5oIgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTE3NCw3ICsxNzUsNyBAQCB2b2lkIE5QTl9QbHVnaW5UaHJlYWRBc3lu
Y0NhbGwoTlBQIGluc3RhCiB7CiAgICAgV2ViTmV0c2NhcGVQbHVnaW5WaWV3ICpwbHVnaW5WaWV3
ID0gcGx1Z2luVmlld0Zvckluc3RhbmNlKGluc3RhbmNlKTsKIAotICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwbHVnaW5WaWV3ID0gcmV0YWluUHRyKHBsdWdpblZpZXcpLCB1c2VyRGF0YSwgZnVuY10g
ewogICAgICAgICBpZiAoIXBsdWdpblZpZXcgfHwgIXBsdWdpblZpZXctPnBsdWdpbikgewogICAg
ICAgICAgICAgLy8gVGhlIHBsdWctaW4gaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQuCiAgICAg
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAyNzA4Njkp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMjIsMTAgKzExMjIsMTAgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnJlcXVlc3RDYW5kaWRhdGVzRgogICAgIE5TVGV4dENoZWNraW5nVHlwZXMgY2hl
Y2tpbmdUeXBlcyA9IE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgTlNUZXh0Q2hlY2tpbmdU
eXBlUmVwbGFjZW1lbnQgfCBOU1RleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwogICAgIGF1dG8g
d2Vha0VkaXRvciA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKICAgICBtX2xhc3RDYW5kaWRhdGVSZXF1
ZXN0U2VxdWVuY2VOdW1iZXIgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0g
cmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3RlZFJhbmdlOm1fcmFuZ2VGb3JDYW5kaWRhdGVzIGlu
U3RyaW5nOm1fcGFyYWdyYXBoQ29udGV4dEZvckNhbmRpZGF0ZVJlcXVlc3QuZ2V0KCkgdHlwZXM6
Y2hlY2tpbmdUeXBlcyBvcHRpb25zOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hl
Y2tlckRvY3VtZW50VGFnKCkgY29tcGxldGlvbkhhbmRsZXI6W3dlYWtFZGl0b3JdKE5TSW50ZWdl
ciBzZXF1ZW5jZU51bWJlciwgTlNBcnJheTxOU1RleHRDaGVja2luZ1Jlc3VsdCAqPiAqY2FuZGlk
YXRlcykgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtFZGl0b3IsIHNlcXVl
bmNlTnVtYmVyLCBjYW5kaWRhdGVzID0gcmV0YWluUHRyKGNhbmRpZGF0ZXMpXSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtFZGl0b3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgd2Vha0VkaXRvci0+aGFuZGxlUmVxdWVzdGVkQ2FuZGlkYXRlcyhzZXF1ZW5jZU51bWJlciwg
Y2FuZGlkYXRlcyk7CisgICAgICAgICAgICB3ZWFrRWRpdG9yLT5oYW5kbGVSZXF1ZXN0ZWRDYW5k
aWRhdGVzKHNlcXVlbmNlTnVtYmVyLCBjYW5kaWRhdGVzLmdldCgpKTsKICAgICAgICAgfSk7CiAg
ICAgfV07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjcw
ODY5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzNzMsNyArMjM3Myw3IEBAIC0gKHZv
aWQpdXNlCiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgICAgICAgICBXZWJUaHJlYWRSdW4oXnsK
ICNlbHNlCi0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBzdHJv
bmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzdWNjZXNzXSB7CiAjZW5kaWYKICAgICAgICAgICAg
ICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgICAgICAgICAgICAgW3NlbGYgcmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbjpXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZV07CkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29n
bml6ZXJXaWxsUHJlCiAKICAgICBpZiAoIVtfaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplciBhbmlt
YXRpb25Db250cm9sbGVyXSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUg
dG8gcmVtb3ZlIHRoZSBkaXNwYXRjaF9hc3luYyB3aGVuIHJkYXI6Ly9wcm9ibGVtLzE5NTAyOTI3
IGlzIHJlc29sdmVkLgotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHN0cm9u
Z1NlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgICAgIFtzZWxmIF9jYW5jZWxJbW1l
ZGlhdGVBY3Rpb25dOwogICAgICAgICB9KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNzA4NjkpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
NCw2ICsyNDQsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNWaWV3U1BJLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4K
KyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgpAQCAt
MTg5MSw3ICsxODkyLDkgQEAgKyAodm9pZCl3aWxsRW50ZXJCYWNrZ3JvdW5kV2l0aENvbXBsZXRp
bwogewogICAgIFdlYlRocmVhZFJ1biheewogICAgICAgICBbV2ViVmlldyBfcmVsZWFzZU1lbW9y
eU5vd107Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IGhhbmRsZXIpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2hhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoaGFuZGxlcildIHsKKyAgICAgICAgICAgIGhhbmRsZXIoKTsKKyAgICAgICAg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTUwNTEsMTUgKzUwNTQsMTMgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRm9yd2FyZGVyOihfV2ViUwogCiAtICh2b2lkKWZvcndhcmRJbnZvY2F0aW9uOihO
U0ludm9jYXRpb24gKilpbnZvY2F0aW9uCiB7Ci0gICAgLy8gU3RvcmUgX2ZvcndhcmRlciBpbiBh
biBpdmFyIHNvIGl0IGlzIHJldGFpbmVkIGJ5IHRoZSBibG9jay4KLSAgICBfV2ViU2FmZUZvcndh
cmRlciAqZm9yd2FyZGVyID0gX2ZvcndhcmRlcjsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50
KCkpIHsKICAgICAgICAgW2ludm9jYXRpb24gcmV0YWluQXJndW1lbnRzXTsKLSAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtm
b3J3YXJkZXIgZm9yd2FyZEludm9jYXRpb246aW52b2NhdGlvbl07CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbZm9yd2FyZGVyID0gcmV0YWluUHRyKF9mb3J3YXJkZXIpLCBpbnZv
Y2F0aW9uID0gcmV0YWluUHRyKGludm9jYXRpb24pXSB7CisgICAgICAgICAgICBbZm9yd2FyZGVy
IGZvcndhcmRJbnZvY2F0aW9uOmludm9jYXRpb24uZ2V0KCldOwogICAgICAgICB9KTsKICAgICB9
IGVsc2UKLSAgICAgICAgW2ZvcndhcmRlciBmb3J3YXJkSW52b2NhdGlvbjppbnZvY2F0aW9uXTsK
KyAgICAgICAgW19mb3J3YXJkZXIgZm9yd2FyZEludm9jYXRpb246aW52b2NhdGlvbl07CiB9CiAK
IC0gKEJPT0wpcmVzcG9uZHNUb1NlbGVjdG9yOihTRUwpYVNlbGVjdG9yCkBAIC02NDc2LDcgKzY0
NzcsNyBAQCAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnCiAgICAgICAg
ICAgICAgICAgaWYgKGVycm9yT3JOaWwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFtzZWxmLCBwYXRoID0gUmV0YWluUHRyPE5TU3RyaW5nPihmaWxlVVJMLnBhdGgpLCBmaWxlTmFt
ZXMsIGZpbGVDb3VudCwgZHJhZ0RhdGFdIHsKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3NlbGYsIHBhdGggPSBSZXRhaW5QdHI8TlNTdHJpbmc+KGZpbGVVUkwucGF0
aCksIGZpbGVOYW1lcywgZmlsZUNvdW50LCBkcmFnRGF0YV0gewogICAgICAgICAgICAgICAgICAg
ICBmaWxlTmFtZXMtPmFwcGVuZChwYXRoLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGZpbGVOYW1lcy0+c2l6ZSgpID09IGZpbGVDb3VudCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgZHJhZ0RhdGEtPnNldEZpbGVOYW1lcygqZmlsZU5hbWVzKTsKQEAgLTgwMDQsNyArODAwNSw3
IEBAIC0gKHZvaWQpc2V0RWRpdGFibGU6KEJPT0wpZmxhZwogICAgICAgICAgICAgX3ByaXZhdGUt
PnBhZ2UtPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyghZmxhZyk7CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICAgICBpZiAoZmxhZykgewotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW10geworICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAgICAgICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gX3ByZWZsaWdodENob3NlblNwZWxsU2VydmVyXTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>