<?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>156660</bug_id>
          
          <creation_ts>2016-04-16 08:25:17 -0700</creation_ts>
          <short_desc>Remove more uses of Deprecated::ScriptXXX</short_desc>
          <delta_ts>2016-04-17 11:39:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1184351</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-16 08:25:17 -0700</bug_when>
    <thetext>Remove more uses of Deprecated::ScriptXXX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184357</commentid>
    <comment_count>1</comment_count>
      <attachid>276555</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-16 09:46:25 -0700</bug_when>
    <thetext>Created attachment 276555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184366</commentid>
    <comment_count>2</comment_count>
      <attachid>276559</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-16 10:08:22 -0700</bug_when>
    <thetext>Created attachment 276559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184417</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-16 19:31:23 -0700</bug_when>
    <thetext>Everything passed on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184479</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-17 09:37:26 -0700</bug_when>
    <thetext>Patch is ready to go, everything compiled and all the tests passed. Looking for a reviewer now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184494</commentid>
    <comment_count>5</comment_count>
      <attachid>276559</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-17 11:39:00 -0700</bug_when>
    <thetext>Comment on attachment 276559
Patch

Clearing flags on attachment: 276559

Committed r199642: &lt;http://trac.webkit.org/changeset/199642&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184495</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-17 11:39:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276555</attachid>
            <date>2016-04-16 09:46:25 -0700</date>
            <delta_ts>2016-04-16 10:08:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156660-20160416094640.patch</filename>
            <type>text/plain</type>
            <size>78235</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Y2NiMDkyMjk0ZWU3YjQ5MTY3NWY5ODllMzNmNGYyZDMzMGYwNjViLi5lOWM0NDE4NDNhNDcxYTky
MGFmNjE2YjI5MDM3Zjk0MmJmOTcwNTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNi0wNC0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIG1vcmUgdXNlcyBvZiBEZXByZWNhdGVkOjpTY3JpcHRYWFgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjY2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvU2Ny
aXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKERlcHJlY2F0ZWQ6OlNjcmlwdENhbGxBcmd1
bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KTogRGVsZXRlZAorICAgICAgICB1bm5lZWRlZCBv
dmVybG9hZHMgdGhhdCB0YWtlIGEgU2NyaXB0T2JqZWN0IGFuZCBTY3JpcHRWYWx1ZS4KKyAgICAg
ICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaDogRGl0dG8uCisKKyAgICAgICAgKiBi
aW5kaW5ncy9TY3JpcHRPYmplY3QuaDogQWRkZWQgb3BlcmF0b3Igc28gdGhpcyBjYW4gY2hhbmdl
CisgICAgICAgIGl0c2VsZiBpbnRvIGEgSlNPYmplY3QqLiBIZWxwcyB3aGlsZSBwaGFzaW5nIHRo
aXMgY2xhc3Mgb3V0LgorCisgICAgICAgICogYmluZGluZ3MvU2NyaXB0VmFsdWUuaDogRXhwb3J0
IHRvSW5zcGVjdG9yVmFsdWUgc28gaXQgY2FuIGJlCisgICAgICAgIHVzZWQgaW4gV2ViQ29yZS4K
KworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0
KTogQ2hhbmdlZAorICAgICAgICByZXR1cm4gdmFsdWUgZnJvbSBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QgdG8gSlNPYmplY3QqLgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKTogVXBkYXRlZCBmb3IKKyAgICAgICAgdGhlIHJldHVy
biB2YWx1ZSBjaGFuZ2UgYWJvdmUuCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5oOiBEaXR0by4KKwogMjAxNi0wNC0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHVzZSBvZiBEZXByZWNhdGVkOjpTY3JpcHRYWFggY2xh
c3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDBlYTQ2NjM3ZWZiYWYyNDE4MzU2YTM3YjgzZGVkOTAxMzk2MWMz
N2EuLjUxMzE5M2E2Mjg5OWZkM2Q1MGM1MGQ5YTIyZGQ3NDQ3ZWI0MjhiYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMjggQEAKKzIwMTYtMDQtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSBtb3JlIHVzZXMgb2YgRGVwcmVjYXRlZDo6U2NyaXB0WFhY
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY2NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oOiBSZW1vdmVkIHVubmVlZGVkIGlu
Y2x1ZGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaDog
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAgICBDaGFuZ2VkIGFyZ3VtZW50IHRvIGlu
c3RhbGxSZXBsYWNlbWVudCBpbnRvIGEgcmVmZXJlbmNlLiBDaGFuZ2VkIHJldHVybgorICAgICAg
ICB2YWx1ZSBmb3IgY3JlYXRpb24gZnVuY3Rpb24gZnJvbSBQYXNzUmVmUHRyIHRvIFJlZi4KKwor
ICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oOiBS
ZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzIGFuZAorICAgICAgICBmb3J3YXJkIGRlY2xhcmF0aW9u
cy4gTWFya2VkIGNsYXNzIGZpbmFsLiBNYWRlIGFsbW9zdCBldmVyeXRoaW5nIHByaXZhdGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06
CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlKTog
Q2hhbmdlZCB0byByZXR1cm4gUmVmLgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudCk6IENoYW5nZWQgdG8gdGFrZQorICAgICAg
ICBhIHJlZmVyZW5jZS4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50OjpjcmVhdGUpOiBDaGFuZ2VkIHRvIHJldHVybiBSZWYuCisgICAgICAgIChXZWJDb3JlOjpZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudCk6IENoYW5nZWQgdG8g
dGFrZQorICAgICAgICBhIHJlZmVyZW5jZS4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Z
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcyBhbmQK
KyAgICAgICAgZm9yd2FyZCBkZWNsYXJhdGlvbnMuIE1hcmtlZCBjbGFzcyBmaW5hbC4gQ2hhbmdl
ZCByZXR1cm4gdHlwZSBvZiBjcmVhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2ZUJp
bmFyeURhdGEpOiBSZW1vdmVkIGxvY2FsIHZhcmlhYmxlIHNvIHRoZQorICAgICAgICBNZXNzYWdl
RXZlbnQ6OmNyZWF0ZSBmdW5jdGlvbiBnZXRzIGEgUmVmJiYgaW5zdGVhZCBvZiBhIFJlZlB0ciB3
aXRob3V0IGhhdmluZworICAgICAgICB0byBhZGQgZXhwbGljaXQgV1RGTW92ZS4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0RPTVJlcXVlc3RTdGF0ZS5oOiBSZW1vdmVkIGNvZGUgdGhhdCBzZXQg
bV9leGVjIHR3aWNlLgorCisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOiBSZWZv
cm1hdHRlZCBmdW5jdGlvbiB0ZW1wbGF0ZXMgdG8gdXNlIGEgc2luZ2xlCisgICAgICAgIGxpbmUg
c28gdGhleSBhcmUgZWFzaWVyIHRvIGxvb2sgYXQuCisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5OjpnZXRFdmVudExpc3RlbmVyKTogUmV3cm90ZSB0aGlzIHNvIGl0IG5vIGxvbmdlciB1c2Vz
CisgICAgICAgIGEgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgYW5kIGFsc28gbWFrZSBpdCBhIGxp
dHRsZSBtb3JlIGNvbXBhY3QgYW5kIHRlcnNlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlND
b21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDb21tYW5k
TGluZUFQSUhvc3Q6Omluc3BlY3QpOiBSZXdyb3RlIHRvIHVzZSBKU1ZhbHVlIGluc3RlYWQgb2YK
KyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUuIENvbnNpZGVyYWJseSBtb3JlIGVmZmlj
aWVudC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZUV2ZW50OjpkYXRhKTogU3RyZWFtbGluZWQgdG8g
dXNlIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlCisgICAgICAgIGEgbGl0dGxlIGJpdCBsZXNzLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDogTW92ZWQgaW5jbHVkZSBo
ZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOiBN
b3ZlZCBpbmNsdWRlIGZyb20gaGVyZSB0byBjcHAgZmlsZS4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1BvcFN0
YXRlRXZlbnQ6OnN0YXRlKTogVXBkYXRlZCBmb3IgY2hhbmdlcyB0byByZXR1cm4gdmFsdWUgb2Yg
dGhlCisgICAgICAgIHN0YXRlKCkgYW5kIHNlcmlhbGl6ZWRTdGF0ZSBmdW5jdGlvbnMuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOiBSZW1vdmVkIHRoZSBTY3JpcHRTdGF0
ZSB0eXBlZGVmLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcDogTW92ZWQgaW5jbHVkZSBoZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOiBNb3ZlZCBpbmNsdWRlIGZyb20gaGVyZSB0byBj
cHAgZmlsZS4KKworICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RmFjZTo6Y3JlYXRlKTogQ2hhbmdlZCBhcmd1bWVudCB0byBKU1ZhbHVlIGluc3RlYWQg
b2YgU2NyaXB0VmFsdWUuCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmg6IERpdHRvLgorCisgICAg
ICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6IE1vdmVkIGNyZWF0ZSBmdW5jdGlvbnMgaW4gaGVy
ZSBmcm9tIGhlYWRlciBmaWxlLgorICAgICAgICBSZW1vdmVkIHNvbWUgdW51c2VkIG9uZXMgaW5j
bHVkaW5nIG9uZSB0aGF0IHRvb2sgYSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZS4KKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6IFN0cmVhbWxpbmVkIGNyZWF0ZSBmdW5jdGlvbnMsIHJlbW92
aW5nIHVudXNlZCBmdW5jdGlvbnMsCisgICAgICAgIHVudXNlZCBhcmd1bWVudHMsIGFuZCB1bnVz
ZWQgZGVmYXVsdCB2YWx1ZXMgZm9yIGFyZ3VtZW50cy4gQWxzbyBtb3ZlZCB0aGVtIGFsbAorICAg
ICAgICBpbnRvIHRoZSBjcHAgZmlsZSBpbnN0ZWFkIG9mIGlubGluaW5nIHRoZW0uIEFsc28gY2hh
bmdlZCB0aGUgcmV0dXJuIHR5cGUgb2YKKyAgICAgICAgZGF0YUFzU2NyaXB0VmFsdWUgdG8gSlNW
YWx1ZS4KKworICAgICAgICAqIGRvbS9Ob2RlRmlsdGVyQ29uZGl0aW9uLmg6IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZS4gVHdlYWtlZCBmb3JtYXR0aW5nLgorCisgICAgICAgICogZG9tL1BvcFN0
YXRlRXZlbnQuaDogQ2hhbmdlZCByZXR1cm4gdmFsdWUgb2Ygc3RhdGUgdG8gYmUgYSBKU1ZhbHVl
IGFuZCBvZgorICAgICAgICBzZXJpYWxpemVkU3RhdGUgdG8gYmUgYSByYXcgcG9pbnRlciwgbm90
IGEgUGFzc1JlZlB0ci4KKworICAgICAgICAqIGRvbS9UcmF2ZXJzYWwuaDogUmVtb3ZlZCB1bm5l
ZWRlZCBpbmNsdWRlLiBSZW1vdmVkIHVubmVjZXNzYXJ5IHVzZSBvZgorICAgICAgICB1bnNpZ25l
ZCBsb25nIGluc3RlYWQgb2YgdW5zaWduZWQuIEZpeGVkIGluZGVudGF0aW9uLgorCisgICAgICAg
ICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6IFBhc3MgcmVmZXJlbmNlLgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOiBQ
YXNzIEpTVmFsdWUgaW5zdGVhZAorICAgICAgICBvZiBjb25zdHJ1Y3RpbmcgYSBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OmRpc2Nvbm5l
Y3QpOiBJbml0aWFsaXplIHdpdGhvdXQgZXhwbGljaXRseQorICAgICAgICBtZW50aW9uaW5nIHRo
ZSBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgdHlwZS4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDogUmVtb3ZlZCB1
bm5lZWRlZCBpbmNsdWRlIGFuZCBhbHNvCisgICAgICAgIGRlY2xhcmF0aW9uIG9mIHR3byBub24t
ZXhpc3RlbnQgZnVuY3Rpb25zLgorCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6UG9zdE1lc3NhZ2VUaW1lcik6IFR3ZWFr
ZWQgdHlwZXMgYSBsaXR0bGUgYml0IHRvCisgICAgICAgIG1hdGNoIHdoYXQgaXMgdXNlZCBpbiBN
ZXNzYWdlRXZlbnQgbm93LgorICAgICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6ZXZl
bnQpOiBTdHJlYW1saW5lZCBhIGJpdCBhbmQgY2hhbmdlZCB0eXBlIHRvCisgICAgICAgIHJlZmVy
ZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOiBVcGRhdGVk
IGZvciBjaGFuZ2VzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVz
c2FnZVRpbWVyRmlyZWQpOiBEaXR0by4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmNyZWF0ZU1lc3NhZ2VFdmVudCk6IFJl
bW92ZWQgbm93LXVubmVlZGVkCisgICAgICAgICJmYWxzZSwgZmFsc2UiIGZyb20gTWVzc2FnZUV2
ZW50OjpjcmVhdGUgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6IFJlbW92ZWQgdW5u
ZWVkZWQKKyAgICAgICAgaW5jbHVkZSBhbmQgYWxzbyB1bm5lZWRlZCBub24tY29weWFibGUsIHNp
bmNlIHRoZSBjbGFzcyBoYXMgYSByZWZlcmVuY2UgYXMKKyAgICAgICAgYSBkYXRhIG1lbWJlciBh
bmQgc28gaXMgYXV0b21hdGljYWxseSBub24tY29weWFibGUuCisKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmRlc2NyaXB0aW9u
KTogQ2hhbmdlZCB0byB0YWtlIEpTVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnBhcnNlck1ldGFEYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNl
cmlhbGl6ZU9iamVjdCk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgY29weWluZyBvZiB2ZWN0b3IuCisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzRnJvbUN1cnJlbnRXb3JsZCk6IENoYW5nZWQg
dG8gdGFrZSBKU1ZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc1JlYWRhYmxl
U3RyZWFtRGlzdHVyYmVkKTogQ2hhbmdlZCB0byBub3QgcmVseSBvbiB0aGUKKyAgICAgICAgU2Ny
aXB0U3RhdGUgdHlwZWRlZiBhbmQgY2FsbCBpdCBKU0M6OkV4ZWNTdGF0ZS4KKworICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuIFJlbW92ZWQg
dW5uZWVkZWQgYW5kCisgICAgICAgIGluYXBwcm9wcmlhdGUgdXNlIG9mIEFTU0VSVF9OT19FWENF
UFRJT04uCisKIDIwMTYtMDQtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZHVjZSB1c2Ugb2YgRGVwcmVjYXRlZDo6U2NyaXB0WFhYIGNsYXNzZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKaW5kZXggYTRkYzYwNGM4OTI0ODU1OTE0ODUwZmIzOGJlM2VmZTFmYTU2MjAyYi4uYzNkMGQx
YjZhOWZjOGM3NjIzYTBiMDcxYjg2NzZkMzc1YmE2YzIxNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKQEAgLTQxLDE1
ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBEZXByZWNhdGVkIHsK
IAotdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGFyZ3VtZW50KQotewotICAgIGlmIChhcmd1bWVudC5z
Y3JpcHRTdGF0ZSgpICE9IG1fZXhlYykgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2FyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQu
anNPYmplY3QoKSk7Ci19Ci0KIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5k
QXJndW1lbnQoY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhtX2V4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdEZ1bmN0aW9uQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dEZ1bmN0aW9uQ2FsbC5oCmluZGV4IDQ5N2VhYzAzYjI5ODE3MDdmZjlmYzdiYmI2MjY5MjZhYmJh
YmUxOWIuLjEwMzdjNDJjNWQwYzU5MjI1ODYyNzA3NTE0NjI4MTE3NTAyMjFiMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgK
QEAgLTQ2LDggKzQ2LDYgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0Q2FsbEFyZ3Vt
ZW50SGFuZGxlciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUpIDogbV9leGVjKHN0YXRlKSB7IH0KIAotICAgIHZvaWQgYXBwZW5k
QXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0gICAgdm9pZCBhcHBlbmRBcmd1bWVudChj
b25zdCBTY3JpcHRWYWx1ZSYpOwogICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciop
OwogICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBhcHBl
bmRBcmd1bWVudChKU0M6OkpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdE9iamVjdC5oCmluZGV4IDhmN2IwZGNkZGQxMzk1MmQ1ZGUyNTdlOGZkOGUyZGVl
ZWRlMmZmOTYuLmJhYTFlYThlMDFiOWRhNmJiNjk4MTQ4NzNlNmZkNjJlMzFmODQyMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKQEAgLTI5LDgg
KzI5LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTY3JpcHRPYmplY3RfaAot
I2RlZmluZSBTY3JpcHRPYmplY3RfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBAIC00MSwxNSArNDAsMTUgQEAgY2xhc3Mg
U2NyaXB0T2JqZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgU2NyaXB0VmFsdWUmKTsKLSAgICBTY3JpcHRPYmplY3QoKSA6IG1fc2NyaXB0U3RhdGUobnVs
bHB0cikgeyB9CisgICAgU2NyaXB0T2JqZWN0KCkgeyB9CisKKyAgICBvcGVyYXRvciBKU0M6OkpT
T2JqZWN0KigpIGNvbnN0IHsgcmV0dXJuIGpzT2JqZWN0KCk7IH0KIAogICAgIEpTQzo6SlNPYmpl
Y3QqIGpzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsgfQogICAg
IEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3Rh
dGU7IH0KIAotcHJvdGVjdGVkOgotICAgIEpTQzo6RXhlY1N0YXRlKiBtX3NjcmlwdFN0YXRlOwor
cHJpdmF0ZToKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9zY3JpcHRTdGF0ZSB7IG51bGxwdHIgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIERlcHJlY2F0ZWQKLQotI2VuZGlmIC8vIFNjcmlwdE9iamVj
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCmluZGV4
IDc2ZGUxZWE1MmIxY2IxZWRlNjEyY2NmYzViMjY4YjFkYTJjZTE2MGMuLjFmMzU0ZjJjZWE4ZWU0
M2NhMTdlMDYxZDIzZmE3N2Q4MWQ0Njc2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIAotUmVmUHRyPEluc3BlY3RvclZhbHVlPiB0
b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK0pTX0VYUE9S
VF9QUklWQVRFIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGZj
YmY4MTQ1M2Q5Y2QxODQwODg2NGM0OTE1MzNiNDY5MGM3MDQ4MGMuLmQwZDEyNjMzY2E0MjQxZjAy
YTliNjcwMjg3YzlkZGM4ZDZkMDRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTEzMSw3ICsx
MzEsNyBAQCBTdHJpbmcgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNvdXJj
ZSgpCiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKEluamVjdGVk
U2NyaXB0U291cmNlX2pzLCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKIH0KIAot
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
IGludCBpZCkKK0pTQzo6SlNPYmplY3QqIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
IGludCBpZCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CiAKQEAgLTE0
MywxMiArMTQzLDEyIEBAIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluCiAgICAgSW5zcGVjdG9yRXZh
bHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5k
bGVyKCk7CiAgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGVIYW5kbGVyKHNjcmlw
dFN0YXRlLCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsIGV2YWx1YXRpb25FeGNlcHRpb24p
OwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlv
blZhbHVlLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdzLmFw
cGVuZChtX2luamVjdGVkU2NyaXB0SG9zdC0+d3JhcHBlcihzY3JpcHRTdGF0ZSwgZ2xvYmFsT2Jq
ZWN0KSk7CkBAIC0xNTcsMTAgKzE1Nyw3IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluCiAKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChzY3JpcHRTdGF0ZSwgZnVuY3Rpb25WYWx1ZSwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3MpOwogICAgIHNjcmlwdFN0
YXRlLT5jbGVhckV4Y2VwdGlvbigpOwotICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0Lmdl
dE9iamVjdCgpKTsKLQotICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKKyAg
ICByZXR1cm4gcmVzdWx0LmdldE9iamVjdCgpOwogfQogCiBJbmplY3RlZFNjcmlwdCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEV4ZWNTdGF0ZSogaW5zcGVjdGVkRXhl
Y1N0YXRlKQpAQCAtMTc2LDE0ICsxNzMsMTQgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihFeGVjU3RhdGUqIGluc3BlY3RlZEV4ZWMKICAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKICAgICBpbnQgaWQgPSBpbmplY3RlZFNj
cmlwdElkRm9yKGluc3BlY3RlZEV4ZWNTdGF0ZSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRT
Y3JpcHRTb3VyY2UoKSwgaW5zcGVjdGVkRXhlY1N0YXRlLCBpZCk7Ci0gICAgaWYgKGluamVjdGVk
U2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkgIT0gaW5zcGVjdGVkRXhlY1N0YXRlKSB7CisgICAg
YXV0byBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVk
U2NyaXB0U291cmNlKCksIGluc3BlY3RlZEV4ZWNTdGF0ZSwgaWQpOworICAgIGlmICghaW5qZWN0
ZWRTY3JpcHRPYmplY3QpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gcGFyc2Uv
ZXhlY3V0ZSBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyEiKTsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgSW5qZWN0ZWRTY3Jp
cHQgcmVzdWx0KGluamVjdGVkU2NyaXB0T2JqZWN0LCAmbV9lbnZpcm9ubWVudCk7CisgICAgSW5q
ZWN0ZWRTY3JpcHQgcmVzdWx0KHsgaW5zcGVjdGVkRXhlY1N0YXRlLCBpbmplY3RlZFNjcmlwdE9i
amVjdCB9LCAmbV9lbnZpcm9ubWVudCk7CiAgICAgbV9pZFRvSW5qZWN0ZWRTY3JpcHQuc2V0KGlk
LCByZXN1bHQpOwogICAgIGRpZENyZWF0ZUluamVjdGVkU2NyaXB0KHJlc3VsdCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IGUxOGQ3Y2Q0NjFiZGY5ZGE4NjU1ZTQ3YmVi
M2E2NjgwZDIyYWQ3NWMuLjYwNmQ5ZjdiNDliNTYzMjZiMDAwMDNiOTg4YWE0NThmNDZjZTEzYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaApAQCAtNzQsNyArNzQsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgU3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7Ci0gICAgRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6
OkV4ZWNTdGF0ZSosIGludCBpZCk7CisgICAgSlNDOjpKU09iamVjdCogY3JlYXRlSW5qZWN0ZWRT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKIAog
ICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZlB0cjxJbmpl
Y3RlZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAppbmRl
eCAxOTU3NzEzYWViYzkwOGQ3ZjllMmY3ZWMyMTMwZTljYjczZmVhZTY3Li43NTBjNWVjNzAyNzlm
M2E4ZmFhM2YyNDdiZThkYmQ4NzM3ZGVmNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaApAQCAtMjMsMTIg
KzIzLDEwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIE1lZGlhQ29udHJvbHNI
b3N0X2gKLSNkZWZpbmUgTWVkaWFDb250cm9sc0hvc3RfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBF
TkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
ICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTkwLDUgKzg4LDMgQEAgcHJpdmF0
ZToKIH0KIAogI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAppbmRleCBkZTc4NDM0MGZjMDQ1MjVkZjRlMzI0
YjlhNjIyODUwNTdmYjkyMzE1Li44NWQyYmYyNTI3OTY4MmY0MjU3OWYyZjIxNGRiNzg3OThlNDJk
MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVw
bGFjZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVw
bGFjZW1lbnQuaApAQCAtMjMsMTEgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgUGx1Z2luUmVwbGFjZW1lbnRfaAotI2RlZmluZSBQbHVnaW5SZXBsYWNlbWVudF9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlbmRlclB0ci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNDcsMTcgKzQ1LDE0IEBAIGNsYXNzIFBsdWdpblJlcGxhY2VtZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8UGx1Z2luUmVwbGFjZW1lbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Q
bHVnaW5SZXBsYWNlbWVudCgpIHsgfQogCi0gICAgdmlydHVhbCBib29sIGluc3RhbGxSZXBsYWNl
bWVudChTaGFkb3dSb290KikgPSAwOwotICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogc2NyaXB0
T2JqZWN0KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBpbnN0YWxsUmVwbGFjZW1l
bnQoU2hhZG93Um9vdCYpID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIHNjcmlwdE9i
amVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsQ3JlYXRl
UmVuZGVyZXIoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgPSAwOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgUGx1Z2luUmVwbGFjZW1lbnQoKSB7IH0KIH07CiAKLXR5cGVkZWYgUGFzc1JlZlB0
cjxQbHVnaW5SZXBsYWNlbWVudD4gKCpDcmVhdGVQbHVnaW5SZXBsYWNlbWVudCkoSFRNTFBsdWdJ
bkVsZW1lbnQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKK3R5cGVkZWYgUmVmPFBsdWdpblJlcGxhY2VtZW50PiAo
KkNyZWF0ZVBsdWdpblJlcGxhY2VtZW50KShIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMp
OwogdHlwZWRlZiBib29sICgqUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c1R5cGUpKGNvbnN0IFN0
cmluZyYpOwogdHlwZWRlZiBib29sICgqUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c0ZpbGVFeHRl
bnNpb24pKGNvbnN0IFN0cmluZyYpOwogdHlwZWRlZiBib29sICgqUGx1Z2luUmVwbGFjZW1lbnRT
dXBwb3J0c1VSTCkoY29uc3QgVVJMJik7CkBAIC04MCw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxQbHVnaW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQ
bHVnSW5FbGVtZW50JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBjb25zdCB7IHJldHVybiBtX2NvbnN0
cnVjdG9yKGVsZW1lbnQsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsgfQorICAgIFJlZjxQbHVn
aW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiBlbGVtZW50LCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdG9yKGVsZW1lbnQsIHBhcmFtTmFtZXMsIHBh
cmFtVmFsdWVzKTsgfQogICAgIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNUeXBlKG1pbWVUeXBlKTsgfQogICAgIGJvb2wg
c3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdCB7IHJl
dHVybiBtX3N1cHBvcnRzRmlsZUV4dGVuc2lvbihleHRlbnNpb24pOyB9CiAgICAgYm9vbCBzdXBw
b3J0c1VSTChjb25zdCBVUkwmIHVybCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c1VSTCh1cmwp
OyB9CkBAIC05NSw1ICs5MCwzIEBAIHByaXZhdGU6CiB0eXBlZGVmIHZvaWQgKCpQbHVnaW5SZXBs
YWNlbWVudFJlZ2lzdHJhcikoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4mKTsKIAogfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmgKaW5kZXggODIyNzFlMTcxMDY3Zjc2OGJhYjI4M2U3NjNh
NmUyN2MzNGQ0MWE2MC4uOWRjMzE1MGRmNzBlMGNhMjEwODU1ZWZiYjZlZmQ4NDcyYjgwZmM3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmgKQEAgLTIzLDQ2ICsyMywzOCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAotI2lmbmRlZiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudF9oCi0jZGVmaW5l
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
UGx1Z2luUmVwbGFjZW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CitjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBI
VE1MVmlkZW9FbGVtZW50OwotY2xhc3MgUmVuZGVyRWxlbWVudDsKLWNsYXNzIFJlbmRlclN0eWxl
OwotY2xhc3MgU2hhZG93Um9vdDsKIAotY2xhc3MgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQg
OiBwdWJsaWMgUGx1Z2luUmVwbGFjZW1lbnQgeworY2xhc3MgUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQgZmluYWwgOiBwdWJsaWMgUGx1Z2luUmVwbGFjZW1lbnQgewogcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyUGx1Z2luUmVwbGFjZW1lbnQoUGx1Z2luUmVwbGFjZW1lbnRSZWdp
c3RyYXIpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJik7
Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOwot
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzVVJMKGNvbnN0IFVSTCYpIHsgcmV0dXJuIHRydWU7IH0K
LSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5SZXBsYWNlbWVudD4gY3JlYXRlKEhU
TUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Ci0gICAgflF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50KCk7Ci0KLSAgICBib29sIGluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290Kikgb3Zl
cnJpZGU7Ci0gICAgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9zY3JpcHRPYmplY3Q7IH0KIAotICAgIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLQotICAgIEhU
TUxWaWRlb0VsZW1lbnQqIHBhcmVudEVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudC5n
ZXQoKTsgfQorICAgIHZpcnR1YWwgflF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50KCk7CiAKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgbW92aWVTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBwb3N0RXZl
bnQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBIVE1MVmlkZW9FbGVtZW50KiBwYXJlbnRFbGVtZW50
KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudChIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwor
ICAgIHN0YXRpYyBSZWY8UGx1Z2luUmVwbGFjZW1lbnQ+IGNyZWF0ZShIVE1MUGx1Z0luRWxlbWVu
dCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWltZVR5cGUoY29uc3Qg
U3RyaW5nJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzVVJMKGNvbnN0IFVSTCYpIHsgcmV0dXJu
IHRydWU7IH0KKworICAgIGJvb2wgaW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmKSBmaW5h
bDsKKyAgICBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoKSBmaW5hbCB7IHJldHVybiBtX3Nj
cmlwdE9iamVjdDsgfQorCisgICAgYm9vbCB3aWxsQ3JlYXRlUmVuZGVyZXIoKSBmaW5hbCB7IHJl
dHVybiBtX21lZGlhRWxlbWVudDsgfQorICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgYm9vbCBlbnN1cmVSZXBs
YWNlbWVudFNjcmlwdEluamVjdGVkKCk7CiAgICAgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdv
cmxkKCk7CkBAIC03MSw5ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEhUTUxWaWRlb0Vs
ZW1lbnQ+IG1fbWVkaWFFbGVtZW50OwogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IG1fbmFtZXM7
CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gbV92YWx1ZXM7Ci0gICAgSlNDOjpKU09iamVjdCog
bV9zY3JpcHRPYmplY3Q7CisgICAgSlNDOjpKU09iamVjdCogbV9zY3JpcHRPYmplY3Q7IC8vIEZJ
WE1FOiBXaHkgaXMgaXQgc2FmZSB0byBoYXZlIHRoaXMgcG9pbnRlciBoZXJlPyBXaGF0IGtlZXBz
IGl0IGFsaXZlIGR1cmluZyBHQz8KIH07CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW0KaW5kZXggZTdkY2Y4OTYzZDEwMzRiYmIyMmIwMDcxZGM0Y2I5ZWEyMmUxMjk1My4uNTE2
NTIzMWRhMjMxMjQ0MWVkYzU5YmJmOGUwY2RmMzkyYjIwMjhjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbQpAQCAtNzUsOSArNzUsOSBAQCB2b2lkIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
OjpyZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KFBsdWdpblJlcGxhY2VtZW50UmVnaQogICAgIHJl
Z2lzdHJhcihSZXBsYWNlbWVudFBsdWdpbihjcmVhdGUsIHN1cHBvcnRzTWltZVR5cGUsIHN1cHBv
cnRzRmlsZUV4dGVuc2lvbiwgc3VwcG9ydHNVUkwpKTsKIH0KIAotUGFzc1JlZlB0cjxQbHVnaW5S
ZXBsYWNlbWVudD4gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZShIVE1MUGx1Z0lu
RWxlbWVudCYgcGx1Z2luLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQorUmVmPFBsdWdpblJlcGxhY2VtZW50PiBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudChwbHVnaW4sIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQocGx1Z2luLCBwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcykpOwogfQogCiBib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
OjpzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC0xNzEsNyArMTcx
LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRT
Y3JpcHRJbmplY3RlZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290KQorYm9v
bCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jv
b3QmIHJvb3QpCiB7CiAgICAgaWYgKCFlbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBib29sIFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9vdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdMaXN0OwotICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCByb290
KSk7CisgICAgYXJnTGlzdC5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsICZyb290KSk7
CiAgICAgYXJnTGlzdC5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG1fcGFyZW50RWxl
bWVudCkpOwogICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB0aGlz
KSk7CiAgICAgYXJnTGlzdC5hcHBlbmQodG9KUzxTdHJpbmc+KGV4ZWMsIGdsb2JhbE9iamVjdCwg
bV9uYW1lcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCBjYWUyMTExNDIzNmVhN2FlYTc1
NjAwMmI0Mzg1ZTlkZjdiY2RhZGExLi5mMjBlNDE1ZjcwNmJlNzEzZTA4NTAzZmI1ODZkMzU0NTE2
M2Y0NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDMsOSArNDMsOSBAQCB2b2lkIFlv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6cmVnaXN0ZXJQbHVnaW5SZXBsYWNlbWVudChQbHVnaW5S
ZXBsYWNlbWVudFJlZ2lzdAogICAgIHJlZ2lzdHJhcihSZXBsYWNlbWVudFBsdWdpbihjcmVhdGUs
IHN1cHBvcnRzTWltZVR5cGUsIHN1cHBvcnRzRmlsZUV4dGVuc2lvbiwgc3VwcG9ydHNVUkwpKTsK
IH0KIAotUGFzc1JlZlB0cjxQbHVnaW5SZXBsYWNlbWVudD4gWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50OjpjcmVhdGUoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKK1JlZjxQ
bHVnaW5SZXBsYWNlbWVudD4gWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGUoSFRNTFBs
dWdJbkVsZW1lbnQmIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudChwbHVnaW4sIHBhcmFtTmFtZXMsIHBhcmFtVmFs
dWVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
KHBsdWdpbiwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpKTsKIH0KIAogYm9vbCBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
QEAgLTc3LDExICs3NywxMSBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gWW91VHViZVBsdWdp
blJlcGxhY2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdQogICAgIHJldHVybiBt
X2VtYmVkU2hhZG93RWxlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5bGUp
LCBpbnNlcnRpb25Qb3NpdGlvbik7CiB9CiAKLWJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9vdCkKK2Jvb2wgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkKIHsKICAg
ICBtX2VtYmVkU2hhZG93RWxlbWVudCA9IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ6OmNyZWF0
ZShtX3BhcmVudEVsZW1lbnQtPmRvY3VtZW50KCkpOwogCi0gICAgcm9vdC0+YXBwZW5kQ2hpbGQo
Km1fZW1iZWRTaGFkb3dFbGVtZW50KTsKKyAgICByb290LmFwcGVuZENoaWxkKCptX2VtYmVkU2hh
ZG93RWxlbWVudCk7CiAKICAgICBSZWY8SFRNTElGcmFtZUVsZW1lbnQ+IGlmcmFtZUVsZW1lbnQg
PSBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6aWZyYW1lVGFnLCBtX3BhcmVu
dEVsZW1lbnQtPmRvY3VtZW50KCkpOwogICAgIGlmIChtX2F0dHJpYnV0ZXMuY29udGFpbnMoIndp
ZHRoIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91
VHViZVBsdWdpblJlcGxhY2VtZW50LmgKaW5kZXggYzY4ZTA0OTlkNzgyNDdhMWVjYjA3ZmE2ZjJh
MWUwYTRhYmFkM2E2Mi4uOGI0YzAyMzFhZjNjNzM3ZWYxYjhjZTE2Y2ZlYThjODViYjczOGJlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuaApAQCAtMjMsMjQgKzIzLDE2IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCi0jaWZuZGVmIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudF9oCi0jZGVmaW5lIFlvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsdWdpblJl
cGxhY2VtZW50LmgiCi0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MUGx1Z0luRWxl
bWVudDsKLWNsYXNzIEhUTUxJRnJhbWVFbGVtZW50OwotY2xhc3MgUmVuZGVyRWxlbWVudDsKLWNs
YXNzIFJlbmRlclN0eWxlOwotY2xhc3MgU2hhZG93Um9vdDsKIGNsYXNzIFlvdVR1YmVFbWJlZFNo
YWRvd0VsZW1lbnQ7CiAKLWNsYXNzIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCA6IHB1YmxpYyBQ
bHVnaW5SZXBsYWNlbWVudCB7CitjbGFzcyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQgZmluYWwg
OiBwdWJsaWMgUGx1Z2luUmVwbGFjZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyUGx1Z2luUmVwbGFjZW1lbnQoUGx1Z2luUmVwbGFjZW1lbnRSZWdpc3RyYXIpOwogCkBA
IC00OCwyNSArNDAsMjEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFlvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudChIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotCisgICAgc3RhdGlj
IFJlZjxQbHVnaW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZh
bHVlcyk7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmKTsK
ICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0ZpbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJik7CiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNVUkwoY29uc3QgVVJMJik7Ci0gICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGx1Z2luUmVwbGFjZW1lbnQ+IGNyZWF0ZShIVE1MUGx1Z0luRWxlbWVudCYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpOwogCi0gICAgYm9vbCBpbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCop
IG92ZXJyaWRlOwotICAgIAorICAgIGJvb2wgaW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3Qm
KSBmaW5hbDsKKwogICAgIFN0cmluZyB5b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgcmF3VVJMKTsK
LSAgICAKLSAgICBib29sIHdpbGxDcmVhdGVSZW5kZXJlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZW1iZWRTaGFkb3dFbGVtZW50OyB9Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgCisKKyAgICBib29sIHdp
bGxDcmVhdGVSZW5kZXJlcigpIGZpbmFsIHsgcmV0dXJuIG1fZW1iZWRTaGFkb3dFbGVtZW50OyB9
CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1M
UGx1Z0luRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgZmluYWw7CisKICAgICBIVE1MUGx1Z0luRWxlbWVudCogbV9wYXJlbnRFbGVtZW50Owog
ICAgIFJlZlB0cjxZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50PiBtX2VtYmVkU2hhZG93RWxlbWVu
dDsKICAgICBLZXlWYWx1ZU1hcCBtX2F0dHJpYnV0ZXM7CiB9OwogCiB9Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBj
ZmJlNjc5M2VlNzgyMzdkOTIxYzVhMTdkN2M4MTVmOWY4MDEyYThhLi4zODIxNmE2NjkxZmI5ZGRh
ZTc4ZThkZDZkNDhlZGMwYWU5NzA3ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNTY1LDEzICs1NjUsMTAgQEAgdm9pZCBXZWJT
b2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEp
CiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2ZUJpbmFyeURhdGEo
KSAlbHUgYnl0ZSBiaW5hcnkgbWVzc2FnZSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmc+KGJpbmFyeURhdGEuc2l6ZSgpKSk7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKLSAg
ICBjYXNlIEJpbmFyeVR5cGVCbG9iOiB7CisgICAgY2FzZSBCaW5hcnlUeXBlQmxvYjoKICAgICAg
ICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2Vz
cywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgICAg
IFJlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmluYXJ5RGF0YSksIGVt
cHR5U3RyaW5nKCkpOwotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KGJsb2IucmVsZWFzZSgpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmco
KSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNy
ZWF0ZShXVEZNb3ZlKGJpbmFyeURhdGEpLCBlbXB0eVN0cmluZygpKSwgU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAg
ICAgY2FzZSBCaW5hcnlUeXBlQXJyYXlCdWZmZXI6CiAgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShiaW5hcnlEYXRhLmRhdGEoKSwg
YmluYXJ5RGF0YS5zaXplKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJp
bmcoKSkpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVJlcXVlc3RTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9N
UmVxdWVzdFN0YXRlLmgKaW5kZXggMmE0NzE0YzkzYjkzMDBlYTk3ZjQ4YTRlMWZiNjczNzI3MWUy
ZDI1Yi4uNDhmYjFkYTMzNjAzNjBkYmFhM2EwMzg5ZGE1NWEzNTBmMjZiOTJjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUmVxdWVzdFN0YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUmVxdWVzdFN0YXRlLmgKQEAgLTI1LDggKzI1LDcg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBET01SZXF1ZXN0U3RhdGVfaAotI2Rl
ZmluZSBET01SZXF1ZXN0U3RhdGVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJET01XcmFw
cGVyV29ybGQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNDEsNyArNDAsNiBAQCBjbGFz
cyBET01SZXF1ZXN0U3RhdGUgewogcHVibGljOgogICAgIGV4cGxpY2l0IERPTVJlcXVlc3RTdGF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAg
ICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAg
ICAgICAsIG1fZXhlYyhudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKGlzPERvY3VtZW50Pigq
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSkgewogICAgICAgICAgICAgRG9jdW1lbnQmIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwpAQCAt
NzksNCArNzcsMyBAQCBwcml2YXRlOgogfTsKIAogfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmgKaW5kZXggZDMxNzJhZjQ0N2ZmYWI4MWVmYzY1ODU4M2NlYTkx
NDViMTYyMmE5MC4uMGY0NDMxNDVjZDZjN2ViZmNkYTJlYTE3YjExMzI0ZTE3MjcwNDYzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaApAQCAtMjQsOCArMjQsNyBAQAog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIERpY3Rpb25hcnlfaAotI2RlZmluZSBEaWN0aW9u
YXJ5X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVk
ZSAiSlNFdmVudExpc3RlbmVyLmgiCkBAIC00NywxOCArNDYsMTMgQEAgcHVibGljOgogICAgIERp
Y3Rpb25hcnkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIGEgdmFsdWUgd2FzIGZvdW5kIGZvciB0aGUgcHJvdmlkZWQgcHJvcGVydHkuCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdD4KLSAgICBib29sIGdldChjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHQ+Ci0gICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNv
bnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gYm9vbCBnZXQoY29uc3QgY2hhciog
cHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1
bHQ+IGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25zdDsK
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+Ci0gICAgT3B0aW9uYWw8UmVzdWx0PiBn
ZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXN1bHQ+IE9wdGlvbmFsPFJlc3VsdD4gZ2V0KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkg
Y29uc3Q7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdl
dCkgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRh
cmdldCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQp
IGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFJlZlB0cjxFdmVudExpc3RlbmVyPiBn
ZXRFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNv
bnN0OwogCiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeS5p
c1ZhbGlkKCk7IH0KICAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QgeyByZXR1cm4g
IW1fZGljdGlvbmFyeS5pc1ZhbGlkKCk7IH0KQEAgLTY5LDYxICs2Myw0MCBAQCBwdWJsaWM6CiAg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFy
eS5leGVjU3RhdGUoKTsgfQogCiBwcml2YXRlOgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
ICAgIEpTQzo6SlNPYmplY3QqIGFzSlNPYmplY3QoVCopIGNvbnN0OworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IEpTQzo6SlNPYmplY3QqIGFzSlNPYmplY3QoVCopIGNvbnN0OwogICAgIAogICAg
IEpTRGljdGlvbmFyeSBtX2RpY3Rpb25hcnk7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVz
dWx0PgotYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBSZXN1
bHQmIHJlc3VsdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gYm9vbCBEaWN0aW9u
YXJ5OjpnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICByZXR1cm4gbV9kaWN0aW9uYXJ5LmdldChwcm9wZXJ0eU5hbWUsIHJlc3Vs
dCk7CisgICAgcmV0dXJuIG1fZGljdGlvbmFyeS5pc1ZhbGlkKCkgJiYgbV9kaWN0aW9uYXJ5Lmdl
dChwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+
Ci1ib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgUmVzdWx0
JiByZXN1bHQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQ+IGJvb2wgRGljdGlvbmFy
eTo6Z2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QK
IHsKICAgICByZXR1cm4gZ2V0KHByb3BlcnR5TmFtZS51dGY4KCkuZGF0YSgpLCByZXN1bHQpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQ+Ci1PcHRpb25hbDxSZXN1bHQ+IERpY3Rpb25h
cnk6OmdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXN1bHQ+IE9wdGlvbmFsPFJlc3VsdD4gRGljdGlvbmFyeTo6Z2V0KGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBSZXN1bHQgcmVzdWx0OwotCiAgICAgaWYgKCFnZXQo
cHJvcGVydHlOYW1lLCByZXN1bHQpKQogICAgICAgICByZXR1cm4gTnVsbG9wdDsKLQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBUKiB0YXJnZXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gRGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0
eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgZXZlbnRMaXN0ZW5lcjsKLSAgICBpZiAoIW1fZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0eShw
cm9wZXJ0eU5hbWUsIGV2ZW50TGlzdGVuZXIpKQorICAgIEpTQzo6SlNWYWx1ZSBldmVudExpc3Rl
bmVyOworICAgIGlmICghZ2V0KHByb3BlcnR5TmFtZSwgZXZlbnRMaXN0ZW5lcikgfHwgIWV2ZW50
TGlzdGVuZXIgfHwgIWV2ZW50TGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgaWYgKGV2ZW50TGlzdGVuZXIuaGFzTm9WYWx1ZSgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBpZiAoIWV2ZW50TGlzdGVuZXIuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNP
YmplY3QoZXZlbnRMaXN0ZW5lci5qc1ZhbHVlKCkpLCBhc0pTT2JqZWN0KHRhcmdldCksIHRydWUs
IGN1cnJlbnRXb3JsZChtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCkpKTsKKyAgICByZXR1cm4gSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QoZXZlbnRMaXN0ZW5lciksIGFzSlNPYmplY3Qo
dGFyZ2V0KSwgdHJ1ZSwgY3VycmVudFdvcmxkKGV4ZWNTdGF0ZSgpKSk7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50
TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IFJlZlB0cjxFdmVudExpc3RlbmVyPiBEaWN0aW9uYXJ5OjpnZXRF
dmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGdldEV2ZW50TGlzdGVuZXIocHJvcGVydHlOYW1lLnV0ZjgoKS5kYXRh
KCksIHRhcmdldCk7CiB9CiAKIH0KLQotI2VuZGlmIC8vIERpY3Rpb25hcnlfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0
b20uY3BwCmluZGV4IDQzYzI1YTg4ZjQ3NDNmNTFkMTRkOTkwNjY2Zjk5YTllNWY3ZTBlM2IuLmVm
ODM5ZDg1MTgxNzllZWIyYTIzZWFlNDBmZmJlZTYwZWViZjAwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5j
cHAKQEAgLTEyMiwxMiArMTIyLDEwIEBAIEpTVmFsdWUgSlNDb21tYW5kTGluZUFQSUhvc3Q6Omdl
dEV2ZW50TGlzdGVuZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNDb21tYW5kTGlu
ZUFQSUhvc3Q6Omluc3BlY3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBpZiAoc3RhdGUuYXJn
dW1lbnRDb3VudCgpID49IDIpIHsKLSAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgb2Jq
ZWN0KHN0YXRlLnZtKCksIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICAgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgaGludHMoc3RhdGUudm0oKSwgc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMSkpOwotICAgICAgICB3cmFwcGVkKCkuaW5zcGVjdEltcGwob2JqZWN0LnRvSW5zcGVj
dG9yVmFsdWUoJnN0YXRlKSwgaGludHMudG9JbnNwZWN0b3JWYWx1ZSgmc3RhdGUpKTsKLSAgICB9
Ci0KKyAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgd3JhcHBlZCgpLmluc3BlY3RJbXBsKEluc3BlY3Rvcjo6dG9JbnNw
ZWN0b3JWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpLAorICAgICAgICBJ
bnNwZWN0b3I6OnRvSW5zcGVjdG9yVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDEpKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAxZTViMGNh
YTFmNTQ2MjcxYjM1NTI1Y2M5Zjk0OGU2N2IzZDA4Njc1Li40ZjMyYTFlODk2M2I5MjE2MGFkMTdm
MTUyOGQ1MWQ1ZjJkMTk2MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC01NywxMSArNTcsMTAgQEAgSlNWYWx1ZSBK
U01lc3NhZ2VFdmVudDo6ZGF0YShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogICAgIEpTVmFsdWUg
cmVzdWx0OwogICAgIHN3aXRjaCAoZXZlbnQuZGF0YVR5cGUoKSkgewogICAgIGNhc2UgTWVzc2Fn
ZUV2ZW50OjpEYXRhVHlwZVNjcmlwdFZhbHVlOiB7Ci0gICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIHNjcmlwdFZhbHVlID0gZXZlbnQuZGF0YUFzU2NyaXB0VmFsdWUoKTsKLSAgICAgICAg
aWYgKHNjcmlwdFZhbHVlLmhhc05vVmFsdWUoKSkKKyAgICAgICAgSlNWYWx1ZSBkYXRhVmFsdWUg
PSBldmVudC5kYXRhQXNTY3JpcHRWYWx1ZSgpOworICAgICAgICBpZiAoIWRhdGFWYWx1ZSkKICAg
ICAgICAgICAgIHJlc3VsdCA9IGpzTnVsbCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IEpTVmFsdWUgZGF0YVZhbHVlID0gc2NyaXB0VmFsdWUuanNWYWx1ZSgpOwogICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBtYWtlIHN1cmUgTWVzc2FnZUV2ZW50cyBkbyBub3QgbGVhayBvYmplY3Rz
IGluIHRoZWlyIHN0YXRlIHByb3BlcnR5IGFjcm9zcyBpc29sYXRlZCBET00gd29ybGRzLgogICAg
ICAgICAgICAgLy8gSWRlYWxseSwgd2Ugd291bGQgY2hlY2sgdGhhdCB0aGUgd29ybGRzIGhhdmUg
ZGlmZmVyZW50IHByaXZpbGVnZXMgYnV0IHRoYXQncyBub3QgcG9zc2libGUgeWV0LgogICAgICAg
ICAgICAgaWYgKGRhdGFWYWx1ZS5pc09iamVjdCgpICYmICZ3b3JsZEZvckRPTU9iamVjdChkYXRh
VmFsdWUuZ2V0T2JqZWN0KCkpICE9ICZjdXJyZW50V29ybGQoJnN0YXRlKSkgewpAQCAtMTIwLDcg
KzExOSw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgaGFuZGxlSW5pdE1lc3NhZ2VFdmVudChKU01l
c3NhZ2VFdmVudCoganNFdmVudCwgSlNDOjpFeGVjU3RhCiAgICAgICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkYXRhQXJnID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoc3RhdGUudm0oKSwgc3RhdGUuYXJndW1lbnQoMykpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIGRhdGFBcmcoc3RhdGUudm0oKSwgc3RhdGUuYXJndW1lbnQoMykpOwogICAgIGlmIChz
dGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDMxMjNjOTQ2
MDk1NGViZGIzNWQyMjhmOThkOTYxY2Y0N2ZjM2YyNjguLjI2ZmE5ZTVkYTc3YTU5ZmFlN2EwYjhh
NWRmZGFhZTQ2NjU4ZWVkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVj
dGlvbi5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
U1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCmluZGV4IDc4ZDJk
NmU0ODkwZGFlMzE4M2U3ZWY0MmI0MTUzZDliNjVhY2EyNWQuLjJiM2MwOWJmMDQzZDUwYmRhYmNi
ZTY0MTNkNjQ3MDRhNzFkYTQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5oCkBAIC0yMywxMiArMjMsMTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgSlNOb2RlQ3VzdG9tX2gKLSNkZWZpbmUgSlNOb2RlQ3VzdG9tX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCi0jaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTkxLDUgKzg5LDMgQEAgQUxXQVlTX0lOTElORSBKU05vZGUqIGpzTm9k
ZUNhc3QoSlNDOjpKU1ZhbHVlIHZhbHVlKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBKU0RPTU5vZGVDdXN0b21faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKaW5kZXggOTVhMGZiNzgyNWNiMzA2
YjA0OGJjNzgzY2ZmMWM2YjlhMTE3YjIxNy4uNzFiNGZlZjNlMjU1NjU1YmZiYjQ4ZTA1YmM4ZDJh
NDI5ODc1MjAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BT
dGF0ZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bv
cFN0YXRlRXZlbnRDdXN0b20uY3BwCkBAIC01OCwxNyArNTgsMTUgQEAgSlNWYWx1ZSBKU1BvcFN0
YXRlRXZlbnQ6OnN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKICAgICBQb3BTdGF0ZUV2
ZW50JiBldmVudCA9IHdyYXBwZWQoKTsKIAotICAgIGlmICghZXZlbnQuc3RhdGUoKS5oYXNOb1Zh
bHVlKCkpIHsKKyAgICBpZiAoYXV0byBldmVudFN0YXRlID0gZXZlbnQuc3RhdGUoKSkgewogICAg
ICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBhIFBvcFN0YXRlRXZlbnQgZG9lcyBub3QgbGVh
ayBvYmplY3RzIGluIGl0cyBzdGF0ZSBwcm9wZXJ0eSBhY3Jvc3MgaXNvbGF0ZWQgRE9NIHdvcmxk
cy4KICAgICAgICAgLy8gSWRlYWxseSwgd2Ugd291bGQgY2hlY2sgdGhhdCB0aGUgd29ybGRzIGhh
dmUgZGlmZmVyZW50IHByaXZpbGVnZXMgYnV0IHRoYXQncyBub3QgcG9zc2libGUgeWV0LgotICAg
ICAgICBKU1ZhbHVlIGV2ZW50U3RhdGUgPSBldmVudC5zdGF0ZSgpLmpzVmFsdWUoKTsKICAgICAg
ICAgaWYgKGV2ZW50U3RhdGUuaXNPYmplY3QoKSAmJiAmd29ybGRGb3JET01PYmplY3QoZXZlbnRT
dGF0ZS5nZXRPYmplY3QoKSkgIT0gJmN1cnJlbnRXb3JsZCgmc3RhdGUpKSB7Ci0gICAgICAgICAg
ICBpZiAoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gZXZl
bnQudHJ5U2VyaWFsaXplU3RhdGUoJnN0YXRlKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHNlcmlh
bGl6ZWRWYWx1ZSA9IGV2ZW50LnRyeVNlcmlhbGl6ZVN0YXRlKCZzdGF0ZSkpCiAgICAgICAgICAg
ICAgICAgZXZlbnRTdGF0ZSA9IHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxpemUoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKSwgbnVsbHB0cik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgZXZlbnRTdGF0ZSA9IGpzTnVsbCgpOwogICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBy
ZXR1cm4gY2FjaGVTdGF0ZShzdGF0ZSwgdGhpcywgZXZlbnRTdGF0ZSk7CiAgICAgfQogICAgIApA
QCAtODIsNyArODAsNyBAQCBKU1ZhbHVlIEpTUG9wU3RhdGVFdmVudDo6c3RhdGUoRXhlY1N0YXRl
JiBzdGF0ZSkgY29uc3QKICAgICAvLyBUaGUgY3VycmVudCBoaXN0b3J5IHN0YXRlIG9iamVjdCBt
aWdodCd2ZSBjaGFuZ2VkIGluIHRoZSBtZWFudGltZSwgc28gd2UgbmVlZCB0byB0YWtlIGNhcmUK
ICAgICAvLyBvZiB1c2luZyB0aGUgY29ycmVjdCBvbmUsIGFuZCBhbHdheXMgc2hhcmUgdGhlIHNh
bWUgZGVzZXJpYWxpemF0aW9uIHdpdGggaGlzdG9yeS5zdGF0ZS4KIAotICAgIGJvb2wgaXNTYW1l
U3RhdGUgPSBoaXN0b3J5LT5pc1NhbWVBc0N1cnJlbnRTdGF0ZShldmVudC5zZXJpYWxpemVkU3Rh
dGUoKS5nZXQoKSk7CisgICAgYm9vbCBpc1NhbWVTdGF0ZSA9IGhpc3RvcnktPmlzU2FtZUFzQ3Vy
cmVudFN0YXRlKGV2ZW50LnNlcmlhbGl6ZWRTdGF0ZSgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdDsK
IAogICAgIGlmIChpc1NhbWVTdGF0ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmgKaW5kZXggN2UyNmFjN2E5YmExNTMzM2UyOTYyODg0YWUwZDZlYzkxYzYzMDJiNi4u
NzQ0MjFmZDk1YmExNzc1NmViODljMDA0MjZjMzNmYjU0NTQ5ODM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC0yOSwxNCArMjksMTQgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTY3JpcHRTdGF0ZV9oCi0jZGVmaW5lIFNjcmlwdFN0YXRl
X2gKKyNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBET01XcmFw
cGVyV29ybGQ7CiBjbGFzcyBGcmFtZTsKQEAgLTQ1LDEyICs0NSw2IEBAIGNsYXNzIFBhZ2U7CiBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAK
LS8vIFRoZSBpZGVhIGlzIHRvIGV4cG9zZSAic3RhdGUtbGlrZSIgbWV0aG9kcyAoaGFkRXhjZXB0
aW9uLCBhbmQgYW55IG90aGVyCi0vLyBtZXRob2RzIHdoZXJlIEV4ZWNTdGF0ZSBqdXN0IGRpcHMg
aW50byB2bSkgb2YgSlNDOjpFeGVjU3RhdGUgYXMgYQotLy8gc2VwYXJhdGUgYWJzdHJhY3Rpb24u
Ci0vLyBGb3Igbm93LCB0aGUgc2VwYXJhdGlvbiBpcyBwdXJlbHkgYnkgY29udmVudGlvbi4KLXR5
cGVkZWYgSlNDOjpFeGVjU3RhdGUgU2NyaXB0U3RhdGU7Ci0KIERPTVdpbmRvdyogZG9tV2luZG93
RnJvbUV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopOwogRnJhbWUqIGZyYW1lRnJvbUV4ZWNTdGF0
ZShKU0M6OkV4ZWNTdGF0ZSopOwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTYyLDUgKzU2LDMg
QEAgV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdy
YXBwZXJXb3JsZCYsIFBhZ2UqKTsKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gU2NyaXB0U3RhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggODcwMDJlZmU2ODZiNTlh
MDg0ZTYzNzhlODkyNTk2NDg2YzU2MWZhZC4uYTdlM2FlYmQ4YTFlOGFiMDVhZTRkMzQ0NDI2YzVj
MWIzNmIzZTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNNZXNz
YWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
PGxpbWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKaW5kZXggYmNkMmQ1NWViY2M5M2U0NDM1MjNhODgzM2JmNmM3NTBkOGZjZmJm
My4uNzMxYWNjMmZjMjMxYmY3ZGFiZDY1MDEzNmYyMmYyMDcwM2RlZjM4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTI0
LDEwICsyNCw4IEBACiAgKgogICovCiAKLSNpZm5kZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gK
LSNkZWZpbmUgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgpA
QCAtMTE1LDUgKzExMywzIEBAIHByaXZhdGU6CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBTZXJpYWxp
emVkU2NyaXB0VmFsdWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggYTBiZDgyNDc2MGYy
ZjA5ZjI0YjA4ZDhmMmY4YzkwYzIzYzRjYTNjNS4uNmI3NTZiODMwZTkxNjczNmRkMzM1YTZiNmMy
NWY3OWNjZTk0NTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3RyaW5nPiB2YWx1ZUZyb21EaWN0aW9uYXJ5KGNvbnN0
IERpY3Rpb25hcnkmIGRpY3Rpb25hcnksCiAgICAgcmV0dXJuIHJlc3VsdC5pc051bGwoKSA/IE51
bGxvcHQgOiBPcHRpb25hbDxTdHJpbmc+KHJlc3VsdCk7CiB9CiAKLVJlZlB0cjxGb250RmFjZT4g
Rm9udEZhY2U6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGZhbWlseSwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIHNvdXJjZSwgY29uc3QgRGljdGlvbmFyeSYgZGVzY3JpcHRvcnMsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEZvbnRGYWNlPiBGb250RmFjZTo6Y3JlYXRlKEpTQzo6
RXhlY1N0YXRlJiBleGVjU3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgZmFtaWx5LCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5
JiBkZXNjcmlwdG9ycywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFjb250ZXh0Lmlz
RG9jdW1lbnQoKSkgewogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKQEAgLTY2LDIwICs2NiwxOSBA
QCBSZWZQdHI8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgU2NyaXB0RXhlY3V0aW9uQ29udAogCiAgICAgUmVmPEZvbnRGYWNlPiByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IEZvbnRGYWNlKGV4ZWNTdGF0ZSwgZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRl
eHQpLmZvbnRTZWxlY3RvcigpKSk7CiAKKyAgICBlYyA9IDA7CiAgICAgcmVzdWx0LT5zZXRGYW1p
bHkoZmFtaWx5LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGlmIChzb3VyY2UuanNWYWx1ZSgpLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIHNv
dXJjZVN0cmluZyA9IHNvdXJjZS5qc1ZhbHVlKCkudG9TdHJpbmcoJmV4ZWNTdGF0ZSktPnZhbHVl
KCZleGVjU3RhdGUpOworICAgIGlmIChzb3VyY2UuaXNTdHJpbmcoKSkgeworICAgICAgICBTdHJp
bmcgc291cmNlU3RyaW5nID0gc291cmNlLnRvU3RyaW5nKCZleGVjU3RhdGUpLT52YWx1ZSgmZXhl
Y1N0YXRlKTsKICAgICAgICAgYXV0byB2YWx1ZSA9IEZvbnRGYWNlOjpwYXJzZVN0cmluZyhzb3Vy
Y2VTdHJpbmcsIENTU1Byb3BlcnR5U3JjKTsKLSAgICAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4o
dmFsdWUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QgPSBkb3du
Y2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSk7Ci0gICAgICAgICAgICBDU1NGb250RmFjZTo6YXBw
ZW5kU291cmNlcyhyZXN1bHQtPmJhY2tpbmcoKSwgc3JjTGlzdCwgJmRvd25jYXN0PERvY3VtZW50
Pihjb250ZXh0KSwgZmFsc2UpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWlzPENT
U1ZhbHVlTGlzdD4odmFsdWUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQorICAgICAgICBDU1NGb250
RmFjZTo6YXBwZW5kU291cmNlcyhyZXN1bHQtPmJhY2tpbmcoKSwgZG93bmNhc3Q8Q1NTVmFsdWVM
aXN0PigqdmFsdWUpLCAmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBmYWxzZSk7CiAgICAg
fQogCiAgICAgaWYgKGF1dG8gc3R5bGUgPSB2YWx1ZUZyb21EaWN0aW9uYXJ5KGRlc2NyaXB0b3Jz
LCAic3R5bGUiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggZDZjMTlhMzcxZDg4MTlkNjg4ZDFj
ZGFmZDY2ZDIzNTQzOWM4ZDk0OS4uZmNmYzliNzU3YzBiN2ViMzg3YTVkOTI0ZDZmMGRmNjZlMjJh
YjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgRGljdGlv
bmFyeTsKIAogY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFj
ZT4sIHB1YmxpYyBDU1NGb250RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPEZvbnRGYWNlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBzb3VyY2UsIGNvbnN0IERpY3Rpb25hcnkmIGRlc2NyaXB0b3JzLCBFeGNlcHRpb25Db2RlJik7
CisgICAgc3RhdGljIFJlZlB0cjxGb250RmFjZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgZmFtaWx5LCBKU0M6OkpTVmFsdWUg
c291cmNlLCBjb25zdCBEaWN0aW9uYXJ5JiBkZXNjcmlwdG9ycywgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHN0YXRpYyBSZWY8Rm9udEZhY2U+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIENTU0ZvbnRG
YWNlJik7CiAgICAgdmlydHVhbCB+Rm9udEZhY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcAppbmRleCA2YWJjODZjZDBkZTM1ZWIyNWFhN2QyZGQ3MDZhY2E0MmRlN2RkNGY1Li4z
ZGQ2NDI2NjQ2YmUwYzAwODczNDA2YWQyODAxYTIyNmM5NWMxNTNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNywxMiArMzksMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFs
aWRTb3VyY2UoRXZlbnRUYXJnZXQqIHNvdXJjZSkKICAgICByZXR1cm4gIXNvdXJjZSB8fCBzb3Vy
Y2UtPnRvRE9NV2luZG93KCkgfHwgc291cmNlLT5pc01lc3NhZ2VQb3J0KCk7CiB9CiAKLU1lc3Nh
Z2VFdmVudDo6TWVzc2FnZUV2ZW50KCkKK2lubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVu
dCgpCiAgICAgOiBtX2RhdGFUeXBlKERhdGFUeXBlU2NyaXB0VmFsdWUpCiB7CiB9CiAKLU1lc3Nh
Z2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVz
c2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0JiBp
bml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9kYXRh
VHlwZShEYXRhVHlwZVNjcmlwdFZhbHVlKQogICAgICwgbV9kYXRhQXNTY3JpcHRWYWx1ZShpbml0
aWFsaXplci5kYXRhKQpAQCAtNTMsNDAgKzU1LDI4IEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYgaW5p
CiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0
RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8
TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCi0gICAgOiBFdmVudChldmVudE5hbWVzKCkubWVzc2Fn
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpCi0gICAgLCBtX2RhdGFUeXBlKERhdGFUeXBlU2NyaXB0VmFs
dWUpCi0gICAgLCBtX2RhdGFBc1NjcmlwdFZhbHVlKGRhdGEpCi0gICAgLCBtX29yaWdpbihvcmln
aW4pCi0gICAgLCBtX2xhc3RFdmVudElkKGxhc3RFdmVudElkKQotICAgICwgbV9zb3VyY2Uoc291
cmNlKQotICAgICwgbV9wb3J0cyhXVEZNb3ZlKHBvcnRzKSkKLXsKLSAgICBBU1NFUlQoaXNWYWxp
ZFNvdXJjZShtX3NvdXJjZS5nZXQoKSkpOwotfQotCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVu
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+
IHNvdXJjZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQoraW5saW5l
IE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IEV2ZW50VGFyZ2V0KiBzb3VyY2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBw
b3J0cykKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxz
ZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpCi0gICAg
LCBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZShkYXRhKQorICAgICwgbV9kYXRhQXNTZXJp
YWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikK
ICAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2Up
CiAgICAgLCBtX3BvcnRzKFdURk1vdmUocG9ydHMpKQogewotICAgIEFTU0VSVChpc1ZhbGlkU291
cmNlKG1fc291cmNlLmdldCgpKSk7CisgICAgQVNTRVJUKGlzVmFsaWRTb3VyY2Uoc291cmNlKSk7
CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxh
c3RFdmVudElkKQotICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQoraW5s
aW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCkKKyAgICA6IEV2ZW50KHR5cGUsIGZhbHNlLCBm
YWxzZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpCi0g
ICAgLCBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZShkYXRhKQorICAgICwgbV9kYXRhQXNT
ZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fb3JpZ2luKG9yaWdp
bikKICAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCiB7CiB9CiAKLU1lc3NhZ2VFdmVu
dDo6TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
CitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbikKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZl
bnQsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVTdHJpbmcpCiAgICAg
LCBtX2RhdGFBc1N0cmluZyhkYXRhKQpAQCAtOTQsMTUgKzg0LDE1IEBAIE1lc3NhZ2VFdmVudDo6
TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7
CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QmxvYj4gZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQo
UmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgOiBFdmVudChldmVu
dE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFUeXBlKERh
dGFUeXBlQmxvYikKLSAgICAsIG1fZGF0YUFzQmxvYihkYXRhKQorICAgICwgbV9kYXRhQXNCbG9i
KFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiB7CiB9CiAKLU1lc3NhZ2VF
dmVudDo6TWVzc2FnZUV2ZW50KFJlZjxBcnJheUJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbikKK2lubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChSZWY8QXJyYXlCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgOiBFdmVudChldmVudE5hbWVz
KCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFUeXBlKERhdGFUeXBl
QXJyYXlCdWZmZXIpCiAgICAgLCBtX2RhdGFBc0FycmF5QnVmZmVyKFdURk1vdmUoZGF0YSkpCkBA
IC0xMTAsNiArMTAwLDQxIEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFJlZjxBcnJheUJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKIH0KIAorUmVmPE1lc3NhZ2VF
dmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJy
YXk+IHBvcnRzLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBFdmVudFRhcmdldCogc291
cmNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRh
dGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIFdURk1vdmUocG9ydHMpKSk7Cit9CisK
K1JlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQodHlwZSwgV1RGTW92ZShkYXRhKSwgb3JpZ2luLCBsYXN0
RXZlbnRJZCkpOworfQorCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4pKTsKK30KKworUmVmPE1lc3Nh
Z2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KFdU
Rk1vdmUoZGF0YSksIG9yaWdpbikpOworfQorCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KFdURk1vdmUoZGF0YSks
IG9yaWdpbikpOworfQorCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZUZv
ckJpbmRpbmdzKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQpOwor
fQorCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6
ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUsIGluaXRp
YWxpemVyKSk7Cit9CisKIE1lc3NhZ2VFdmVudDo6fk1lc3NhZ2VFdmVudCgpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggMDY4Y2I4ZTRlYWI4M2E1NGU3YWVkZTJkZTYzN2Fh
MWU5N2NjOTczZC4uNmNjOGRhNTNjYWRmOGU4OGQxMjVkMGI1N2EyZDNiMTQ5YzM4ZWVhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjUsMjEgKzI1LDE2IEBACiAgKgogICovCiAK
LSNpZm5kZWYgTWVzc2FnZUV2ZW50X2gKLSNkZWZpbmUgTWVzc2FnZUV2ZW50X2gKKyNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2lu
Y2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBCbG9iOwogCiBzdHJ1
Y3QgTWVzc2FnZUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIGRhdGE7CkBAIC01MSwzOCArNDYsMTMgQEAgc3RydWN0IE1lc3NhZ2VFdmVu
dEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKIAogY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDog
cHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0g
U3RyaW5nKCksIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSA9IG51bGxwdHIpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2lu
LCBsYXN0RXZlbnRJZCwgc291cmNlLCBXVEZNb3ZlKHBvcnRzKSkpOwotICAgIH0KLSAgICBzdGF0
aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFy
cmF5PiBwb3J0cywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBT
dHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlID0gbnVsbHB0cikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4s
IGxhc3RFdmVudElkLCBzb3VyY2UsIFdURk1vdmUocG9ydHMpKSk7Ci0gICAgfQotICAgIHN0YXRp
YyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQodHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkKSk7Ci0g
ICAgfQotICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbikpOwotICAgIH0KLSAg
ICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8QmxvYj4gZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4pKTsKLSAgICB9Ci0gICAgc3Rh
dGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4pKTsKLSAgICB9Ci0g
ICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudCk7Ci0gICAgfQotICAgIHN0
YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IE1lc3NhZ2VFdmVudEluaXQmIGluaXRpYWxpemVyKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUsIGluaXRpYWxpemVy
KSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+LCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9
IHsgfSwgRXZlbnRUYXJnZXQqIHNvdXJjZSA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWY8TWVz
c2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCk7CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9KTsKKyAgICBzdGF0aWMgUmVm
PE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxCbG9iPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKTsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CisgICAgc3RhdGljIFJlZjxNZXNzYWdl
RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+
IGNyZWF0ZUZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVzc2Fn
ZUV2ZW50SW5pdCYpOwogICAgIHZpcnR1YWwgfk1lc3NhZ2VFdmVudCgpOwogCiAgICAgdm9pZCBp
bml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cq
IHNvdXJjZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKQEAgLTExMCw3ICs4
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVR5cGVBcnJheUJ1ZmZlcgogICAgIH07CiAgICAg
RGF0YVR5cGUgZGF0YVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFUeXBlOyB9Ci0gICAgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGFBc1NjcmlwdFZhbHVlKCkgY29uc3QgeyBB
U1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZVNjcmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFz
U2NyaXB0VmFsdWU7IH0KKyAgICBKU0M6OkpTVmFsdWUgZGF0YUFzU2NyaXB0VmFsdWUoKSBjb25z
dCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU2NyaXB0VmFsdWUpOyByZXR1cm4gbV9k
YXRhQXNTY3JpcHRWYWx1ZTsgfQogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBkYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBl
ID09IERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFzU2VyaWFs
aXplZFNjcmlwdFZhbHVlOyB9CiAgICAgU3RyaW5nIGRhdGFBc1N0cmluZygpIGNvbnN0IHsgQVNT
RVJUKG1fZGF0YVR5cGUgPT0gRGF0YVR5cGVTdHJpbmcpOyByZXR1cm4gbV9kYXRhQXNTdHJpbmc7
IH0KICAgICBCbG9iKiBkYXRhQXNCbG9iKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBE
YXRhVHlwZUJsb2IpOyByZXR1cm4gbV9kYXRhQXNCbG9iLmdldCgpOyB9CkBAIC0xMjEsMTMgKzkx
LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVzc2FnZUV2ZW50KCk7CiAgICAgTWVzc2Fn
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IE1lc3NhZ2VFdmVudEluaXQmKTsKLSAg
ICBNZXNzYWdlRXZlbnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVmUHRyPEV2
ZW50VGFyZ2V0PiBzb3VyY2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5Pik7Ci0g
ICAgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0
cjxFdmVudFRhcmdldD4gc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4p
OwotICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnVi
YmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCk7Ci0K
LSAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbik7Ci0gICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QmxvYj4g
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwotICAgIGV4cGxpY2l0IE1lc3NhZ2VFdmVudChS
ZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOworICAgIE1lc3Nh
Z2VFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBFdmVudFRhcmdldCogc291cmNl
LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4pOworICAgIE1lc3NhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpOwor
ICAgIE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
KTsKKyAgICBNZXNzYWdlRXZlbnQoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmln
aW4pOworICAgIE1lc3NhZ2VFdmVudChSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4pOwogCiAgICAgRGF0YVR5cGUgbV9kYXRhVHlwZTsKICAgICBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSBtX2RhdGFBc1NjcmlwdFZhbHVlOwpAQCAtMTQzLDUgKzExMSwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBNZXNzYWdl
RXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXJDb25kaXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyQ29uZGl0aW9uLmgKaW5kZXggMmI5
YWI2OGZkY2MzZjJlNjdjNmU1ZTIwYjBlMTA1MjU2MDM1Njc3Yy4uOGNjZWJlMzAwZmZmYzkzOGQ1
ZTE0MDFkNDMwNzkzZjlmMWYzOGM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVGaWx0ZXJDb25kaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlckNv
bmRpdGlvbi5oCkBAIC0yMiwyOSArMjIsMjMgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBOb2RlRmls
dGVyQ29uZGl0aW9uX2gKLSNkZWZpbmUgTm9kZUZpbHRlckNvbmRpdGlvbl9oCisjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIEpTQyB7Ci0KIGNsYXNzIFNsb3RWaXNpdG9yOwotCiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIE5vZGU7CitjbGFzcyBOb2RlOwogCi0gICAgY2xh
c3MgTm9kZUZpbHRlckNvbmRpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vZGVGaWx0ZXJDb25k
aXRpb24+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfk5vZGVGaWx0ZXJDb25kaXRp
b24oKSB7IH0KLSAgICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdCA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShKU0M6OlNsb3RWaXNpdG9y
JikgeyB9Ci0gICAgfTsKK2NsYXNzIE5vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxOb2RlRmlsdGVyQ29uZGl0aW9uPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Tm9kZUZp
bHRlckNvbmRpdGlvbigpIHsgfQorICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0Tm9kZShOb2RlKikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShKU0M6OlNsb3RWaXNp
dG9yJikgeyB9Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBOb2Rl
RmlsdGVyQ29uZGl0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0
ZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCmluZGV4IDQ1MmM4
OTg0ZDk4YmI5OWQxMWQ1NzA1ZjdhOWRjNDdiYWFjNzQ1OTMuLmFiNDRmNWFhZTIwMTE3NTQ2OTkz
MzliM2UxYTU1ZTYyN2QxODZlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BT
dGF0ZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaApAQCAt
MjQsMzMgKzI0LDMxIEBACiAgKgogICovCiAKLSNpZm5kZWYgUG9wU3RhdGVFdmVudF9oCi0jZGVm
aW5lIFBvcFN0YXRlRXZlbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFdmVudC5oIgot
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPGJpbmRpbmdzL1Nj
cmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSGlzdG9yeTsKK2Ns
YXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKwogc3RydWN0IFBvcFN0YXRlRXZlbnRJbml0IDog
cHVibGljIEV2ZW50SW5pdCB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgc3RhdGU7CiB9
OwogCi1jbGFzcyBIaXN0b3J5OwotY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotCiBjbGFz
cyBQb3BTdGF0ZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5Qb3BTdGF0ZUV2ZW50KCk7CiAgICAgc3RhdGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVh
dGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgUGFzc1JlZlB0cjxIaXN0b3J5Pik7
CiAgICAgc3RhdGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncyhjb25zdCBB
dG9taWNTdHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwogCi0gICAgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTdGF0ZSgpIGNvbnN0IHsgQVNTRVJU
KG1fc2VyaWFsaXplZFN0YXRlKTsgcmV0dXJuIG1fc2VyaWFsaXplZFN0YXRlOyB9Ci0gICAgCisg
ICAgSlNDOjpKU1ZhbHVlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAgIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJpYWxpemVkU3RhdGUuZ2V0KCk7IH0KKwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHRyeVNlcmlhbGl6ZVN0YXRlKEpTQzo6RXhlY1N0YXRlKik7CiAgICAgCi0gICAgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsg
fQogICAgIEhpc3RvcnkqIGhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2hpc3RvcnkuZ2V0KCk7
IH0KIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7
CkBAIC02Niw1ICs2NCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBQb3BTdGF0ZUV2ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAKaW5k
ZXggMzMxNGIzOThlNTRkMTlkMWQ1OWY5NTEwNTg3ODEzOWU3ZjMyZTFjYS4uMGZkZjg1ODZmNmNj
YjdiNTZlZGQ4Nzk2ZDE2ZDIzYmM2ZGNmZTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Ob2RlSXRlcmF0b3JC
YXNlOjpOb2RlSXRlcmF0b3JCYXNlKE5vZGUmIHJvb3ROb2RlLCB1bnNpZ25lZCBsb25nIHdoYXRU
b1Nob3csIFJlZlB0cjxOb2RlRmlsdGVyPiYmIG5vZGVGaWx0ZXIpCitOb2RlSXRlcmF0b3JCYXNl
OjpOb2RlSXRlcmF0b3JCYXNlKE5vZGUmIHJvb3ROb2RlLCB1bnNpZ25lZCB3aGF0VG9TaG93LCBS
ZWZQdHI8Tm9kZUZpbHRlcj4mJiBub2RlRmlsdGVyKQogICAgIDogbV9yb290KCZyb290Tm9kZSkK
ICAgICAsIG1fd2hhdFRvU2hvdyh3aGF0VG9TaG93KQogICAgICwgbV9maWx0ZXIoV1RGTW92ZShu
b2RlRmlsdGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuaAppbmRleCAxYzExNjA3M2ViZmVkNjAwNTQy
N2M0OWZlZDk0YWFhYzM3ZTkxYzRjLi5iOGI5ZWM0YTZjMWIzNDZiZTM2NmQ5ZjNiNTU5OGJkZmI0
NmY5YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5oCkBAIC0yMiwzNCArMjIsMzAgQEAKICAqCiAg
Ki8KIAotI2lmbmRlZiBUcmF2ZXJzYWxfaAotI2RlZmluZSBUcmF2ZXJzYWxfaAorI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgTm9kZTsKLSAgICBjbGFzcyBOb2Rl
RmlsdGVyOworY2xhc3MgTm9kZTsKK2NsYXNzIE5vZGVGaWx0ZXI7CiAKLSAgICBjbGFzcyBOb2Rl
SXRlcmF0b3JCYXNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUqIHJvb3QoKSBjb25zdCB7
IHJldHVybiBtX3Jvb3QuZ2V0KCk7IH0KLSAgICAgICAgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93
KCkgY29uc3QgeyByZXR1cm4gbV93aGF0VG9TaG93OyB9Ci0gICAgICAgIE5vZGVGaWx0ZXIqIGZp
bHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyLmdldCgpOyB9Ci0gICAgICAgIGJvb2wgZXhw
YW5kRW50aXR5UmVmZXJlbmNlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CitjbGFzcyBOb2Rl
SXRlcmF0b3JCYXNlIHsKK3B1YmxpYzoKKyAgICBOb2RlKiByb290KCkgY29uc3QgeyByZXR1cm4g
bV9yb290LmdldCgpOyB9CisgICAgdW5zaWduZWQgd2hhdFRvU2hvdygpIGNvbnN0IHsgcmV0dXJu
IG1fd2hhdFRvU2hvdzsgfQorICAgIE5vZGVGaWx0ZXIqIGZpbHRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsdGVyLmdldCgpOyB9CisgICAgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgTm9kZUl0ZXJh
dG9yQmFzZShOb2RlJiwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93LCBSZWZQdHI8Tm9kZUZpbHRl
cj4mJik7Ci0gICAgICAgIHNob3J0IGFjY2VwdE5vZGUoTm9kZSopIGNvbnN0OworcHJvdGVjdGVk
OgorICAgIE5vZGVJdGVyYXRvckJhc2UoTm9kZSYsIHVuc2lnbmVkIHdoYXRUb1Nob3csIFJlZlB0
cjxOb2RlRmlsdGVyPiYmKTsKKyAgICBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdDsKIAot
ICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxOb2RlPiBtX3Jvb3Q7Ci0gICAgICAgIHVuc2ln
bmVkIGxvbmcgbV93aGF0VG9TaG93OwotICAgICAgICBSZWZQdHI8Tm9kZUZpbHRlcj4gbV9maWx0
ZXI7Ci0gICAgfTsKK3ByaXZhdGU6CisgICAgUmVmUHRyPE5vZGU+IG1fcm9vdDsKKyAgICB1bnNp
Z25lZCBtX3doYXRUb1Nob3c7CisgICAgUmVmUHRyPE5vZGVGaWx0ZXI+IG1fZmlsdGVyOworfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVHJhdmVyc2FsX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNjdlYWMyYTg3OGM3NDAx
ZmFjYWU1MjBhZGQ2ZWRlMjUzM2Q5ZmZlNy4uOTUxZTZhZDNkM2U1MWFjMjdkMTExYWQ3ZTc0MmM2
NzBmY2MwMDQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAK
QEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICByb290LT5zZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UodHJ1ZSk7Ci0gICAgaWYgKG1fcGx1Z2lu
UmVwbGFjZW1lbnQtPmluc3RhbGxSZXBsYWNlbWVudChyb290KSkgeworICAgIGlmIChtX3BsdWdp
blJlcGxhY2VtZW50LT5pbnN0YWxsUmVwbGFjZW1lbnQoKnJvb3QpKSB7CiAgICAgICAgIHNldERp
c3BsYXlTdGF0ZShEaXNwbGF5aW5nUGx1Z2luUmVwbGFjZW1lbnQpOwogICAgICAgICBzZXROZWVk
c1N0eWxlUmVjYWxjKFJlY29uc3RydWN0UmVuZGVyVHJlZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNGQwMmIyNTE4ZWY0
ODZhNjUzY2U4ZDk3ZGUzOTAzNmU5NGEyYzNlYy4uMzA2ZDNkMzRiNGE3NmI5ZDNiMGY2OTU5MTBk
ZTM5Yjc2N2Q5YzZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC0xNDk2LDcgKzE0OTYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JF
dgogICAgIGlmIChvYmplY3RHcm91cElkICYmIGhhbmRsZXIgJiYgc3RhdGUpIHsKICAgICAgICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKQotICAgICAgICAgICAgdmFsdWUtPnNldEhhbmRsZXIoaW5qZWN0ZWRTY3JpcHQu
d3JhcE9iamVjdChEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwgaGFuZGxlciks
ICpvYmplY3RHcm91cElkKSk7CisgICAgICAgICAgICB2YWx1ZS0+c2V0SGFuZGxlcihpbmplY3Rl
ZFNjcmlwdC53cmFwT2JqZWN0KGhhbmRsZXIsICpvYmplY3RHcm91cElkKSk7CiAgICAgfQogICAg
IGlmICghc2NyaXB0SUQuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBsb2NhdGlvbiA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggZGNm
ZTFkMTYwYTc3NzE3NGJmYmEzMzUwYmRjYjg0ZjFhOWVmZDkwYy4uZTE2NDU4NGFkNGEwYmRhY2Y0
YWYxOGI2ZjE2ODEyMjgwYTYxM2MxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgZGlzY29ubmVjdCgpCiAgICAgewotICAgICAgICBtX2Zyb250ZW5kQXBp
T2JqZWN0ID0gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CisgICAgICAgIG1fZnJvbnRlbmRB
cGlPYmplY3QgPSB7IH07CiAgICAgICAgIG1fZnJvbnRlbmRIb3N0ID0gbnVsbHB0cjsKICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAppbmRleCAzZDJkYmUwZjYwZTlhYWMyMGRlNmM5OGViZmU1ZmM2M2YwM2Q1
NjRkLi43NTlhZTQyMmNiNGM4ZDc0ODcwOTFhN2M3ODU1OWRmOTgzMDY4NjBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
QEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIK
KyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGRiYWZjZGJlNTlhMmEyM2IyNWRi
ZWU4MzZlYTEyY2Y0OGMyZDA5MjQuLjdmMTlhM2FjNTU3OWNiNzY0ZjI4Y2Y3MTIxYzg5MDM5OTQ4
YTVkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKQEAgLTI5LDggKzI5LDcgQEAKICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCiAKLSNp
Zm5kZWYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uX2gKLSNkZWZpbmUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNp
bmNsdWRlICJFbGVtZW50LmgiCkBAIC00MSw3ICs0MCw2IEBACiAjaW5jbHVkZSAiTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlIDxydW50aW1l
L0NvbnNvbGVUeXBlcy5oPgpAQCAtMjU1LDExICsyNTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IoRG9jdW1lbnQqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICNlbmRpZgogCi0g
ICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRSZW5kZXJpbmdD
b250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0Jik7Ci0jaWYgRU5BQkxFKFdFQkdMKQotICAgIHN0YXRpYyBEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3Qgd3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihE
b2N1bWVudCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgc3RhdGljIHZvaWQgZGlkSGFuZGxlTWVtb3J5
UHJlc3N1cmUoUGFnZSYsIENyaXRpY2FsKTsKICNlbmRpZgpAQCAtMTI5Miw1ICsxMjg1LDMgQEAg
aW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudGluZ0FnZW50c0ZvckRvY3UKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uX2gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggMDhlYTM4ZDZkZjllYjUwNjBlN2I5YjhkYTc3NWM5NzBhMTc0
MTlkMC4uYzliY2NmMGFmZTdiYWRlY2ZiZDQ1ODM3OTRkZmUxN2IyMThhNjAxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ0LDIxICsxNDQsMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7CiBwdWJs
aWM6Ci0gICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRvdywgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
LCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luLCBQ
YXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSkKKyAgICBQb3N0TWVzc2FnZVRp
bWVyKERPTVdpbmRvdyYgd2luZG93LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIERPTVdpbmRvdyYgc291cmNlLCBz
dGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+JiYgdGFyZ2V0T3JpZ2luLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYm
IHN0YWNrVHJhY2UpCiAgICAgICAgIDogbV93aW5kb3cod2luZG93KQogICAgICAgICAsIG1fbWVz
c2FnZShtZXNzYWdlKQogICAgICAgICAsIG1fb3JpZ2luKHNvdXJjZU9yaWdpbikKICAgICAgICAg
LCBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICwgbV9jaGFubmVscyhXVEZNb3ZlKGNoYW5uZWxz
KSkKLSAgICAgICAgLCBtX3RhcmdldE9yaWdpbih0YXJnZXRPcmlnaW4pCisgICAgICAgICwgbV90
YXJnZXRPcmlnaW4oV1RGTW92ZSh0YXJnZXRPcmlnaW4pKQogICAgICAgICAsIG1fc3RhY2tUcmFj
ZShzdGFja1RyYWNlKQogICAgIHsKICAgICB9CiAKLSAgICBSZWY8TWVzc2FnZUV2ZW50PiBldmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIFJlZjxNZXNzYWdlRXZlbnQ+
IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gTWVzc2FnZVBv
cnQ6OmVudGFuZ2xlUG9ydHMoKmNvbnRleHQsIFdURk1vdmUobV9jaGFubmVscykpOwotICAgICAg
ICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdlUG9ydHMpLCBtX21l
c3NhZ2UsIG1fb3JpZ2luLCBTdHJpbmcoKSwgbV9zb3VyY2UpOworICAgICAgICByZXR1cm4gTWVz
c2FnZUV2ZW50OjpjcmVhdGUoTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RG
TW92ZShtX2NoYW5uZWxzKSksIFdURk1vdmUobV9tZXNzYWdlKSwgbV9vcmlnaW4sIHsgfSwgbV9z
b3VyY2UucHRyKCkpOwogICAgIH0KICAgICBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKCkg
Y29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KICAgICBTY3JpcHRDYWxsU3Rh
Y2sqIHN0YWNrVHJhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrVHJhY2UuZ2V0KCk7IH0KQEAg
LTE3MSwxMCArMTcwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fd2luZG93LT5wb3N0TWVzc2Fn
ZVRpbWVyRmlyZWQoKnRpbWVyKTsKICAgICB9CiAKLSAgICBSZWZQdHI8RE9NV2luZG93PiBtX3dp
bmRvdzsKKyAgICBSZWY8RE9NV2luZG93PiBtX3dpbmRvdzsKICAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgU3RyaW5nIG1fb3JpZ2luOwotICAgIFJlZlB0
cjxET01XaW5kb3c+IG1fc291cmNlOworICAgIFJlZjxET01XaW5kb3c+IG1fc291cmNlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVsczsKICAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwogICAgIFJlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKQEAgLTg5OSw3ICs4OTgsNyBAQCB2b2lkIERPTVdp
bmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3Nh
Z2UsIGNvbnN0IE1lcwogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmds
ZVBvcnRzKHBvcnRzLCBlYyk7CisgICAgYXV0byBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNl
bnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAK
QEAgLTkxNSw3ICs5MTQsNyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lcwogICAgICAgICBzdGFj
a1RyYWNlID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3Vy
cmVudFN0YXRlKCksIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7
CiAKICAgICAvLyBTY2hlZHVsZSB0aGUgbWVzc2FnZS4KLSAgICBQb3N0TWVzc2FnZVRpbWVyKiB0
aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKHRoaXMsIG1lc3NhZ2UsIHNvdXJjZU9yaWdpbiwg
JnNvdXJjZSwgV1RGTW92ZShjaGFubmVscyksIHRhcmdldC5nZXQoKSwgc3RhY2tUcmFjZS5yZWxl
YXNlKCkpOworICAgIFBvc3RNZXNzYWdlVGltZXIqIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGlt
ZXIoKnRoaXMsIG1lc3NhZ2UsIHNvdXJjZU9yaWdpbiwgc291cmNlLCBXVEZNb3ZlKGNoYW5uZWxz
KSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKICAgICB0aW1lci0+c3Rh
cnRPbmVTaG90KDApOwogfQogCkBAIC05MjQsNyArOTIzLDcgQEAgdm9pZCBET01XaW5kb3c6OnBv
c3RNZXNzYWdlVGltZXJGaXJlZChQb3N0TWVzc2FnZVRpbWVyJiB0aW1lcikKICAgICBpZiAoIWRv
Y3VtZW50KCkgfHwgIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBkaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayh0aW1lci50YXJn
ZXRPcmlnaW4oKSwgdGltZXIuZXZlbnQoZG9jdW1lbnQoKSksIHRpbWVyLnN0YWNrVHJhY2UoKSk7
CisgICAgZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2sodGltZXIudGFyZ2V0T3Jp
Z2luKCksIHRpbWVyLmV2ZW50KCpkb2N1bWVudCgpKSwgdGltZXIuc3RhY2tUcmFjZSgpKTsKIH0K
IAogdm9pZCBET01XaW5kb3c6OmRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKFNl
Y3VyaXR5T3JpZ2luKiBpbnRlbmRlZFRhcmdldE9yaWdpbiwgRXZlbnQmIGV2ZW50LCBQYXNzUmVm
UHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5jcHAKaW5kZXggMGYyY2UzZDkzNzI1ZmU2NDYwZTdlMjllZDAxOTUyYTQ3NzZiNDkzZi4uMWRj
NDNjYWQ2ODQ3MTE5NGE5ZjAyODY3YmExOGFjNGFjZDUyZmUzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCBib29sIEV2ZW50U291cmNlOjpjYW5T
dXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIAogUmVmPE1lc3NhZ2VFdmVudD4g
RXZlbnRTb3VyY2U6OmNyZWF0ZU1lc3NhZ2VFdmVudCgpCiB7Ci0gICAgcmV0dXJuIE1lc3NhZ2VF
dmVudDo6Y3JlYXRlKG1fZXZlbnROYW1lLmlzRW1wdHkoKSA/IGV2ZW50TmFtZXMoKS5tZXNzYWdl
RXZlbnQgOiBBdG9taWNTdHJpbmcobV9ldmVudE5hbWUpLCBmYWxzZSwgZmFsc2UsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFN0cmluZzo6YWRvcHQobV9kYXRhKSksIG1fZXZlbnRTdHJl
YW1PcmlnaW4sIG1fbGFzdEV2ZW50SWQpOworICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0
ZShtX2V2ZW50TmFtZS5pc0VtcHR5KCkgPyBldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50IDogQXRv
bWljU3RyaW5nKG1fZXZlbnROYW1lKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3Ry
aW5nOjphZG9wdChtX2RhdGEpKSwgbV9ldmVudFN0cmVhbU9yaWdpbiwgbV9sYXN0RXZlbnRJZCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggYjhhNzAzOTljZGU5MGYzMjNmMDNlYmM3
YjMyNTFiYmIxNmI4YTZhMi4uMzg3MjZmNTBmNzRhOGY5M2JiOThlZmYwNjA3YjE3Nzk5OGRiMzMw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmgKQEAgLTI0LDE1ICsyNCwxNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENv
bnRlbnRTZWN1cml0eVBvbGljeV9oCi0jZGVmaW5lIENvbnRlbnRTZWN1cml0eVBvbGljeV9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycy5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvblNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9z
aXRpb24uaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9CisKIG5hbWVz
cGFjZSBXVEYgewogY2xhc3MgT3JkaW5hbE51bWJlcjsKIH0KQEAgLTQzLDYgKzQ1LDcgQEAgY2xh
c3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlOwogY2xhc3MgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTsK
IGNsYXNzIERPTVN0cmluZ0xpc3Q7CitjbGFzcyBGcmFtZTsKIGNsYXNzIEpTRE9NV2luZG93U2hl
bGw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CkBAIC0xODQsNSArMTg3LDMgQEAgaW5saW5lIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5Ojp2aW9sYXRlZERpcmUKIH0KIAogfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAppbmRleCBhNDFlNzU5NWU5Yzk5ZDA4MzRiMjE4
N2UzY2M4ZjVhNWJmYWVkOTAxLi42NGVlOTVkNzhjMzU5MDBiYzY4NjQ5Mjg4MzUxZWZlZmFhN2Nl
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCkBAIC0yNCwyMSArMjQsMjAgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0X2gKLSNkZWZpbmUgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdF9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUg
IkNvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0RGlyZWN0aXZlLmgiCiAjaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRnJhbWU7CisK
IGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QpCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0PiBjcmVhdGUoQ29udGVudFNlY3Vy
aXR5UG9saWN5JiwgY29uc3QgU3RyaW5nJiwgQ29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVHlw
ZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tKTsKICAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0KENvbnRlbnRTZWN1cml0eVBvbGljeSYsIENvbnRlbnRTZWN1
cml0eVBvbGljeUhlYWRlclR5cGUpOwpAQCAtMTI1LDUgKzEyNCwzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvKiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCAyMWQwZjJkNmE2MjAzZTQ2YzY2Nzc3OGE3MjM0YmQ5ZTE2N2EwYTYyLi4wMzkwODA2YTJkYzhk
MTcwYmE5ZTFjNzg0MDMwZGE3NzJmYzdiOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC01MDUsOSArNTA1LDkgQEAgU3RyaW5nIEludGVybmFsczo6c3R5bGVDaGFuZ2VU
eXBlKE5vZGUmIG5vZGUpCiAgICAgcmV0dXJuIHN0eWxlQ2hhbmdlVHlwZVRvU3RyaW5nKG5vZGUu
c3R5bGVDaGFuZ2VUeXBlKCkpOwogfQogCi1TdHJpbmcgSW50ZXJuYWxzOjpkZXNjcmlwdGlvbihE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSkKK1N0cmluZyBJbnRlcm5hbHM6OmRlc2NyaXB0
aW9uKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUuanNW
YWx1ZSgpKTsKKyAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpOwogfQogCiBib29sIEludGVybmFs
czo6aXNQcmVsb2FkZWQoY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0xNDkxLDExICsxNDkxLDEwIEBA
IHByaXZhdGU6CiAgICAgbXV0YWJsZSBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogfTsKIAotU3Ry
aW5nIEludGVybmFsczo6cGFyc2VyTWV0YURhdGEoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFs
dWUpCitTdHJpbmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShKU0M6OkpTVmFsdWUgY29kZSkK
IHsKICAgICBKU0M6OlZNJiB2bSA9IGNvbnRleHREb2N1bWVudCgpLT52bSgpOwogICAgIEpTQzo6
RXhlY1N0YXRlKiBleGVjID0gdm0udG9wQ2FsbEZyYW1lOwotICAgIEpTQzo6SlNWYWx1ZSBjb2Rl
ID0gdmFsdWUuanNWYWx1ZSgpOwogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CiAK
ICAgICBpZiAoIWNvZGUgfHwgY29kZS5pc051bGwoKSB8fCBjb2RlLmlzVW5kZWZpbmVkKCkpIHsK
QEAgLTI1MjUsNyArMjUyNCw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OmdldEN1cnJlbnRDdXJzb3JJ
bmZvKEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IEludGVybmFsczo6
c2VyaWFsaXplT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkg
Y29uc3QKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gYnl0ZXMgPSB2YWx1ZS0+ZGF0YSgpOworICAg
IGF1dG8mIGJ5dGVzID0gdmFsdWUtPmRhdGEoKTsKICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiB9CiAKQEAgLTI1MzYsMTQgKzI1MzUs
MTEgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW50ZXJuYWxzOjpkZXNlcmlhbGl6
ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KFdURk1vdmUoYnl0ZXMpKTsKIH0KIAotYm9vbCBJbnRlcm5hbHM6OmlzRnJv
bUN1cnJlbnRXb3JsZChEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSkgY29uc3QKK2Jvb2wg
SW50ZXJuYWxzOjppc0Zyb21DdXJyZW50V29ybGQoSlNDOjpKU1ZhbHVlIHZhbHVlKSBjb25zdAog
ewotICAgIEFTU0VSVCghdmFsdWUuaGFzTm9WYWx1ZSgpKTsKLSAgICAKLSAgICBKU0M6OkV4ZWNT
dGF0ZSogZXhlYyA9IGNvbnRleHREb2N1bWVudCgpLT52bSgpLnRvcENhbGxGcmFtZTsKLSAgICBp
ZiAoIXZhbHVlLmlzT2JqZWN0KCkgfHwgJndvcmxkRm9yRE9NT2JqZWN0KHZhbHVlLmpzVmFsdWUo
KS5nZXRPYmplY3QoKSkgPT0gJmN1cnJlbnRXb3JsZChleGVjKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgSlNDOjpFeGVj
U3RhdGUmIHN0YXRlID0gKmNvbnRleHREb2N1bWVudCgpLT52bSgpLnRvcENhbGxGcmFtZTsKKyAg
ICByZXR1cm4gIXZhbHVlLmlzT2JqZWN0KCkgfHwgJndvcmxkRm9yRE9NT2JqZWN0KGFzT2JqZWN0
KHZhbHVlKSkgPT0gJmN1cnJlbnRXb3JsZCgmc3RhdGUpOwogfQogCiB2b2lkIEludGVybmFsczo6
c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzKGJvb2wgZW5hYmxlZCkKQEAgLTMyODEsNyArMzI3Nyw3
IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRTaG93QWxsUGx1Z2lucyhib29sIHNob3cpCiAKICNpZiBF
TkFCTEUoU1RSRUFNU19BUEkpCiAKLWJvb2wgSW50ZXJuYWxzOjppc1JlYWRhYmxlU3RyZWFtRGlz
dHVyYmVkKFNjcmlwdFN0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBzdHJlYW0pCitib29sIEludGVybmFs
czo6aXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgc3RyZWFtKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS52
bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHN0YXRlLnZtKCkuY2xpZW50RGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA1MjM4NzBiN2Y2MjBkNDg2ZTMwZWQzNjllMmRi
ZmU2OTI2Mzg3MjQwLi5iZGQzNDAxYTgzZDM4MWEyNTA0ZTNhYjU5YjEyMWY0MTg1NDdmZjVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTI0LDIwICsyNCwxMiBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEludGVybmFsc19oCi0jZGVmaW5lIEludGVybmFsc19oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgog
I2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZVBsYWNlaG9sZGVyLmgiCi0jaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQ
YWdlQ29uc29sZUNsaWVudC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSA8
YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTY1LDYgKzU3LDcgQEAgY2xhc3MgTWVtb3J5SW5mbzsKIGNsYXNzIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBNb2NrUGFnZU92ZXJsYXk7CiBjbGFzcyBOb2Rl
OworY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmFuZ2U7CiBjbGFzcyBSZW5k
ZXJlZERvY3VtZW50TWFya2VyOwpAQCAtNzcsNyArNzAsNyBAQCBjbGFzcyBYTUxIdHRwUmVxdWVz
dDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgSW50ZXJuYWxzIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyIHsKK2NsYXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVybmFs
cz4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8SW50ZXJuYWxzPiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5JbnRl
cm5hbHMoKTsKQEAgLTkwLDcgKzgzLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBhZGRyZXNzKE5v
ZGUmKTsKICAgICBib29sIG5vZGVOZWVkc1N0eWxlUmVjYWxjKE5vZGUmKTsKICAgICBTdHJpbmcg
c3R5bGVDaGFuZ2VUeXBlKE5vZGUmKTsKLSAgICBTdHJpbmcgZGVzY3JpcHRpb24oRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUpOworICAgIFN0cmluZyBkZXNjcmlwdGlvbihKU0M6OkpTVmFsdWUpOwog
CiAgICAgYm9vbCBpc1ByZWxvYWRlZChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgYm9vbCBpc0xv
YWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5nJiB1cmwpOwpAQCAtMjA4LDcgKzIwMSw3
IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoRG9jdW1lbnQm
LCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGlu
ZywKICAgICAgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcs
IGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAotICAgIFN0cmluZyBw
YXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSA9IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKCkpOworICAgIFN0cmluZyBwYXJzZXJNZXRhRGF0YShKU0M6OkpTVmFsdWUgPSB7IH0p
OwogCiAgICAgdm9pZCB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTI5MSw4
ICsyODQsOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0cmluZz4gc2hvcnRjdXRJY29uVVJMcygp
IGNvbnN0OwogCiAgICAgaW50IG51bWJlck9mUGFnZXMoZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMg
PSA4MDAsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscyA9IDYwMCk7Ci0gICAgU3RyaW5nIHBhZ2VQ
cm9wZXJ0eShTdHJpbmcsIGludCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9O
KSBjb25zdDsKLSAgICBTdHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENF
UFRJT04pIGNvbnN0OworICAgIFN0cmluZyBwYWdlUHJvcGVydHkoU3RyaW5nLCBpbnQsIEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdDsKKyAgICBTdHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMo
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
CiAKICAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgaW50IHgs
IGludCB5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdlWm9vbUZhY3RvcihmbG9h
dCB6b29tRmFjdG9yLCBFeGNlcHRpb25Db2RlJik7CkBAIC0zNDQsNyArMzM3LDcgQEAgcHVibGlj
OgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2VyaWFsaXplT2JqZWN0KFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPikgY29uc3Q7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZGVzZXJpYWxpemVCdWZmZXIoQXJyYXlCdWZmZXImKSBjb25zdDsKIAotICAgIGJvb2wg
aXNGcm9tQ3VycmVudFdvcmxkKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKSBjb25zdDsKKyAgICBi
b29sIGlzRnJvbUN1cnJlbnRXb3JsZChKU0M6OkpTVmFsdWUpIGNvbnN0OwogCiAgICAgdm9pZCBz
ZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VzTW9ja1Njcm9s
bEFuaW1hdG9yKGJvb2wpOwpAQCAtNDcyLDcgKzQ2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwogCiAjaWYgRU5BQkxFKFNUUkVB
TVNfQVBJKQotICAgIGJvb2wgaXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlZChTY3JpcHRTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSk7CisgICAgYm9vbCBpc1JlYWRhYmxlU3RyZWFtRGlzdHVyYmVkKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKICNlbmRpZgogCiAgICAgU3RyaW5nIGNvbXBvc2Vk
VHJlZUFzVGV4dChOb2RlJik7CkBAIC00OTAsNSArNDgzLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276559</attachid>
            <date>2016-04-16 10:08:22 -0700</date>
            <delta_ts>2016-04-17 11:39:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156660-20160416100837.patch</filename>
            <type>text/plain</type>
            <size>78241</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Y2NiMDkyMjk0ZWU3YjQ5MTY3NWY5ODllMzNmNGYyZDMzMGYwNjViLi5lOWM0NDE4NDNhNDcxYTky
MGFmNjE2YjI5MDM3Zjk0MmJmOTcwNTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNi0wNC0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIG1vcmUgdXNlcyBvZiBEZXByZWNhdGVkOjpTY3JpcHRYWFgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjY2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvU2Ny
aXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKERlcHJlY2F0ZWQ6OlNjcmlwdENhbGxBcmd1
bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KTogRGVsZXRlZAorICAgICAgICB1bm5lZWRlZCBv
dmVybG9hZHMgdGhhdCB0YWtlIGEgU2NyaXB0T2JqZWN0IGFuZCBTY3JpcHRWYWx1ZS4KKyAgICAg
ICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaDogRGl0dG8uCisKKyAgICAgICAgKiBi
aW5kaW5ncy9TY3JpcHRPYmplY3QuaDogQWRkZWQgb3BlcmF0b3Igc28gdGhpcyBjYW4gY2hhbmdl
CisgICAgICAgIGl0c2VsZiBpbnRvIGEgSlNPYmplY3QqLiBIZWxwcyB3aGlsZSBwaGFzaW5nIHRo
aXMgY2xhc3Mgb3V0LgorCisgICAgICAgICogYmluZGluZ3MvU2NyaXB0VmFsdWUuaDogRXhwb3J0
IHRvSW5zcGVjdG9yVmFsdWUgc28gaXQgY2FuIGJlCisgICAgICAgIHVzZWQgaW4gV2ViQ29yZS4K
KworICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0
KTogQ2hhbmdlZAorICAgICAgICByZXR1cm4gdmFsdWUgZnJvbSBEZXByZWNhdGVkOjpTY3JpcHRP
YmplY3QgdG8gSlNPYmplY3QqLgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKTogVXBkYXRlZCBmb3IKKyAgICAgICAgdGhlIHJldHVy
biB2YWx1ZSBjaGFuZ2UgYWJvdmUuCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
TWFuYWdlci5oOiBEaXR0by4KKwogMjAxNi0wNC0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHVzZSBvZiBEZXByZWNhdGVkOjpTY3JpcHRYWFggY2xh
c3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDBlYTQ2NjM3ZWZiYWYyNDE4MzU2YTM3YjgzZGVkOTAxMzk2MWMz
N2EuLjUxMzE5M2E2Mjg5OWZkM2Q1MGM1MGQ5YTIyZGQ3NDQ3ZWI0MjhiYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMjggQEAKKzIwMTYtMDQtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSBtb3JlIHVzZXMgb2YgRGVwcmVjYXRlZDo6U2NyaXB0WFhY
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY2NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oOiBSZW1vdmVkIHVubmVlZGVkIGlu
Y2x1ZGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaDog
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAgICBDaGFuZ2VkIGFyZ3VtZW50IHRvIGlu
c3RhbGxSZXBsYWNlbWVudCBpbnRvIGEgcmVmZXJlbmNlLiBDaGFuZ2VkIHJldHVybgorICAgICAg
ICB2YWx1ZSBmb3IgY3JlYXRpb24gZnVuY3Rpb24gZnJvbSBQYXNzUmVmUHRyIHRvIFJlZi4KKwor
ICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oOiBS
ZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzIGFuZAorICAgICAgICBmb3J3YXJkIGRlY2xhcmF0aW9u
cy4gTWFya2VkIGNsYXNzIGZpbmFsLiBNYWRlIGFsbW9zdCBldmVyeXRoaW5nIHByaXZhdGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06
CisgICAgICAgIChXZWJDb3JlOjpRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlKTog
Q2hhbmdlZCB0byByZXR1cm4gUmVmLgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudCk6IENoYW5nZWQgdG8gdGFrZQorICAgICAg
ICBhIHJlZmVyZW5jZS4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50OjpjcmVhdGUpOiBDaGFuZ2VkIHRvIHJldHVybiBSZWYuCisgICAgICAgIChXZWJDb3JlOjpZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudCk6IENoYW5nZWQgdG8g
dGFrZQorICAgICAgICBhIHJlZmVyZW5jZS4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Z
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcyBhbmQK
KyAgICAgICAgZm9yd2FyZCBkZWNsYXJhdGlvbnMuIE1hcmtlZCBjbGFzcyBmaW5hbC4gQ2hhbmdl
ZCByZXR1cm4gdHlwZSBvZiBjcmVhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2ZUJp
bmFyeURhdGEpOiBSZW1vdmVkIGxvY2FsIHZhcmlhYmxlIHNvIHRoZQorICAgICAgICBNZXNzYWdl
RXZlbnQ6OmNyZWF0ZSBmdW5jdGlvbiBnZXRzIGEgUmVmJiYgaW5zdGVhZCBvZiBhIFJlZlB0ciB3
aXRob3V0IGhhdmluZworICAgICAgICB0byBhZGQgZXhwbGljaXQgV1RGTW92ZS4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0RPTVJlcXVlc3RTdGF0ZS5oOiBSZW1vdmVkIGNvZGUgdGhhdCBzZXQg
bV9leGVjIHR3aWNlLgorCisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOiBSZWZv
cm1hdHRlZCBmdW5jdGlvbiB0ZW1wbGF0ZXMgdG8gdXNlIGEgc2luZ2xlCisgICAgICAgIGxpbmUg
c28gdGhleSBhcmUgZWFzaWVyIHRvIGxvb2sgYXQuCisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5OjpnZXRFdmVudExpc3RlbmVyKTogUmV3cm90ZSB0aGlzIHNvIGl0IG5vIGxvbmdlciB1c2Vz
CisgICAgICAgIGEgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgYW5kIGFsc28gbWFrZSBpdCBhIGxp
dHRsZSBtb3JlIGNvbXBhY3QgYW5kIHRlcnNlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlND
b21tYW5kTGluZUFQSUhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDb21tYW5k
TGluZUFQSUhvc3Q6Omluc3BlY3QpOiBSZXdyb3RlIHRvIHVzZSBKU1ZhbHVlIGluc3RlYWQgb2YK
KyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUuIENvbnNpZGVyYWJseSBtb3JlIGVmZmlj
aWVudC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZUV2ZW50OjpkYXRhKTogU3RyZWFtbGluZWQgdG8g
dXNlIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlCisgICAgICAgIGEgbGl0dGxlIGJpdCBsZXNzLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDogTW92ZWQgaW5jbHVkZSBo
ZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOiBN
b3ZlZCBpbmNsdWRlIGZyb20gaGVyZSB0byBjcHAgZmlsZS4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1BvcFN0
YXRlRXZlbnQ6OnN0YXRlKTogVXBkYXRlZCBmb3IgY2hhbmdlcyB0byByZXR1cm4gdmFsdWUgb2Yg
dGhlCisgICAgICAgIHN0YXRlKCkgYW5kIHNlcmlhbGl6ZWRTdGF0ZSBmdW5jdGlvbnMuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOiBSZW1vdmVkIHRoZSBTY3JpcHRTdGF0
ZSB0eXBlZGVmLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcDogTW92ZWQgaW5jbHVkZSBoZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOiBNb3ZlZCBpbmNsdWRlIGZyb20gaGVyZSB0byBj
cHAgZmlsZS4KKworICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RmFjZTo6Y3JlYXRlKTogQ2hhbmdlZCBhcmd1bWVudCB0byBKU1ZhbHVlIGluc3RlYWQg
b2YgU2NyaXB0VmFsdWUuCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmg6IERpdHRvLgorCisgICAg
ICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6IE1vdmVkIGNyZWF0ZSBmdW5jdGlvbnMgaW4gaGVy
ZSBmcm9tIGhlYWRlciBmaWxlLgorICAgICAgICBSZW1vdmVkIHNvbWUgdW51c2VkIG9uZXMgaW5j
bHVkaW5nIG9uZSB0aGF0IHRvb2sgYSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZS4KKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50Lmg6IFN0cmVhbWxpbmVkIGNyZWF0ZSBmdW5jdGlvbnMsIHJlbW92
aW5nIHVudXNlZCBmdW5jdGlvbnMsCisgICAgICAgIHVudXNlZCBhcmd1bWVudHMsIGFuZCB1bnVz
ZWQgZGVmYXVsdCB2YWx1ZXMgZm9yIGFyZ3VtZW50cy4gQWxzbyBtb3ZlZCB0aGVtIGFsbAorICAg
ICAgICBpbnRvIHRoZSBjcHAgZmlsZSBpbnN0ZWFkIG9mIGlubGluaW5nIHRoZW0uIEFsc28gY2hh
bmdlZCB0aGUgcmV0dXJuIHR5cGUgb2YKKyAgICAgICAgZGF0YUFzU2NyaXB0VmFsdWUgdG8gSlNW
YWx1ZS4KKworICAgICAgICAqIGRvbS9Ob2RlRmlsdGVyQ29uZGl0aW9uLmg6IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZS4gVHdlYWtlZCBmb3JtYXR0aW5nLgorCisgICAgICAgICogZG9tL1BvcFN0
YXRlRXZlbnQuaDogQ2hhbmdlZCByZXR1cm4gdmFsdWUgb2Ygc3RhdGUgdG8gYmUgYSBKU1ZhbHVl
IGFuZCBvZgorICAgICAgICBzZXJpYWxpemVkU3RhdGUgdG8gYmUgYSByYXcgcG9pbnRlciwgbm90
IGEgUGFzc1JlZlB0ci4KKworICAgICAgICAqIGRvbS9UcmF2ZXJzYWwuaDogUmVtb3ZlZCB1bm5l
ZWRlZCBpbmNsdWRlLiBSZW1vdmVkIHVubmVjZXNzYXJ5IHVzZSBvZgorICAgICAgICB1bnNpZ25l
ZCBsb25nIGluc3RlYWQgb2YgdW5zaWduZWQuIEZpeGVkIGluZGVudGF0aW9uLgorCisgICAgICAg
ICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6IFBhc3MgcmVmZXJlbmNlLgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOiBQ
YXNzIEpTVmFsdWUgaW5zdGVhZAorICAgICAgICBvZiBjb25zdHJ1Y3RpbmcgYSBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OmRpc2Nvbm5l
Y3QpOiBJbml0aWFsaXplIHdpdGhvdXQgZXhwbGljaXRseQorICAgICAgICBtZW50aW9uaW5nIHRo
ZSBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QgdHlwZS4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDogUmVtb3ZlZCB1
bm5lZWRlZCBpbmNsdWRlIGFuZCBhbHNvCisgICAgICAgIGRlY2xhcmF0aW9uIG9mIHR3byBub24t
ZXhpc3RlbnQgZnVuY3Rpb25zLgorCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6UG9zdE1lc3NhZ2VUaW1lcik6IFR3ZWFr
ZWQgdHlwZXMgYSBsaXR0bGUgYml0IHRvCisgICAgICAgIG1hdGNoIHdoYXQgaXMgdXNlZCBpbiBN
ZXNzYWdlRXZlbnQgbm93LgorICAgICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6ZXZl
bnQpOiBTdHJlYW1saW5lZCBhIGJpdCBhbmQgY2hhbmdlZCB0eXBlIHRvCisgICAgICAgIHJlZmVy
ZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2UpOiBVcGRhdGVk
IGZvciBjaGFuZ2VzIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVz
c2FnZVRpbWVyRmlyZWQpOiBEaXR0by4KKworICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmNyZWF0ZU1lc3NhZ2VFdmVudCk6IFJl
bW92ZWQgbm93LXVubmVlZGVkCisgICAgICAgICJmYWxzZSwgZmFsc2UiIGZyb20gTWVzc2FnZUV2
ZW50OjpjcmVhdGUgZnVuY3Rpb24gY2FsbC4KKworICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6IFJlbW92ZWQgdW5u
ZWVkZWQKKyAgICAgICAgaW5jbHVkZSBhbmQgYWxzbyB1bm5lZWRlZCBub24tY29weWFibGUsIHNp
bmNlIHRoZSBjbGFzcyBoYXMgYSByZWZlcmVuY2UgYXMKKyAgICAgICAgYSBkYXRhIG1lbWJlciBh
bmQgc28gaXMgYXV0b21hdGljYWxseSBub24tY29weWFibGUuCisKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmRlc2NyaXB0aW9u
KTogQ2hhbmdlZCB0byB0YWtlIEpTVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnBhcnNlck1ldGFEYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNl
cmlhbGl6ZU9iamVjdCk6IFJlbW92ZWQgdW5uZWNlc3NhcnkgY29weWluZyBvZiB2ZWN0b3IuCisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzRnJvbUN1cnJlbnRXb3JsZCk6IENoYW5nZWQg
dG8gdGFrZSBKU1ZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc1JlYWRhYmxl
U3RyZWFtRGlzdHVyYmVkKTogQ2hhbmdlZCB0byBub3QgcmVseSBvbiB0aGUKKyAgICAgICAgU2Ny
aXB0U3RhdGUgdHlwZWRlZiBhbmQgY2FsbCBpdCBKU0M6OkV4ZWNTdGF0ZS4KKworICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuIFJlbW92ZWQg
dW5uZWVkZWQgYW5kCisgICAgICAgIGluYXBwcm9wcmlhdGUgdXNlIG9mIEFTU0VSVF9OT19FWENF
UFRJT04uCisKIDIwMTYtMDQtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZHVjZSB1c2Ugb2YgRGVwcmVjYXRlZDo6U2NyaXB0WFhYIGNsYXNzZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAKaW5kZXggYTRkYzYwNGM4OTI0ODU1OTE0ODUwZmIzOGJlM2VmZTFmYTU2MjAyYi4uYzNkMGQx
YjZhOWZjOGM3NjIzYTBiMDcxYjg2NzZkMzc1YmE2YzIxNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKQEAgLTQxLDE1
ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBEZXByZWNhdGVkIHsK
IAotdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRPYmplY3QmIGFyZ3VtZW50KQotewotICAgIGlmIChhcmd1bWVudC5z
Y3JpcHRTdGF0ZSgpICE9IG1fZXhlYykgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2FyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnQu
anNPYmplY3QoKSk7Ci19Ci0KIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5k
QXJndW1lbnQoY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhtX2V4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdEZ1bmN0aW9uQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dEZ1bmN0aW9uQ2FsbC5oCmluZGV4IDQ5N2VhYzAzYjI5ODE3MDdmZjlmYzdiYmI2MjY5MjZhYmJh
YmUxOWIuLjEwMzdjNDJjNWQwYzU5MjI1ODYyNzA3NTE0NjI4MTE3NTAyMjFiMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmgK
QEAgLTQ2LDggKzQ2LDYgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0Q2FsbEFyZ3Vt
ZW50SGFuZGxlciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUpIDogbV9leGVjKHN0YXRlKSB7IH0KIAotICAgIHZvaWQgYXBwZW5k
QXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0gICAgdm9pZCBhcHBlbmRBcmd1bWVudChj
b25zdCBTY3JpcHRWYWx1ZSYpOwogICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgY2hhciop
OwogICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBhcHBl
bmRBcmd1bWVudChKU0M6OkpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL1NjcmlwdE9iamVjdC5oCmluZGV4IDhmN2IwZGNkZGQxMzk1MmQ1ZGUyNTdlOGZkOGUyZGVl
ZWRlMmZmOTYuLmJhYTFlYThlMDFiOWRhNmJiNjk4MTQ4NzNlNmZkNjJlMzFmODQyMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmgKQEAgLTI5LDgg
KzI5LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTY3JpcHRPYmplY3RfaAot
I2RlZmluZSBTY3JpcHRPYmplY3RfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBAIC00MSwxNSArNDAsMTUgQEAgY2xhc3Mg
U2NyaXB0T2JqZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBTY3JpcHRPYmplY3QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgU2NyaXB0VmFsdWUmKTsKLSAgICBTY3JpcHRPYmplY3QoKSA6IG1fc2NyaXB0U3RhdGUobnVs
bHB0cikgeyB9CisgICAgU2NyaXB0T2JqZWN0KCkgeyB9CisKKyAgICBvcGVyYXRvciBKU0M6OkpT
T2JqZWN0KigpIGNvbnN0IHsgcmV0dXJuIGpzT2JqZWN0KCk7IH0KIAogICAgIEpTQzo6SlNPYmpl
Y3QqIGpzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsgfQogICAg
IEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3Rh
dGU7IH0KIAotcHJvdGVjdGVkOgotICAgIEpTQzo6RXhlY1N0YXRlKiBtX3NjcmlwdFN0YXRlOwor
cHJpdmF0ZToKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9zY3JpcHRTdGF0ZSB7IG51bGxwdHIgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIERlcHJlY2F0ZWQKLQotI2VuZGlmIC8vIFNjcmlwdE9iamVj
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCmluZGV4
IDc2ZGUxZWE1MmIxY2IxZWRlNjEyY2NmYzViMjY4YjFkYTJjZTE2MGMuLjFmMzU0ZjJjZWE4ZWU0
M2NhMTdlMDYxZDIzZmE3N2Q4MWQ0Njc2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRWYWx1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIAotUmVmUHRyPEluc3BlY3RvclZhbHVlPiB0
b0luc3BlY3RvclZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK0pTX0VYUE9S
VF9QUklWQVRFIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdG9JbnNwZWN0b3JWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGZj
YmY4MTQ1M2Q5Y2QxODQwODg2NGM0OTE1MzNiNDY5MGM3MDQ4MGMuLmQwZDEyNjMzY2E0MjQxZjAy
YTliNjcwMjg3YzlkZGM4ZDZkMDRkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTEzMSw3ICsx
MzEsNyBAQCBTdHJpbmcgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdFNvdXJj
ZSgpCiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKEluamVjdGVk
U2NyaXB0U291cmNlX2pzLCBzaXplb2YoSW5qZWN0ZWRTY3JpcHRTb3VyY2VfanMpKTsKIH0KIAot
RGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
IGludCBpZCkKK0pTQzo6SlNPYmplY3QqIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5q
ZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
IGludCBpZCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CiAKQEAgLTE0
MywxMiArMTQzLDEyIEBAIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluCiAgICAgSW5zcGVjdG9yRXZh
bHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlciA9IG1fZW52aXJvbm1lbnQuZXZhbHVhdGVIYW5k
bGVyKCk7CiAgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gZXZhbHVhdGVIYW5kbGVyKHNjcmlw
dFN0YXRlLCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsIGV2YWx1YXRpb25FeGNlcHRpb24p
OwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlv
blZhbHVlLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdzLmFw
cGVuZChtX2luamVjdGVkU2NyaXB0SG9zdC0+d3JhcHBlcihzY3JpcHRTdGF0ZSwgZ2xvYmFsT2Jq
ZWN0KSk7CkBAIC0xNTcsMTAgKzE1Nyw3IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluCiAKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChzY3JpcHRTdGF0ZSwgZnVuY3Rpb25WYWx1ZSwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3MpOwogICAgIHNjcmlwdFN0
YXRlLT5jbGVhckV4Y2VwdGlvbigpOwotICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0Lmdl
dE9iamVjdCgpKTsKLQotICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QoKTsKKyAg
ICByZXR1cm4gcmVzdWx0LmdldE9iamVjdCgpOwogfQogCiBJbmplY3RlZFNjcmlwdCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKEV4ZWNTdGF0ZSogaW5zcGVjdGVkRXhl
Y1N0YXRlKQpAQCAtMTc2LDE0ICsxNzMsMTQgQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcihFeGVjU3RhdGUqIGluc3BlY3RlZEV4ZWMKICAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKICAgICBpbnQgaWQgPSBpbmplY3RlZFNj
cmlwdElkRm9yKGluc3BlY3RlZEV4ZWNTdGF0ZSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0T2Jq
ZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0ID0gY3JlYXRlSW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRT
Y3JpcHRTb3VyY2UoKSwgaW5zcGVjdGVkRXhlY1N0YXRlLCBpZCk7Ci0gICAgaWYgKGluamVjdGVk
U2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkgIT0gaW5zcGVjdGVkRXhlY1N0YXRlKSB7CisgICAg
YXV0byBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGNyZWF0ZUluamVjdGVkU2NyaXB0KGluamVjdGVk
U2NyaXB0U291cmNlKCksIGluc3BlY3RlZEV4ZWNTdGF0ZSwgaWQpOworICAgIGlmICghaW5qZWN0
ZWRTY3JpcHRPYmplY3QpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gcGFyc2Uv
ZXhlY3V0ZSBJbmplY3RlZFNjcmlwdFNvdXJjZS5qcyEiKTsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCIlc1xuIiwgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgSW5qZWN0ZWRTY3Jp
cHQgcmVzdWx0KGluamVjdGVkU2NyaXB0T2JqZWN0LCAmbV9lbnZpcm9ubWVudCk7CisgICAgSW5q
ZWN0ZWRTY3JpcHQgcmVzdWx0KHsgaW5zcGVjdGVkRXhlY1N0YXRlLCBpbmplY3RlZFNjcmlwdE9i
amVjdCB9LCAmbV9lbnZpcm9ubWVudCk7CiAgICAgbV9pZFRvSW5qZWN0ZWRTY3JpcHQuc2V0KGlk
LCByZXN1bHQpOwogICAgIGRpZENyZWF0ZUluamVjdGVkU2NyaXB0KHJlc3VsdCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IGUxOGQ3Y2Q0NjFiZGY5ZGE4NjU1ZTQ3YmVi
M2E2NjgwZDIyYWQ3NWMuLjYwNmQ5ZjdiNDliNTYzMjZiMDAwMDNiOTg4YWE0NThmNDZjZTEzYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaApAQCAtNzQsNyArNzQsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgU3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7Ci0gICAgRGVwcmVjYXRlZDo6U2Ny
aXB0T2JqZWN0IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBKU0M6
OkV4ZWNTdGF0ZSosIGludCBpZCk7CisgICAgSlNDOjpKU09iamVjdCogY3JlYXRlSW5qZWN0ZWRT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEpTQzo6RXhlY1N0YXRlKiwgaW50IGlkKTsKIAog
ICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwogICAgIFJlZlB0cjxJbmpl
Y3RlZFNjcmlwdEhvc3Q+IG1faW5qZWN0ZWRTY3JpcHRIb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAppbmRl
eCAxOTU3NzEzYWViYzkwOGQ3ZjllMmY3ZWMyMTMwZTljYjczZmVhZTY3Li43NTBjNWVjNzAyNzlm
M2E4ZmFhM2YyNDdiZThkYmQ4NzM3ZGVmNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaApAQCAtMjMsMTIg
KzIzLDEwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIE1lZGlhQ29udHJvbHNI
b3N0X2gKLSNkZWZpbmUgTWVkaWFDb250cm9sc0hvc3RfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBF
TkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
ICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTkwLDUgKzg4LDMgQEAgcHJpdmF0
ZToKIH0KIAogI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAppbmRleCBkZTc4NDM0MGZjMDQ1MjVkZjRlMzI0
YjlhNjIyODUwNTdmYjkyMzE1Li44NWQyYmYyNTI3OTY4MmY0MjU3OWYyZjIxNGRiNzg3OThlNDJk
MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVw
bGFjZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVw
bGFjZW1lbnQuaApAQCAtMjMsMTEgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgUGx1Z2luUmVwbGFjZW1lbnRfaAotI2RlZmluZSBQbHVnaW5SZXBsYWNlbWVudF9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlbmRlclB0ci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNDcsMTcgKzQ1LDE0IEBAIGNsYXNzIFBsdWdpblJlcGxhY2VtZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8UGx1Z2luUmVwbGFjZW1lbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Q
bHVnaW5SZXBsYWNlbWVudCgpIHsgfQogCi0gICAgdmlydHVhbCBib29sIGluc3RhbGxSZXBsYWNl
bWVudChTaGFkb3dSb290KikgPSAwOwotICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogc2NyaXB0
T2JqZWN0KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBpbnN0YWxsUmVwbGFjZW1l
bnQoU2hhZG93Um9vdCYpID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIHNjcmlwdE9i
amVjdCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsQ3JlYXRl
UmVuZGVyZXIoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgPSAwOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgUGx1Z2luUmVwbGFjZW1lbnQoKSB7IH0KIH07CiAKLXR5cGVkZWYgUGFzc1JlZlB0
cjxQbHVnaW5SZXBsYWNlbWVudD4gKCpDcmVhdGVQbHVnaW5SZXBsYWNlbWVudCkoSFRNTFBsdWdJ
bkVsZW1lbnQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKK3R5cGVkZWYgUmVmPFBsdWdpblJlcGxhY2VtZW50PiAo
KkNyZWF0ZVBsdWdpblJlcGxhY2VtZW50KShIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMp
OwogdHlwZWRlZiBib29sICgqUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c1R5cGUpKGNvbnN0IFN0
cmluZyYpOwogdHlwZWRlZiBib29sICgqUGx1Z2luUmVwbGFjZW1lbnRTdXBwb3J0c0ZpbGVFeHRl
bnNpb24pKGNvbnN0IFN0cmluZyYpOwogdHlwZWRlZiBib29sICgqUGx1Z2luUmVwbGFjZW1lbnRT
dXBwb3J0c1VSTCkoY29uc3QgVVJMJik7CkBAIC04MCw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxQbHVnaW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQ
bHVnSW5FbGVtZW50JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBjb25zdCB7IHJldHVybiBtX2NvbnN0
cnVjdG9yKGVsZW1lbnQsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsgfQorICAgIFJlZjxQbHVn
aW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiBlbGVtZW50LCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdG9yKGVsZW1lbnQsIHBhcmFtTmFtZXMsIHBh
cmFtVmFsdWVzKTsgfQogICAgIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNUeXBlKG1pbWVUeXBlKTsgfQogICAgIGJvb2wg
c3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdCB7IHJl
dHVybiBtX3N1cHBvcnRzRmlsZUV4dGVuc2lvbihleHRlbnNpb24pOyB9CiAgICAgYm9vbCBzdXBw
b3J0c1VSTChjb25zdCBVUkwmIHVybCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c1VSTCh1cmwp
OyB9CkBAIC05NSw1ICs5MCwzIEBAIHByaXZhdGU6CiB0eXBlZGVmIHZvaWQgKCpQbHVnaW5SZXBs
YWNlbWVudFJlZ2lzdHJhcikoY29uc3QgUmVwbGFjZW1lbnRQbHVnaW4mKTsKIAogfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmgKaW5kZXggODIyNzFlMTcxMDY3Zjc2OGJhYjI4M2U3NjNh
NmUyN2MzNGQ0MWE2MC4uOWRjMzE1MGRmNzBlMGNhMjEwODU1ZWZiYjZlZmQ4NDcyYjgwZmM3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmgKQEAgLTIzLDQ2ICsyMywzOCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAotI2lmbmRlZiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudF9oCi0jZGVmaW5l
IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
UGx1Z2luUmVwbGFjZW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUg
PGJpbmRpbmdzL1NjcmlwdE9iamVjdC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CitjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBI
VE1MVmlkZW9FbGVtZW50OwotY2xhc3MgUmVuZGVyRWxlbWVudDsKLWNsYXNzIFJlbmRlclN0eWxl
OwotY2xhc3MgU2hhZG93Um9vdDsKIAotY2xhc3MgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQg
OiBwdWJsaWMgUGx1Z2luUmVwbGFjZW1lbnQgeworY2xhc3MgUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQgZmluYWwgOiBwdWJsaWMgUGx1Z2luUmVwbGFjZW1lbnQgewogcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyUGx1Z2luUmVwbGFjZW1lbnQoUGx1Z2luUmVwbGFjZW1lbnRSZWdp
c3RyYXIpOwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJik7
Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOwot
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzVVJMKGNvbnN0IFVSTCYpIHsgcmV0dXJuIHRydWU7IH0K
LSAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5SZXBsYWNlbWVudD4gY3JlYXRlKEhU
TUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Ci0gICAgflF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50KCk7Ci0KLSAgICBib29sIGluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290Kikgb3Zl
cnJpZGU7Ci0gICAgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9zY3JpcHRPYmplY3Q7IH0KIAotICAgIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLQotICAgIEhU
TUxWaWRlb0VsZW1lbnQqIHBhcmVudEVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudC5n
ZXQoKTsgfQorICAgIHZpcnR1YWwgflF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50KCk7CiAKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgbW92aWVTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBwb3N0RXZl
bnQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBIVE1MVmlkZW9FbGVtZW50KiBwYXJlbnRFbGVtZW50
KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudChIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwor
ICAgIHN0YXRpYyBSZWY8UGx1Z2luUmVwbGFjZW1lbnQ+IGNyZWF0ZShIVE1MUGx1Z0luRWxlbWVu
dCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWltZVR5cGUoY29uc3Qg
U3RyaW5nJik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYpOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzVVJMKGNvbnN0IFVSTCYpIHsgcmV0dXJu
IHRydWU7IH0KKworICAgIGJvb2wgaW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QmKSBmaW5h
bDsKKyAgICBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoKSBmaW5hbCB7IHJldHVybiBtX3Nj
cmlwdE9iamVjdDsgfQorCisgICAgYm9vbCB3aWxsQ3JlYXRlUmVuZGVyZXIoKSBmaW5hbCB7IHJl
dHVybiBtX21lZGlhRWxlbWVudDsgfQorICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgYm9vbCBlbnN1cmVSZXBs
YWNlbWVudFNjcmlwdEluamVjdGVkKCk7CiAgICAgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdv
cmxkKCk7CkBAIC03MSw5ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEhUTUxWaWRlb0Vs
ZW1lbnQ+IG1fbWVkaWFFbGVtZW50OwogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IG1fbmFtZXM7
CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gbV92YWx1ZXM7Ci0gICAgSlNDOjpKU09iamVjdCog
bV9zY3JpcHRPYmplY3Q7CisgICAgSlNDOjpKU09iamVjdCogbV9zY3JpcHRPYmplY3Q7IC8vIEZJ
WE1FOiBXaHkgaXMgaXQgc2FmZSB0byBoYXZlIHRoaXMgcG9pbnRlciBoZXJlPyBXaGF0IGtlZXBz
IGl0IGFsaXZlIGR1cmluZyBHQz8KIH07CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW0KaW5kZXggZTdkY2Y4OTYzZDEwMzRiYmIyMmIwMDcxZGM0Y2I5ZWEyMmUxMjk1My4uNTE2
NTIzMWRhMjMxMjQ0MWVkYzU5YmJmOGUwY2RmMzkyYjIwMjhjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbQpAQCAtNzUsOSArNzUsOSBAQCB2b2lkIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
OjpyZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KFBsdWdpblJlcGxhY2VtZW50UmVnaQogICAgIHJl
Z2lzdHJhcihSZXBsYWNlbWVudFBsdWdpbihjcmVhdGUsIHN1cHBvcnRzTWltZVR5cGUsIHN1cHBv
cnRzRmlsZUV4dGVuc2lvbiwgc3VwcG9ydHNVUkwpKTsKIH0KIAotUGFzc1JlZlB0cjxQbHVnaW5S
ZXBsYWNlbWVudD4gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZShIVE1MUGx1Z0lu
RWxlbWVudCYgcGx1Z2luLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQorUmVmPFBsdWdpblJlcGxhY2VtZW50PiBRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudChwbHVnaW4sIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQocGx1Z2luLCBwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcykpOwogfQogCiBib29sIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
OjpzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC0xNzEsNyArMTcx
LDcgQEAgYm9vbCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRT
Y3JpcHRJbmplY3RlZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290KiByb290KQorYm9v
bCBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jv
b3QmIHJvb3QpCiB7CiAgICAgaWYgKCFlbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBib29sIFF1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9vdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdMaXN0OwotICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCByb290
KSk7CisgICAgYXJnTGlzdC5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsICZyb290KSk7
CiAgICAgYXJnTGlzdC5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG1fcGFyZW50RWxl
bWVudCkpOwogICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB0aGlz
KSk7CiAgICAgYXJnTGlzdC5hcHBlbmQodG9KUzxTdHJpbmc+KGV4ZWMsIGdsb2JhbE9iamVjdCwg
bV9uYW1lcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCBjYWUyMTExNDIzNmVhN2FlYTc1
NjAwMmI0Mzg1ZTlkZjdiY2RhZGExLi5mMjBlNDE1ZjcwNmJlNzEzZTA4NTAzZmI1ODZkMzU0NTE2
M2Y0NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDMsOSArNDMsOSBAQCB2b2lkIFlv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6cmVnaXN0ZXJQbHVnaW5SZXBsYWNlbWVudChQbHVnaW5S
ZXBsYWNlbWVudFJlZ2lzdAogICAgIHJlZ2lzdHJhcihSZXBsYWNlbWVudFBsdWdpbihjcmVhdGUs
IHN1cHBvcnRzTWltZVR5cGUsIHN1cHBvcnRzRmlsZUV4dGVuc2lvbiwgc3VwcG9ydHNVUkwpKTsK
IH0KIAotUGFzc1JlZlB0cjxQbHVnaW5SZXBsYWNlbWVudD4gWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50OjpjcmVhdGUoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKK1JlZjxQ
bHVnaW5SZXBsYWNlbWVudD4gWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGUoSFRNTFBs
dWdJbkVsZW1lbnQmIHBsdWdpbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudChwbHVnaW4sIHBhcmFtTmFtZXMsIHBhcmFtVmFs
dWVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
KHBsdWdpbiwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpKTsKIH0KIAogYm9vbCBZb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQ6OnN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
QEAgLTc3LDExICs3NywxMSBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gWW91VHViZVBsdWdp
blJlcGxhY2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdQogICAgIHJldHVybiBt
X2VtYmVkU2hhZG93RWxlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5bGUp
LCBpbnNlcnRpb25Qb3NpdGlvbik7CiB9CiAKLWJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9vdCkKK2Jvb2wgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCYgcm9vdCkKIHsKICAg
ICBtX2VtYmVkU2hhZG93RWxlbWVudCA9IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ6OmNyZWF0
ZShtX3BhcmVudEVsZW1lbnQtPmRvY3VtZW50KCkpOwogCi0gICAgcm9vdC0+YXBwZW5kQ2hpbGQo
Km1fZW1iZWRTaGFkb3dFbGVtZW50KTsKKyAgICByb290LmFwcGVuZENoaWxkKCptX2VtYmVkU2hh
ZG93RWxlbWVudCk7CiAKICAgICBSZWY8SFRNTElGcmFtZUVsZW1lbnQ+IGlmcmFtZUVsZW1lbnQg
PSBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6aWZyYW1lVGFnLCBtX3BhcmVu
dEVsZW1lbnQtPmRvY3VtZW50KCkpOwogICAgIGlmIChtX2F0dHJpYnV0ZXMuY29udGFpbnMoIndp
ZHRoIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91
VHViZVBsdWdpblJlcGxhY2VtZW50LmgKaW5kZXggYzY4ZTA0OTlkNzgyNDdhMWVjYjA3ZmE2ZjJh
MWUwYTRhYmFkM2E2Mi4uOGI0YzAyMzFhZjNjNzM3ZWYxYjhjZTE2Y2ZlYThjODViYjczOGJlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuaApAQCAtMjMsMjQgKzIzLDE2IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCi0jaWZuZGVmIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudF9oCi0jZGVmaW5lIFlvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsdWdpblJl
cGxhY2VtZW50LmgiCi0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MUGx1Z0luRWxl
bWVudDsKLWNsYXNzIEhUTUxJRnJhbWVFbGVtZW50OwotY2xhc3MgUmVuZGVyRWxlbWVudDsKLWNs
YXNzIFJlbmRlclN0eWxlOwotY2xhc3MgU2hhZG93Um9vdDsKIGNsYXNzIFlvdVR1YmVFbWJlZFNo
YWRvd0VsZW1lbnQ7CiAKLWNsYXNzIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCA6IHB1YmxpYyBQ
bHVnaW5SZXBsYWNlbWVudCB7CitjbGFzcyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQgZmluYWwg
OiBwdWJsaWMgUGx1Z2luUmVwbGFjZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyUGx1Z2luUmVwbGFjZW1lbnQoUGx1Z2luUmVwbGFjZW1lbnRSZWdpc3RyYXIpOwogCkBA
IC00OCwyNSArNDAsMjEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFlvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudChIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotCisgICAgc3RhdGlj
IFJlZjxQbHVnaW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZh
bHVlcyk7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmKTsK
ICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0ZpbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJik7CiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNVUkwoY29uc3QgVVJMJik7Ci0gICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGx1Z2luUmVwbGFjZW1lbnQ+IGNyZWF0ZShIVE1MUGx1Z0luRWxlbWVudCYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpOwogCi0gICAgYm9vbCBpbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCop
IG92ZXJyaWRlOwotICAgIAorICAgIGJvb2wgaW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3Qm
KSBmaW5hbDsKKwogICAgIFN0cmluZyB5b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgcmF3VVJMKTsK
LSAgICAKLSAgICBib29sIHdpbGxDcmVhdGVSZW5kZXJlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZW1iZWRTaGFkb3dFbGVtZW50OyB9Ci0gICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgCisKKyAgICBib29sIHdp
bGxDcmVhdGVSZW5kZXJlcigpIGZpbmFsIHsgcmV0dXJuIG1fZW1iZWRTaGFkb3dFbGVtZW50OyB9
CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1M
UGx1Z0luRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgZmluYWw7CisKICAgICBIVE1MUGx1Z0luRWxlbWVudCogbV9wYXJlbnRFbGVtZW50Owog
ICAgIFJlZlB0cjxZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50PiBtX2VtYmVkU2hhZG93RWxlbWVu
dDsKICAgICBLZXlWYWx1ZU1hcCBtX2F0dHJpYnV0ZXM7CiB9OwogCiB9Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBj
ZmJlNjc5M2VlNzgyMzdkOTIxYzVhMTdkN2M4MTVmOWY4MDEyYThhLi4zODIxNmE2NjkxZmI5ZGRh
ZTc4ZThkZDZkNDhlZGMwYWU5NzA3ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNTY1LDEzICs1NjUsMTAgQEAgdm9pZCBXZWJT
b2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEp
CiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2ZUJpbmFyeURhdGEo
KSAlbHUgYnl0ZSBiaW5hcnkgbWVzc2FnZSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmc+KGJpbmFyeURhdGEuc2l6ZSgpKSk7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKLSAg
ICBjYXNlIEJpbmFyeVR5cGVCbG9iOiB7CisgICAgY2FzZSBCaW5hcnlUeXBlQmxvYjoKICAgICAg
ICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2Vz
cywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgICAg
IFJlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmluYXJ5RGF0YSksIGVt
cHR5U3RyaW5nKCkpOwotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KGJsb2IucmVsZWFzZSgpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmco
KSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNy
ZWF0ZShXVEZNb3ZlKGJpbmFyeURhdGEpLCBlbXB0eVN0cmluZygpKSwgU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAg
ICAgY2FzZSBCaW5hcnlUeXBlQXJyYXlCdWZmZXI6CiAgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShiaW5hcnlEYXRhLmRhdGEoKSwg
YmluYXJ5RGF0YS5zaXplKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJp
bmcoKSkpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVJlcXVlc3RTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9N
UmVxdWVzdFN0YXRlLmgKaW5kZXggMmE0NzE0YzkzYjkzMDBlYTk3ZjQ4YTRlMWZiNjczNzI3MWUy
ZDI1Yi4uNDhmYjFkYTMzNjAzNjBkYmFhM2EwMzg5ZGE1NWEzNTBmMjZiOTJjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUmVxdWVzdFN0YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUmVxdWVzdFN0YXRlLmgKQEAgLTI1LDggKzI1LDcg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBET01SZXF1ZXN0U3RhdGVfaAotI2Rl
ZmluZSBET01SZXF1ZXN0U3RhdGVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJET01XcmFw
cGVyV29ybGQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNDEsNyArNDAsNiBAQCBjbGFz
cyBET01SZXF1ZXN0U3RhdGUgewogcHVibGljOgogICAgIGV4cGxpY2l0IERPTVJlcXVlc3RTdGF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAg
ICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAg
ICAgICAsIG1fZXhlYyhudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKGlzPERvY3VtZW50Pigq
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSkgewogICAgICAgICAgICAgRG9jdW1lbnQmIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwpAQCAt
NzksNCArNzcsMyBAQCBwcml2YXRlOgogfTsKIAogfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmgKaW5kZXggZDMxNzJhZjQ0N2ZmYWI4MWVmYzY1ODU4M2NlYTkx
NDViMTYyMmE5MC4uMGY0NDMxNDVjZDZjN2ViZmNkYTJlYTE3YjExMzI0ZTE3MjcwNDYzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaApAQCAtMjQsOCArMjQsNyBAQAog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIERpY3Rpb25hcnlfaAotI2RlZmluZSBEaWN0aW9u
YXJ5X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVk
ZSAiSlNFdmVudExpc3RlbmVyLmgiCkBAIC00NywxOCArNDYsMTMgQEAgcHVibGljOgogICAgIERp
Y3Rpb25hcnkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIGEgdmFsdWUgd2FzIGZvdW5kIGZvciB0aGUgcHJvdmlkZWQgcHJvcGVydHkuCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdD4KLSAgICBib29sIGdldChjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHQ+Ci0gICAgYm9vbCBnZXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNv
bnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gYm9vbCBnZXQoY29uc3QgY2hhciog
cHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1
bHQ+IGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25zdDsK
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+Ci0gICAgT3B0aW9uYWw8UmVzdWx0PiBn
ZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXN1bHQ+IE9wdGlvbmFsPFJlc3VsdD4gZ2V0KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkg
Y29uc3Q7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdl
dCkgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRh
cmdldCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQp
IGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFJlZlB0cjxFdmVudExpc3RlbmVyPiBn
ZXRFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNv
bnN0OwogCiAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeS5p
c1ZhbGlkKCk7IH0KICAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29uc3QgeyByZXR1cm4g
IW1fZGljdGlvbmFyeS5pc1ZhbGlkKCk7IH0KQEAgLTY5LDYxICs2Myw0MCBAQCBwdWJsaWM6CiAg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFy
eS5leGVjU3RhdGUoKTsgfQogCiBwcml2YXRlOgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
ICAgIEpTQzo6SlNPYmplY3QqIGFzSlNPYmplY3QoVCopIGNvbnN0OworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IEpTQzo6SlNPYmplY3QqIGFzSlNPYmplY3QoVCopIGNvbnN0OwogICAgIAogICAg
IEpTRGljdGlvbmFyeSBtX2RpY3Rpb25hcnk7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVz
dWx0PgotYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBSZXN1
bHQmIHJlc3VsdCkgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gYm9vbCBEaWN0aW9u
YXJ5OjpnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICByZXR1cm4gbV9kaWN0aW9uYXJ5LmdldChwcm9wZXJ0eU5hbWUsIHJlc3Vs
dCk7CisgICAgcmV0dXJuIG1fZGljdGlvbmFyeS5pc1ZhbGlkKCkgJiYgbV9kaWN0aW9uYXJ5Lmdl
dChwcm9wZXJ0eU5hbWUsIHJlc3VsdCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+
Ci1ib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgUmVzdWx0
JiByZXN1bHQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQ+IGJvb2wgRGljdGlvbmFy
eTo6Z2V0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBSZXN1bHQmIHJlc3VsdCkgY29uc3QK
IHsKICAgICByZXR1cm4gZ2V0KHByb3BlcnR5TmFtZS51dGY4KCkuZGF0YSgpLCByZXN1bHQpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQ+Ci1PcHRpb25hbDxSZXN1bHQ+IERpY3Rpb25h
cnk6OmdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXN1bHQ+IE9wdGlvbmFsPFJlc3VsdD4gRGljdGlvbmFyeTo6Z2V0KGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBSZXN1bHQgcmVzdWx0OwotCiAgICAgaWYgKCFnZXQo
cHJvcGVydHlOYW1lLCByZXN1bHQpKQogICAgICAgICByZXR1cm4gTnVsbG9wdDsKLQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBUKiB0YXJnZXQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gRGljdGlvbmFyeTo6Z2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9wZXJ0
eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgZXZlbnRMaXN0ZW5lcjsKLSAgICBpZiAoIW1fZGljdGlvbmFyeS50cnlHZXRQcm9wZXJ0eShw
cm9wZXJ0eU5hbWUsIGV2ZW50TGlzdGVuZXIpKQorICAgIEpTQzo6SlNWYWx1ZSBldmVudExpc3Rl
bmVyOworICAgIGlmICghZ2V0KHByb3BlcnR5TmFtZSwgZXZlbnRMaXN0ZW5lcikgfHwgIWV2ZW50
TGlzdGVuZXIgfHwgIWV2ZW50TGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgaWYgKGV2ZW50TGlzdGVuZXIuaGFzTm9WYWx1ZSgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBpZiAoIWV2ZW50TGlzdGVuZXIuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNP
YmplY3QoZXZlbnRMaXN0ZW5lci5qc1ZhbHVlKCkpLCBhc0pTT2JqZWN0KHRhcmdldCksIHRydWUs
IGN1cnJlbnRXb3JsZChtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCkpKTsKKyAgICByZXR1cm4gSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QoZXZlbnRMaXN0ZW5lciksIGFzSlNPYmplY3Qo
dGFyZ2V0KSwgdHJ1ZSwgY3VycmVudFdvcmxkKGV4ZWNTdGF0ZSgpKSk7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotUmVmUHRyPEV2ZW50TGlzdGVuZXI+IERpY3Rpb25hcnk6OmdldEV2ZW50
TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3QKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IFJlZlB0cjxFdmVudExpc3RlbmVyPiBEaWN0aW9uYXJ5OjpnZXRF
dmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGdldEV2ZW50TGlzdGVuZXIocHJvcGVydHlOYW1lLnV0ZjgoKS5kYXRh
KCksIHRhcmdldCk7CiB9CiAKIH0KLQotI2VuZGlmIC8vIERpY3Rpb25hcnlfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb21tYW5kTGluZUFQSUhvc3RDdXN0
b20uY3BwCmluZGV4IDQzYzI1YTg4ZjQ3NDNmNTFkMTRkOTkwNjY2Zjk5YTllNWY3ZTBlM2IuLmVm
ODM5ZDg1MTgxNzllZWIyYTIzZWFlNDBmZmJlZTYwZWViZjAwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29tbWFuZExpbmVBUElIb3N0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5j
cHAKQEAgLTEyMiwxMiArMTIyLDEwIEBAIEpTVmFsdWUgSlNDb21tYW5kTGluZUFQSUhvc3Q6Omdl
dEV2ZW50TGlzdGVuZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAKIEpTVmFsdWUgSlNDb21tYW5kTGlu
ZUFQSUhvc3Q6Omluc3BlY3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBpZiAoc3RhdGUuYXJn
dW1lbnRDb3VudCgpID49IDIpIHsKLSAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgb2Jq
ZWN0KHN0YXRlLnZtKCksIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICAgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgaGludHMoc3RhdGUudm0oKSwgc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMSkpOwotICAgICAgICB3cmFwcGVkKCkuaW5zcGVjdEltcGwob2JqZWN0LnRvSW5zcGVj
dG9yVmFsdWUoJnN0YXRlKSwgaGludHMudG9JbnNwZWN0b3JWYWx1ZSgmc3RhdGUpKTsKLSAgICB9
Ci0KKyAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgd3JhcHBlZCgpLmluc3BlY3RJbXBsKEluc3BlY3Rvcjo6dG9JbnNw
ZWN0b3JWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpLAorICAgICAgICBJ
bnNwZWN0b3I6OnRvSW5zcGVjdG9yVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDEpKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAxZTViMGNh
YTFmNTQ2MjcxYjM1NTI1Y2M5Zjk0OGU2N2IzZDA4Njc1Li40ZjMyYTFlODk2M2I5MjE2MGFkMTdm
MTUyOGQ1MWQ1ZjJkMTk2MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC01NywxMSArNTcsMTAgQEAgSlNWYWx1ZSBK
U01lc3NhZ2VFdmVudDo6ZGF0YShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogICAgIEpTVmFsdWUg
cmVzdWx0OwogICAgIHN3aXRjaCAoZXZlbnQuZGF0YVR5cGUoKSkgewogICAgIGNhc2UgTWVzc2Fn
ZUV2ZW50OjpEYXRhVHlwZVNjcmlwdFZhbHVlOiB7Ci0gICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIHNjcmlwdFZhbHVlID0gZXZlbnQuZGF0YUFzU2NyaXB0VmFsdWUoKTsKLSAgICAgICAg
aWYgKHNjcmlwdFZhbHVlLmhhc05vVmFsdWUoKSkKKyAgICAgICAgSlNWYWx1ZSBkYXRhVmFsdWUg
PSBldmVudC5kYXRhQXNTY3JpcHRWYWx1ZSgpOworICAgICAgICBpZiAoIWRhdGFWYWx1ZSkKICAg
ICAgICAgICAgIHJlc3VsdCA9IGpzTnVsbCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IEpTVmFsdWUgZGF0YVZhbHVlID0gc2NyaXB0VmFsdWUuanNWYWx1ZSgpOwogICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBtYWtlIHN1cmUgTWVzc2FnZUV2ZW50cyBkbyBub3QgbGVhayBvYmplY3Rz
IGluIHRoZWlyIHN0YXRlIHByb3BlcnR5IGFjcm9zcyBpc29sYXRlZCBET00gd29ybGRzLgogICAg
ICAgICAgICAgLy8gSWRlYWxseSwgd2Ugd291bGQgY2hlY2sgdGhhdCB0aGUgd29ybGRzIGhhdmUg
ZGlmZmVyZW50IHByaXZpbGVnZXMgYnV0IHRoYXQncyBub3QgcG9zc2libGUgeWV0LgogICAgICAg
ICAgICAgaWYgKGRhdGFWYWx1ZS5pc09iamVjdCgpICYmICZ3b3JsZEZvckRPTU9iamVjdChkYXRh
VmFsdWUuZ2V0T2JqZWN0KCkpICE9ICZjdXJyZW50V29ybGQoJnN0YXRlKSkgewpAQCAtMTIwLDcg
KzExOSw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgaGFuZGxlSW5pdE1lc3NhZ2VFdmVudChKU01l
c3NhZ2VFdmVudCoganNFdmVudCwgSlNDOjpFeGVjU3RhCiAgICAgICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KLSAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkYXRhQXJnID0gRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUoc3RhdGUudm0oKSwgc3RhdGUuYXJndW1lbnQoMykpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIGRhdGFBcmcoc3RhdGUudm0oKSwgc3RhdGUuYXJndW1lbnQoMykpOwogICAgIGlmIChz
dGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDMxMjNjOTQ2
MDk1NGViZGIzNWQyMjhmOThkOTYxY2Y0N2ZjM2YyNjguLjI2ZmE5ZTVkYTc3YTU5ZmFlN2EwYjhh
NWRmZGFhZTQ2NjU4ZWVkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVj
dGlvbi5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
U1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCmluZGV4IDc4ZDJk
NmU0ODkwZGFlMzE4M2U3ZWY0MmI0MTUzZDliNjVhY2EyNWQuLjJiM2MwOWJmMDQzZDUwYmRhYmNi
ZTY0MTNkNjQ3MDRhNzFkYTQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5oCkBAIC0yMywxMiArMjMsMTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgSlNOb2RlQ3VzdG9tX2gKLSNkZWZpbmUgSlNOb2RlQ3VzdG9tX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCi0jaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTkxLDUgKzg5LDMgQEAgQUxXQVlTX0lOTElORSBKU05vZGUqIGpzTm9k
ZUNhc3QoSlNDOjpKU1ZhbHVlIHZhbHVlKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBKU0RPTU5vZGVDdXN0b21faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAKaW5kZXggOTVhMGZiNzgyNWNiMzA2
YjA0OGJjNzgzY2ZmMWM2YjlhMTE3YjIxNy4uNzFiNGZlZjNlMjU1NjU1YmZiYjQ4ZTA1YmM4ZDJh
NDI5ODc1MjAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQb3BT
dGF0ZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bv
cFN0YXRlRXZlbnRDdXN0b20uY3BwCkBAIC01OCwxNyArNTgsMTUgQEAgSlNWYWx1ZSBKU1BvcFN0
YXRlRXZlbnQ6OnN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAKICAgICBQb3BTdGF0ZUV2
ZW50JiBldmVudCA9IHdyYXBwZWQoKTsKIAotICAgIGlmICghZXZlbnQuc3RhdGUoKS5oYXNOb1Zh
bHVlKCkpIHsKKyAgICBpZiAoYXV0byBldmVudFN0YXRlID0gZXZlbnQuc3RhdGUoKSkgewogICAg
ICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBhIFBvcFN0YXRlRXZlbnQgZG9lcyBub3QgbGVh
ayBvYmplY3RzIGluIGl0cyBzdGF0ZSBwcm9wZXJ0eSBhY3Jvc3MgaXNvbGF0ZWQgRE9NIHdvcmxk
cy4KICAgICAgICAgLy8gSWRlYWxseSwgd2Ugd291bGQgY2hlY2sgdGhhdCB0aGUgd29ybGRzIGhh
dmUgZGlmZmVyZW50IHByaXZpbGVnZXMgYnV0IHRoYXQncyBub3QgcG9zc2libGUgeWV0LgotICAg
ICAgICBKU1ZhbHVlIGV2ZW50U3RhdGUgPSBldmVudC5zdGF0ZSgpLmpzVmFsdWUoKTsKICAgICAg
ICAgaWYgKGV2ZW50U3RhdGUuaXNPYmplY3QoKSAmJiAmd29ybGRGb3JET01PYmplY3QoZXZlbnRT
dGF0ZS5nZXRPYmplY3QoKSkgIT0gJmN1cnJlbnRXb3JsZCgmc3RhdGUpKSB7Ci0gICAgICAgICAg
ICBpZiAoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gZXZl
bnQudHJ5U2VyaWFsaXplU3RhdGUoJnN0YXRlKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHNlcmlh
bGl6ZWRWYWx1ZSA9IGV2ZW50LnRyeVNlcmlhbGl6ZVN0YXRlKCZzdGF0ZSkpCiAgICAgICAgICAg
ICAgICAgZXZlbnRTdGF0ZSA9IHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxpemUoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKSwgbnVsbHB0cik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgZXZlbnRTdGF0ZSA9IGpzTnVsbCgpOwogICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBy
ZXR1cm4gY2FjaGVTdGF0ZShzdGF0ZSwgdGhpcywgZXZlbnRTdGF0ZSk7CiAgICAgfQogICAgIApA
QCAtODIsNyArODAsNyBAQCBKU1ZhbHVlIEpTUG9wU3RhdGVFdmVudDo6c3RhdGUoRXhlY1N0YXRl
JiBzdGF0ZSkgY29uc3QKICAgICAvLyBUaGUgY3VycmVudCBoaXN0b3J5IHN0YXRlIG9iamVjdCBt
aWdodCd2ZSBjaGFuZ2VkIGluIHRoZSBtZWFudGltZSwgc28gd2UgbmVlZCB0byB0YWtlIGNhcmUK
ICAgICAvLyBvZiB1c2luZyB0aGUgY29ycmVjdCBvbmUsIGFuZCBhbHdheXMgc2hhcmUgdGhlIHNh
bWUgZGVzZXJpYWxpemF0aW9uIHdpdGggaGlzdG9yeS5zdGF0ZS4KIAotICAgIGJvb2wgaXNTYW1l
U3RhdGUgPSBoaXN0b3J5LT5pc1NhbWVBc0N1cnJlbnRTdGF0ZShldmVudC5zZXJpYWxpemVkU3Rh
dGUoKS5nZXQoKSk7CisgICAgYm9vbCBpc1NhbWVTdGF0ZSA9IGhpc3RvcnktPmlzU2FtZUFzQ3Vy
cmVudFN0YXRlKGV2ZW50LnNlcmlhbGl6ZWRTdGF0ZSgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdDsK
IAogICAgIGlmIChpc1NhbWVTdGF0ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmgKaW5kZXggN2UyNmFjN2E5YmExNTMzM2UyOTYyODg0YWUwZDZlYzkxYzYzMDJiNi4u
NzQ0MjFmZDk1YmExNzc1NmViODljMDA0MjZjMzNmYjU0NTQ5ODM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC0yOSwxNCArMjksMTQgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTY3JpcHRTdGF0ZV9oCi0jZGVmaW5lIFNjcmlwdFN0YXRl
X2gKKyNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBET01XcmFw
cGVyV29ybGQ7CiBjbGFzcyBGcmFtZTsKQEAgLTQ1LDEyICs0NSw2IEBAIGNsYXNzIFBhZ2U7CiBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAK
LS8vIFRoZSBpZGVhIGlzIHRvIGV4cG9zZSAic3RhdGUtbGlrZSIgbWV0aG9kcyAoaGFkRXhjZXB0
aW9uLCBhbmQgYW55IG90aGVyCi0vLyBtZXRob2RzIHdoZXJlIEV4ZWNTdGF0ZSBqdXN0IGRpcHMg
aW50byB2bSkgb2YgSlNDOjpFeGVjU3RhdGUgYXMgYQotLy8gc2VwYXJhdGUgYWJzdHJhY3Rpb24u
Ci0vLyBGb3Igbm93LCB0aGUgc2VwYXJhdGlvbiBpcyBwdXJlbHkgYnkgY29udmVudGlvbi4KLXR5
cGVkZWYgSlNDOjpFeGVjU3RhdGUgU2NyaXB0U3RhdGU7Ci0KIERPTVdpbmRvdyogZG9tV2luZG93
RnJvbUV4ZWNTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopOwogRnJhbWUqIGZyYW1lRnJvbUV4ZWNTdGF0
ZShKU0M6OkV4ZWNTdGF0ZSopOwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTYyLDUgKzU2LDMg
QEAgV0VCQ09SRV9FWFBPUlQgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdy
YXBwZXJXb3JsZCYsIFBhZ2UqKTsKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gU2NyaXB0U3RhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggODcwMDJlZmU2ODZiNTlh
MDg0ZTYzNzhlODkyNTk2NDg2YzU2MWZhZC4uYTdlM2FlYmQ4YTFlOGFiMDVhZTRkMzQ0NDI2YzVj
MWIzNmIzZTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNNZXNz
YWdlUG9ydC5oIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
PGxpbWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKaW5kZXggYmNkMmQ1NWViY2M5M2U0NDM1MjNhODgzM2JmNmM3NTBkOGZjZmJm
My4uNzMxYWNjMmZjMjMxYmY3ZGFiZDY1MDEzNmYyMmYyMDcwM2RlZjM4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTI0
LDEwICsyNCw4IEBACiAgKgogICovCiAKLSNpZm5kZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gK
LSNkZWZpbmUgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgpA
QCAtMTE1LDUgKzExMywzIEBAIHByaXZhdGU6CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBTZXJpYWxp
emVkU2NyaXB0VmFsdWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggYTBiZDgyNDc2MGYy
ZjA5ZjI0YjA4ZDhmMmY4YzkwYzIzYzRjYTNjNS4uNmI3NTZiODMwZTkxNjczNmRkMzM1YTZiNmMy
NWY3OWNjZTk0NTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3RyaW5nPiB2YWx1ZUZyb21EaWN0aW9uYXJ5KGNvbnN0
IERpY3Rpb25hcnkmIGRpY3Rpb25hcnksCiAgICAgcmV0dXJuIHJlc3VsdC5pc051bGwoKSA/IE51
bGxvcHQgOiBPcHRpb25hbDxTdHJpbmc+KHJlc3VsdCk7CiB9CiAKLVJlZlB0cjxGb250RmFjZT4g
Rm9udEZhY2U6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGZhbWlseSwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIHNvdXJjZSwgY29uc3QgRGljdGlvbmFyeSYgZGVzY3JpcHRvcnMsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEZvbnRGYWNlPiBGb250RmFjZTo6Y3JlYXRlKEpTQzo6
RXhlY1N0YXRlJiBleGVjU3RhdGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgZmFtaWx5LCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5
JiBkZXNjcmlwdG9ycywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFjb250ZXh0Lmlz
RG9jdW1lbnQoKSkgewogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKQEAgLTY2LDIwICs2NiwxOSBA
QCBSZWZQdHI8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgU2NyaXB0RXhlY3V0aW9uQ29udAogCiAgICAgUmVmPEZvbnRGYWNlPiByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IEZvbnRGYWNlKGV4ZWNTdGF0ZSwgZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRl
eHQpLmZvbnRTZWxlY3RvcigpKSk7CiAKKyAgICBlYyA9IDA7CiAgICAgcmVzdWx0LT5zZXRGYW1p
bHkoZmFtaWx5LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGlmIChzb3VyY2UuanNWYWx1ZSgpLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIHNv
dXJjZVN0cmluZyA9IHNvdXJjZS5qc1ZhbHVlKCkudG9TdHJpbmcoJmV4ZWNTdGF0ZSktPnZhbHVl
KCZleGVjU3RhdGUpOworICAgIGlmIChzb3VyY2UuaXNTdHJpbmcoKSkgeworICAgICAgICBTdHJp
bmcgc291cmNlU3RyaW5nID0gc291cmNlLnRvU3RyaW5nKCZleGVjU3RhdGUpLT52YWx1ZSgmZXhl
Y1N0YXRlKTsKICAgICAgICAgYXV0byB2YWx1ZSA9IEZvbnRGYWNlOjpwYXJzZVN0cmluZyhzb3Vy
Y2VTdHJpbmcsIENTU1Byb3BlcnR5U3JjKTsKLSAgICAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4o
dmFsdWUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QgPSBkb3du
Y2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSk7Ci0gICAgICAgICAgICBDU1NGb250RmFjZTo6YXBw
ZW5kU291cmNlcyhyZXN1bHQtPmJhY2tpbmcoKSwgc3JjTGlzdCwgJmRvd25jYXN0PERvY3VtZW50
Pihjb250ZXh0KSwgZmFsc2UpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWlzPENT
U1ZhbHVlTGlzdD4odmFsdWUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQorICAgICAgICBDU1NGb250
RmFjZTo6YXBwZW5kU291cmNlcyhyZXN1bHQtPmJhY2tpbmcoKSwgZG93bmNhc3Q8Q1NTVmFsdWVM
aXN0PigqdmFsdWUpLCAmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBmYWxzZSk7CiAgICAg
fQogCiAgICAgaWYgKGF1dG8gc3R5bGUgPSB2YWx1ZUZyb21EaWN0aW9uYXJ5KGRlc2NyaXB0b3Jz
LCAic3R5bGUiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggZDZjMTlhMzcxZDg4MTlkNjg4ZDFj
ZGFmZDY2ZDIzNTQzOWM4ZDk0OS4uZmNmYzliNzU3YzBiN2ViMzg3YTVkOTI0ZDZmMGRmNjZlMjJh
YjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgRGljdGlv
bmFyeTsKIAogY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFj
ZT4sIHB1YmxpYyBDU1NGb250RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPEZvbnRGYWNlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBzb3VyY2UsIGNvbnN0IERpY3Rpb25hcnkmIGRlc2NyaXB0b3JzLCBFeGNlcHRpb25Db2RlJik7
CisgICAgc3RhdGljIFJlZlB0cjxGb250RmFjZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgZmFtaWx5LCBKU0M6OkpTVmFsdWUg
c291cmNlLCBjb25zdCBEaWN0aW9uYXJ5JiBkZXNjcmlwdG9ycywgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHN0YXRpYyBSZWY8Rm9udEZhY2U+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIENTU0ZvbnRG
YWNlJik7CiAgICAgdmlydHVhbCB+Rm9udEZhY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcAppbmRleCA2YWJjODZjZDBkZTM1ZWIyNWFhN2QyZGQ3MDZhY2E0MmRlN2RkNGY1Li4z
ZGQ2NDI2NjQ2YmUwYzAwODczNDA2YWQyODAxYTIyNmM5NWMxNTNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNywxMiArMzksMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFs
aWRTb3VyY2UoRXZlbnRUYXJnZXQqIHNvdXJjZSkKICAgICByZXR1cm4gIXNvdXJjZSB8fCBzb3Vy
Y2UtPnRvRE9NV2luZG93KCkgfHwgc291cmNlLT5pc01lc3NhZ2VQb3J0KCk7CiB9CiAKLU1lc3Nh
Z2VFdmVudDo6TWVzc2FnZUV2ZW50KCkKK2lubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVu
dCgpCiAgICAgOiBtX2RhdGFUeXBlKERhdGFUeXBlU2NyaXB0VmFsdWUpCiB7CiB9CiAKLU1lc3Nh
Z2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVz
c2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0JiBp
bml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9kYXRh
VHlwZShEYXRhVHlwZVNjcmlwdFZhbHVlKQogICAgICwgbV9kYXRhQXNTY3JpcHRWYWx1ZShpbml0
aWFsaXplci5kYXRhKQpAQCAtNTMsNDAgKzU1LDI4IEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYgaW5p
CiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0
RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8
TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCi0gICAgOiBFdmVudChldmVudE5hbWVzKCkubWVzc2Fn
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpCi0gICAgLCBtX2RhdGFUeXBlKERhdGFUeXBlU2NyaXB0VmFs
dWUpCi0gICAgLCBtX2RhdGFBc1NjcmlwdFZhbHVlKGRhdGEpCi0gICAgLCBtX29yaWdpbihvcmln
aW4pCi0gICAgLCBtX2xhc3RFdmVudElkKGxhc3RFdmVudElkKQotICAgICwgbV9zb3VyY2Uoc291
cmNlKQotICAgICwgbV9wb3J0cyhXVEZNb3ZlKHBvcnRzKSkKLXsKLSAgICBBU1NFUlQoaXNWYWxp
ZFNvdXJjZShtX3NvdXJjZS5nZXQoKSkpOwotfQotCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVu
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+
IHNvdXJjZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzKQoraW5saW5l
IE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IEV2ZW50VGFyZ2V0KiBzb3VyY2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBw
b3J0cykKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxz
ZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpCi0gICAg
LCBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZShkYXRhKQorICAgICwgbV9kYXRhQXNTZXJp
YWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikK
ICAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2Up
CiAgICAgLCBtX3BvcnRzKFdURk1vdmUocG9ydHMpKQogewotICAgIEFTU0VSVChpc1ZhbGlkU291
cmNlKG1fc291cmNlLmdldCgpKSk7CisgICAgQVNTRVJUKGlzVmFsaWRTb3VyY2Uoc291cmNlKSk7
CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxh
c3RFdmVudElkKQotICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQoraW5s
aW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCkKKyAgICA6IEV2ZW50KHR5cGUsIGZhbHNlLCBm
YWxzZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpCi0g
ICAgLCBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZShkYXRhKQorICAgICwgbV9kYXRhQXNT
ZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fb3JpZ2luKG9yaWdp
bikKICAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCiB7CiB9CiAKLU1lc3NhZ2VFdmVu
dDo6TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
CitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbikKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZl
bnQsIGZhbHNlLCBmYWxzZSkKICAgICAsIG1fZGF0YVR5cGUoRGF0YVR5cGVTdHJpbmcpCiAgICAg
LCBtX2RhdGFBc1N0cmluZyhkYXRhKQpAQCAtOTQsMTUgKzg0LDE1IEBAIE1lc3NhZ2VFdmVudDo6
TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7
CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QmxvYj4gZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQo
UmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgOiBFdmVudChldmVu
dE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFUeXBlKERh
dGFUeXBlQmxvYikKLSAgICAsIG1fZGF0YUFzQmxvYihkYXRhKQorICAgICwgbV9kYXRhQXNCbG9i
KFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiB7CiB9CiAKLU1lc3NhZ2VF
dmVudDo6TWVzc2FnZUV2ZW50KFJlZjxBcnJheUJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbikKK2lubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChSZWY8QXJyYXlCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgOiBFdmVudChldmVudE5hbWVz
KCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFUeXBlKERhdGFUeXBl
QXJyYXlCdWZmZXIpCiAgICAgLCBtX2RhdGFBc0FycmF5QnVmZmVyKFdURk1vdmUoZGF0YSkpCkBA
IC0xMTAsNiArMTAwLDQxIEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFJlZjxBcnJheUJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKIH0KIAorUmVmPE1lc3NhZ2VF
dmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJy
YXk+IHBvcnRzLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBFdmVudFRhcmdldCogc291
cmNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRh
dGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIFdURk1vdmUocG9ydHMpKSk7Cit9CisK
K1JlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQodHlwZSwgV1RGTW92ZShkYXRhKSwgb3JpZ2luLCBsYXN0
RXZlbnRJZCkpOworfQorCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4pKTsKK30KKworUmVmPE1lc3Nh
Z2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KFdU
Rk1vdmUoZGF0YSksIG9yaWdpbikpOworfQorCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KFdURk1vdmUoZGF0YSks
IG9yaWdpbikpOworfQorCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZUZv
ckJpbmRpbmdzKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQpOwor
fQorCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYgaW5pdGlhbGl6
ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUsIGluaXRp
YWxpemVyKSk7Cit9CisKIE1lc3NhZ2VFdmVudDo6fk1lc3NhZ2VFdmVudCgpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggMDY4Y2I4ZTRlYWI4M2E1NGU3YWVkZTJkZTYzN2Fh
MWU5N2NjOTczZC4uMGNjZWFmNDg4YTdjYjNlMTNiYjg4M2QyYTUyYjk3ZjA5YTg3ZjAzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjUsMjEgKzI1LDE2IEBACiAgKgogICovCiAK
LSNpZm5kZWYgTWVzc2FnZUV2ZW50X2gKLSNkZWZpbmUgTWVzc2FnZUV2ZW50X2gKKyNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2lu
Y2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBCbG9iOwogCiBzdHJ1
Y3QgTWVzc2FnZUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlIGRhdGE7CkBAIC01MSwzOCArNDYsMTMgQEAgc3RydWN0IE1lc3NhZ2VFdmVu
dEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKIAogY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDog
cHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0g
U3RyaW5nKCksIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSA9IG51bGxwdHIpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2lu
LCBsYXN0RXZlbnRJZCwgc291cmNlLCBXVEZNb3ZlKHBvcnRzKSkpOwotICAgIH0KLSAgICBzdGF0
aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFy
cmF5PiBwb3J0cywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBT
dHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlID0gbnVsbHB0cikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4s
IGxhc3RFdmVudElkLCBzb3VyY2UsIFdURk1vdmUocG9ydHMpKSk7Ci0gICAgfQotICAgIHN0YXRp
YyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQodHlw
ZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkKSk7Ci0g
ICAgfQotICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbikpOwotICAgIH0KLSAg
ICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8QmxvYj4gZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4pKTsKLSAgICB9Ci0gICAgc3Rh
dGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4pKTsKLSAgICB9Ci0g
ICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudCk7Ci0gICAgfQotICAgIHN0
YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IE1lc3NhZ2VFdmVudEluaXQmIGluaXRpYWxpemVyKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUsIGluaXRpYWxpemVy
KSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+LCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9
IHsgfSwgRXZlbnRUYXJnZXQqIHNvdXJjZSA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWY8TWVz
c2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCk7CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9KTsKKyAgICBzdGF0aWMgUmVm
PE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxCbG9iPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKTsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSk7CisgICAgc3RhdGljIFJlZjxN
ZXNzYWdlRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CisgICAgc3RhdGljIFJlZjxNZXNzYWdl
RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3Qg
TWVzc2FnZUV2ZW50SW5pdCYpOwogICAgIHZpcnR1YWwgfk1lc3NhZ2VFdmVudCgpOwogCiAgICAg
dm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01X
aW5kb3cqIHNvdXJjZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKQEAgLTEx
MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVR5cGVBcnJheUJ1ZmZlcgogICAgIH07
CiAgICAgRGF0YVR5cGUgZGF0YVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFUeXBlOyB9Ci0g
ICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGFBc1NjcmlwdFZhbHVlKCkgY29u
c3QgeyBBU1NFUlQobV9kYXRhVHlwZSA9PSBEYXRhVHlwZVNjcmlwdFZhbHVlKTsgcmV0dXJuIG1f
ZGF0YUFzU2NyaXB0VmFsdWU7IH0KKyAgICBKU0M6OkpTVmFsdWUgZGF0YUFzU2NyaXB0VmFsdWUo
KSBjb25zdCB7IEFTU0VSVChtX2RhdGFUeXBlID09IERhdGFUeXBlU2NyaXB0VmFsdWUpOyByZXR1
cm4gbV9kYXRhQXNTY3JpcHRWYWx1ZTsgfQogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBkYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSBjb25zdCB7IEFTU0VSVChtX2Rh
dGFUeXBlID09IERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsgcmV0dXJuIG1fZGF0YUFz
U2VyaWFsaXplZFNjcmlwdFZhbHVlOyB9CiAgICAgU3RyaW5nIGRhdGFBc1N0cmluZygpIGNvbnN0
IHsgQVNTRVJUKG1fZGF0YVR5cGUgPT0gRGF0YVR5cGVTdHJpbmcpOyByZXR1cm4gbV9kYXRhQXNT
dHJpbmc7IH0KICAgICBCbG9iKiBkYXRhQXNCbG9iKCkgY29uc3QgeyBBU1NFUlQobV9kYXRhVHlw
ZSA9PSBEYXRhVHlwZUJsb2IpOyByZXR1cm4gbV9kYXRhQXNCbG9iLmdldCgpOyB9CkBAIC0xMjEs
MTMgKzkxLDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVzc2FnZUV2ZW50KCk7CiAgICAg
TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IE1lc3NhZ2VFdmVudEluaXQm
KTsKLSAgICBNZXNzYWdlRXZlbnQoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBQYXNzUmVm
UHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5
Pik7Ci0gICAgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFz
c1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRB
cnJheT4pOwotICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCk7Ci0KLSAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbik7Ci0gICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8
QmxvYj4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwotICAgIGV4cGxpY2l0IE1lc3NhZ2VF
dmVudChSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOworICAg
IE1lc3NhZ2VFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBFdmVudFRhcmdldCog
c291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4pOworICAgIE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQpOworICAgIE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYg
b3JpZ2luKTsKKyAgICBNZXNzYWdlRXZlbnQoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4pOworICAgIE1lc3NhZ2VFdmVudChSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4pOwogCiAgICAgRGF0YVR5cGUgbV9kYXRhVHlwZTsKICAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2RhdGFBc1NjcmlwdFZhbHVlOwpAQCAtMTQzLDUgKzExMSwz
IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBN
ZXNzYWdlRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXJD
b25kaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyQ29uZGl0aW9uLmgKaW5k
ZXggMmI5YWI2OGZkY2MzZjJlNjdjNmU1ZTIwYjBlMTA1MjU2MDM1Njc3Yy4uOGNjZWJlMzAwZmZm
YzkzOGQ1ZTE0MDFkNDMwNzkzZjlmMWYzOGM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZp
bHRlckNvbmRpdGlvbi5oCkBAIC0yMiwyOSArMjIsMjMgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBO
b2RlRmlsdGVyQ29uZGl0aW9uX2gKLSNkZWZpbmUgTm9kZUZpbHRlckNvbmRpdGlvbl9oCisjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci0KIGNsYXNzIFNsb3RWaXNpdG9yOwotCiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIE5vZGU7CitjbGFzcyBOb2RlOwogCi0g
ICAgY2xhc3MgTm9kZUZpbHRlckNvbmRpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vZGVGaWx0
ZXJDb25kaXRpb24+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfk5vZGVGaWx0ZXJD
b25kaXRpb24oKSB7IH0KLSAgICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBj
b25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShKU0M6OlNsb3RW
aXNpdG9yJikgeyB9Ci0gICAgfTsKK2NsYXNzIE5vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxOb2RlRmlsdGVyQ29uZGl0aW9uPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
Tm9kZUZpbHRlckNvbmRpdGlvbigpIHsgfQorICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0Tm9kZShO
b2RlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShKU0M6OlNs
b3RWaXNpdG9yJikgeyB9Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBOb2RlRmlsdGVyQ29uZGl0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3BTdGF0ZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCmluZGV4
IDQ1MmM4OTg0ZDk4YmI5OWQxMWQ1NzA1ZjdhOWRjNDdiYWFjNzQ1OTMuLmFiNDRmNWFhZTIwMTE3
NTQ2OTkzMzliM2UxYTU1ZTYyN2QxODZlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3BTdGF0ZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQu
aApAQCAtMjQsMzMgKzI0LDMxIEBACiAgKgogICovCiAKLSNpZm5kZWYgUG9wU3RhdGVFdmVudF9o
Ci0jZGVmaW5lIFBvcFN0YXRlRXZlbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFdmVu
dC5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSGlzdG9y
eTsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKwogc3RydWN0IFBvcFN0YXRlRXZlbnRJ
bml0IDogcHVibGljIEV2ZW50SW5pdCB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgc3Rh
dGU7CiB9OwogCi1jbGFzcyBIaXN0b3J5OwotY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwot
CiBjbGFzcyBQb3BTdGF0ZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5Qb3BTdGF0ZUV2ZW50KCk7CiAgICAgc3RhdGljIFJlZjxQb3BTdGF0ZUV2ZW50
PiBjcmVhdGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgUGFzc1JlZlB0cjxIaXN0
b3J5Pik7CiAgICAgc3RhdGljIFJlZjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncyhj
b25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBQb3BTdGF0ZUV2ZW50SW5pdCYpOwogCi0gICAgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTdGF0ZSgpIGNvbnN0IHsg
QVNTRVJUKG1fc2VyaWFsaXplZFN0YXRlKTsgcmV0dXJuIG1fc2VyaWFsaXplZFN0YXRlOyB9Ci0g
ICAgCisgICAgSlNDOjpKU1ZhbHVlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQor
ICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9zZXJpYWxpemVkU3RhdGUuZ2V0KCk7IH0KKwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHRyeVNlcmlhbGl6ZVN0YXRlKEpTQzo6RXhlY1N0YXRlKik7CiAgICAgCi0gICAg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZTsgfQogICAgIEhpc3RvcnkqIGhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2hpc3Rvcnku
Z2V0KCk7IH0KIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3Zl
cnJpZGU7CkBAIC02Niw1ICs2NCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBQb3BTdGF0ZUV2ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5j
cHAKaW5kZXggMzMxNGIzOThlNTRkMTlkMWQ1OWY5NTEwNTg3ODEzOWU3ZjMyZTFjYS4uMGZkZjg1
ODZmNmNjYjdiNTZlZGQ4Nzk2ZDE2ZDIzYmM2ZGNmZTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNh
bC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Ob2RlSXRl
cmF0b3JCYXNlOjpOb2RlSXRlcmF0b3JCYXNlKE5vZGUmIHJvb3ROb2RlLCB1bnNpZ25lZCBsb25n
IHdoYXRUb1Nob3csIFJlZlB0cjxOb2RlRmlsdGVyPiYmIG5vZGVGaWx0ZXIpCitOb2RlSXRlcmF0
b3JCYXNlOjpOb2RlSXRlcmF0b3JCYXNlKE5vZGUmIHJvb3ROb2RlLCB1bnNpZ25lZCB3aGF0VG9T
aG93LCBSZWZQdHI8Tm9kZUZpbHRlcj4mJiBub2RlRmlsdGVyKQogICAgIDogbV9yb290KCZyb290
Tm9kZSkKICAgICAsIG1fd2hhdFRvU2hvdyh3aGF0VG9TaG93KQogICAgICwgbV9maWx0ZXIoV1RG
TW92ZShub2RlRmlsdGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJz
YWwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuaAppbmRleCAxYzExNjA3M2ViZmVk
NjAwNTQyN2M0OWZlZDk0YWFhYzM3ZTkxYzRjLi5iOGI5ZWM0YTZjMWIzNDZiZTM2NmQ5ZjNiNTU5
OGJkZmI0NmY5YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5oCkBAIC0yMiwzNCArMjIsMzAgQEAK
ICAqCiAgKi8KIAotI2lmbmRlZiBUcmF2ZXJzYWxfaAotI2RlZmluZSBUcmF2ZXJzYWxfaAorI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgTm9kZTsKLSAgICBjbGFz
cyBOb2RlRmlsdGVyOworY2xhc3MgTm9kZTsKK2NsYXNzIE5vZGVGaWx0ZXI7CiAKLSAgICBjbGFz
cyBOb2RlSXRlcmF0b3JCYXNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUqIHJvb3QoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3QuZ2V0KCk7IH0KLSAgICAgICAgdW5zaWduZWQgbG9uZyB3aGF0
VG9TaG93KCkgY29uc3QgeyByZXR1cm4gbV93aGF0VG9TaG93OyB9Ci0gICAgICAgIE5vZGVGaWx0
ZXIqIGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyLmdldCgpOyB9Ci0gICAgICAgIGJv
b2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CitjbGFz
cyBOb2RlSXRlcmF0b3JCYXNlIHsKK3B1YmxpYzoKKyAgICBOb2RlKiByb290KCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290LmdldCgpOyB9CisgICAgdW5zaWduZWQgd2hhdFRvU2hvdygpIGNvbnN0IHsg
cmV0dXJuIG1fd2hhdFRvU2hvdzsgfQorICAgIE5vZGVGaWx0ZXIqIGZpbHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsdGVyLmdldCgpOyB9CisgICAgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2Vz
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgTm9k
ZUl0ZXJhdG9yQmFzZShOb2RlJiwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93LCBSZWZQdHI8Tm9k
ZUZpbHRlcj4mJik7Ci0gICAgICAgIHNob3J0IGFjY2VwdE5vZGUoTm9kZSopIGNvbnN0OworcHJv
dGVjdGVkOgorICAgIE5vZGVJdGVyYXRvckJhc2UoTm9kZSYsIHVuc2lnbmVkIHdoYXRUb1Nob3cs
IFJlZlB0cjxOb2RlRmlsdGVyPiYmKTsKKyAgICBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25z
dDsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxOb2RlPiBtX3Jvb3Q7Ci0gICAgICAg
IHVuc2lnbmVkIGxvbmcgbV93aGF0VG9TaG93OwotICAgICAgICBSZWZQdHI8Tm9kZUZpbHRlcj4g
bV9maWx0ZXI7Ci0gICAgfTsKK3ByaXZhdGU6CisgICAgUmVmUHRyPE5vZGU+IG1fcm9vdDsKKyAg
ICB1bnNpZ25lZCBtX3doYXRUb1Nob3c7CisgICAgUmVmUHRyPE5vZGVGaWx0ZXI+IG1fZmlsdGVy
OworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVHJhdmVyc2FsX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNjdlYWMyYTg3
OGM3NDAxZmFjYWU1MjBhZGQ2ZWRlMjUzM2Q5ZmZlNy4uOTUxZTZhZDNkM2U1MWFjMjdkMTExYWQ3
ZTc0MmM2NzBmY2MwMDQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRV
c2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICByb290LT5zZXRSZXNldFN0eWxlSW5oZXJpdGFuY2UodHJ1ZSk7Ci0gICAgaWYgKG1f
cGx1Z2luUmVwbGFjZW1lbnQtPmluc3RhbGxSZXBsYWNlbWVudChyb290KSkgeworICAgIGlmICht
X3BsdWdpblJlcGxhY2VtZW50LT5pbnN0YWxsUmVwbGFjZW1lbnQoKnJvb3QpKSB7CiAgICAgICAg
IHNldERpc3BsYXlTdGF0ZShEaXNwbGF5aW5nUGx1Z2luUmVwbGFjZW1lbnQpOwogICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKFJlY29uc3RydWN0UmVuZGVyVHJlZSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNGQwMmIy
NTE4ZWY0ODZhNjUzY2U4ZDk3ZGUzOTAzNmU5NGEyYzNlYy4uMzA2ZDNkMzRiNGE3NmI5ZDNiMGY2
OTU5MTBkZTM5Yjc2N2Q5YzZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xNDk2LDcgKzE0OTYsNyBAQCBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JFdgogICAgIGlmIChvYmplY3RHcm91cElkICYmIGhhbmRsZXIgJiYgc3RhdGUpIHsKICAg
ICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci5pbmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKQotICAgICAgICAgICAgdmFsdWUtPnNldEhhbmRsZXIoaW5qZWN0ZWRT
Y3JpcHQud3JhcE9iamVjdChEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwgaGFu
ZGxlciksICpvYmplY3RHcm91cElkKSk7CisgICAgICAgICAgICB2YWx1ZS0+c2V0SGFuZGxlcihp
bmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KGhhbmRsZXIsICpvYmplY3RHcm91cElkKSk7CiAgICAg
fQogICAgIGlmICghc2NyaXB0SUQuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBsb2NhdGlvbiA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5k
ZXggZGNmZTFkMTYwYTc3NzE3NGJmYmEzMzUwYmRjYjg0ZjFhOWVmZDkwYy4uZTE2NDU4NGFkNGEw
YmRhY2Y0YWYxOGI2ZjE2ODEyMjgwYTYxM2MxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgZGlzY29ubmVjdCgpCiAgICAgewotICAgICAgICBtX2Zyb250
ZW5kQXBpT2JqZWN0ID0gRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0KCk7CisgICAgICAgIG1fZnJv
bnRlbmRBcGlPYmplY3QgPSB7IH07CiAgICAgICAgIG1fZnJvbnRlbmRIb3N0ID0gbnVsbHB0cjsK
ICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcAppbmRleCAzZDJkYmUwZjYwZTlhYWMyMGRlNmM5OGViZmU1ZmM2
M2YwM2Q1NjRkLi43NTlhZTQyMmNiNGM4ZDc0ODcwOTFhN2M3ODU1OWRmOTgzMDY4NjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8aW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGRiYWZjZGJlNTlhMmEy
M2IyNWRiZWU4MzZlYTEyY2Y0OGMyZDA5MjQuLjdmMTlhM2FjNTU3OWNiNzY0ZjI4Y2Y3MTIxYzg5
MDM5OTQ4YTVkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTI5LDggKzI5LDcgQEAKICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICov
CiAKLSNpZm5kZWYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uX2gKLSNkZWZpbmUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3Iu
aCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBAIC00MSw3ICs0MCw2IEBACiAjaW5jbHVkZSAiTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0NvbnNvbGVUeXBlcy5oPgpAQCAtMjU1LDExICsyNTMsNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IoRG9jdW1lbnQqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICNlbmRp
ZgogCi0gICAgc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCB3cmFwQ2FudmFzMkRSZW5k
ZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKERvY3VtZW50KiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0T2JqZWN0Jik7Ci0jaWYgRU5BQkxFKFdFQkdMKQotICAgIHN0YXRpYyBEZXByZWNh
dGVkOjpTY3JpcHRPYmplY3Qgd3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRh
dGlvbihEb2N1bWVudCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCYpOwotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgc3RhdGljIHZvaWQgZGlkSGFuZGxl
TWVtb3J5UHJlc3N1cmUoUGFnZSYsIENyaXRpY2FsKTsKICNlbmRpZgpAQCAtMTI5Miw1ICsxMjg1
LDMgQEAgaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3UKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uX2gpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMDhlYTM4ZDZkZjllYjUwNjBlN2I5YjhkYTc3NWM5
NzBhMTc0MTlkMC4uYzliY2NmMGFmZTdiYWRlY2ZiZDQ1ODM3OTRkZmUxN2IyMThhNjAxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ0LDIxICsxNDQsMjAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7
CiBwdWJsaWM6Ci0gICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRvdywgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3Jp
Z2luLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSkKKyAgICBQb3N0TWVz
c2FnZVRpbWVyKERPTVdpbmRvdyYgd2luZG93LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIERPTVdpbmRvdyYgc291
cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdGFyZ2V0T3JpZ2luLCBSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPiYmIHN0YWNrVHJhY2UpCiAgICAgICAgIDogbV93aW5kb3cod2luZG93KQogICAgICAgICAs
IG1fbWVzc2FnZShtZXNzYWdlKQogICAgICAgICAsIG1fb3JpZ2luKHNvdXJjZU9yaWdpbikKICAg
ICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICwgbV9jaGFubmVscyhXVEZNb3ZlKGNo
YW5uZWxzKSkKLSAgICAgICAgLCBtX3RhcmdldE9yaWdpbih0YXJnZXRPcmlnaW4pCisgICAgICAg
ICwgbV90YXJnZXRPcmlnaW4oV1RGTW92ZSh0YXJnZXRPcmlnaW4pKQogICAgICAgICAsIG1fc3Rh
Y2tUcmFjZShzdGFja1RyYWNlKQogICAgIHsKICAgICB9CiAKLSAgICBSZWY8TWVzc2FnZUV2ZW50
PiBldmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIFJlZjxNZXNzYWdl
RXZlbnQ+IGV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gTWVz
c2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmNvbnRleHQsIFdURk1vdmUobV9jaGFubmVscykpOwot
ICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdlUG9ydHMp
LCBtX21lc3NhZ2UsIG1fb3JpZ2luLCBTdHJpbmcoKSwgbV9zb3VyY2UpOworICAgICAgICByZXR1
cm4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4
dCwgV1RGTW92ZShtX2NoYW5uZWxzKSksIFdURk1vdmUobV9tZXNzYWdlKSwgbV9vcmlnaW4sIHsg
fSwgbV9zb3VyY2UucHRyKCkpOwogICAgIH0KICAgICBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KICAgICBTY3JpcHRD
YWxsU3RhY2sqIHN0YWNrVHJhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrVHJhY2UuZ2V0KCk7
IH0KQEAgLTE3MSwxMCArMTcwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fd2luZG93LT5wb3N0
TWVzc2FnZVRpbWVyRmlyZWQoKnRpbWVyKTsKICAgICB9CiAKLSAgICBSZWZQdHI8RE9NV2luZG93
PiBtX3dpbmRvdzsKKyAgICBSZWY8RE9NV2luZG93PiBtX3dpbmRvdzsKICAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgU3RyaW5nIG1fb3JpZ2luOwotICAg
IFJlZlB0cjxET01XaW5kb3c+IG1fc291cmNlOworICAgIFJlZjxET01XaW5kb3c+IG1fc291cmNl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVs
czsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fdGFyZ2V0T3JpZ2luOwogICAgIFJlZlB0
cjxTY3JpcHRDYWxsU3RhY2s+IG1fc3RhY2tUcmFjZTsKQEAgLTg5OSw3ICs4OTgsNyBAQCB2b2lk
IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UsIGNvbnN0IE1lcwogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNl
bnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7CisgICAgYXV0byBjaGFubmVscyA9IE1lc3NhZ2VQb3J0
OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1
cm47CiAKQEAgLTkxNSw3ICs5MTQsNyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lcwogICAgICAg
ICBzdGFja1RyYWNlID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFpblRocmVhZEV4ZWNTdGF0
ZTo6Y3VycmVudFN0YXRlKCksIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2Fw
dHVyZSk7CiAKICAgICAvLyBTY2hlZHVsZSB0aGUgbWVzc2FnZS4KLSAgICBQb3N0TWVzc2FnZVRp
bWVyKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKHRoaXMsIG1lc3NhZ2UsIHNvdXJjZU9y
aWdpbiwgJnNvdXJjZSwgV1RGTW92ZShjaGFubmVscyksIHRhcmdldC5nZXQoKSwgc3RhY2tUcmFj
ZS5yZWxlYXNlKCkpOworICAgIFBvc3RNZXNzYWdlVGltZXIqIHRpbWVyID0gbmV3IFBvc3RNZXNz
YWdlVGltZXIoKnRoaXMsIG1lc3NhZ2UsIHNvdXJjZU9yaWdpbiwgc291cmNlLCBXVEZNb3ZlKGNo
YW5uZWxzKSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKICAgICB0aW1l
ci0+c3RhcnRPbmVTaG90KDApOwogfQogCkBAIC05MjQsNyArOTIzLDcgQEAgdm9pZCBET01XaW5k
b3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZChQb3N0TWVzc2FnZVRpbWVyJiB0aW1lcikKICAgICBp
ZiAoIWRvY3VtZW50KCkgfHwgIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBkaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayh0aW1l
ci50YXJnZXRPcmlnaW4oKSwgdGltZXIuZXZlbnQoZG9jdW1lbnQoKSksIHRpbWVyLnN0YWNrVHJh
Y2UoKSk7CisgICAgZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2sodGltZXIudGFy
Z2V0T3JpZ2luKCksIHRpbWVyLmV2ZW50KCpkb2N1bWVudCgpKSwgdGltZXIuc3RhY2tUcmFjZSgp
KTsKIH0KIAogdm9pZCBET01XaW5kb3c6OmRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNo
ZWNrKFNlY3VyaXR5T3JpZ2luKiBpbnRlbmRlZFRhcmdldE9yaWdpbiwgRXZlbnQmIGV2ZW50LCBQ
YXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAKaW5kZXggMGYyY2UzZDkzNzI1ZmU2NDYwZTdlMjllZDAxOTUyYTQ3NzZiNDkz
Zi4uMWRjNDNjYWQ2ODQ3MTE5NGE5ZjAyODY3YmExOGFjNGFjZDUyZmUzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCBib29sIEV2ZW50U291cmNl
OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIAogUmVmPE1lc3NhZ2VF
dmVudD4gRXZlbnRTb3VyY2U6OmNyZWF0ZU1lc3NhZ2VFdmVudCgpCiB7Ci0gICAgcmV0dXJuIE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKG1fZXZlbnROYW1lLmlzRW1wdHkoKSA/IGV2ZW50TmFtZXMoKS5t
ZXNzYWdlRXZlbnQgOiBBdG9taWNTdHJpbmcobV9ldmVudE5hbWUpLCBmYWxzZSwgZmFsc2UsIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFN0cmluZzo6YWRvcHQobV9kYXRhKSksIG1fZXZl
bnRTdHJlYW1PcmlnaW4sIG1fbGFzdEV2ZW50SWQpOworICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShtX2V2ZW50TmFtZS5pc0VtcHR5KCkgPyBldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50
IDogQXRvbWljU3RyaW5nKG1fZXZlbnROYW1lKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoU3RyaW5nOjphZG9wdChtX2RhdGEpKSwgbV9ldmVudFN0cmVhbU9yaWdpbiwgbV9sYXN0RXZl
bnRJZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggYjhhNzAzOTljZGU5MGYzMjNm
MDNlYmM3YjMyNTFiYmIxNmI4YTZhMi4uMzg3MjZmNTBmNzRhOGY5M2JiOThlZmYwNjA3YjE3Nzk5
OGRiMzMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5LmgKQEAgLTI0LDE1ICsyNCwxNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIENvbnRlbnRTZWN1cml0eVBvbGljeV9oCi0jZGVmaW5lIENvbnRlbnRTZWN1cml0eVBvbGlj
eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycy5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL09w
dGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0UG9zaXRpb24uaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9CisK
IG5hbWVzcGFjZSBXVEYgewogY2xhc3MgT3JkaW5hbE51bWJlcjsKIH0KQEAgLTQzLDYgKzQ1LDcg
QEAgY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlOwogY2xhc3MgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZTsKIGNsYXNzIERPTVN0cmluZ0xpc3Q7CitjbGFzcyBGcmFtZTsKIGNsYXNzIEpTRE9NV2lu
ZG93U2hlbGw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CkBAIC0xODQsNSArMTg3LDMgQEAgaW5saW5lIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5Ojp2aW9sYXRlZERpcmUKIH0KIAog
fQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAppbmRleCBhNDFlNzU5NWU5Yzk5ZDA4
MzRiMjE4N2UzY2M4ZjVhNWJmYWVkOTAxLi42NGVlOTVkNzhjMzU5MDBiYzY4NjQ5Mjg4MzUxZWZl
ZmFhN2NlYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCkBAIC0yNCwyMSArMjQsMjAgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0X2gKLSNkZWZpbmUgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdF9o
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCIKICNpbmNsdWRlICJDb250ZW50U2Vj
dXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmgiCiAjaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRnJh
bWU7CisKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QpCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0PiBjcmVhdGUoQ29udGVu
dFNlY3VyaXR5UG9saWN5JiwgY29uc3QgU3RyaW5nJiwgQ29udGVudFNlY3VyaXR5UG9saWN5SGVh
ZGVyVHlwZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tKTsKICAgICBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0KENvbnRlbnRTZWN1cml0eVBvbGljeSYsIENvbnRl
bnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUpOwpAQCAtMTI1LDUgKzEyNCwzIEBAIHByaXZhdGU6
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvKiBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCAyMWQwZjJkNmE2MjAzZTQ2YzY2Nzc3OGE3MjM0YmQ5ZTE2N2EwYTYyLi4wMzkwODA2
YTJkYzhkMTcwYmE5ZTFjNzg0MDMwZGE3NzJmYzdiOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC01MDUsOSArNTA1LDkgQEAgU3RyaW5nIEludGVybmFsczo6c3R5bGVD
aGFuZ2VUeXBlKE5vZGUmIG5vZGUpCiAgICAgcmV0dXJuIHN0eWxlQ2hhbmdlVHlwZVRvU3RyaW5n
KG5vZGUuc3R5bGVDaGFuZ2VUeXBlKCkpOwogfQogCi1TdHJpbmcgSW50ZXJuYWxzOjpkZXNjcmlw
dGlvbihEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSkKK1N0cmluZyBJbnRlcm5hbHM6OmRl
c2NyaXB0aW9uKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdG9TdHJpbmcodmFs
dWUuanNWYWx1ZSgpKTsKKyAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpOwogfQogCiBib29sIElu
dGVybmFsczo6aXNQcmVsb2FkZWQoY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0xNDkxLDExICsxNDkx
LDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogfTsK
IAotU3RyaW5nIEludGVybmFsczo6cGFyc2VyTWV0YURhdGEoRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgdmFsdWUpCitTdHJpbmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShKU0M6OkpTVmFsdWUg
Y29kZSkKIHsKICAgICBKU0M6OlZNJiB2bSA9IGNvbnRleHREb2N1bWVudCgpLT52bSgpOwogICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdm0udG9wQ2FsbEZyYW1lOwotICAgIEpTQzo6SlNWYWx1
ZSBjb2RlID0gdmFsdWUuanNWYWx1ZSgpOwogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGU7CiAKICAgICBpZiAoIWNvZGUgfHwgY29kZS5pc051bGwoKSB8fCBjb2RlLmlzVW5kZWZpbmVk
KCkpIHsKQEAgLTI1MjUsNyArMjUyNCw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OmdldEN1cnJlbnRD
dXJzb3JJbmZvKEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IEludGVy
bmFsczo6c2VyaWFsaXplT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2
YWx1ZSkgY29uc3QKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gYnl0ZXMgPSB2YWx1ZS0+ZGF0YSgp
OworICAgIGF1dG8mIGJ5dGVzID0gdmFsdWUtPmRhdGEoKTsKICAgICByZXR1cm4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiB9CiAKQEAgLTI1MzYsMTQg
KzI1MzUsMTEgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW50ZXJuYWxzOjpkZXNl
cmlhbGl6ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoYnl0ZXMpKTsKIH0KIAotYm9vbCBJbnRlcm5hbHM6
OmlzRnJvbUN1cnJlbnRXb3JsZChEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSkgY29uc3QK
K2Jvb2wgSW50ZXJuYWxzOjppc0Zyb21DdXJyZW50V29ybGQoSlNDOjpKU1ZhbHVlIHZhbHVlKSBj
b25zdAogewotICAgIEFTU0VSVCghdmFsdWUuaGFzTm9WYWx1ZSgpKTsKLSAgICAKLSAgICBKU0M6
OkV4ZWNTdGF0ZSogZXhlYyA9IGNvbnRleHREb2N1bWVudCgpLT52bSgpLnRvcENhbGxGcmFtZTsK
LSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkgfHwgJndvcmxkRm9yRE9NT2JqZWN0KHZhbHVlLmpz
VmFsdWUoKS5nZXRPYmplY3QoKSkgPT0gJmN1cnJlbnRXb3JsZChleGVjKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgSlND
OjpFeGVjU3RhdGUmIHN0YXRlID0gKmNvbnRleHREb2N1bWVudCgpLT52bSgpLnRvcENhbGxGcmFt
ZTsKKyAgICByZXR1cm4gIXZhbHVlLmlzT2JqZWN0KCkgfHwgJndvcmxkRm9yRE9NT2JqZWN0KGFz
T2JqZWN0KHZhbHVlKSkgPT0gJmN1cnJlbnRXb3JsZCgmc3RhdGUpOwogfQogCiB2b2lkIEludGVy
bmFsczo6c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzKGJvb2wgZW5hYmxlZCkKQEAgLTMyODEsNyAr
MzI3Nyw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRTaG93QWxsUGx1Z2lucyhib29sIHNob3cpCiAK
ICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKLWJvb2wgSW50ZXJuYWxzOjppc1JlYWRhYmxlU3Ry
ZWFtRGlzdHVyYmVkKFNjcmlwdFN0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBzdHJlYW0pCitib29sIElu
dGVybmFsczo6aXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgc3RyZWFtKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBz
dGF0ZS52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERh
dGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHN0YXRlLnZtKCkuY2xpZW50RGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA1MjM4NzBiN2Y2MjBkNDg2ZTMwZWQz
NjllMmRiZmU2OTI2Mzg3MjQwLi5iZGQzNDAxYTgzZDM4MWEyNTA0ZTNhYjU5YjEyMWY0MTg1NDdm
ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTI0LDIwICsyNCwxMiBAQAog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEludGVybmFsc19oCi0jZGVmaW5lIEludGVybmFs
c19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCi0jaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNs
dWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5j
bHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVm
ZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMyQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTY1LDYgKzU3LDcgQEAgY2xhc3MgTWVtb3J5SW5mbzsKIGNsYXNz
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBNb2NrUGFnZU92ZXJsYXk7CiBjbGFz
cyBOb2RlOworY2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmFuZ2U7CiBjbGFz
cyBSZW5kZXJlZERvY3VtZW50TWFya2VyOwpAQCAtNzcsNyArNzAsNyBAQCBjbGFzcyBYTUxIdHRw
UmVxdWVzdDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgSW50ZXJuYWxz
IDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKK2NsYXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPElu
dGVybmFscz4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8SW50ZXJuYWxzPiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFs
IH5JbnRlcm5hbHMoKTsKQEAgLTkwLDcgKzgzLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBhZGRy
ZXNzKE5vZGUmKTsKICAgICBib29sIG5vZGVOZWVkc1N0eWxlUmVjYWxjKE5vZGUmKTsKICAgICBT
dHJpbmcgc3R5bGVDaGFuZ2VUeXBlKE5vZGUmKTsKLSAgICBTdHJpbmcgZGVzY3JpcHRpb24oRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUpOworICAgIFN0cmluZyBkZXNjcmlwdGlvbihKU0M6OkpTVmFs
dWUpOwogCiAgICAgYm9vbCBpc1ByZWxvYWRlZChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgYm9v
bCBpc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5nJiB1cmwpOwpAQCAtMjA4LDcg
KzIwMSw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoRG9j
dW1lbnQmLCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0
UGFkZGluZywKICAgICAgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBh
ZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29s
IGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAotICAgIFN0
cmluZyBwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSA9IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlKCkpOworICAgIFN0cmluZyBwYXJzZXJNZXRhRGF0YShKU0M6OkpTVmFsdWUg
PSB7IH0pOwogCiAgICAgdm9pZCB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAg
LTI5MSw4ICsyODQsOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0cmluZz4gc2hvcnRjdXRJY29u
VVJMcygpIGNvbnN0OwogCiAgICAgaW50IG51bWJlck9mUGFnZXMoZmxvYXQgcGFnZVdpZHRoSW5Q
aXhlbHMgPSA4MDAsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscyA9IDYwMCk7Ci0gICAgU3RyaW5n
IHBhZ2VQcm9wZXJ0eShTdHJpbmcsIGludCwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhD
RVBUSU9OKSBjb25zdDsKLSAgICBTdHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9O
T19FWENFUFRJT04pIGNvbnN0OworICAgIFN0cmluZyBwYWdlUHJvcGVydHkoU3RyaW5nLCBpbnQs
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBTdHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5Q
aXhlbHMoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CiAKICAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3Rvciwg
aW50IHgsIGludCB5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdlWm9vbUZhY3Rv
cihmbG9hdCB6b29tRmFjdG9yLCBFeGNlcHRpb25Db2RlJik7CkBAIC0zNDQsNyArMzM3LDcgQEAg
cHVibGljOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2VyaWFsaXplT2JqZWN0KFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgY29uc3Q7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gZGVzZXJpYWxpemVCdWZmZXIoQXJyYXlCdWZmZXImKSBjb25zdDsKIAotICAg
IGJvb2wgaXNGcm9tQ3VycmVudFdvcmxkKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKSBjb25zdDsK
KyAgICBib29sIGlzRnJvbUN1cnJlbnRXb3JsZChKU0M6OkpTVmFsdWUpIGNvbnN0OwogCiAgICAg
dm9pZCBzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VzTW9j
a1Njcm9sbEFuaW1hdG9yKGJvb2wpOwpAQCAtNDcyLDcgKzQ2NSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwogCiAjaWYgRU5BQkxF
KFNUUkVBTVNfQVBJKQotICAgIGJvb2wgaXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlZChTY3JpcHRT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CisgICAgYm9vbCBpc1JlYWRhYmxlU3RyZWFtRGlzdHVyYmVk
KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKICNlbmRpZgogCiAgICAgU3RyaW5nIGNv
bXBvc2VkVHJlZUFzVGV4dChOb2RlJik7CkBAIC00OTAsNSArNDgzLDMgQEAgcHJpdmF0ZToKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>