<?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>158908</bug_id>
          
          <creation_ts>2016-06-18 15:33:57 -0700</creation_ts>
          <short_desc>JSC::Symbol should be hash-consed</short_desc>
          <delta_ts>2016-07-29 01:00:46 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1203597</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-18 15:33:57 -0700</bug_when>
    <thetext>I just realized that it&apos;s not possible to pointer-compare symbols!  This means that all symbol comparisons require dependent loads to get the Symbol&apos;s underlying uid.  This is probably worth fixing.  We would like symbol comparisons to not require loads.  To do that, we need to make Symbol hash-consed on a per-VM basis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203691</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-19 22:15:25 -0700</bug_when>
    <thetext>It sounds nice when using symbols as enum values (And using symbols in switch / if-else chain).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215188</commentid>
    <comment_count>2</comment_count>
      <attachid>284766</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-28 03:01:43 -0700</bug_when>
    <thetext>Created attachment 284766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215189</commentid>
    <comment_count>3</comment_count>
      <attachid>284767</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-28 03:03:50 -0700</bug_when>
    <thetext>Created attachment 284767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215196</commentid>
    <comment_count>4</comment_count>
      <attachid>284770</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-28 03:26:58 -0700</bug_when>
    <thetext>Created attachment 284770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215272</commentid>
    <comment_count>5</comment_count>
      <attachid>284770</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-28 10:56:58 -0700</bug_when>
    <thetext>Comment on attachment 284770
Patch

Nice!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215508</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-29 00:16:21 -0700</bug_when>
    <thetext>Committed r203895: &lt;http://trac.webkit.org/changeset/203895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215516</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-29 01:00:46 -0700</bug_when>
    <thetext>Committed r203897: &lt;http://trac.webkit.org/changeset/203897&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284766</attachid>
            <date>2016-07-28 03:01:43 -0700</date>
            <delta_ts>2016-07-28 03:03:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158908-20160728190030.patch</filename>
            <type>text/plain</type>
            <size>64975</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGNhYTRhZGUwMjQ5ZGVhMGNmOWJiZjhiYmRlMzM0ODM1YTkxZmViLi45NTAzZDJiYzVhODdiNDVk
OTc4MzNkMDNlY2VkNDYyNGU4OTA2ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzkgQEAKKzIwMTYtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSlNDOjpTeW1ib2wgc2hvdWxkIGJlIGhhc2gtY29uc2VkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCQlQcmV2aW91c2x5LCBTeW1ib2xJ
bXBscyBoZWxkIGJ5IHN5bWJvbHMgcmVwcmVzZW50cyBpZGVudGl0eSBvZiBzeW1ib2xzLgorCQlX
aGVuIHdlIGNoZWNrIHRoZSBlcXVhbGl0eSBiZXR3ZWVuIHN5bWJvbHMsIHdlIG5lZWQgdG8gbG9h
ZCBTeW1ib2xJbXBsIG9mIGVhY2ggc3ltYm9sIGFuZCBjb21wYXJlIHRoZW0uCisKKwkJVGhpcyBw
YXRjaCBwZXJmb3JtcyBoYXNoLWNvbnNpbmcgb250aCB0aGUgc3ltYm9scy4gV2UgY2FjaGUgc3lt
Ym9scyBpbiBwZXItVk0ncyBTeW1ib2xJbXBsLWtleWVkIFdlYWtHQ01hcC4KKwkJV2hlbiBjcmVh
dGluZyBhIG5ldyBzeW1ib2wgZnJvbSBTeW1ib2xJbXBsLCB3ZSBmaXJzdCBxdWVyeSB0byB0aGlz
IG1hcCBhbmQgcmV1c2UgdGhlIHByZXZpb3VzbHkgY3JlYXRlZCBzeW1ib2wKKwkJaWYgZm91bmQu
IFRoaXMgZW5zdXJlcyB0aGF0IG9uZS1vbi1vbmUgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBTeW1i
b2xJbXBsIGFuZCBzeW1ib2wuIFNvIG5vdywgd2UgY2FuIHVzZQorCQlwb2ludGVyLWNvbXBhcmlz
b24gdG8gY2hlY2sgZXF1YWxpdHkgb2Ygc3ltYm9scy4KKworCQlUaGlzIGNoYW5nZSBkcm9wcyBT
eW1ib2xJbXBsIGxvYWRzIGluIHRoZSBzeW1ib2wgZXF1YWxpdHkgcXVlcnkuIEZ1cnRoZXJtb3Jl
LCB3ZSBjYW4gdXNlIERGRyBDaGVja0NlbGwgdG8gc3ltYm9sCisJCXdoZW4gd2Ugd291bGQgbGlr
ZSB0byBlbnN1cmUgdGhhdCB0aGUgZ2l2ZW4gdmFsdWUgaXMgdGhlIGV4cGVjdGVkIHN5bWJvbC4g
VGhpcyBjbGVhbnMgdXAgR2V0QnlWYWwncyBzeW1ib2wta2V5ZAorCQljYWNoaW5nLiBUaGVuLCB3
ZSBub3cgY2hhbmdlZCBDaGVja0lkZW50IHRvIENoZWNrU3RyaW5nSWRlbnQgc2luY2UgaXQgb25s
eSBjaGVja3MgU3RyaW5nIGNhc2UuIFRoZSBzeW1ib2wgY2FzZSBpcworCQloYW5kbGVkIGJ5IENo
ZWNrQ2VsbC4KKworCQlBZGRpdGlvbmFsbHksIHRoaXMgcGF0Y2ggYWxzbyBjbGVhbnMgdXAgTWFw
IC8gU2V0IGltcGxlbWVudGF0aW9uIHNpbmNlIHdlIG5vdyB1c2UgdGhlIGxvZ2ljIGZvciBKU0Nl
bGwgdG8gc3ltYm9scy4KKworCQlUaGUgcGVyZm9ybWFuY2UgZWZmZWN0cyBpbiB0aGUgcmVsYXRl
ZCBiZW5jaG1hcmtzIGFyZSB0aGUgZm9sbG93aW5ncy4KKworCQkJCQkJCQkJCQkJCQkJICAgYmFz
ZWxpbmUgICAgICAgICAgICAgICAgICAgcGF0Y2gKKworCQkJYmlnc3dpdGNoLWluZGlyZWN0LXN5
bWJvbC1vci11bmRlZmluZWQgICAgICAgICA4NS42MjE0Ky0xLjAwNjMgICAgIF4gICAgIDYzLjA1
MjIrLTAuODYxNSAgICAgICAgXiBkZWZpbml0ZWx5IDEuMzU3OXggZmFzdGVyCisJCQliaWdzd2l0
Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAgICAgICAgICAgICAgIDg0Ljk2NTMrLTAuNjI1OCAg
ICAgXiAgICAgODAuNDkwMCstMC44MDA4ICAgICAgICBeIGRlZmluaXRlbHkgMS4wNTU2eCBmYXN0
ZXIKKwkJCWZvbGQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10by1tdWx0aS1wdXQtYnktb2Zmc2V0
CisJCQkJCQkJCQkJCQkJCQk5LjQzOTYrLTAuMzcyNiAgICAgICAgICAgIDkuMjk0MSstMC4zMzEx
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1N3ggZmFzdGVyCisJCQlpbmxpbmVkLXB1dC1ieS12YWwt
d2l0aC1zeW1ib2wtdHJhbnNpdGlvbgorCQkJCQkJCQkJCQkJCQkgICA0OS41NDc3Ky0wLjI0MDEg
ICAgID8gICAgIDQ5Ljc1MzMrLTAuMzM2OSAgICAgICAgPworCQkJZ2V0LWJ5LXZhbC13aXRoLXN5
bWJvbC1zZWxmLW9yLXByb3RvICAgICAgICAgICAxMS45NzQwKy0wLjA3OTggICAgID8gICAgIDEy
LjE3MDYrLTAuMjcyMyAgICAgICAgPyBtaWdodCBiZSAxLjAxNjR4IHNsb3dlcgorCQkJZ2V0LWJ5
LXZhbC13aXRoLXN5bWJvbC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24t
c2ltcGxlCisJCQkJCQkJCQkJCQkJCQk0LjEzNjQrLTAuMDg0MSAgICAgICAgICAgIDQuMDg3Mist
MC4wOTI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMHggZmFzdGVyCisJCQlwdXQtYnktdmFsLXdp
dGgtc3ltYm9sICAgICAgICAgICAgICAgICAgICAgICAgIDExLjM3MDkrLTAuMDIyMyAgICAgICAg
ICAgMTEuMzYxMystMC4wMjY0CisJCQlnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXByb3RvLW9yLXNl
bGYgICAgICAgICAgIDExLjg5ODQrLTAuMDcwNiAgICAgPyAgICAgMTEuOTAzMCstMC4wNzg3ICAg
ICAgICA/CisJCQlwb2x5bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgtc3ltYm9sICAgICAgICAgICAg
IDMxLjQxNzYrLTAuMDU1OCAgICAgICAgICAgMzEuMzgyNSstMC4wNDQ3CisJCQlpbXBsaWNpdC1i
aWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAgICAgIDYxLjMxMTUrLTAuNjU3NyAgICAg
XiAgICAgNTguMDA5OCstMC4xMjEyICAgICAgICBeIGRlZmluaXRlbHkgMS4wNTY5eCBmYXN0ZXIK
KwkJCWdldC1ieS12YWwtd2l0aC1zeW1ib2wtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGlt
aW5hdGlvbi1zaW1wbGUKKwkJCQkJCQkJCQkJCQkJCTMuMzEzOSstMC4wNTY1ICAgICBeICAgICAg
Mi45OTQ3Ky0wLjA3MzIgICAgICAgIF4gZGVmaW5pdGVseSAxLjEwNjZ4IGZhc3RlcgorCQkJZ2V0
LWJ5LXZhbC13aXRoLXN5bWJvbC1jaGFpbi1mcm9tLXRyeS1ibG9jaworCQkJCQkJCQkJCQkJCQkJ
Mi4yMzE2Ky0wLjAxNzkgICAgICAgICAgICAyLjIxMzcrLTAuMDIxMAorCQkJZ2V0LWJ5LXZhbC13
aXRoLXN5bWJvbC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uCisJCQkJCQkJ
CQkJCQkJCSAgIDEwLjYwMzErLTAuMjIxNiAgICAgXiAgICAgMTAuMDkzOSstMC4xOTc3ICAgICAg
ICBeIGRlZmluaXRlbHkgMS4wNTA0eCBmYXN0ZXIKKwkJCWdldC1ieS12YWwtd2l0aC1zeW1ib2wt
Y2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uCisJCQkJCQkJCQkJCQkJCQk4LjU1NzYrLTAuMTUy
MSAgICAgXiAgICAgIDcuNzEwNystMC4xMzA4ICAgICAgICBeIGRlZmluaXRlbHkgMS4xMDk4eCBm
YXN0ZXIKKwkJCXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtc2xpZ2h0bHktcG9seW1vcnBoaWMKKwkJ
CQkJCQkJCQkJCQkJCTMuMTk1NystMC4wNTM4ICAgICBeICAgICAgMi45MTgxKy0wLjA3MDggICAg
ICAgIF4gZGVmaW5pdGVseSAxLjA5NTF4IGZhc3RlcgorCQkJcHV0LWJ5LXZhbC13aXRoLXN5bWJv
bC1yZXBsYWNlLWFuZC10cmFuc2l0aW9uCisJCQkJCQkJCQkJCQkJCSAgIDExLjgyNTMrLTAuMDc1
NyAgICAgXiAgICAgMTEuNjU5MCstMC4wMzUxICAgICAgICBeIGRlZmluaXRlbHkgMS4wMTQzeCBm
YXN0ZXIKKworCQkJPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMy4zOTExKy0wLjA1MjcgICAgIF4gICAgIDEyLjczNzYrLTAuMDQ1NyAgICAgICAgXiBkZWZp
bml0ZWx5IDEuMDUxM3ggZmFzdGVyCisKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8uaDoK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6
Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1VpZE9wZXJhbmQpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3lt
Ym9sRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UGVlcEhvbGVTeW1ib2xFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDaGVja1N0cmluZ0lkZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZXh0cmFjdFN0cmluZ0ltcGxGcm9tQmluYXJ5U3ltYm9scyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN5bWJvbFVu
dHlwZWRFcXVhbGl0eSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
Lmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tTdHJp
bmdJZGVudCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
b21wYXJlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQ2hlY2tJZGVudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6Omxvd1N5bWJvbFVJRCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5R2V0QnlW
YWxPcHRpbWl6ZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0R2V0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEJ5
VmFsSWRlbnRpZmllckNoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SWRlbnRpZmllckNo
ZWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdldEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1
bWluZ1N0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6c2V0
RnVuY3Rpb25OYW1lKToKKyAgICAgICAgKiBydW50aW1lL01hcERhdGEuaDoKKyAgICAgICAgKiBy
dW50aW1lL01hcERhdGFJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTSXRlcmF0b3I+OjpjbGVh
cik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTSXRlcmF0b3I+OjpmaW5kKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SlNJdGVyYXRvcj46OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpTSXRlcmF0b3I+OjpyZW1vdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0l0ZXJhdG9y
Pjo6cmVwbGFjZUFuZFBhY2tCYWNraW5nU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvU3ltYm9sLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OlN5bWJvbDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbC5o
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLWVxdWFs
aXR5LW92ZXItZ2MuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVz
dCk6CisKIDIwMTYtMDctMjUgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDM3MDMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKaW5kZXggNTMxNDgxZTJhYzNiNDRmMTAw
ZDZmZmQ4ZDdhNWFmYWRjMThhNzEzNS4uODk4ODZmOTM2ODAyNTU4MmE0OTQyZTVlNzYwNzU5MmZm
MDk2ODcxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFs
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApA
QCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgU3ltYm9sOworCiAj
aWYgRU5BQkxFKEpJVCkKIAogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CkBAIC0yMzIsNiArMjM0
LDcgQEAgc3RydWN0IEJ5VmFsSW5mbyB7CiAgICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKICAg
ICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lOwogICAgIElkZW50aWZpZXIgY2Fj
aGVkSWQ7CisgICAgV3JpdGVCYXJyaWVyPFN5bWJvbD4gY2FjaGVkU3ltYm9sOwogICAgIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbzsKICAgICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAgICAg
Ym9vbCBzZWVuIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggMDMyZTFlYTllZWRhYjJhMGViMTYzNDVjOTg0NmE2ZTFmYWU4NTVjZi4uN2Vh
NTM1NzhlOTI2NzI1NzE5MjUwZjIxODU2ZGE1MTMyZDYyYjk0YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMxMDIsNiArMzEwMiw5IEBAIHZv
aWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyhTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vYmplY3RBbGxvY2F0aW9u
UHJvZmlsZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVz
W2ldLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogCisgICAgZm9yIChCeVZhbEluZm8qIGJ5VmFs
SW5mbyA6IG1fYnlWYWxJbmZvcykKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJmJ5VmFsSW5mby0+
Y2FjaGVkU3ltYm9sKTsKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkKICAgICAgICAgdmlzaXRPU1JFeGl0VGFyZ2V0cyh2
aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA1YTQyNWYwYjNmNjc4OTM3NjA4NGQ5MGQz
OTYxOGRkMjc0MmE4YWQwLi4wM2Y5YWQwNmJhMjcwYWE0MDNmZjMzN2IyNWRkODcwOTc1ODk4NTJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCkBAIC0xMzk4LDcgKzEzOTgsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBj
bG9iYmVyTGltaQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBDb21wYXJlRXEgJiYgbGVmdENvbnN0LmlzU3ltYm9sKCkgJiYgcmlnaHRDb25zdC5pc1N5bWJv
bCgpKSB7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGFzU3lt
Ym9sKGxlZnRDb25zdCktPnByaXZhdGVOYW1lKCkgPT0gYXNTeW1ib2wocmlnaHRDb25zdCktPnBy
aXZhdGVOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xl
YW4oYXNTeW1ib2wobGVmdENvbnN0KSA9PSBhc1N5bWJvbChyaWdodENvbnN0KSkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNjI2LDI5ICsy
NjI2LDIxIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIGNhc2UgQ2hlY2tJZGVudDogeworICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDogewog
ICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+dWlkT3BlcmFuZCgpOwotICAg
ICAgICBBU1NFUlQodWlkLT5pc1N5bWJvbCgpID8gISh2YWx1ZS5tX3R5cGUgJiB+U3BlY1N5bWJv
bCkgOiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjU3RyaW5nSWRlbnQpKTsgLy8gRWRnZSBmaWx0ZXJp
bmcgc2hvdWxkIGhhdmUgYWxyZWFkeSBlbnN1cmVkIHRoaXMuCisgICAgICAgIEFTU0VSVCghKHZh
bHVlLm1fdHlwZSAmIH5TcGVjU3RyaW5nSWRlbnQpKTsgLy8gRWRnZSBmaWx0ZXJpbmcgc2hvdWxk
IGhhdmUgYWxyZWFkeSBlbnN1cmVkIHRoaXMuCiAKICAgICAgICAgSlNWYWx1ZSBjaGlsZENvbnN0
YW50ID0gdmFsdWUudmFsdWUoKTsKICAgICAgICAgaWYgKGNoaWxkQ29uc3RhbnQpIHsKLSAgICAg
ICAgICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY2hp
bGRDb25zdGFudC5pc1N5bWJvbCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoYXNTeW1ib2woY2hp
bGRDb25zdGFudCktPnByaXZhdGVOYW1lKCkudWlkKCkgPT0gdWlkKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKGNoaWxkQ29uc3RhbnQuaXNTdHJpbmcoKSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGFzU3RyaW5nKGNoaWxkQ29uc3RhbnQpLT50cnlHZXRWYWx1ZUltcGwoKSA9PSB1
aWQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVl
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgQVNTRVJUKGNoaWxkQ29uc3RhbnQuaXNTdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAo
YXNTdHJpbmcoY2hpbGRDb25zdGFudCktPnRyeUdldFZhbHVlSW1wbCgpID09IHVpZCkgeworICAg
ICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBmaWx0ZXIo
dmFsdWUsIHVpZC0+aXNTeW1ib2woKSA/IFNwZWNTeW1ib2wgOiBTcGVjU3RyaW5nSWRlbnQpOwor
ICAgICAgICBmaWx0ZXIodmFsdWUsIFNwZWNTdHJpbmdJZGVudCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCAzNmQ0NzU5Y2Y4NzBjMGFkMjQ1ZTYxYjhiYzg5ZGMxYTIyNzI1N2Y1Li5mMWE5
NzUyYzU0OWY3NjU4ZDJjMmJiYWJmZWVlMTIzYmFmNGZhMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDA2MywxMiArNDA2Mywx
OCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9i
eVZhbEluZm9zLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRl
eCkpOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3Qg
Y29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KICAg
ICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgot
ICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8gJiYgYnlWYWxJbmZvLT5zdHViSW5mbyAmJiAh
YnlWYWxJbmZvLT50b29rU2xvd1BhdGggJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KSkgeworICAgICAgICAgICAg
ICAgIGlmIChieVZhbEluZm8gJiYgYnlWYWxJbmZvLT5zdHViSW5mbyAmJiAhYnlWYWxJbmZvLT50
b29rU2xvd1BhdGggJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KSAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgY29tcGlsZWRBc0dldEJ5SWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShieVZhbElu
Zm8tPmNhY2hlZElkLmltcGwoKSk7CiAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAKLSAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwgcHJv
cGVydHkpOworICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sKiBzeW1ib2wgPSBieVZhbElu
Zm8tPmNhY2hlZFN5bWJvbC5nZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRnJvemVu
VmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKHN5bWJvbCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIHByb3Bl
cnR5KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghdWlkLT5pc1N5bWJvbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoQ2hlY2tTdHJpbmdJZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsKKyAgICAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGdldEJ5SWRTdGF0dXMgPSBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKQEAgLTQxMTAsMTIg
KzQxMTYsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tU
b3AtPm1fYnlWYWxJbmZvcy5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVj
b2RlSW5kZXgpKTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUg
aXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51
bGwuCiAgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1h
dGlvbi4KLSAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvICYmIGJ5VmFsSW5mby0+c3R1Yklu
Zm8gJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYnlWYWxJbmZvICYmIGJ5VmFsSW5mby0+c3R1YkluZm8gJiYgIWJ5VmFs
SW5mby0+dG9va1Nsb3dQYXRoICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkgJiYgIW1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkQXNQdXRCeUlkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMo
KS5lbnN1cmUoYnlWYWxJbmZvLT5jYWNoZWRJZC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZp
ZXJOdW1iZXJdOwogCi0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwg
T3BJbmZvKHVpZCksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFN5bWJvbCog
c3ltYm9sID0gYnlWYWxJbmZvLT5jYWNoZWRTeW1ib2wuZ2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhzeW1i
b2wpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5m
byhmcm96ZW4pLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXVpZC0+aXNTeW1ib2woKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RyaW5nSWRlbnQsIE9wSW5mbyh1aWQpLCBw
cm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBQ
dXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1
YkluZm8oCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKaW5kZXggNGNiYmUxZmY1MWIzZGU4NzJkMzlmMDc0NTk1MTM1ZjNiOTI2YzUxMS4uY2M1MTQx
Njg3MTMzNjRhNWM5NWZlNTBkNTgyYjM3NTJiMzQxMjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTM0NCw4ICszNDQsOCBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29u
c3QgV3JpdGVGdQogICAgICAgICBkZWYoUHVyZVZhbHVlKENoZWNrTm90RW1wdHksIEFkamFjZW5j
eUxpc3QoQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICBy
ZXR1cm47CiAKLSAgICBjYXNlIENoZWNrSWRlbnQ6Ci0gICAgICAgIGRlZihQdXJlVmFsdWUoQ2hl
Y2tJZGVudCwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQx
KCkpLCBub2RlLT51aWRPcGVyYW5kKCkpKTsKKyAgICBjYXNlIENoZWNrU3RyaW5nSWRlbnQ6Cisg
ICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tTdHJpbmdJZGVudCwgQWRqYWNlbmN5TGlzdChBZGph
Y2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT51aWRPcGVyYW5kKCkpKTsK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAppbmRleCBmNWZhY2U5ZThiMjhkYWJmMTg0M2UxMDNiMmExN2IzOWY1M2YxMGVjLi5lZmVm
ZGM1NGMwZmFmYzkwY2E5NGI0MjUyMzQzMzdiMDBhYWY5ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMjQ1
LDI1ICsyNDUsMjAgQEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBj
YXNlIENoZWNrSWRlbnQ6IHsKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDogewog
ICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBub2RlLT51aWRPcGVyYW5k
KCk7CiAgICAgICAgICAgICAgICAgY29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqIGNvbnN0YW50VWlk
ID0gbnVsbHB0cjsKIAogICAgICAgICAgICAgICAgIEpTVmFsdWUgY2hpbGRDb25zdGFudCA9IG1f
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgICAgICAgICBp
ZiAoY2hpbGRDb25zdGFudCkgewotICAgICAgICAgICAgICAgICAgICBpZiAodWlkLT5pc1N5bWJv
bCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb25zdGFudC5pc1N5bWJv
bCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50VWlkID0gYXNTeW1ib2wo
Y2hpbGRDb25zdGFudCktPnByaXZhdGVOYW1lKCkudWlkKCk7Ci0gICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb25zdGFudC5pc1N0
cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IGF1dG8qIGlt
cGwgPSBhc1N0cmluZyhjaGlsZENvbnN0YW50KS0+dHJ5R2V0VmFsdWVJbXBsKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWRnZSBmaWx0ZXJpbmcgcmVxdWlyZXMgdGhh
dCBhIHZhbHVlIGhlcmUgc2hvdWxkIGJlIFN0cmluZ0lkZW50LgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBIb3dldmVyLCBhIGNvbnN0YW50IHZhbHVlIHByb3BhZ2F0ZWQgaW4g
REZHIGlzIG5vdCBmaWx0ZXJlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
U28gaGVyZSwgd2UgY2hlY2sgdGhlIHByb3BhZ2F0ZWQgdmFsdWUgaXMgYWN0dWFsbHkgYW4gYXRv
bWljIHN0cmluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kIGlmIGl0
J3Mgbm90LCB3ZSBqdXN0IGlnbm9yZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGltcGwtPmlzQXRvbWljKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdGFudFVpZCA9IHN0YXRpY19jYXN0PGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKj4oaW1w
bCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp
ZiAoY2hpbGRDb25zdGFudC5pc1N0cmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY29uc3QgYXV0byogaW1wbCA9IGFzU3RyaW5nKGNoaWxkQ29uc3RhbnQpLT50cnlHZXRWYWx1
ZUltcGwoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVkZ2UgZmlsdGVyaW5n
IHJlcXVpcmVzIHRoYXQgYSB2YWx1ZSBoZXJlIHNob3VsZCBiZSBTdHJpbmdJZGVudC4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBIb3dldmVyLCBhIGNvbnN0YW50IHZhbHVlIHByb3Bh
Z2F0ZWQgaW4gREZHIGlzIG5vdCBmaWx0ZXJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTbyBoZXJlLCB3ZSBjaGVjayB0aGUgcHJvcGFnYXRlZCB2YWx1ZSBpcyBhY3R1YWxseSBh
biBhdG9taWMgc3RyaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuZCBpZiBp
dCdzIG5vdCwgd2UganVzdCBpZ25vcmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGltcGwtPmlzQXRvbWljKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
YW50VWlkID0gc3RhdGljX2Nhc3Q8Y29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqPihpbXBsKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA0YWY3
NzA3M2FlNGQyZWY4MWZlOTM4NzZmN2U5ZjI0NGMxZjY0OTY4Li4wODJjNDE1Y2UyZWQzYjg3YzM0
MmFiMmE0OTUxYmExODEyODVjMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgUHV0R2xvYmFsVmFyaWFibGU6CiAgICAgY2FzZSBDaGVja0NlbGw6
CiAgICAgY2FzZSBDaGVja05vdEVtcHR5OgotICAgIGNhc2UgQ2hlY2tJZGVudDoKKyAgICBjYXNl
IENoZWNrU3RyaW5nSWRlbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhw
VGVzdDoKICAgICBjYXNlIENvbXBhcmVMZXNzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKaW5kZXggYzYxYTMxZTdjNjZhYjM3Y2MwMGViNGYwNDhmYTFmYzll
ZjMwZGEzYi4uZGVlMjE2OTY5NWZiNzYyMWQyNDE4YzYxNDZjMWYzMWFkMWUxMjdjOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xMjE0LDEyICsx
MjE0LDggQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tJZGVudDogewotICAgICAgICAg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPnVpZE9wZXJhbmQoKTsKLSAgICAgICAg
ICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpCi0gICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGNhc2UgQ2hl
Y2tTdHJpbmdJZGVudDogeworICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA1NjBkYTRiOTI4NjM0ZWMyNWIw
NWUwMzNhOGNmYzhkOWE4ZmY3YTlmLi40NDlmYmI3OTk0ZmVlODIzYTk3Y2U2M2NmNjQ3ZmVlYjhj
M2UzNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMTUxNyw3ICsxNTE3
LDcgQEAgc3RydWN0IE5vZGUgewogCiAgICAgYm9vbCBoYXNVaWRPcGVyYW5kKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBvcCgpID09IENoZWNrSWRlbnQ7CisgICAgICAgIHJldHVybiBvcCgpID09
IENoZWNrU3RyaW5nSWRlbnQ7CiAgICAgfQogCiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZE9w
ZXJhbmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDQ0NjY4
Y2U2MDQxNTkyNDcxODYyYzFlYTg3Zjk4Y2MyMjVmNmY1M2QuLjU1ZTllN2RkYTZiNmNjMWIwYTky
NDViZWUwYzEyZjY1ZWZlODA2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTIzOSw3ICsyMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oQ2hlY2tOb3RFbXB0eSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENoZWNrQmFkQ2VsbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrSW5Cb3Vu
ZHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhDaGVja0lkZW50LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCisgICAgbWFjcm8oQ2hlY2tTdHJpbmdJZGVudCwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKENoZWNrVHlwZUluZm9GbGFncywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGFr
ZXMgYW4gT3BJbmZvIHdpdGggdGhlIGZsYWdzIHlvdSB3YW50IHRvIHRlc3QgYXJlIHNldCAqL1wK
ICAgICBcCiAgICAgLyogT3B0aW1pemF0aW9ucyBmb3IgYXJyYXkgbXV0YXRpb24uICovXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAppbmRleCA1NTc2ZTY0YmM2N2ZmYmEyYTA0M2ZkYTNmYTU4NWMxMmE0
ZjNhZTJmLi5lZjU5MmFjOGYwNTM1ZjE0Y2IzYmY0ZTRmNDRmNGMwMTVlMTQ1ZTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcApAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgY2xhc3MgUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOgogICAgICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja05vdEVtcHR5
OgotICAgICAgICBjYXNlIENoZWNrSWRlbnQ6CisgICAgICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVu
dDoKICAgICAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJl
OgogICAgICAgICBjYXNlIFBoYW50b206CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCmluZGV4IGM4YmM2MDNhYTJlOTU1OTI5MDBjYjA1NzRiZWI2NzJjMjc1
NGQ5OTMuLjU2NmE0NTlkYTRlMTNkZWI1N2MyMThkOGUwMTkyNjI2MjQ0Yjc3MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMjUsNyArMjI1
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgIGNhc2UgQ2hlY2tC
YWRDZWxsOgogICAgIGNhc2UgQ2hlY2tOb3RFbXB0eToKLSAgICBjYXNlIENoZWNrSWRlbnQ6Cisg
ICAgY2FzZSBDaGVja1N0cmluZ0lkZW50OgogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNl
IFJlZ0V4cFRlc3Q6CiAgICAgY2FzZSBDb21wYXJlTGVzczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMTEzYTc5N2UxZGUyMjg3ZjBi
MmMyNTJjZGE1YWE0YTJlYzk3MjdhNy4uMGE4OTkxZjM0MjU1MjNhMmVlMmYxZjg2MDY3OTE1ZTA2
Y2I2Y2M5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKQEAgLTUzMTAsNTAgKzUzMTAsNDQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUJvb2xlYW5Db21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmEK
ICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIFNwZWN1bGF0aXZlSklUOjpleHRyYWN0U3Ry
aW5nSW1wbEZyb21CaW5hcnlTeW1ib2xzKEVkZ2UgbGVmdFN5bWJvbEVkZ2UsIEVkZ2UgcmlnaHRT
eW1ib2xFZGdlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVN5bWJvbEVxdWFsaXR5KE5vZGUqIG5vZGUpCiB7Ci0gICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgbGVmdCh0aGlzLCBsZWZ0U3ltYm9sRWRnZSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgcmlnaHQodGhpcywgcmlnaHRTeW1ib2xFZGdlKTsKLSAgICBHUFJUZW1wb3JhcnkgbGVmdFRl
bXAodGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHJpZ2h0VGVtcCh0aGlzKTsKKyAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgbGVmdCwgcmlnaHQpOwogCiAgICAgR1BSUmVnIGxlZnRHUFIg
PSBsZWZ0LmdwcigpOwogICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwotICAgIEdQ
UlJlZyBsZWZ0VGVtcEdQUiA9IGxlZnRUZW1wLmdwcigpOwotICAgIEdQUlJlZyByaWdodFRlbXBH
UFIgPSByaWdodFRlbXAuZ3ByKCk7Ci0KLSAgICBzcGVjdWxhdGVTeW1ib2wobGVmdFN5bWJvbEVk
Z2UsIGxlZnRHUFIpOwotICAgIHNwZWN1bGF0ZVN5bWJvbChyaWdodFN5bWJvbEVkZ2UsIHJpZ2h0
R1BSKTsKLQotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MobGVmdEdQUiwg
U3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpLCBsZWZ0VGVtcEdQUik7Ci0gICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyaWdodEdQUiwgU3ltYm9sOjpvZmZzZXRPZlBy
aXZhdGVOYW1lKCkpLCByaWdodFRlbXBHUFIpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAKLSAgICBmdW5jdG9yKGxlZnRUZW1wR1BSLCByaWdodFRlbXBHUFIpOwotfQor
ICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDEoKSwgbGVmdEdQUik7CisgICAgc3BlY3Vs
YXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCByaWdodEdQUik7CiAKLXZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2RlKiBub2RlKQotewotICAgIGV4dHJhY3RTdHJp
bmdJbXBsRnJvbUJpbmFyeVN5bWJvbHMobm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBb
Jl0gKEdQUlJlZyBsZWZ0U3RyaW5nSW1wbCwgR1BSUmVnIHJpZ2h0U3RyaW5nSW1wbCkgewotICAg
ICAgICBtX2ppdC5jb21wYXJlUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdFN0cmluZ0ltcGws
IHJpZ2h0U3RyaW5nSW1wbCwgbGVmdFN0cmluZ0ltcGwpOwotICAgICAgICB1bmJsZXNzZWRCb29s
ZWFuUmVzdWx0KGxlZnRTdHJpbmdJbXBsLCBub2RlKTsKLSAgICB9KTsKKyAgICBtX2ppdC5jb21w
YXJlUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdEdQUiwgcmlnaHRHUFIsIHJlc3VsdEdQUik7
CisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2RlKiBub2Rl
LCBOb2RlKiBicmFuY2hOb2RlKQogeworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKworICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKKyAg
ICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChu
b2RlLT5jaGlsZDEoKSwgbGVmdEdQUik7CisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxk
MigpLCByaWdodEdQUik7CisKICAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJy
YW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CiAgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFu
Y2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOwogCi0gICAgZXh0cmFjdFN0cmlu
Z0ltcGxGcm9tQmluYXJ5U3ltYm9scyhub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIFsm
XSAoR1BSUmVnIGxlZnRTdHJpbmdJbXBsLCBHUFJSZWcgcmlnaHRTdHJpbmdJbXBsKSB7Ci0gICAg
ICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgewotICAgICAgICAgICAgYnJhbmNoUHRyKEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdFN0cmluZ0ltcGwsIHJpZ2h0U3RyaW5nSW1wbCwgbm90
VGFrZW4pOwotICAgICAgICAgICAganVtcCh0YWtlbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0U3RyaW5nSW1wbCwgcmln
aHRTdHJpbmdJbXBsLCB0YWtlbik7Ci0gICAgICAgICAgICBqdW1wKG5vdFRha2VuKTsKLSAgICAg
ICAgfQotICAgIH0pOworICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBi
cmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUiwgbm90VGFr
ZW4pOworICAgICAgICBqdW1wKHRha2VuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBicmFuY2hQ
dHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUiwgdGFrZW4pOworICAgICAg
ICBqdW1wKG5vdFRha2VuKTsKKyAgICB9CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTdHJpbmdFcXVhbGl0eSgKQEAgLTU5OTcsMjggKzU5OTEsMjEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgfSB9CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tTdHJpbmdJZGVudChOb2RlKiBub2RlKQogewotICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
R1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CisKKyAgICBHUFJSZWcgc3RyaW5nR1BSID0gc3Ry
aW5nLmdwcigpOworICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKworICAg
IHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDEoKSwgc3RyaW5nR1BSKTsKKyAgICBzcGVjdWxh
dGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKG5vZGUtPmNoaWxkMSgpLCBzdHJpbmdHUFIsIHN0
b3JhZ2VHUFIpOworCiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPnVpZE9wZXJh
bmQoKTsKLSAgICBpZiAodWlkLT5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIHNwZWN1bGF0ZVN5bWJv
bChub2RlLT5jaGlsZDEoKSwgb3BlcmFuZC5ncHIoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soCi0gICAgICAgICAgICBCYWRJZGVudCwgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLAotICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcGVyYW5kLmdw
cigpLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSksCi0gICAgICAgICAgICAgICAgVHJ1
c3RlZEltbVB0cih1aWQpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3BlY3VsYXRlU3RyaW5n
KG5vZGUtPmNoaWxkMSgpLCBvcGVyYW5kLmdwcigpKTsKLSAgICAgICAgc3BlY3VsYXRlU3RyaW5n
SWRlbnQobm9kZS0+Y2hpbGQxKCksIG9wZXJhbmQuZ3ByKCkpOwotICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKAotICAgICAgICAgICAgQmFkSWRlbnQsIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwK
LSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3BlcmFu
ZC5ncHIoKSwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksCi0gICAgICAgICAgICAgICAgVHJ1
c3RlZEltbVB0cih1aWQpKSk7Ci0gICAgfQorICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAg
IEJhZElkZW50LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsCisgICAgICAgIG1faml0LmJyYW5j
aFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0b3JhZ2VHUFIsIFRydXN0ZWRJbW1QdHIodWlk
KSkpOwogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCkBAIC04MzIwLDM2ICs4MzA3LDYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbXBhcmVFcVB0cihOb2RlKiBub2RlKQogICAgIGJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTeW1ib2xVbnR5cGVkRXF1YWxpdHkoTm9kZSogbm9kZSwgRWRnZSBzeW1i
b2xFZGdlLCBFZGdlIHVudHlwZWRFZGdlKQotewotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN5
bWJvbCh0aGlzLCBzeW1ib2xFZGdlKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCB1bnR5cGVkKHRoaXMs
IHVudHlwZWRFZGdlKTsKLSAgICBHUFJUZW1wb3JhcnkgbGVmdFRlbXAodGhpcyk7Ci0gICAgR1BS
VGVtcG9yYXJ5IHJpZ2h0VGVtcCh0aGlzKTsKLSAgICAKLSAgICBHUFJSZWcgc3ltYm9sR1BSID0g
c3ltYm9sLmdwcigpOwotICAgIEpTVmFsdWVSZWdzIHVudHlwZWRSZWdzID0gdW50eXBlZC5qc1Zh
bHVlUmVncygpOwotICAgIEdQUlJlZyBsZWZ0VGVtcEdQUiA9IGxlZnRUZW1wLmdwcigpOwotICAg
IEdQUlJlZyByaWdodFRlbXBHUFIgPSByaWdodFRlbXAuZ3ByKCk7Ci0gICAgCi0gICAgc3BlY3Vs
YXRlU3ltYm9sKHN5bWJvbEVkZ2UsIHN5bWJvbEdQUik7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh1bnR5cGVkUmVncyk7Ci0gICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNTeW1ib2wgPSBtX2ppdC5icmFuY2hJZlN5bWJvbCh1bnR5cGVk
UmVncy5wYXlsb2FkR1BSKCkpOwotICAgIAotICAgIG5vdENlbGwubGluaygmbV9qaXQpOwotICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBsZWZ0VGVtcEdQUik7Ci0gICAgSklUQ29tcGls
ZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKLSAgICAKLSAgICBpc1N5bWJvbC5saW5rKCZt
X2ppdCk7Ci0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhzeW1ib2xHUFIs
IFN5bWJvbDo6b2Zmc2V0T2ZQcml2YXRlTmFtZSgpKSwgbGVmdFRlbXBHUFIpOwotICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModW50eXBlZFJlZ3MucGF5bG9hZEdQUigpLCBT
eW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSksIHJpZ2h0VGVtcEdQUik7Ci0gICAgbV9qaXQu
Y29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnRUZW1wR1BSLCByaWdodFRlbXBHUFIs
IGxlZnRUZW1wR1BSKTsKLSAgICAKLSAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICB1bmJsZXNz
ZWRCb29sZWFuUmVzdWx0KGxlZnRUZW1wR1BSLCBub2RlKTsKLX0KLQogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAppbmRleCAzNTk4NGQ4ZjM0MmI2NThlY2YxNmI5YmVkM2JjN2ZhMDQ2NmIy
M2UyLi41Mjg1NDUxNDUyZjUzOTY1ZDZkOTBiY2NiNGUwZDc3YTBmNGJkNTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yMzQ4LDggKzIz
NDgsNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlU3RyaW5nWmVy
b0xlbmd0aChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTWlzY1N0cmljdEVxKE5vZGUqKTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBleHRyYWN0U3RyaW5nSW1w
bEZyb21CaW5hcnlTeW1ib2xzKEVkZ2UgbGVmdFN5bWJvbEVkZ2UsIEVkZ2UgcmlnaHRTeW1ib2xF
ZGdlLCBjb25zdCBGdW5jdG9yJik7CiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1YWxpdHkoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSosIE5vZGUq
IGJyYW5jaE5vZGUpOwogICAgIHZvaWQgY29tcGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2Rl
KiwgRWRnZSBzeW1ib2xFZGdlLCBFZGdlIHVudHlwZWRFZGdlKTsKQEAgLTI0MzYsNyArMjQzNCw3
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0
aChOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwot
ICAgIHZvaWQgY29tcGlsZUNoZWNrSWRlbnQoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUNoZWNr
U3RyaW5nSWRlbnQoTm9kZSopOwogICAgIAogICAgIHZvaWQgY29tcGlsZVZhbHVlUmVwKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVSZXAoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggZDIyNjcy
NTc3YmJkYjZkZDU1ODVlN2YzODRkNWU5Mjc5ZGJhNGNkZi4uYmJmMDA1NTZjYjFjYzgwMGU0NTU3
YWQ3MTU5YzhjYTBiOWNmNmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0xNTI1LDYgKzE1MjUsMzMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1
YWxpdHkoRWRnZSBsZWZ0Q2hpbGQKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiBub2RlLCBFZGdl
IHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBlZEVkZ2UpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgc3ltYm9sKHRoaXMsIHN5bWJvbEVkZ2UpOworICAgIEpTVmFsdWVPcGVyYW5kIHVudHlwZWQo
dGhpcywgdW50eXBlZEVkZ2UpOworCisgICAgR1BSUmVnIHN5bWJvbEdQUiA9IHN5bWJvbC5ncHIo
KTsKKyAgICBHUFJSZWcgdW50eXBlZEdQUiA9IHVudHlwZWQucGF5bG9hZEdQUigpOworCisgICAg
c3BlY3VsYXRlU3ltYm9sKHN5bWJvbEVkZ2UsIHN5bWJvbEdQUik7CisKKyAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0UGF5bG9hZCh0aGlzLCBSZXVzZSwgc3ltYm9sKTsKKyAgICBHUFJSZWcgcmVzdWx0
UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCB1bnR5cGVkQ2VsbEp1bXAgPSBtX2ppdC5icmFuY2hJZkNlbGwodW50eXBlZC5qc1ZhbHVl
UmVncygpKTsKKworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2Fk
R1BSKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB1bnR5cGVkTm90Q2VsbEp1bXAgPSBtX2pp
dC5qdW1wKCk7CisKKyAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhhdCB3ZSBjYW4gcGVy
Zm9ybSBhIHN0cmFpZ2h0LWZvcndhcmQgZXF1YWxpdHkgY29tcGFyaXNvbiBvbiBwb2ludGVyCisg
ICAgLy8gdmFsdWVzIGJlY2F1c2Ugd2UgYXJlIGRvaW5nIHN0cmljdCBlcXVhbGl0eS4KKyAgICB1
bnR5cGVkQ2VsbEp1bXAubGluaygmbV9qaXQpOworICAgIG1faml0LmNvbXBhcmUzMihNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIHN5bWJvbEdQUiwgdW50eXBlZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7
CisKKyAgICB1bnR5cGVkTm90Q2VsbEp1bXAubGluaygmbV9qaXQpOworICAgIGJvb2xlYW5SZXN1
bHQocmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbnQzMkNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxD
b25kaXRpb24gY29uZGl0aW9uKQogewogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtNDMzMiw4ICs0MzU5LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBj
YXNlIENoZWNrSWRlbnQ6Ci0gICAgICAgIGNvbXBpbGVDaGVja0lkZW50KG5vZGUpOworICAgIGNh
c2UgQ2hlY2tTdHJpbmdJZGVudDoKKyAgICAgICAgY29tcGlsZUNoZWNrU3RyaW5nSWRlbnQobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBi
NDg5OTU2YzdkZjVjZWJjMGYwOGIxNmI2YTlhZjUwN2UxNGE4ODVkLi41ZjkzYjFhZWNmZTMzZjNh
ZGFiZGVlM2ZlODU4NzNiOGZhYTdmMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE2MDcsNiArMTYwNywyNCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVh
bGl0eShFZGdlIGxlZnRDaGlsZAogICAgIGp1bXAobm90VGFrZW4pOwogfQogCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5KE5vZGUqIG5vZGUsIEVkZ2Ug
c3ltYm9sRWRnZSwgRWRnZSB1bnR5cGVkRWRnZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBzeW1ib2wodGhpcywgc3ltYm9sRWRnZSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdW50eXBlZCh0
aGlzLCB1bnR5cGVkRWRnZSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
c3ltYm9sLCB1bnR5cGVkKTsKKworICAgIEdQUlJlZyBzeW1ib2xHUFIgPSBzeW1ib2wuZ3ByKCk7
CisgICAgR1BSUmVnIHVudHlwZWRHUFIgPSB1bnR5cGVkLmdwcigpOworICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2woc3ltYm9sRWRnZSwg
c3ltYm9sR1BSKTsKKworICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0IHdlIGNhbiBw
ZXJmb3JtIGEgc3RyYWlnaHQtZm9yd2FyZCBlcXVhbGl0eSBjb21wYXJpc29uIG9uIHBvaW50ZXIK
KyAgICAvLyB2YWx1ZXMgYmVjYXVzZSB3ZSBhcmUgZG9pbmcgc3RyaWN0IGVxdWFsaXR5LgorICAg
IG1faml0LmNvbXBhcmU2NChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHN5bWJvbEdQUiwgdW50eXBl
ZEdQUiwgcmVzdWx0R1BSKTsKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMkNvbXBhcmUoTm9k
ZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQog
ewogICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKQEAgLTQyODEs
OCArNDI5OSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBDaGVja0lkZW50OgotICAgICAgICBjb21w
aWxlQ2hlY2tJZGVudChub2RlKTsKKyAgICBjYXNlIENoZWNrU3RyaW5nSWRlbnQ6CisgICAgICAg
IGNvbXBpbGVDaGVja1N0cmluZ0lkZW50KG5vZGUpOwogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgR2V0RXhlY3V0YWJsZTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCAyMTI1ODBmZGFiN2FkYmJjMTVmNTU4
OGI1ZTUzYzM3MmYyODlhNTJhLi5jZmYwNWE4MDkyNjgyZTdiMDE3ZjdkZGE3NjFiNzNkYjVkNTNm
Y2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaApAQCAtMTAyLDggKzEwMiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKICAgICBtYWNybyhTdHJ1Y3R1cmVfY2xhc3NJbmZvLCBTdHJ1Y3R1cmU6OmNs
YXNzSW5mb09mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90
b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1
cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1h
Y3JvKFN5bWJvbF9wcml2YXRlTmFtZSwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisg
ICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlELCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpCiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBc
CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3Rv
cmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggM2UzOTJlOTVkYzcwOGE1OWE4
ODlhZDI4MjI5OTZiNTRmYTdiYzQzNy4uYWZjNTI3MjA4OTg0NzAwNmEyZmY4MjcwZTJkMDdhM2Qw
NmY2NzkxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgIGNhc2UgQ2hlY2tCYWRDZWxs
OgogICAgIGNhc2UgQ2hlY2tOb3RFbXB0eToKLSAgICBjYXNlIENoZWNrSWRlbnQ6CisgICAgY2Fz
ZSBDaGVja1N0cmluZ0lkZW50OgogICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAgIGNh
c2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4NGM4YmY0
NTBjODM5YWIwY2UyM2JhY2RiNWNlZWI0ZTJiYmE4NTE1Li5jMjZlZWU0ZTM2MTliMjYzN2RmZDNh
M2NmZWVkYzVkNzEzNjE4YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC02MDIsOCArNjAyLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tCYWRD
ZWxsKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja0lkZW50OgotICAg
ICAgICAgICAgY29tcGlsZUNoZWNrSWRlbnQoKTsKKyAgICAgICAgY2FzZSBDaGVja1N0cmluZ0lk
ZW50OgorICAgICAgICAgICAgY29tcGlsZUNoZWNrU3RyaW5nSWRlbnQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgICAgICAgICBjb21waWxl
R2V0RXhlY3V0YWJsZSgpOwpAQCAtMjQ3NywxNyArMjQ3NywxMiBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBzcGVjdWxhdGUoVERaRmFpbHVyZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBt
X291dC5pc1plcm82NChsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgfQogCi0g
ICAgdm9pZCBjb21waWxlQ2hlY2tJZGVudCgpCisgICAgdm9pZCBjb21waWxlQ2hlY2tTdHJpbmdJ
ZGVudCgpCiAgICAgewogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ub2RlLT51
aWRPcGVyYW5kKCk7Ci0gICAgICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpIHsKLSAgICAgICAgICAg
IExWYWx1ZSBzdHJpbmdJbXBsID0gbG93U3ltYm9sVUlEKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgc3BlY3VsYXRlKEJhZElkZW50LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lm5v
dEVxdWFsKHN0cmluZ0ltcGwsIG1fb3V0LmNvbnN0SW50UHRyKHVpZCkpKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIExWYWx1ZSBzdHJpbmcgPSBsb3dTdHJpbmdJZGVudChtX25vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0
cihzdHJpbmcsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwotICAgICAgICAgICAgc3BlY3VsYXRl
KEJhZElkZW50LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lm5vdEVxdWFsKHN0cmluZ0ltcGws
IG1fb3V0LmNvbnN0SW50UHRyKHVpZCkpKTsKLSAgICAgICAgfQorICAgICAgICBMVmFsdWUgc3Ry
aW5nID0gbG93U3RyaW5nSWRlbnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSBz
dHJpbmdJbXBsID0gbV9vdXQubG9hZFB0cihzdHJpbmcsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUp
OworICAgICAgICBzcGVjdWxhdGUoQmFkSWRlbnQsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQu
bm90RXF1YWwoc3RyaW5nSW1wbCwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSkpOwogICAgIH0KIAog
ICAgIHZvaWQgY29tcGlsZUdldEV4ZWN1dGFibGUoKQpAQCAtNTAzOSw5ICs1MDM0LDkgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmlu
YXJ5VXNlS2luZChTeW1ib2xVc2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdFN0cmluZ0lt
cGwgPSBsb3dTeW1ib2xVSUQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUg
cmlnaHRTdHJpbmdJbXBsID0gbG93U3ltYm9sVUlEKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5lcXVhbChsZWZ0U3RyaW5nSW1wbCwgcmlnaHRTdHJpbmdJ
bXBsKSk7CisgICAgICAgICAgICBMVmFsdWUgbGVmdFN5bWJvbCA9IGxvd1N5bWJvbChtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSByaWdodFN5bWJvbCA9IGxvd1N5bWJvbCht
X25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQuZXF1YWwobGVm
dFN5bWJvbCwgcmlnaHRTeW1ib2wpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAKQEAgLTUwNTIsMzMgKzUwNDcsMTAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgICAgIGlmIChzeW1ib2xFZGdlLnVzZUtpbmQoKSAhPSBTeW1ib2xVc2UpCiAgICAgICAg
ICAgICAgICAgc3RkOjpzd2FwKHN5bWJvbEVkZ2UsIHVudHlwZWRFZGdlKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgTFZhbHVlIGxlZnRTdHJpbmdJbXBsID0gbG93U3ltYm9sVUlEKHN5bWJv
bEVkZ2UpOworICAgICAgICAgICAgTFZhbHVlIGxlZnRTeW1ib2wgPSBsb3dTeW1ib2woc3ltYm9s
RWRnZSk7CiAgICAgICAgICAgICBMVmFsdWUgdW50eXBlZFZhbHVlID0gbG93SlNWYWx1ZSh1bnR5
cGVkRWRnZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENh
c2UgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNTeW1ib2xD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIG5vdFN5bWJvbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFs
c2UpOwotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIGlzQ2VsbCh1
bnR5cGVkVmFsdWUsIHByb3ZlblR5cGUodW50eXBlZEVkZ2UpKSwKLSAgICAgICAgICAgICAgICB1
bnN1cmUoaXNDZWxsQ2FzZSksIHVuc3VyZShjb250aW51YXRpb24pKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0NlbGxD
YXNlLCBpc1N5bWJvbENhc2UpOwotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAg
ICAgICAgIGlzU3ltYm9sKHVudHlwZWRWYWx1ZSwgcHJvdmVuVHlwZSh1bnR5cGVkRWRnZSkpLAot
ICAgICAgICAgICAgICAgIHVuc3VyZShpc1N5bWJvbENhc2UpLCB1bnN1cmUoY29udGludWF0aW9u
KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzU3ltYm9sQ2Fz
ZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHN5bWJvbFJlc3Vs
dCA9Ci0gICAgICAgICAgICAgICAgbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgICAgICBt
X291dC5lcXVhbCgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIodW50eXBl
ZFZhbHVlLCBtX2hlYXBzLlN5bWJvbF9wcml2YXRlTmFtZSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsZWZ0U3RyaW5nSW1wbCkpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBu
b3RTeW1ib2xSZXN1bHQsIHN5bWJvbFJlc3VsdCkpOworCisgICAgICAgICAgICBzZXRCb29sZWFu
KG1fb3V0LmVxdWFsKGxlZnRTeW1ib2wsIHVudHlwZWRWYWx1ZSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtOTg3MiwxNiArOTg0NCw2IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIExW
YWx1ZSBsb3dTeW1ib2xVSUQoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUg
PSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCi0gICAgewotICAgICAgICBpZiAoU3ltYm9s
KiBzeW1ib2wgPSBlZGdlLT5keW5hbWljQ2FzdENvbnN0YW50PFN5bWJvbCo+KCkpCi0gICAgICAg
ICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnRQdHIoc3ltYm9sLT5wcml2YXRlTmFtZSgpLnVpZCgp
KTsKLSAgICAgICAgTFZhbHVlIHN5bWJvbCA9IGxvd1N5bWJvbChlZGdlLCBtb2RlKTsKLSAgICAg
ICAgLy8gRklYTUU6IFdlIGNvdWxkIGF2b2lkIHRoaXMgbG9hZCBpZiB3ZSBoYWQgaGFzaC1jb25z
ZWQgU3ltYm9scy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODkwOAotICAgICAgICByZXR1cm4gbV9vdXQubG9hZFB0cihzeW1ib2wsIG1faGVh
cHMuU3ltYm9sX3ByaXZhdGVOYW1lKTsKLSAgICB9Ci0KICAgICBMVmFsdWUgbG93Tm9uTnVsbE9i
amVjdChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09w
ZXJhbmRTcGVjdWxhdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9k
ZSA9PSBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gT2JqZWN0
VXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDViMWFiYjg3ZWQ0MDNjN2ZiNDJhODZi
MGM4OGEyNzJlM2VhZDlkZjguLjVjMzYwNjZlMjcyZTZmZjVmZmY2ZGE1OWI3M2JhZTJkMWY4NGE4
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMzk1LDEwICszOTUsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChJ
bnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAog
ICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5
VmFsLgotICAgICAgICB2b2lkIGVtaXRJZGVudGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBS
ZWdpc3RlcklEIHNjcmF0Y2gsIGNvbnN0IElkZW50aWZpZXImLCBKdW1wTGlzdCYgc2xvd0Nhc2Vz
KTsKKyAgICAgICAgdm9pZCBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soQnlWYWxJbmZvKiwgUmVn
aXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIGNvbnN0IElkZW50aWZpZXImLCBKdW1w
TGlzdCYgc2xvd0Nhc2VzKTsKIAotICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGVtaXRHZXRC
eVZhbFdpdGhDYWNoZWRJZChJbnN0cnVjdGlvbiosIGNvbnN0IElkZW50aWZpZXImLCBKdW1wJiBm
YXN0RG9uZUNhc2UsIEp1bXAmIHNsb3dEb25lQ2FzZSwgSnVtcExpc3QmIHNsb3dDYXNlcyk7Ci0g
ICAgICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEluc3Ry
dWN0aW9uKiwgUHV0S2luZCwgY29uc3QgSWRlbnRpZmllciYsIEp1bXBMaXN0JiBkb25lQ2FzZXMs
IEp1bXBMaXN0JiBzbG93Q2FzZXMpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGVtaXRH
ZXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBJbnN0cnVjdGlvbiosIGNvbnN0IElkZW50
aWZpZXImLCBKdW1wJiBmYXN0RG9uZUNhc2UsIEp1bXAmIHNsb3dEb25lQ2FzZSwgSnVtcExpc3Qm
IHNsb3dDYXNlcyk7CisgICAgICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZW1pdFB1dEJ5VmFsV2l0
aENhY2hlZElkKEJ5VmFsSW5mbyosIEluc3RydWN0aW9uKiwgUHV0S2luZCwgY29uc3QgSWRlbnRp
ZmllciYsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCiAgICAg
ICAgIGVudW0gRmluYWxPYmplY3RNb2RlIHsgTWF5QmVGaW5hbCwgS25vd25Ob3RGaW5hbCB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBkYTg4
MWM2NDE2NzQzZjU1MDcyMzkwZjI0ZWYyMzM5ODQyZGRlNWQ4Li4zNzBhMjRkZGJjNDFhZjNmODkw
ZmI2NTI2NTRlYzM1NDUzMzI5NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKQEAgLTYxMiw3ICs2MTIsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVz
dWx0IHRyeVB1dEJ5VmFsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1
ZQogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIGlzU3RyaW5nT3JTeW1ib2woc3Vi
c2NyaXB0KSkgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMpOwotICAgICAgICBpZiAoIXN1YnNjcmlwdC5pc1N0cmlu
ZygpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgaWYgKHN1YnNjcmlw
dC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAg
IEFTU0VSVChleGVjLT5ieXRlY29kZU9mZnNldCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghYnlW
YWxJbmZvLT5zdHViUm91dGluZSk7CiAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7
CkBAIC02MjQsOCArNjI0LDEyIEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5UHV0QnlW
YWxPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlCiAgICAgICAgICAg
ICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVw
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAg
ICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBieVZh
bEluZm8tPmNhY2hlZElkID0gcHJvcGVydHlOYW1lOworICAgICAgICAgICAgICAgIGlmIChzdWJz
Y3JpcHQuaXNTeW1ib2woKSkKKyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRT
eW1ib2wuc2V0KHZtLCBjb2RlQmxvY2ssIGFzU3ltYm9sKHN1YnNjcmlwdCkpOwogICAgICAgICAg
ICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTY5MCw5ICs2OTQsNyBAQCBzdGF0aWMgT3B0
aW1pemF0aW9uUmVzdWx0IHRyeURpcmVjdFB1dEJ5VmFsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogbwogICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0
aW9uUmVzdWx0OjpHaXZlVXA7CiAgICAgfSBlbHNlIGlmIChpc1N0cmluZ09yU3ltYm9sKHN1YnNj
cmlwdCkpIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBzdWJzY3Jp
cHQudG9Qcm9wZXJ0eUtleShleGVjKTsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwotCi0gICAgICAgIGlmICghc3Vic2NyaXB0Lmlz
U3RyaW5nKCkgfHwgIWluZGV4KSB7CisgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2woKSB8
fCAhcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBBU1NFUlQoZXhlYy0+
Ynl0ZWNvZGVPZmZzZXQoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJv
dXRpbmUpOwogICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+c2VlbikgewpAQCAtNzA0LDggKzcw
NiwxMiBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeURpcmVjdFB1dEJ5VmFsT3B0aW1p
emUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogbwogICAgICAgICAgICAgICAgICAgICBvcHRp
bWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgICAgIGJ5
VmFsSW5mby0+c2VlbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJ
ZCA9IHByb3BlcnR5TmFtZTsKKyAgICAgICAgICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9s
KCkpCisgICAgICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkU3ltYm9sLnNldCh2bSwg
Y29kZUJsb2NrLCBhc1N5bWJvbChzdWJzY3JpcHQpKTsKICAgICAgICAgICAgICAgICBvcHRpbWl6
YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xNjg2LDcgKzE2OTIsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVz
dWx0IHRyeUdldEJ5VmFsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1
ZQogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIGlzU3RyaW5nT3JTeW1ib2woc3Vi
c2NyaXB0KSkgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNj
cmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMpOwotICAgICAgICBpZiAoIXN1YnNjcmlwdC5pc1N0cmlu
ZygpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgaWYgKHN1YnNjcmlw
dC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAg
IEFTU0VSVChleGVjLT5ieXRlY29kZU9mZnNldCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghYnlW
YWxJbmZvLT5zdHViUm91dGluZSk7CiAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7
CkBAIC0xNjk4LDExICsxNzA0LDE0IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5R2V0
QnlWYWxPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlCiAgICAgICAg
ICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2
ZVVwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAg
ICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBi
eVZhbEluZm8tPmNhY2hlZElkID0gcHJvcGVydHlOYW1lOworICAgICAgICAgICAgICAgIGlmIChz
dWJzY3JpcHQuaXNTeW1ib2woKSkKKyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNo
ZWRTeW1ib2wuc2V0KHZtLCBjb2RlQmxvY2ssIGFzU3ltYm9sKHN1YnNjcmlwdCkpOwogICAgICAg
ICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9u
Y2U7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA5ZDEzNDRlMTVjY2U2
NTQxZGRjM2U1MmFhOTU3ZjY4YTIxODA2ZTEzLi4xNGZiOTQwYjc3ZWVhNDkzZDYwM2IxYTU4YWJl
NDZhZmFmMWMzNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
QXJyYXlTdG9yYWdlTG9hZChJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAg
ICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRH
ZXRCeVZhbFdpdGhDYWNoZWRJZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXAmIGZhc3REb25lQ2FzZSwgSnVtcCYgc2xv
d0RvbmVDYXNlLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQorSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6
OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
dW1wJiBmYXN0RG9uZUNhc2UsIEp1bXAmIHNsb3dEb25lQ2FzZSwgSnVtcExpc3QmIHNsb3dDYXNl
cykKIHsKICAgICAvLyBiYXNlOiByZWdUMAogICAgIC8vIHByb3BlcnR5OiByZWdUMQpAQCAtMjE4
LDcgKzIxOCw3IEBAIEpJVEdldEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0R2V0QnlWYWxXaXRoQ2Fj
aGVkSWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvCiAgICAgaW50IGRzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGVtaXRK
dW1wSWZOb3RKU0NlbGwocmVnVDEpKTsKLSAgICBlbWl0SWRlbnRpZmllckNoZWNrKHJlZ1QxLCBy
ZWdUMywgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOworICAgIGVtaXRCeVZhbElkZW50aWZpZXJD
aGVjayhieVZhbEluZm8sIHJlZ1QxLCByZWdUMywgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCkBAIC00MjgsNyArNDI4
LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQYXQKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQog
Ci1KSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFB1dEtpbmQgcHV0S2luZCwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nh
c2VzKQorSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChC
eVZhbEluZm8qIGJ5VmFsSW5mbywgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHV0
S2luZCBwdXRLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBk
b25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCiB7CiAgICAgLy8gYmFzZTogcmVnVDAKICAg
ICAvLyBwcm9wZXJ0eTogcmVnVDEKQEAgLTQzOCw3ICs0MzgsNyBAQCBKSVRQdXRCeUlkR2VuZXJh
dG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3RpbwogICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7
CiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDEpKTsKLSAg
ICBlbWl0SWRlbnRpZmllckNoZWNrKHJlZ1QxLCByZWdUMSwgcHJvcGVydHlOYW1lLCBzbG93Q2Fz
ZXMpOworICAgIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhieVZhbEluZm8sIHJlZ1QxLCByZWdU
MSwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwogCiAgICAgLy8gV3JpdGUgYmFycmllciBicmVh
a3MgdGhlIHJlZ2lzdGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3JpdGUgYmFycmllciwKICAg
ICAvLyByZWxvYWQgdGhlIHJlZ2lzdGVycy4KQEAgLTEyNTMsMTYgKzEyNTMsMTUgQEAgdm9pZCBK
SVQ6OmVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lcikKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25VbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyLCBvd25lcik7CiB9CiAKLXZvaWQg
SklUOjplbWl0SWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3Jh
dGNoLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBzbG93Q2FzZXMp
Cit2b2lkIEpJVDo6ZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQogewotICAgIGlmIChwcm9wZXJ0eU5h
bWUuaXNTeW1ib2woKSkgewotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVy
ZShOb3RFcXVhbCwgQWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBt
X3ZtLT5zeW1ib2xTdHJ1Y3R1cmUuZ2V0KCkpKTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGNl
bGwsIFN5bWJvbDo6b2Zmc2V0T2ZQcml2YXRlTmFtZSgpKSwgc2NyYXRjaCk7Ci0gICAgfSBlbHNl
IHsKKyAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCisgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBjZWxsLCBUcnVzdGVkSW1tUHRyKGJ5VmFsSW5mby0+
Y2FjaGVkU3ltYm9sLmdldCgpKSkpOworICAgIGVsc2UgewogICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKGNlbGwsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNo
KTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHNjcmF0Y2gs
IFRydXN0ZWRJbW1QdHIocHJvcGVydHlOYW1lLmltcGwoKSkpKTsKICAgICB9Ci0gICAgc2xvd0Nh
c2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW1QdHIocHJv
cGVydHlOYW1lLmltcGwoKSkpKTsKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlW
YWwoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywg
SklUQXJyYXlNb2RlIGFycmF5TW9kZSkKQEAgLTEzMjUsNyArMTMyNCw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBS
ZXR1cm5BZGRyZXNzCiAgICAgSnVtcCBzbG93RG9uZUNhc2U7CiAgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwogCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4gPSBlbWl0R2V0QnlWYWxXaXRoQ2Fj
aGVkSWQoY3VycmVudEluc3RydWN0aW9uLCBwcm9wZXJ0eU5hbWUsIGZhc3REb25lQ2FzZSwgc2xv
d0RvbmVDYXNlLCBzbG93Q2FzZXMpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1p
dEdldEJ5VmFsV2l0aENhY2hlZElkKGJ5VmFsSW5mbywgY3VycmVudEluc3RydWN0aW9uLCBwcm9w
ZXJ0eU5hbWUsIGZhc3REb25lQ2FzZSwgc2xvd0RvbmVDYXNlLCBzbG93Q2FzZXMpOwogCiAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7CiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrKTsKQEAgLTE0MTQs
NyArMTQxMyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElk
KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgSnVtcExpc3QgZG9uZUNh
c2VzOwogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
Z2VuID0gZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKGN1cnJlbnRJbnN0cnVjdGlvbiwgcHV0S2lu
ZCwgcHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7CisgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBnZW4gPSBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoYnlWYWxJbmZvLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHB1dEtpbmQsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMp
OwogCiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCmluZGV4IDFkNjU2MjQ3ZGQzZGE0MDgyZWRmZjRjZTMwM2I5ZTgyN2I0Y2RiMmYuLjJj
ZTUwYTJhYzBkNzRlZTkwNWY2NDg2ODRjYWI3Nzc3NWM5MTE4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMjc5
LDcgKzI3OSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0dXJuIHNsb3dDYXNlczsK
IH0KIAotSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEp1bXAmIGZhc3REb25lQ2FzZSwgSnVtcCYgc2xvd0RvbmVDYXNlLCBKdW1wTGlzdCYg
c2xvd0Nhc2VzKQorSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNo
ZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKdW1wJiBmYXN0RG9uZUNhc2UsIEp1
bXAmIHNsb3dEb25lQ2FzZSwgSnVtcExpc3QmIHNsb3dDYXNlcykKIHsKICAgICBpbnQgZHN0ID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIApAQCAtMjg4LDcgKzI4OCw3IEBAIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0R2V0QnlWYWxXaXRoQ2FjaGVkSWQoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvCiAgICAgLy8gc2NyYXRjaDogcmVnVDQKIAogICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZykpKTsKLSAgICBlbWl0SWRlbnRpZmllckNoZWNrKHJlZ1QyLCByZWdUNCwgcHJv
cGVydHlOYW1lLCBzbG93Q2FzZXMpOworICAgIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhieVZh
bEluZm8sIHJlZ1QyLCByZWdUNCwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwogCiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KGN1cnJlbnRJbnN0cnVjdGlvbiksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKQEAgLTQ4NSw3ICs0ODUsNyBAQCBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFBhdAogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVFB1
dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgUHV0S2luZCBwdXRLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCitK
SVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQdXRLaW5kIHB1
dEtpbmQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNl
cywgSnVtcExpc3QmIHNsb3dDYXNlcykKIHsKICAgICAvLyBiYXNlOiB0YWcocmVnVDEpLCBwYXls
b2FkKHJlZ1QwKQogICAgIC8vIHByb3BlcnR5OiB0YWcocmVnVDMpLCBwYXlsb2FkKHJlZ1QyKQpA
QCAtNDk0LDcgKzQ5NCw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvCiAgICAgaW50IHZhbHVl
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpKTsKLSAgICBlbWl0SWRlbnRpZmllckNoZWNrKHJlZ1QyLCByZWdUMiwgcHJvcGVydHlOYW1l
LCBzbG93Q2FzZXMpOworICAgIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhieVZhbEluZm8sIHJl
Z1QyLCByZWdUMiwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwogCiAgICAgLy8gV3JpdGUgYmFy
cmllciBicmVha3MgdGhlIHJlZ2lzdGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3JpdGUgYmFy
cmllciwKICAgICAvLyByZWxvYWQgdGhlIHJlZ2lzdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggYjhkZDIyYWE4MGU4ZWVjMjRkOGEyNDM3
MjEwNDAwMTM2MmMzZDc2Mi4uZDc2NmU0MjEyMGE2Mjk0ZGViZTZiMDY4MTUyZGQ3NTZhOTQ3MDAy
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAg
LTI1Miw3ICsyNTIsOSBAQCB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVj
dHVyZSgKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG91dC5wcmludCgiICh1
bnJlc29sdmVkKSIpOwogICAgICAgICAgICAgb3V0LnByaW50KCI6ICIsIGltcGwpOwotICAgICAg
ICB9IGVsc2UgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihTdHJ1Y3R1
cmU6OmluZm8oKSkpCisgICAgICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+
aXNTdWJDbGFzc09mKFN5bWJvbDo6aW5mbygpKSkKKyAgICAgICAgICAgIG91dC5wcmludCgiU3lt
Ym9sOiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CisgICAgICAgIGVsc2UgaWYgKHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihTdHJ1Y3R1cmU6OmluZm8oKSkpCiAgICAgICAg
ICAgICBvdXQucHJpbnQoIlN0cnVjdHVyZTogIiwgaW5Db250ZXh0KCpqc0Nhc3Q8U3RydWN0dXJl
Kj4oYXNDZWxsKCkpLCBjb250ZXh0KSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgb3V0
LnByaW50KCJDZWxsOiAiLCBSYXdQb2ludGVyKGFzQ2VsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA4MDJlYjI3MWFi
OTljMWRhM2Y2ZjBhODkxZGU0MjQyYTVlNjU3ODc3Li4zNGYzZWRhODdlZTliMTZhODk3ZDdmYTI3
MDE4YjdlOTY1YTAxMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTk0MSw3ICs5NDEsNyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
djEsIEpTVgogICAgICAgICBib29sIHN5bTIgPSB2Mi5pc1N5bWJvbCgpOwogICAgICAgICBpZiAo
c3ltMSB8fCBzeW0yKSB7CiAgICAgICAgICAgICBpZiAoc3ltMSAmJiBzeW0yKQotICAgICAgICAg
ICAgICAgIHJldHVybiBhc1N5bWJvbCh2MSktPnByaXZhdGVOYW1lKCkgPT0gYXNTeW1ib2wodjIp
LT5wcml2YXRlTmFtZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBhc1N5bWJvbCh2MSkgPT0g
YXNTeW1ib2wodjIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAg
LTk3MCw5ICs5NzAsNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxT
bG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdgogCiAgICAgaWYgKHYxLmFz
Q2VsbCgpLT5pc1N0cmluZygpICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKQogICAgICAgICBy
ZXR1cm4gV1RGOjplcXVhbCgqYXNTdHJpbmcodjEpLT52YWx1ZShleGVjKS5pbXBsKCksICphc1N0
cmluZyh2MiktPnZhbHVlKGV4ZWMpLmltcGwoKSk7Ci0gICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N5
bWJvbCgpICYmIHYyLmFzQ2VsbCgpLT5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gYXNTeW1i
b2wodjEpLT5wcml2YXRlTmFtZSgpID09IGFzU3ltYm9sKHYyKS0+cHJpdmF0ZU5hbWUoKTsKLQog
ICAgIHJldHVybiB2MSA9PSB2MjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA1OGJmMjNhY2FkNTA0NzU0NzAxZDViYjRjZjdjNTBjMTIw
N2JmOTM4Li5lYWU3OWM1ODFkMzI3ODk1ZDc2ZmI5ZDNkOTJkNjI4NDhhMzI3Y2E5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNTc1LDcgKzU3
NSw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6c2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgaWYgKHVpZC0+aXNOdWxsU3ltYm9sKCkpCiAgICAgICAg
ICAgICBuYW1lID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbmFt
ZSA9IG1ha2VTdHJpbmcoIlsiLCBTdHJpbmcoYXNTeW1ib2wodmFsdWUpLT5wcml2YXRlTmFtZSgp
LnVpZCgpKSwgJ10nKTsKKyAgICAgICAgICAgIG5hbWUgPSBtYWtlU3RyaW5nKCdbJywgU3RyaW5n
KHVpZCksICddJyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICAgICAgSlNTdHJpbmcqIGpzU3RyID0gdmFsdWUudG9TdHJpbmcoZXhlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKaW5kZXggNzRiMmY5ODMyYzRlZTdmMzJlMGJh
NzNjZjkzOGU5MmM3M2NiMGY1ZC4uYTIwNzA1ODgyZjBmMWM3ZWU0ZGU0Zjc5ZmE4ZjdlYWNmOTQ1
MzAxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaApAQCAtMTE5LDcg
KzExOSw2IEBAIGNsYXNzIE1hcERhdGFJbXBsIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8SlNDZWxs
KiwgaW50MzJfdCwgdHlwZW5hbWUgV1RGOjpEZWZhdWx0SGFzaDxKU0NlbGwqPjo6SGFzaCwgV1RG
OjpIYXNoVHJhaXRzPEpTQ2VsbCo+LCBJbmRleFRyYWl0cz4gQ2VsbEtleWVkTWFwOwogICAgIHR5
cGVkZWYgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWVIYXNo
LCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHMsIEluZGV4VHJhaXRzPiBWYWx1ZUtleWVkTWFwOwog
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmdJbXBsKiwgaW50MzJfdCwgdHlwZW5hbWUgV1RGOjpE
ZWZhdWx0SGFzaDxTdHJpbmdJbXBsKj46Okhhc2gsIFdURjo6SGFzaFRyYWl0czxTdHJpbmdJbXBs
Kj4sIEluZGV4VHJhaXRzPiBTdHJpbmdLZXllZE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3lt
Ym9sSW1wbCosIGludDMyX3QsIHR5cGVuYW1lIFdURjo6UHRySGFzaDxTeW1ib2xJbXBsKj4sIFdU
Rjo6SGFzaFRyYWl0czxTeW1ib2xJbXBsKj4sIEluZGV4VHJhaXRzPiBTeW1ib2xLZXllZE1hcDsK
IAogICAgIEFMV0FZU19JTkxJTkUgRW50cnkqIGZpbmQoRXhlY1N0YXRlKiwgS2V5VHlwZSk7CiAg
ICAgQUxXQVlTX0lOTElORSBFbnRyeSogYWRkKEV4ZWNTdGF0ZSosIEpTQ2VsbCogb3duZXIsIEtl
eVR5cGUpOwpAQCAtMTM0LDcgKzEzMyw2IEBAIGNsYXNzIE1hcERhdGFJbXBsIHsKICAgICBDZWxs
S2V5ZWRNYXAgbV9jZWxsS2V5ZWRUYWJsZTsKICAgICBWYWx1ZUtleWVkTWFwIG1fdmFsdWVLZXll
ZFRhYmxlOwogICAgIFN0cmluZ0tleWVkTWFwIG1fc3RyaW5nS2V5ZWRUYWJsZTsKLSAgICBTeW1i
b2xLZXllZE1hcCBtX3N5bWJvbEtleWVkVGFibGU7CiAgICAgaW50MzJfdCBtX2NhcGFjaXR5Owog
ICAgIGludDMyX3QgbV9zaXplOwogICAgIGludDMyX3QgbV9kZWxldGVkQ291bnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlubGluZXMuaAppbmRleCAzOGY1ZmZl
NjBhZmMzZmIyYWJmZWEwZjU0MDU4MDhlMDljMWEzZmYzLi41NGY5YWUxZjZiZDdkMGMwMWU5NzQ3
ZDFhNTY1MGRmZGNkZTE2YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBEYXRhSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcERhdGFJbmxpbmVzLmgKQEAgLTQzLDcgKzQzLDYgQEAgaW5saW5lIHZvaWQgTWFwRGF0YUlt
cGw8RW50cnksIEpTSXRlcmF0b3I+OjpjbGVhcigpCiAgICAgbV9jZWxsS2V5ZWRUYWJsZS5jbGVh
cigpOwogICAgIG1fdmFsdWVLZXllZFRhYmxlLmNsZWFyKCk7CiAgICAgbV9zdHJpbmdLZXllZFRh
YmxlLmNsZWFyKCk7Ci0gICAgbV9zeW1ib2xLZXllZFRhYmxlLmNsZWFyKCk7CiAgICAgbV9jYXBh
Y2l0eSA9IDA7CiAgICAgbV9zaXplID0gMDsKICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CkBAIC02
MiwxMiArNjEsNiBAQCBpbmxpbmUgRW50cnkqIE1hcERhdGFJbXBsPEVudHJ5LCBKU0l0ZXJhdG9y
Pjo6ZmluZChFeGVjU3RhdGUqIGV4ZWMsIEtleVR5cGUga2V5KQogICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIHJldHVybiAmbV9lbnRyaWVzLmdldCgpW2l0ZXItPnZhbHVlXTsKICAgICB9
Ci0gICAgaWYgKGtleS52YWx1ZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGF1dG8gaXRlciA9IG1f
c3ltYm9sS2V5ZWRUYWJsZS5maW5kKGFzU3ltYm9sKGtleS52YWx1ZSktPnByaXZhdGVOYW1lKCku
dWlkKCkpOwotICAgICAgICBpZiAoaXRlciA9PSBtX3N5bWJvbEtleWVkVGFibGUuZW5kKCkpCi0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICZtX2VudHJpZXMuZ2V0KClbaXRl
ci0+dmFsdWVdOwotICAgIH0KICAgICBpZiAoa2V5LnZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAg
IGF1dG8gaXRlciA9IG1fY2VsbEtleWVkVGFibGUuZmluZChrZXkudmFsdWUuYXNDZWxsKCkpOwog
ICAgICAgICBpZiAoaXRlciA9PSBtX2NlbGxLZXllZFRhYmxlLmVuZCgpKQpAQCAtMTIwLDggKzEx
Myw2IEBAIGlubGluZSBFbnRyeSogTWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0b3I+OjphZGQo
RXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyCiB7CiAgICAgaWYgKGtleS52YWx1ZS5pc1N0
cmluZygpKQogICAgICAgICByZXR1cm4gYWRkKGV4ZWMsIG93bmVyLCBtX3N0cmluZ0tleWVkVGFi
bGUsIGFzU3RyaW5nKGtleS52YWx1ZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwga2V5KTsKLSAgICBp
ZiAoa2V5LnZhbHVlLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBhZGQoZXhlYywgb3duZXIs
IG1fc3ltYm9sS2V5ZWRUYWJsZSwgYXNTeW1ib2woa2V5LnZhbHVlKS0+cHJpdmF0ZU5hbWUoKS51
aWQoKSwga2V5KTsKICAgICBpZiAoa2V5LnZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4g
YWRkKGV4ZWMsIG93bmVyLCBtX2NlbGxLZXllZFRhYmxlLCBrZXkudmFsdWUuYXNDZWxsKCksIGtl
eSk7CiAgICAgcmV0dXJuIGFkZChleGVjLCBvd25lciwgbV92YWx1ZUtleWVkVGFibGUsIEpTVmFs
dWU6OmVuY29kZShrZXkudmFsdWUpLCBrZXkpOwpAQCAtMTQ1LDEyICsxMzYsNiBAQCBpbmxpbmUg
Ym9vbCBNYXBEYXRhSW1wbDxFbnRyeSwgSlNJdGVyYXRvcj46OnJlbW92ZShFeGVjU3RhdGUqIGV4
ZWMsIEtleVR5cGUga2V5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBsb2Nh
dGlvbiA9IGl0ZXItPnZhbHVlOwogICAgICAgICBtX3N0cmluZ0tleWVkVGFibGUucmVtb3ZlKGl0
ZXIpOwotICAgIH0gIGVsc2UgaWYgKGtleS52YWx1ZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGF1
dG8gaXRlciA9IG1fc3ltYm9sS2V5ZWRUYWJsZS5maW5kKGFzU3ltYm9sKGtleS52YWx1ZSktPnBy
aXZhdGVOYW1lKCkudWlkKCkpOwotICAgICAgICBpZiAoaXRlciA9PSBtX3N5bWJvbEtleWVkVGFi
bGUuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGxvY2F0aW9uID0g
aXRlci0+dmFsdWU7Ci0gICAgICAgIG1fc3ltYm9sS2V5ZWRUYWJsZS5yZW1vdmUoaXRlcik7CiAg
ICAgfSBlbHNlIGlmIChrZXkudmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgYXV0byBpdGVyID0g
bV9jZWxsS2V5ZWRUYWJsZS5maW5kKGtleS52YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmIChp
dGVyID09IG1fY2VsbEtleWVkVGFibGUuZW5kKCkpCkBAIC0yMDAsOCArMTg1LDYgQEAgaW5saW5l
IHZvaWQgTWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0b3I+OjpyZXBsYWNlQW5kUGFja0JhY2tp
bmdTdG9yZShFbnRyeSogZGUKICAgICAgICAgcHRyLT52YWx1ZSA9IG1fZW50cmllcy5nZXQoKVtw
dHItPnZhbHVlXS5rZXkoKS5nZXQoKS5hc0ludDMyKCk7CiAgICAgZm9yIChhdXRvIHB0ciA9IG1f
c3RyaW5nS2V5ZWRUYWJsZS5iZWdpbigpOyBwdHIgIT0gbV9zdHJpbmdLZXllZFRhYmxlLmVuZCgp
OyArK3B0cikKICAgICAgICAgcHRyLT52YWx1ZSA9IG1fZW50cmllcy5nZXQoKVtwdHItPnZhbHVl
XS5rZXkoKS5nZXQoKS5hc0ludDMyKCk7Ci0gICAgZm9yIChhdXRvIHB0ciA9IG1fc3ltYm9sS2V5
ZWRUYWJsZS5iZWdpbigpOyBwdHIgIT0gbV9zeW1ib2xLZXllZFRhYmxlLmVuZCgpOyArK3B0cikK
LSAgICAgICAgcHRyLT52YWx1ZSA9IG1fZW50cmllcy5nZXQoKVtwdHItPnZhbHVlXS5rZXkoKS5n
ZXQoKS5hc0ludDMyKCk7CiAKICAgICBBU1NFUlQoKG1fc2l6ZSAtIG5ld0VuZCkgPT0gbV9kZWxl
dGVkQ291bnQpOwogICAgIG1fZGVsZXRlZENvdW50ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2wuY3BwCmluZGV4IDZhYzc5MGFkMTEyYTRjYzBjYWY0M2ViZmI5NDU3OGU3
ZTE5NDAzYjUuLjRjNDU4MjNjODQ3MmJlM2QxNTlmYzhjMzY0YWIxY2UxMzQxMzUwZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Myw2ICs1
MywxNCBAQCBTeW1ib2w6OlN5bWJvbChWTSYgdm0sIFN5bWJvbEltcGwmIHVpZCkKIHsKIH0KIAor
dm9pZCBTeW1ib2w6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisgICAgdm0uc3lt
Ym9sSW1wbFRvU3ltYm9sTWFwLnNldChtX3ByaXZhdGVOYW1lLnVpZCgpLCB0aGlzKTsKK30KKwog
aW5saW5lIFN5bWJvbE9iamVjdCogU3ltYm9sT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTeW1ib2wqIHN5bWJvbCkKIHsKICAgICBTeW1ib2xPYmpl
Y3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbE9iamVjdD4odm0u
aGVhcCkpIFN5bWJvbE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5zeW1ib2xPYmplY3RTdHJ1Y3R1
cmUoKSk7CkBAIC05Myw0ICsxMDEsMzAgQEAgU3RyaW5nIFN5bWJvbDo6ZGVzY3JpcHRpdmVTdHJp
bmcoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJTeW1ib2woIiwgU3RyaW5nKHByaXZh
dGVOYW1lKCkudWlkKCkpLCAnKScpOwogfQogCitTeW1ib2wqIFN5bWJvbDo6Y3JlYXRlKFZNJiB2
bSkKK3sKKyAgICBTeW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5
bWJvbD4odm0uaGVhcCkpIFN5bWJvbCh2bSk7CisgICAgc3ltYm9sLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgcmV0dXJuIHN5bWJvbDsKK30KKworU3ltYm9sKiBTeW1ib2w6OmNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBkZXNjcmlwdGlvbikKK3sKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFN0cmluZyBkZXNjID0gZGVzY3JpcHRpb24tPnZhbHVlKGV4ZWMpOworICAg
IFN5bWJvbCogc3ltYm9sID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sPih2bS5o
ZWFwKSkgU3ltYm9sKHZtLCBkZXNjKTsKKyAgICBzeW1ib2wtPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICByZXR1cm4gc3ltYm9sOworfQorCitTeW1ib2wqIFN5bWJvbDo6Y3JlYXRlKFZNJiB2bSwg
U3ltYm9sSW1wbCYgdWlkKQoreworICAgIGlmIChTeW1ib2wqIHN5bWJvbCA9IHZtLnN5bWJvbElt
cGxUb1N5bWJvbE1hcC5nZXQoJnVpZCkpCisgICAgICAgIHJldHVybiBzeW1ib2w7CisKKyAgICBT
eW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbD4odm0uaGVh
cCkpIFN5bWJvbCh2bSwgdWlkKTsKKyAgICBzeW1ib2wtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gc3ltYm9sOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sLmgKaW5kZXggYWNhYTcwMmZlNjEwNzhlYzFjZjk5ZmE5MTdkNDc4
ZmNmMDIyZDYxMy4uOTMzYTJlNTE4NGFiOTlmZjI2ZmNjMTJmNjIzMGI4ZDAzZWUxOWQ4MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgKQEAgLTEsNyArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDYg
QEAKICNpZm5kZWYgU3ltYm9sX2gKICNkZWZpbmUgU3ltYm9sX2gKIAotI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKIApA
QCAtNDgsMjggKzQ3LDkgQEAgY2xhc3MgU3ltYm9sIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKFN5bWJvbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgU3ltYm9sKiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgU3lt
Ym9sKiBzeW1ib2wgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2w+KHZtLmhlYXAp
KSBTeW1ib2wodm0pOwotICAgICAgICBzeW1ib2wtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAg
ICAgcmV0dXJuIHN5bWJvbDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3ltYm9sKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1N0cmluZyogZGVzY3JpcHRpb24pCi0gICAgewotICAgICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwotICAgICAgICBTdHJpbmcgZGVzYyA9IGRlc2NyaXB0aW9uLT52YWx1
ZShleGVjKTsKLSAgICAgICAgU3ltYm9sKiBzeW1ib2wgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTeW1ib2w+KHZtLmhlYXApKSBTeW1ib2wodm0sIGRlc2MpOwotICAgICAgICBzeW1ib2wt
PmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHN5bWJvbDsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgU3ltYm9sKiBjcmVhdGUoVk0mIHZtLCBTeW1ib2xJbXBsJiB1aWQpCi0gICAgewot
ICAgICAgICBTeW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJv
bD4odm0uaGVhcCkpIFN5bWJvbCh2bSwgdWlkKTsKLSAgICAgICAgc3ltYm9sLT5maW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgICAgIHJldHVybiBzeW1ib2w7Ci0gICAgfQorICAgIHN0YXRpYyBTeW1i
b2wqIGNyZWF0ZShWTSYpOworICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShFeGVjU3RhdGUqLCBK
U1N0cmluZyogZGVzY3JpcHRpb24pOworICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShWTSYsIFN5
bWJvbEltcGwmIHVpZCk7CiAKICAgICBjb25zdCBQcml2YXRlTmFtZSYgcHJpdmF0ZU5hbWUoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lOyB9CiAgICAgU3RyaW5nIGRlc2NyaXB0aXZlU3Ry
aW5nKCkgY29uc3Q7CkBAIC03OSw4ICs1OSw2IEBAIGNsYXNzIFN5bWJvbCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCopIGNvbnN0OwogICAgIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKIAot
ICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQcml2YXRlTmFtZSgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihTeW1ib2wsIG1fcHJpdmF0ZU5hbWUpOyB9Ci0KIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCkBAIC04OCwxMSArNjYsNyBAQCBjbGFzcyBTeW1i
b2wgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTeW1ib2woVk0mLCBjb25zdCBTdHJpbmcm
KTsKICAgICBTeW1ib2woVk0mLCBTeW1ib2xJbXBsJiB1aWQpOwogCi0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCi0gICAgewotICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
Ci0gICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLSAgICB9CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOwogCiAgICAgUHJpdmF0ZU5hbWUgbV9wcml2YXRlTmFtZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYjFmZjQyNDhhMzQ4NGE0Y2JiYzIw
NWMzMmQ0ZDA0YzE2MDYwY2FjNi4uM2U3MjYzYWExMDEyMjU1NzZjYjQ2ZTAyY2NkYjk1OTI3ZmRi
ZjMwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTY2LDYgKzE2Niw3
IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGVtcHR5
TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCiAgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbk1hcCgqdGhpcykKICAgICAsIHN0cmluZ0NhY2hlKCp0aGlzKQorICAgICwgc3ltYm9s
SW1wbFRvU3ltYm9sTWFwKCp0aGlzKQogICAgICwgcHJvdG90eXBlTWFwKCp0aGlzKQogICAgICwg
aW50ZXJwcmV0ZXIoMCkKICAgICAsIGpzQXJyYXlDbGFzc0luZm8oSlNBcnJheTo6aW5mbygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZjBkZTE1MTM1YTkwNzg3OGI0N2ExZDM0
MzRmNjgyOTFjYjVkYzczZS4uNTIxNjFkNzllM2ZmMzI1NDhiYzNmMTgwMzRkNWU4M2I0NmNkYzEy
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMDgsNiArMTA4LDcgQEAgY2xh
c3MgU3RydWN0dXJlOwogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKIGNsYXNzIFJlZ0V4cDsK
ICNlbmRpZgorY2xhc3MgU3ltYm9sOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBV
bmxpbmtlZEV2YWxDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsK
QEAgLTM0NSw2ICszNDYsOCBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXRvbWljU3RyaW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5
JiBzeW1ib2xSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KIAorICAgIFdl
YWtHQ01hcDxTeW1ib2xJbXBsKiwgU3ltYm9sLCBQdHJIYXNoPFN5bWJvbEltcGwqPj4gc3ltYm9s
SW1wbFRvU3ltYm9sTWFwOworCiAgICAgZW51bSBjbGFzcyBEZWxldGVQcm9wZXJ0eU1vZGUgewog
ICAgICAgICAvLyBEZWZhdWx0IGJlaGF2aW91ciBvZiBkZWxldGVQcm9wZXJ0eSwgbWF0Y2hpbmcg
dGhlIHNwZWMuCiAgICAgICAgIERlZmF1bHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1lcXVhbGl0eS1vdmVyLWdjLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtZXF1YWxpdHktb3Zlci1nYy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODBlMmZiNTc2OTdmMzY0ZWMwYzA5MTViOTgxOTMyMDljMDA5YjVlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtZXF1
YWxpdHktb3Zlci1nYy5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIGxldCBzeW1ib2wgPSBTeW1ib2woKTsKKyAgICBsZXQgb2JqZWN0MSA9IHsK
KyAgICAgICAgW3N5bWJvbF06IDQyCisgICAgfQorICAgIGxldCBvYmplY3QyID0geworICAgICAg
ICBbc3ltYm9sXTogNDIKKyAgICB9CisgICAgc3ltYm9sID0gbnVsbDsKKyAgICBmdWxsR0MoKTsK
KyAgICBzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdDEpWzBdLCBP
YmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdDIpWzBdKTsKK30KK25vSW5saW5lKHRl
c3QpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkKKyAgICB0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284767</attachid>
            <date>2016-07-28 03:03:50 -0700</date>
            <delta_ts>2016-07-28 03:26:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158908-20160728100237.patch</filename>
            <type>text/plain</type>
            <size>65641</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGNhYTRhZGUwMjQ5ZGVhMGNmOWJiZjhiYmRlMzM0ODM1YTkxZmViLi5hZTY1NGVjNjhkYzlkZTkz
MjVlNGRhMGQxZThlZjU3NmZmOTJmZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzkgQEAKKzIwMTYtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSlNDOjpTeW1ib2wgc2hvdWxkIGJlIGhhc2gtY29uc2VkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCBT
eW1ib2xJbXBscyBoZWxkIGJ5IHN5bWJvbHMgcmVwcmVzZW50cyBpZGVudGl0eSBvZiBzeW1ib2xz
LgorICAgICAgICBXaGVuIHdlIGNoZWNrIHRoZSBlcXVhbGl0eSBiZXR3ZWVuIHN5bWJvbHMsIHdl
IG5lZWQgdG8gbG9hZCBTeW1ib2xJbXBsIG9mIGVhY2ggc3ltYm9sIGFuZCBjb21wYXJlIHRoZW0u
CisKKyAgICAgICAgVGhpcyBwYXRjaCBwZXJmb3JtcyBoYXNoLWNvbnNpbmcgb250aCB0aGUgc3lt
Ym9scy4gV2UgY2FjaGUgc3ltYm9scyBpbiBwZXItVk0ncyBTeW1ib2xJbXBsLWtleWVkIFdlYWtH
Q01hcC4KKyAgICAgICAgV2hlbiBjcmVhdGluZyBhIG5ldyBzeW1ib2wgZnJvbSBTeW1ib2xJbXBs
LCB3ZSBmaXJzdCBxdWVyeSB0byB0aGlzIG1hcCBhbmQgcmV1c2UgdGhlIHByZXZpb3VzbHkgY3Jl
YXRlZCBzeW1ib2wKKyAgICAgICAgaWYgZm91bmQuIFRoaXMgZW5zdXJlcyB0aGF0IG9uZS1vbi1v
bmUgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBTeW1ib2xJbXBsIGFuZCBzeW1ib2wuIFNvIG5vdywg
d2UgY2FuIHVzZQorICAgICAgICBwb2ludGVyLWNvbXBhcmlzb24gdG8gY2hlY2sgZXF1YWxpdHkg
b2Ygc3ltYm9scy4KKworICAgICAgICBUaGlzIGNoYW5nZSBkcm9wcyBTeW1ib2xJbXBsIGxvYWRz
IGluIHRoZSBzeW1ib2wgZXF1YWxpdHkgcXVlcnkuIEZ1cnRoZXJtb3JlLCB3ZSBjYW4gdXNlIERG
RyBDaGVja0NlbGwgdG8gc3ltYm9sCisgICAgICAgIHdoZW4gd2Ugd291bGQgbGlrZSB0byBlbnN1
cmUgdGhhdCB0aGUgZ2l2ZW4gdmFsdWUgaXMgdGhlIGV4cGVjdGVkIHN5bWJvbC4gVGhpcyBjbGVh
bnMgdXAgR2V0QnlWYWwncyBzeW1ib2wta2V5ZAorICAgICAgICBjYWNoaW5nLiBUaGVuLCB3ZSBu
b3cgY2hhbmdlZCBDaGVja0lkZW50IHRvIENoZWNrU3RyaW5nSWRlbnQgc2luY2UgaXQgb25seSBj
aGVja3MgU3RyaW5nIGNhc2UuIFRoZSBzeW1ib2wgY2FzZSBpcworICAgICAgICBoYW5kbGVkIGJ5
IENoZWNrQ2VsbC4KKworICAgICAgICBBZGRpdGlvbmFsbHksIHRoaXMgcGF0Y2ggYWxzbyBjbGVh
bnMgdXAgTWFwIC8gU2V0IGltcGxlbWVudGF0aW9uIHNpbmNlIHdlIG5vdyB1c2UgdGhlIGxvZ2lj
IGZvciBKU0NlbGwgdG8gc3ltYm9scy4KKworICAgICAgICBUaGUgcGVyZm9ybWFuY2UgZWZmZWN0
cyBpbiB0aGUgcmVsYXRlZCBiZW5jaG1hcmtzIGFyZSB0aGUgZm9sbG93aW5ncy4KKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZWxpbmUgICAgICAgICAgICAgICAgICAgcGF0Y2gKKworICAgICAgICAgICAgYmlnc3dpdGNo
LWluZGlyZWN0LXN5bWJvbC1vci11bmRlZmluZWQgICAgICAgICA4NS42MjE0Ky0xLjAwNjMgICAg
IF4gICAgIDYzLjA1MjIrLTAuODYxNSAgICAgICAgXiBkZWZpbml0ZWx5IDEuMzU3OXggZmFzdGVy
CisgICAgICAgICAgICBiaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAgICAgICAgICAg
ICAgIDg0Ljk2NTMrLTAuNjI1OCAgICAgXiAgICAgODAuNDkwMCstMC44MDA4ICAgICAgICBeIGRl
ZmluaXRlbHkgMS4wNTU2eCBmYXN0ZXIKKyAgICAgICAgICAgIGZvbGQtcHV0LWJ5LXZhbC13aXRo
LXN5bWJvbC10by1tdWx0aS1wdXQtYnktb2Zmc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjQzOTYrLTAuMzcyNiAgICAgICAg
ICAgIDkuMjk0MSstMC4zMzExICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1N3ggZmFzdGVyCisgICAg
ICAgICAgICBpbmxpbmVkLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtdHJhbnNpdGlvbgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OS41
NDc3Ky0wLjI0MDEgICAgID8gICAgIDQ5Ljc1MzMrLTAuMzM2OSAgICAgICAgPworICAgICAgICAg
ICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1zZWxmLW9yLXByb3RvICAgICAgICAgICAxMS45NzQw
Ky0wLjA3OTggICAgID8gICAgIDEyLjE3MDYrLTAuMjcyMyAgICAgICAgPyBtaWdodCBiZSAxLjAx
NjR4IHNsb3dlcgorICAgICAgICAgICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1xdWFkbW9ycGhp
Yy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjEzNjQrLTAuMDg0MSAg
ICAgICAgICAgIDQuMDg3MistMC4wOTI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMHggZmFzdGVy
CisgICAgICAgICAgICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sICAgICAgICAgICAgICAgICAgICAg
ICAgIDExLjM3MDkrLTAuMDIyMyAgICAgICAgICAgMTEuMzYxMystMC4wMjY0CisgICAgICAgICAg
ICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXByb3RvLW9yLXNlbGYgICAgICAgICAgIDExLjg5ODQr
LTAuMDcwNiAgICAgPyAgICAgMTEuOTAzMCstMC4wNzg3ICAgICAgICA/CisgICAgICAgICAgICBw
b2x5bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgtc3ltYm9sICAgICAgICAgICAgIDMxLjQxNzYrLTAu
MDU1OCAgICAgICAgICAgMzEuMzgyNSstMC4wNDQ3CisgICAgICAgICAgICBpbXBsaWNpdC1iaWdz
d2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAgICAgIDYxLjMxMTUrLTAuNjU3NyAgICAgXiAg
ICAgNTguMDA5OCstMC4xMjEyICAgICAgICBeIGRlZmluaXRlbHkgMS4wNTY5eCBmYXN0ZXIKKyAg
ICAgICAgICAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVy
ZS1lbGltaW5hdGlvbi1zaW1wbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzEzOSstMC4wNTY1ICAgICBeICAgICAgMi45OTQ3
Ky0wLjA3MzIgICAgICAgIF4gZGVmaW5pdGVseSAxLjEwNjZ4IGZhc3RlcgorICAgICAgICAgICAg
Z2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1jaGFpbi1mcm9tLXRyeS1ibG9jaworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yMzE2Ky0w
LjAxNzkgICAgICAgICAgICAyLjIxMzcrLTAuMDIxMAorICAgICAgICAgICAgZ2V0LWJ5LXZhbC13
aXRoLXN5bWJvbC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjYw
MzErLTAuMjIxNiAgICAgXiAgICAgMTAuMDkzOSstMC4xOTc3ICAgICAgICBeIGRlZmluaXRlbHkg
MS4wNTA0eCBmYXN0ZXIKKyAgICAgICAgICAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtY2hlY2st
c3RydWN0dXJlLWVsaW1pbmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4LjU1NzYrLTAuMTUyMSAgICAgXiAgICAgIDcuNzEw
NystMC4xMzA4ICAgICAgICBeIGRlZmluaXRlbHkgMS4xMDk4eCBmYXN0ZXIKKyAgICAgICAgICAg
IHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtc2xpZ2h0bHktcG9seW1vcnBoaWMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTk1Nyst
MC4wNTM4ICAgICBeICAgICAgMi45MTgxKy0wLjA3MDggICAgICAgIF4gZGVmaW5pdGVseSAxLjA5
NTF4IGZhc3RlcgorICAgICAgICAgICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC1yZXBsYWNlLWFu
ZC10cmFuc2l0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDExLjgyNTMrLTAuMDc1NyAgICAgXiAgICAgMTEuNjU5MCstMC4wMzUx
ICAgICAgICBeIGRlZmluaXRlbHkgMS4wMTQzeCBmYXN0ZXIKKworICAgICAgICAgICAgPGdlb21l
dHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4zOTExKy0wLjA1Mjcg
ICAgIF4gICAgIDEyLjczNzYrLTAuMDQ1NyAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDUxM3ggZmFz
dGVyCisKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8uaDoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRT
dHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xv
YmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6Cisg
ICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToK
KyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4
dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc1VpZE9wZXJhbmQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlw
ZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZl
VG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ltYm9sRXF1YWxpdHkpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVh
bGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1N0
cmluZ0lkZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZXh0cmFjdFN0
cmluZ0ltcGxGcm9tQmluYXJ5U3ltYm9scyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lkZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0eSk6IERl
bGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3lt
Ym9sVW50eXBlZEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAg
ICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5D
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tTdHJpbmdJZGVudCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tJZGVudCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd1N5bWJv
bFVJRCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5R2V0QnlWYWxPcHRpbWl6ZSk6CisgICAg
ICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
R2V0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdp
dGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNr
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5VmFsV2l0aENhY2hlZElk
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SWRlbnRpZmllckNoZWNrKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEdldEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0
QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3RyaWN0
RXF1YWxTbG93Q2FzZUlubGluZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6c2V0RnVuY3Rpb25OYW1lKToKKyAg
ICAgICAgKiBydW50aW1lL01hcERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL01hcERhdGFJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTSXRlcmF0b3I+OjpjbGVhcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTSXRlcmF0b3I+OjpmaW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNJ
dGVyYXRvcj46OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTSXRlcmF0b3I+OjpyZW1v
dmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0l0ZXJhdG9yPjo6cmVwbGFjZUFuZFBhY2tC
YWNraW5nU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3ltYm9sOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN5bWJv
bDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbC5oOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
aDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLWVxdWFsaXR5LW92ZXItZ2MuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisKIDIwMTYtMDctMjUg
IEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDM3MDMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnlWYWxJbmZvLmgKaW5kZXggNTMxNDgxZTJhYzNiNDRmMTAwZDZmZmQ4ZDdhNWFmYWRjMThh
NzEzNS4uODk4ODZmOTM2ODAyNTU4MmE0OTQyZTVlNzYwNzU5MmZmMDk2ODcxZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMzUsNiArMzUsOCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgU3ltYm9sOworCiAjaWYgRU5BQkxFKEpJVCkKIAog
Y2xhc3MgU3RydWN0dXJlU3R1YkluZm87CkBAIC0yMzIsNiArMjM0LDcgQEAgc3RydWN0IEJ5VmFs
SW5mbyB7CiAgICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKICAgICBSZWZQdHI8SklUU3R1YlJv
dXRpbmU+IHN0dWJSb3V0aW5lOwogICAgIElkZW50aWZpZXIgY2FjaGVkSWQ7CisgICAgV3JpdGVC
YXJyaWVyPFN5bWJvbD4gY2FjaGVkU3ltYm9sOwogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbzsKICAgICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAgICAgYm9vbCBzZWVuIDogMTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMDMyZTFl
YTllZWRhYjJhMGViMTYzNDVjOTg0NmE2ZTFmYWU4NTVjZi4uN2VhNTM1NzhlOTI2NzI1NzE5MjUw
ZjIxODU2ZGE1MTMyZDYyYjk0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTMxMDIsNiArMzEwMiw5IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJv
bmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyhTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZXMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVzW2ldLnZpc2l0QWdncmVnYXRl
KHZpc2l0b3IpOwogCisgICAgZm9yIChCeVZhbEluZm8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJbmZv
cykKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJmJ5VmFsSW5mby0+Y2FjaGVkU3ltYm9sKTsKKwog
I2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0
VHlwZSgpKSkKICAgICAgICAgdmlzaXRPU1JFeGl0VGFyZ2V0cyh2aXNpdG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAppbmRleCA1YTQyNWYwYjNmNjc4OTM3NjA4NGQ5MGQzOTYxOGRkMjc0MmE4YWQwLi4w
M2Y5YWQwNmJhMjcwYWE0MDNmZjMzN2IyNWRkODcwOTc1ODk4NTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC0xMzk4LDcgKzEzOTgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDb21wYXJlRXEgJiYgbGVm
dENvbnN0LmlzU3ltYm9sKCkgJiYgcmlnaHRDb25zdC5pc1N5bWJvbCgpKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGFzU3ltYm9sKGxlZnRDb25zdCktPnBy
aXZhdGVOYW1lKCkgPT0gYXNTeW1ib2wocmlnaHRDb25zdCktPnByaXZhdGVOYW1lKCkpKTsKKyAg
ICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oYXNTeW1ib2wobGVmdENv
bnN0KSA9PSBhc1N5bWJvbChyaWdodENvbnN0KSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNjI2LDI5ICsyNjI2LDIxIEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2ln
bmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ2hlY2tJ
ZGVudDogeworICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDogewogICAgICAgICBBYnN0cmFjdFZh
bHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkID0gbm9kZS0+dWlkT3BlcmFuZCgpOwotICAgICAgICBBU1NFUlQodWlkLT5p
c1N5bWJvbCgpID8gISh2YWx1ZS5tX3R5cGUgJiB+U3BlY1N5bWJvbCkgOiAhKHZhbHVlLm1fdHlw
ZSAmIH5TcGVjU3RyaW5nSWRlbnQpKTsgLy8gRWRnZSBmaWx0ZXJpbmcgc2hvdWxkIGhhdmUgYWxy
ZWFkeSBlbnN1cmVkIHRoaXMuCisgICAgICAgIEFTU0VSVCghKHZhbHVlLm1fdHlwZSAmIH5TcGVj
U3RyaW5nSWRlbnQpKTsgLy8gRWRnZSBmaWx0ZXJpbmcgc2hvdWxkIGhhdmUgYWxyZWFkeSBlbnN1
cmVkIHRoaXMuCiAKICAgICAgICAgSlNWYWx1ZSBjaGlsZENvbnN0YW50ID0gdmFsdWUudmFsdWUo
KTsKICAgICAgICAgaWYgKGNoaWxkQ29uc3RhbnQpIHsKLSAgICAgICAgICAgIGlmICh1aWQtPmlz
U3ltYm9sKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY2hpbGRDb25zdGFudC5pc1N5bWJv
bCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoYXNTeW1ib2woY2hpbGRDb25zdGFudCktPnByaXZh
dGVOYW1lKCkudWlkKCkgPT0gdWlkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0
Rm91bmRDb25zdGFudHModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KGNoaWxkQ29uc3RhbnQuaXNTdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGFzU3RyaW5n
KGNoaWxkQ29uc3RhbnQpLT50cnlHZXRWYWx1ZUltcGwoKSA9PSB1aWQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGNoaWxk
Q29uc3RhbnQuaXNTdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoY2hpbGRDb25z
dGFudCktPnRyeUdldFZhbHVlSW1wbCgpID09IHVpZCkgeworICAgICAgICAgICAgICAgIG1fc3Rh
dGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBmaWx0ZXIodmFsdWUsIHVpZC0+aXNTeW1i
b2woKSA/IFNwZWNTeW1ib2wgOiBTcGVjU3RyaW5nSWRlbnQpOworICAgICAgICBmaWx0ZXIodmFs
dWUsIFNwZWNTdHJpbmdJZGVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzNmQ0NzU5
Y2Y4NzBjMGFkMjQ1ZTYxYjhiYzg5ZGMxYTIyNzI1N2Y1Li5mMWE5NzUyYzU0OWY3NjU4ZDJjMmJi
YWJmZWVlMTIzYmFmNGZhMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDA2MywxMiArNDA2MywxOCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIEJ5VmFs
SW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9ieVZhbEluZm9zLmdldChDb2Rl
T3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJh
c2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KICAgICAgICAgICAgICAgICAvLyBB
dCB0aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgIGlm
IChieVZhbEluZm8gJiYgYnlWYWxJbmZvLT5zdHViSW5mbyAmJiAhYnlWYWxJbmZvLT50b29rU2xv
d1BhdGggJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZElkZW50KSkgeworICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8g
JiYgYnlWYWxJbmZvLT5zdHViSW5mbyAmJiAhYnlWYWxJbmZvLT50b29rU2xvd1BhdGggJiYgIW1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZElkZW50KSAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGls
ZWRBc0dldEJ5SWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVy
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShieVZhbEluZm8tPmNhY2hlZElkLmltcGwo
KSk7CiAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBo
LmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAKLSAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoU3ltYm9sKiBzeW1ib2wgPSBieVZhbEluZm8tPmNhY2hlZFN5bWJvbC5n
ZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1f
Z3JhcGguZnJlZXplU3Ryb25nKHN5bWJvbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghdWlkLT5p
c1N5bWJvbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJp
bmdJZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgICAgIGdldEJ5SWRTdGF0dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKQEAgLTQxMTAsMTIgKzQxMTYsMTggQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAg
ICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYnlWYWxJbmZvcy5n
ZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKTsKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGlu
IHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCiAgICAgICAgICAgICAg
ICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAg
ICAgICBpZiAoYnlWYWxJbmZvICYmIGJ5VmFsSW5mby0+c3R1YkluZm8gJiYgIWJ5VmFsSW5mby0+
dG9va1Nsb3dQYXRoICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYnlW
YWxJbmZvICYmIGJ5VmFsSW5mby0+c3R1YkluZm8gJiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRo
ICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRJZGVudCkgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbXBpbGVkQXNQdXRCeUlkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoYnlWYWxJbmZv
LT5jYWNoZWRJZC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwogCi0gICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJbmZvKHVpZCksIHByb3Bl
cnR5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFN5bWJvbCogc3ltYm9sID0gYnlWYWxJbmZv
LT5jYWNoZWRTeW1ib2wuZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZh
bHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhzeW1ib2wpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0
eSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIXVpZC0+aXNTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKENoZWNrU3RyaW5nSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5
SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggNGNiYmUxZmY1
MWIzZGU4NzJkMzlmMDc0NTk1MTM1ZjNiOTI2YzUxMS4uY2M1MTQxNjg3MTMzNjRhNWM5NWZlNTBk
NTgyYjM3NTJiMzQxMjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKQEAgLTM0NCw4ICszNDQsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICBkZWYoUHVyZVZhbHVlKENoZWNrTm90RW1wdHksIEFkamFjZW5jeUxpc3QoQWRqYWNlbmN5TGlz
dDo6Rml4ZWQsIG5vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNl
IENoZWNrSWRlbnQ6Ci0gICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tJZGVudCwgQWRqYWNlbmN5
TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT51aWRPcGVy
YW5kKCkpKTsKKyAgICBjYXNlIENoZWNrU3RyaW5nSWRlbnQ6CisgICAgICAgIGRlZihQdXJlVmFs
dWUoQ2hlY2tTdHJpbmdJZGVudCwgQWRqYWNlbmN5TGlzdChBZGphY2VuY3lMaXN0OjpGaXhlZCwg
bm9kZS0+Y2hpbGQxKCkpLCBub2RlLT51aWRPcGVyYW5kKCkpKTsKICAgICAgICAgcmV0dXJuOwog
CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBmNWZhY2U5
ZThiMjhkYWJmMTg0M2UxMDNiMmExN2IzOWY1M2YxMGVjLi5lZmVmZGM1NGMwZmFmYzkwY2E5NGI0
MjUyMzQzMzdiMDBhYWY5ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMjQ1LDI1ICsyNDUsMjAgQEAgY2xh
c3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBjYXNlIENoZWNrSWRlbnQ6IHsK
KyAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDogewogICAgICAgICAgICAgICAgIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBub2RlLT51aWRPcGVyYW5kKCk7CiAgICAgICAgICAgICAg
ICAgY29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqIGNvbnN0YW50VWlkID0gbnVsbHB0cjsKIAogICAg
ICAgICAgICAgICAgIEpTVmFsdWUgY2hpbGRDb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb25zdGFudCkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAodWlkLT5pc1N5bWJvbCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY2hpbGRDb25zdGFudC5pc1N5bWJvbCgpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0YW50VWlkID0gYXNTeW1ib2woY2hpbGRDb25zdGFudCktPnBy
aXZhdGVOYW1lKCkudWlkKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb25zdGFudC5pc1N0cmluZygpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IGF1dG8qIGltcGwgPSBhc1N0cmluZyhjaGls
ZENvbnN0YW50KS0+dHJ5R2V0VmFsdWVJbXBsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRWRnZSBmaWx0ZXJpbmcgcmVxdWlyZXMgdGhhdCBhIHZhbHVlIGhlcmUgc2hv
dWxkIGJlIFN0cmluZ0lkZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBI
b3dldmVyLCBhIGNvbnN0YW50IHZhbHVlIHByb3BhZ2F0ZWQgaW4gREZHIGlzIG5vdCBmaWx0ZXJl
ZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU28gaGVyZSwgd2UgY2hlY2sg
dGhlIHByb3BhZ2F0ZWQgdmFsdWUgaXMgYWN0dWFsbHkgYW4gYXRvbWljIHN0cmluZy4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kIGlmIGl0J3Mgbm90LCB3ZSBqdXN0IGln
bm9yZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltcGwtPmlzQXRvbWlj
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudFVpZCA9IHN0
YXRpY19jYXN0PGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKj4oaW1wbCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb25zdGFudC5p
c1N0cmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byogaW1w
bCA9IGFzU3RyaW5nKGNoaWxkQ29uc3RhbnQpLT50cnlHZXRWYWx1ZUltcGwoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEVkZ2UgZmlsdGVyaW5nIHJlcXVpcmVzIHRoYXQgYSB2
YWx1ZSBoZXJlIHNob3VsZCBiZSBTdHJpbmdJZGVudC4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBIb3dldmVyLCBhIGNvbnN0YW50IHZhbHVlIHByb3BhZ2F0ZWQgaW4gREZHIGlzIG5v
dCBmaWx0ZXJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTbyBoZXJlLCB3ZSBj
aGVjayB0aGUgcHJvcGFnYXRlZCB2YWx1ZSBpcyBhY3R1YWxseSBhbiBhdG9taWMgc3RyaW5nLgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuZCBpZiBpdCdzIG5vdCwgd2UganVzdCBp
Z25vcmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltcGwtPmlzQXRvbWljKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50VWlkID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqPihpbXBsKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA0YWY3NzA3M2FlNGQyZWY4MWZlOTM4
NzZmN2U5ZjI0NGMxZjY0OTY4Li4wODJjNDE1Y2UyZWQzYjg3YzM0MmFiMmE0OTUxYmExODEyODVj
MzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xMjksNyAr
MTI5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
UHV0R2xvYmFsVmFyaWFibGU6CiAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgY2FzZSBDaGVja05v
dEVtcHR5OgotICAgIGNhc2UgQ2hlY2tJZGVudDoKKyAgICBjYXNlIENoZWNrU3RyaW5nSWRlbnQ6
CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhwVGVzdDoKICAgICBjYXNlIENv
bXBhcmVMZXNzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggYzYxYTMxZTdjNjZhYjM3Y2MwMGViNGYwNDhmYTFmYzllZjMwZGEzYi4uZGVlMjE2OTY5
NWZiNzYyMWQyNDE4YzYxNDZjMWYzMWFkMWUxMjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xMjE0LDEyICsxMjE0LDggQEAgY2xhc3MgRml4
dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
Ci0gICAgICAgIGNhc2UgQ2hlY2tJZGVudDogewotICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCA9IG5vZGUtPnVpZE9wZXJhbmQoKTsKLSAgICAgICAgICAgIGlmICh1aWQtPmlzU3lt
Ym9sKCkpCi0gICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDogewor
ICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAppbmRleCA1NjBkYTRiOTI4NjM0ZWMyNWIwNWUwMzNhOGNmYzhkOWE4ZmY3
YTlmLi40NDlmYmI3OTk0ZmVlODIzYTk3Y2U2M2NmNjQ3ZmVlYjhjM2UzNmQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMTUxNyw3ICsxNTE3LDcgQEAgc3RydWN0IE5vZGUg
ewogCiAgICAgYm9vbCBoYXNVaWRPcGVyYW5kKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCgp
ID09IENoZWNrSWRlbnQ7CisgICAgICAgIHJldHVybiBvcCgpID09IENoZWNrU3RyaW5nSWRlbnQ7
CiAgICAgfQogCiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZE9wZXJhbmQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDQ0NjY4Y2U2MDQxNTkyNDcxODYyYzFl
YTg3Zjk4Y2MyMjVmNmY1M2QuLjU1ZTllN2RkYTZiNmNjMWIwYTkyNDViZWUwYzEyZjY1ZWZlODA2
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIzOSw3ICsy
MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2hlY2tO
b3RFbXB0eSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrQmFkQ2VsbCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrSW5Cb3VuZHMsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKLSAgICBtYWNybyhDaGVja0lkZW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oQ2hlY2tTdHJpbmdJZGVudCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNr
VHlwZUluZm9GbGFncywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVGFrZXMgYW4gT3BJbmZvIHdpdGgg
dGhlIGZsYWdzIHlvdSB3YW50IHRvIHRlc3QgYXJlIHNldCAqL1wKICAgICBcCiAgICAgLyogT3B0
aW1pemF0aW9ucyBmb3IgYXJyYXkgbXV0YXRpb24uICovXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApp
bmRleCA1NTc2ZTY0YmM2N2ZmYmEyYTA0M2ZkYTNmYTU4NWMxMmE0ZjNhZTJmLi5lZjU5MmFjOGYw
NTM1ZjE0Y2IzYmY0ZTRmNDRmNGMwMTVlMTQ1ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApA
QCAtMTA0NSw3ICsxMDQ1LDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNl
IENoZWNrQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja05vdEVtcHR5OgotICAgICAgICBjYXNlIENo
ZWNrSWRlbnQ6CisgICAgICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDoKICAgICAgICAgY2FzZSBD
aGVja0JhZENlbGw6CiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIFBo
YW50b206CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmlu
ZGV4IGM4YmM2MDNhYTJlOTU1OTI5MDBjYjA1NzRiZWI2NzJjMjc1NGQ5OTMuLjU2NmE0NTlkYTRl
MTNkZWI1N2MyMThkOGUwMTkyNjI2MjQ0Yjc3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMjUsNyArMjI1LDcgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2Ug
Q2hlY2tOb3RFbXB0eToKLSAgICBjYXNlIENoZWNrSWRlbnQ6CisgICAgY2FzZSBDaGVja1N0cmlu
Z0lkZW50OgogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRlc3Q6CiAgICAg
Y2FzZSBDb21wYXJlTGVzczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggMTEzYTc5N2UxZGUyMjg3ZjBiMmMyNTJjZGE1YWE0YTJlYzk3
MjdhNy4uMGE4OTkxZjM0MjU1MjNhMmVlMmYxZjg2MDY3OTE1ZTA2Y2I2Y2M5NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTUzMTAs
NTAgKzUzMTAsNDQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJvb2xlYW5Db21wYXJl
KE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmEKICAgICB1bmJsZXNzZWRCb29s
ZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+Ci12b2lkIFNwZWN1bGF0aXZlSklUOjpleHRyYWN0U3RyaW5nSW1wbEZyb21CaW5hcnlT
eW1ib2xzKEVkZ2UgbGVmdFN5bWJvbEVkZ2UsIEVkZ2UgcmlnaHRTeW1ib2xFZGdlLCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN5bWJvbEVxdWFs
aXR5KE5vZGUqIG5vZGUpCiB7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBs
ZWZ0U3ltYm9sRWRnZSk7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgcmln
aHRTeW1ib2xFZGdlKTsKLSAgICBHUFJUZW1wb3JhcnkgbGVmdFRlbXAodGhpcyk7Ci0gICAgR1BS
VGVtcG9yYXJ5IHJpZ2h0VGVtcCh0aGlzKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVz
ZSwgbGVmdCwgcmlnaHQpOwogCiAgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOwogICAg
IEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOwotICAgIEdQUlJlZyBsZWZ0VGVtcEdQUiA9
IGxlZnRUZW1wLmdwcigpOwotICAgIEdQUlJlZyByaWdodFRlbXBHUFIgPSByaWdodFRlbXAuZ3By
KCk7Ci0KLSAgICBzcGVjdWxhdGVTeW1ib2wobGVmdFN5bWJvbEVkZ2UsIGxlZnRHUFIpOwotICAg
IHNwZWN1bGF0ZVN5bWJvbChyaWdodFN5bWJvbEVkZ2UsIHJpZ2h0R1BSKTsKLQotICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MobGVmdEdQUiwgU3ltYm9sOjpvZmZzZXRPZlBy
aXZhdGVOYW1lKCkpLCBsZWZ0VGVtcEdQUik7Ci0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhyaWdodEdQUiwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpLCByaWdo
dFRlbXBHUFIpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICBm
dW5jdG9yKGxlZnRUZW1wR1BSLCByaWdodFRlbXBHUFIpOwotfQorICAgIHNwZWN1bGF0ZVN5bWJv
bChub2RlLT5jaGlsZDEoKSwgbGVmdEdQUik7CisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNo
aWxkMigpLCByaWdodEdQUik7CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTeW1ib2xF
cXVhbGl0eShOb2RlKiBub2RlKQotewotICAgIGV4dHJhY3RTdHJpbmdJbXBsRnJvbUJpbmFyeVN5
bWJvbHMobm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBbJl0gKEdQUlJlZyBsZWZ0U3Ry
aW5nSW1wbCwgR1BSUmVnIHJpZ2h0U3RyaW5nSW1wbCkgewotICAgICAgICBtX2ppdC5jb21wYXJl
UHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdFN0cmluZ0ltcGwsIHJpZ2h0U3RyaW5nSW1wbCwg
bGVmdFN0cmluZ0ltcGwpOwotICAgICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KGxlZnRTdHJp
bmdJbXBsLCBub2RlKTsKLSAgICB9KTsKKyAgICBtX2ppdC5jb21wYXJlUHRyKEpJVENvbXBpbGVy
OjpFcXVhbCwgbGVmdEdQUiwgcmlnaHRHUFIsIHJlc3VsdEdQUik7CisgICAgdW5ibGVzc2VkQm9v
bGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2Rl
KQogeworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
KworICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKKyAgICBHUFJSZWcgcmlnaHRHUFIg
PSByaWdodC5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDEoKSwgbGVm
dEdQUik7CisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCByaWdodEdQUik7CisK
ICAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4u
YmxvY2s7CiAgICAgQmFzaWNCbG9jayogbm90VGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRh
KCktPm5vdFRha2VuLmJsb2NrOwogCi0gICAgZXh0cmFjdFN0cmluZ0ltcGxGcm9tQmluYXJ5U3lt
Ym9scyhub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIFsmXSAoR1BSUmVnIGxlZnRTdHJp
bmdJbXBsLCBHUFJSZWcgcmlnaHRTdHJpbmdJbXBsKSB7Ci0gICAgICAgIGlmICh0YWtlbiA9PSBu
ZXh0QmxvY2soKSkgewotICAgICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgbGVmdFN0cmluZ0ltcGwsIHJpZ2h0U3RyaW5nSW1wbCwgbm90VGFrZW4pOwotICAgICAgICAg
ICAganVtcCh0YWtlbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBicmFuY2hQdHIo
SklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0U3RyaW5nSW1wbCwgcmlnaHRTdHJpbmdJbXBsLCB0YWtl
bik7Ci0gICAgICAgICAgICBqdW1wKG5vdFRha2VuKTsKLSAgICAgICAgfQotICAgIH0pOworICAg
IGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBicmFuY2hQdHIoSklUQ29tcGls
ZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUiwgbm90VGFrZW4pOworICAgICAgICBqdW1w
KHRha2VuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVx
dWFsLCBsZWZ0R1BSLCByaWdodEdQUiwgdGFrZW4pOworICAgICAgICBqdW1wKG5vdFRha2VuKTsK
KyAgICB9CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdFcXVhbGl0eSgK
QEAgLTU5OTcsMjggKzU5OTEsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFy
cmF5TGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgfSB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDaGVja0lkZW50KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ2hlY2tTdHJpbmdJZGVudChOb2RlKiBub2RlKQogewotICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHN0cmluZyh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHN0b3Jh
Z2UodGhpcyk7CisKKyAgICBHUFJSZWcgc3RyaW5nR1BSID0gc3RyaW5nLmdwcigpOworICAgIEdQ
UlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN0cmluZyhu
b2RlLT5jaGlsZDEoKSwgc3RyaW5nR1BSKTsKKyAgICBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExv
YWRTdG9yYWdlKG5vZGUtPmNoaWxkMSgpLCBzdHJpbmdHUFIsIHN0b3JhZ2VHUFIpOworCiAgICAg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPnVpZE9wZXJhbmQoKTsKLSAgICBpZiAodWlk
LT5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDEoKSwg
b3BlcmFuZC5ncHIoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBC
YWRJZGVudCwgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLAotICAgICAgICAgICAgbV9qaXQuYnJh
bmNoUHRyKAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcGVyYW5kLmdwcigpLCBTeW1ib2w6Om9mZnNl
dE9mUHJpdmF0ZU5hbWUoKSksCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cih1aWQpKSk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBv
cGVyYW5kLmdwcigpKTsKLSAgICAgICAgc3BlY3VsYXRlU3RyaW5nSWRlbnQobm9kZS0+Y2hpbGQx
KCksIG9wZXJhbmQuZ3ByKCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAg
ICAgQmFkSWRlbnQsIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwKLSAgICAgICAgICAgIG1faml0
LmJyYW5jaFB0cigKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3BlcmFuZC5ncHIoKSwgSlNTdHJpbmc6
Om9mZnNldE9mVmFsdWUoKSksCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cih1aWQpKSk7
Ci0gICAgfQorICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgIEJhZElkZW50LCBKU1ZhbHVl
U291cmNlKCksIG51bGxwdHIsCisgICAgICAgIG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6
Tm90RXF1YWwsIHN0b3JhZ2VHUFIsIFRydXN0ZWRJbW1QdHIodWlkKSkpOwogICAgIG5vUmVzdWx0
KG5vZGUpOwogfQogCkBAIC04MzIwLDM2ICs4MzA3LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNvbXBhcmVFcVB0cihOb2RlKiBub2RlKQogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTeW1i
b2xVbnR5cGVkRXF1YWxpdHkoTm9kZSogbm9kZSwgRWRnZSBzeW1ib2xFZGdlLCBFZGdlIHVudHlw
ZWRFZGdlKQotewotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN5bWJvbCh0aGlzLCBzeW1ib2xF
ZGdlKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCB1bnR5cGVkKHRoaXMsIHVudHlwZWRFZGdlKTsKLSAg
ICBHUFJUZW1wb3JhcnkgbGVmdFRlbXAodGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHJpZ2h0VGVt
cCh0aGlzKTsKLSAgICAKLSAgICBHUFJSZWcgc3ltYm9sR1BSID0gc3ltYm9sLmdwcigpOwotICAg
IEpTVmFsdWVSZWdzIHVudHlwZWRSZWdzID0gdW50eXBlZC5qc1ZhbHVlUmVncygpOwotICAgIEdQ
UlJlZyBsZWZ0VGVtcEdQUiA9IGxlZnRUZW1wLmdwcigpOwotICAgIEdQUlJlZyByaWdodFRlbXBH
UFIgPSByaWdodFRlbXAuZ3ByKCk7Ci0gICAgCi0gICAgc3BlY3VsYXRlU3ltYm9sKHN5bWJvbEVk
Z2UsIHN5bWJvbEdQUik7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1f
aml0LmJyYW5jaElmTm90Q2VsbCh1bnR5cGVkUmVncyk7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNTeW1ib2wgPSBtX2ppdC5icmFuY2hJZlN5bWJvbCh1bnR5cGVkUmVncy5wYXlsb2FkR1BSKCkp
OwotICAgIAotICAgIG5vdENlbGwubGluaygmbV9qaXQpOwotICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbTMyKDApLCBsZWZ0VGVtcEdQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKLSAgICAKLSAgICBpc1N5bWJvbC5saW5rKCZtX2ppdCk7Ci0gICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhzeW1ib2xHUFIsIFN5bWJvbDo6b2Zmc2V0T2ZQ
cml2YXRlTmFtZSgpKSwgbGVmdFRlbXBHUFIpOwotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3ModW50eXBlZFJlZ3MucGF5bG9hZEdQUigpLCBTeW1ib2w6Om9mZnNldE9mUHJp
dmF0ZU5hbWUoKSksIHJpZ2h0VGVtcEdQUik7Ci0gICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21w
aWxlcjo6RXF1YWwsIGxlZnRUZW1wR1BSLCByaWdodFRlbXBHUFIsIGxlZnRUZW1wR1BSKTsKLSAg
ICAKLSAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KGxl
ZnRUZW1wR1BSLCBub2RlKTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRl
eCAzNTk4NGQ4ZjM0MmI2NThlY2YxNmI5YmVkM2JjN2ZhMDQ2NmIyM2UyLi41Mjg1NDUxNDUyZjUz
OTY1ZDZkOTBiY2NiNGUwZDc3YTBmNGJkNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yMzQ4LDggKzIzNDgsNiBAQCBjbGFzcyBTcGVj
dWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlU3RyaW5nWmVyb0xlbmd0aChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlTWlzY1N0cmljdEVxKE5vZGUqKTsKIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBleHRyYWN0U3RyaW5nSW1wbEZyb21CaW5hcnlTeW1ib2xz
KEVkZ2UgbGVmdFN5bWJvbEVkZ2UsIEVkZ2UgcmlnaHRTeW1ib2xFZGdlLCBjb25zdCBGdW5jdG9y
Jik7CiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwogICAg
IHZvaWQgY29tcGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiwgRWRnZSBzeW1ib2xFZGdl
LCBFZGdlIHVudHlwZWRFZGdlKTsKQEAgLTI0MzYsNyArMjQzNCw3IEBAIGNsYXNzIFNwZWN1bGF0
aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKik7CiAKICAgICB2
b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUNo
ZWNrSWRlbnQoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUNoZWNrU3RyaW5nSWRlbnQoTm9kZSop
OwogICAgIAogICAgIHZvaWQgY29tcGlsZVZhbHVlUmVwKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVEb3VibGVSZXAoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggZDIyNjcyNTc3YmJkYjZkZDU1ODVlN2Yz
ODRkNWU5Mjc5ZGJhNGNkZi4uYmJmMDA1NTZjYjFjYzgwMGU0NTU3YWQ3MTU5YzhjYTBiOWNmNmFk
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC0xNTI1LDYgKzE1MjUsMzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkoRWRnZSBsZWZ0Q2hp
bGQKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiBub2RlLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2Ug
dW50eXBlZEVkZ2UpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3ltYm9sKHRoaXMsIHN5
bWJvbEVkZ2UpOworICAgIEpTVmFsdWVPcGVyYW5kIHVudHlwZWQodGhpcywgdW50eXBlZEVkZ2Up
OworCisgICAgR1BSUmVnIHN5bWJvbEdQUiA9IHN5bWJvbC5ncHIoKTsKKyAgICBHUFJSZWcgdW50
eXBlZEdQUiA9IHVudHlwZWQucGF5bG9hZEdQUigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKHN5
bWJvbEVkZ2UsIHN5bWJvbEdQUik7CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0
aGlzLCBSZXVzZSwgc3ltYm9sKTsKKyAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3Vs
dFBheWxvYWQuZ3ByKCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB1bnR5cGVkQ2VsbEp1
bXAgPSBtX2ppdC5icmFuY2hJZkNlbGwodW50eXBlZC5qc1ZhbHVlUmVncygpKTsKKworICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCB1bnR5cGVkTm90Q2VsbEp1bXAgPSBtX2ppdC5qdW1wKCk7CisKKyAgICAv
LyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhhdCB3ZSBjYW4gcGVyZm9ybSBhIHN0cmFpZ2h0LWZv
cndhcmQgZXF1YWxpdHkgY29tcGFyaXNvbiBvbiBwb2ludGVyCisgICAgLy8gdmFsdWVzIGJlY2F1
c2Ugd2UgYXJlIGRvaW5nIHN0cmljdCBlcXVhbGl0eS4KKyAgICB1bnR5cGVkQ2VsbEp1bXAubGlu
aygmbV9qaXQpOworICAgIG1faml0LmNvbXBhcmUzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHN5
bWJvbEdQUiwgdW50eXBlZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CisKKyAgICB1bnR5cGVkTm90
Q2VsbEp1bXAubGluaygmbV9qaXQpOworICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0UGF5bG9hZEdQ
Uiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMkNvbXBhcmUo
Tm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9u
KQogewogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwpAQCAtNDMzMiw4ICs0MzU5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIENoZWNrSWRlbnQ6Ci0g
ICAgICAgIGNvbXBpbGVDaGVja0lkZW50KG5vZGUpOworICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVu
dDoKKyAgICAgICAgY29tcGlsZUNoZWNrU3RyaW5nSWRlbnQobm9kZSk7CiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiNDg5OTU2YzdkZjVjZWJjMGYw
OGIxNmI2YTlhZjUwN2UxNGE4ODVkLi41ZjkzYjFhZWNmZTMzZjNhZGFiZGVlM2ZlODU4NzNiOGZh
YTdmMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKQEAgLTE2MDcsNiArMTYwNywyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUGVlcEhvbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eShFZGdlIGxlZnRDaGls
ZAogICAgIGp1bXAobm90VGFrZW4pOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
U3ltYm9sVW50eXBlZEVxdWFsaXR5KE5vZGUqIG5vZGUsIEVkZ2Ugc3ltYm9sRWRnZSwgRWRnZSB1
bnR5cGVkRWRnZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzeW1ib2wodGhpcywgc3lt
Ym9sRWRnZSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdW50eXBlZCh0aGlzLCB1bnR5cGVkRWRnZSk7
CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgc3ltYm9sLCB1bnR5cGVkKTsK
KworICAgIEdQUlJlZyBzeW1ib2xHUFIgPSBzeW1ib2wuZ3ByKCk7CisgICAgR1BSUmVnIHVudHlw
ZWRHUFIgPSB1bnR5cGVkLmdwcigpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2woc3ltYm9sRWRnZSwgc3ltYm9sR1BSKTsKKworICAg
IC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0IHdlIGNhbiBwZXJmb3JtIGEgc3RyYWlnaHQt
Zm9yd2FyZCBlcXVhbGl0eSBjb21wYXJpc29uIG9uIHBvaW50ZXIKKyAgICAvLyB2YWx1ZXMgYmVj
YXVzZSB3ZSBhcmUgZG9pbmcgc3RyaWN0IGVxdWFsaXR5LgorICAgIG1faml0LmNvbXBhcmU2NChN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHN5bWJvbEdQUiwgdW50eXBlZEdQUiwgcmVzdWx0R1BSKTsK
KyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMkNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3Nl
bWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQogewogICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKQEAgLTQyODEsOCArNDI5OSw4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgY2FzZSBDaGVja0lkZW50OgotICAgICAgICBjb21waWxlQ2hlY2tJZGVudChub2Rl
KTsKKyAgICBjYXNlIENoZWNrU3RyaW5nSWRlbnQ6CisgICAgICAgIGNvbXBpbGVDaGVja1N0cmlu
Z0lkZW50KG5vZGUpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgR2V0RXhlY3V0YWJsZTog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaAppbmRleCAyMTI1ODBmZGFiN2FkYmJjMTVmNTU4OGI1ZTUzYzM3MmYyODlhNTJh
Li5jZmYwNWE4MDkyNjgyZTdiMDE3ZjdkZGE3NjFiNzNkYjVkNTNmY2M4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApA
QCAtMTAyLDggKzEwMiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBt
YWNybyhTdHJ1Y3R1cmVfY2xhc3NJbmZvLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSBc
CiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmpl
Y3RPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6
cHJvdG90eXBlT2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0
cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN5bWJvbF9wcml2YXRl
TmFtZSwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpCisgICAgbWFjcm8oU3RydWN0dXJl
X3N0cnVjdHVyZUlELCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpCiAKICNkZWZpbmUg
Rk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0
QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggM2UzOTJlOTVkYzcwOGE1OWE4ODlhZDI4MjI5OTZiNTRmYTdi
YzQzNy4uYWZjNTI3MjA4OTg0NzAwNmEyZmY4MjcwZTJkMDdhM2QwNmY2NzkxZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTI4LDcgKzEy
OCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgQ2hlY2tDZWxsOgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgQ2hlY2tO
b3RFbXB0eToKLSAgICBjYXNlIENoZWNrSWRlbnQ6CisgICAgY2FzZSBDaGVja1N0cmluZ0lkZW50
OgogICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVB
dDoKICAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4NGM4YmY0NTBjODM5YWIwY2UyM2JhY2Ri
NWNlZWI0ZTJiYmE4NTE1Li5jMjZlZWU0ZTM2MTliMjYzN2RmZDNhM2NmZWVkYzVkNzEzNjE4Yzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC02MDIsOCArNjAyLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDaGVj
a0JhZENlbGw6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tCYWRDZWxsKCk7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVja0lkZW50OgotICAgICAgICAgICAgY29tcGlsZUNo
ZWNrSWRlbnQoKTsKKyAgICAgICAgY2FzZSBDaGVja1N0cmluZ0lkZW50OgorICAgICAgICAgICAg
Y29tcGlsZUNoZWNrU3RyaW5nSWRlbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEdldEV4ZWN1dGFibGU6CiAgICAgICAgICAgICBjb21waWxlR2V0RXhlY3V0YWJsZSgpOwpA
QCAtMjQ3NywxNyArMjQ3NywxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzcGVj
dWxhdGUoVERaRmFpbHVyZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5pc1plcm82NChsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlQ2hl
Y2tJZGVudCgpCisgICAgdm9pZCBjb21waWxlQ2hlY2tTdHJpbmdJZGVudCgpCiAgICAgewogICAg
ICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ub2RlLT51aWRPcGVyYW5kKCk7Ci0gICAg
ICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBzdHJpbmdJbXBs
ID0gbG93U3ltYm9sVUlEKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRl
KEJhZElkZW50LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lm5vdEVxdWFsKHN0cmluZ0ltcGws
IG1fb3V0LmNvbnN0SW50UHRyKHVpZCkpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IExWYWx1ZSBzdHJpbmcgPSBsb3dTdHJpbmdJZGVudChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIExWYWx1ZSBzdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0cihzdHJpbmcsIG1faGVhcHMu
SlNTdHJpbmdfdmFsdWUpOwotICAgICAgICAgICAgc3BlY3VsYXRlKEJhZElkZW50LCBub1ZhbHVl
KCksIG51bGxwdHIsIG1fb3V0Lm5vdEVxdWFsKHN0cmluZ0ltcGwsIG1fb3V0LmNvbnN0SW50UHRy
KHVpZCkpKTsKLSAgICAgICAgfQorICAgICAgICBMVmFsdWUgc3RyaW5nID0gbG93U3RyaW5nSWRl
bnQobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSBzdHJpbmdJbXBsID0gbV9vdXQu
bG9hZFB0cihzdHJpbmcsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOworICAgICAgICBzcGVjdWxh
dGUoQmFkSWRlbnQsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubm90RXF1YWwoc3RyaW5nSW1w
bCwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdl
dEV4ZWN1dGFibGUoKQpAQCAtNTAzOSw5ICs1MDM0LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xV
c2UpKSB7Ci0gICAgICAgICAgICBMVmFsdWUgbGVmdFN0cmluZ0ltcGwgPSBsb3dTeW1ib2xVSUQo
bV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHRTdHJpbmdJbXBsID0g
bG93U3ltYm9sVUlEKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgc2V0Qm9vbGVhbiht
X291dC5lcXVhbChsZWZ0U3RyaW5nSW1wbCwgcmlnaHRTdHJpbmdJbXBsKSk7CisgICAgICAgICAg
ICBMVmFsdWUgbGVmdFN5bWJvbCA9IGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIExWYWx1ZSByaWdodFN5bWJvbCA9IGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQuZXF1YWwobGVmdFN5bWJvbCwgcmlnaHRTeW1i
b2wpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTUwNTIs
MzMgKzUwNDcsMTAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIGlmIChzeW1i
b2xFZGdlLnVzZUtpbmQoKSAhPSBTeW1ib2xVc2UpCiAgICAgICAgICAgICAgICAgc3RkOjpzd2Fw
KHN5bWJvbEVkZ2UsIHVudHlwZWRFZGdlKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZh
bHVlIGxlZnRTdHJpbmdJbXBsID0gbG93U3ltYm9sVUlEKHN5bWJvbEVkZ2UpOworICAgICAgICAg
ICAgTFZhbHVlIGxlZnRTeW1ib2wgPSBsb3dTeW1ib2woc3ltYm9sRWRnZSk7CiAgICAgICAgICAg
ICBMVmFsdWUgdW50eXBlZFZhbHVlID0gbG93SlNWYWx1ZSh1bnR5cGVkRWRnZSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNTeW1ib2xDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Js
b2NrKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdFN5bWJv
bFJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOwotICAgICAgICAgICAg
bV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIGlzQ2VsbCh1bnR5cGVkVmFsdWUsIHByb3Zl
blR5cGUodW50eXBlZEVkZ2UpKSwKLSAgICAgICAgICAgICAgICB1bnN1cmUoaXNDZWxsQ2FzZSks
IHVuc3VyZShjb250aW51YXRpb24pKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBpc1N5bWJvbENhc2Up
OwotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIGlzU3ltYm9sKHVu
dHlwZWRWYWx1ZSwgcHJvdmVuVHlwZSh1bnR5cGVkRWRnZSkpLAotICAgICAgICAgICAgICAgIHVu
c3VyZShpc1N5bWJvbENhc2UpLCB1bnN1cmUoY29udGludWF0aW9uKSk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzU3ltYm9sQ2FzZSwgY29udGludWF0aW9uKTsK
LSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHN5bWJvbFJlc3VsdCA9Ci0gICAgICAgICAgICAg
ICAgbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgICAgICBtX291dC5lcXVhbCgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIodW50eXBlZFZhbHVlLCBtX2hlYXBzLlN5
bWJvbF9wcml2YXRlTmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0U3RyaW5nSW1w
bCkpOwotICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAg
ICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBub3RTeW1ib2xSZXN1bHQsIHN5
bWJvbFJlc3VsdCkpOworCisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LmVxdWFsKGxlZnRT
eW1ib2wsIHVudHlwZWRWYWx1ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtOTg3MiwxNiArOTg0NCw2IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBsb3dTeW1ib2xVSUQo
RWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5k
U3BlY3VsYXRpb24pCi0gICAgewotICAgICAgICBpZiAoU3ltYm9sKiBzeW1ib2wgPSBlZGdlLT5k
eW5hbWljQ2FzdENvbnN0YW50PFN5bWJvbCo+KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9vdXQu
Y29uc3RJbnRQdHIoc3ltYm9sLT5wcml2YXRlTmFtZSgpLnVpZCgpKTsKLSAgICAgICAgTFZhbHVl
IHN5bWJvbCA9IGxvd1N5bWJvbChlZGdlLCBtb2RlKTsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNv
dWxkIGF2b2lkIHRoaXMgbG9hZCBpZiB3ZSBoYWQgaGFzaC1jb25zZWQgU3ltYm9scy4KLSAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODkwOAotICAg
ICAgICByZXR1cm4gbV9vdXQubG9hZFB0cihzeW1ib2wsIG1faGVhcHMuU3ltYm9sX3ByaXZhdGVO
YW1lKTsKLSAgICB9Ci0KICAgICBMVmFsdWUgbG93Tm9uTnVsbE9iamVjdChFZGdlIGVkZ2UsIE9w
ZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRTcGVjdWxhdGlvbikK
ICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCmluZGV4IDViMWFiYjg3ZWQ0MDNjN2ZiNDJhODZiMGM4OGEyNzJlM2VhZDlkZjgu
LjVjMzYwNjZlMjcyZTZmZjVmZmY2ZGE1OWI3M2JhZTJkMWY4NGE4MWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaApAQCAtMzk1LDEwICszOTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlvbiosIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAogICAgICAgICAvLyBJZGVudGlm
aWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgotICAgICAgICB2b2lk
IGVtaXRJZGVudGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gs
IGNvbnN0IElkZW50aWZpZXImLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKKyAgICAgICAgdm9pZCBl
bWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soQnlWYWxJbmZvKiwgUmVnaXN0ZXJJRCBjZWxsLCBSZWdp
c3RlcklEIHNjcmF0Y2gsIGNvbnN0IElkZW50aWZpZXImLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsK
IAotICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChJ
bnN0cnVjdGlvbiosIGNvbnN0IElkZW50aWZpZXImLCBKdW1wJiBmYXN0RG9uZUNhc2UsIEp1bXAm
IHNsb3dEb25lQ2FzZSwgSnVtcExpc3QmIHNsb3dDYXNlcyk7Ci0gICAgICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEluc3RydWN0aW9uKiwgUHV0S2luZCwg
Y29uc3QgSWRlbnRpZmllciYsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2Fz
ZXMpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJ
ZChCeVZhbEluZm8qLCBJbnN0cnVjdGlvbiosIGNvbnN0IElkZW50aWZpZXImLCBKdW1wJiBmYXN0
RG9uZUNhc2UsIEp1bXAmIHNsb3dEb25lQ2FzZSwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CisgICAg
ICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5m
byosIEluc3RydWN0aW9uKiwgUHV0S2luZCwgY29uc3QgSWRlbnRpZmllciYsIEp1bXBMaXN0JiBk
b25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCiAgICAgICAgIGVudW0gRmluYWxPYmpl
Y3RNb2RlIHsgTWF5QmVGaW5hbCwgS25vd25Ob3RGaW5hbCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBkYTg4MWM2NDE2NzQzZjU1MDcyMzkw
ZjI0ZWYyMzM5ODQyZGRlNWQ4Li4zNzBhMjRkZGJjNDFhZjNmODkwZmI2NTI2NTRlYzM1NDUzMzI5
NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTYxMiw3ICs2MTIsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeVB1dEJ5VmFsT3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogCiAgICAgaWYgKGJhc2VW
YWx1ZS5pc09iamVjdCgpICYmIGlzU3RyaW5nT3JTeW1ib2woc3Vic2NyaXB0KSkgewogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5
KGV4ZWMpOwotICAgICAgICBpZiAoIXN1YnNjcmlwdC5pc1N0cmluZygpIHx8ICFwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIEFTU0VSVChleGVjLT5ieXRl
Y29kZU9mZnNldCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGlu
ZSk7CiAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CkBAIC02MjQsOCArNjI0LDEy
IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5UHV0QnlWYWxPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlCiAgICAgICAgICAgICAgICAgICAgIG9wdGltaXph
dGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgYnlWYWxJ
bmZvLT5zZWVuID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZElkID0g
cHJvcGVydHlOYW1lOworICAgICAgICAgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2woKSkK
KyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRTeW1ib2wuc2V0KHZtLCBjb2Rl
QmxvY2ssIGFzU3ltYm9sKHN1YnNjcmlwdCkpOwogICAgICAgICAgICAgICAgIG9wdGltaXphdGlv
blJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTY5MCw5ICs2OTQsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRy
eURpcmVjdFB1dEJ5VmFsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogbwogICAg
ICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7
CiAgICAgfSBlbHNlIGlmIChpc1N0cmluZ09yU3ltYm9sKHN1YnNjcmlwdCkpIHsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShl
eGVjKTsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpOwotCi0gICAgICAgIGlmICghc3Vic2NyaXB0LmlzU3RyaW5nKCkgfHwgIWluZGV4
KSB7CisgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2woKSB8fCAhcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBBU1NFUlQoZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSk7
CiAgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRpbmUpOwogICAgICAgICAg
ICAgaWYgKGJ5VmFsSW5mby0+c2VlbikgewpAQCAtNzA0LDggKzcwNiwxMiBAQCBzdGF0aWMgT3B0
aW1pemF0aW9uUmVzdWx0IHRyeURpcmVjdFB1dEJ5VmFsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogbwogICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBP
cHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
Y29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2VlbiA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IHByb3BlcnR5TmFtZTsK
KyAgICAgICAgICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9sKCkpCisgICAgICAgICAgICAg
ICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkU3ltYm9sLnNldCh2bSwgY29kZUJsb2NrLCBhc1N5bWJv
bChzdWJzY3JpcHQpKTsKICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRp
bWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
Njg2LDcgKzE2OTIsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeUdldEJ5VmFsT3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogCiAgICAgaWYgKGJhc2VW
YWx1ZS5pc09iamVjdCgpICYmIGlzU3RyaW5nT3JTeW1ib2woc3Vic2NyaXB0KSkgewogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5
KGV4ZWMpOwotICAgICAgICBpZiAoIXN1YnNjcmlwdC5pc1N0cmluZygpIHx8ICFwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIEFTU0VSVChleGVjLT5ieXRl
Y29kZU9mZnNldCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGlu
ZSk7CiAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CkBAIC0xNjk4LDExICsxNzA0
LDE0IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5R2V0QnlWYWxPcHRpbWl6ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlCiAgICAgICAgICAgICAgICAgICAgIG9wdGlt
aXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgYnlW
YWxJbmZvLT5zZWVuID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZElk
ID0gcHJvcGVydHlOYW1lOworICAgICAgICAgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2wo
KSkKKyAgICAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRTeW1ib2wuc2V0KHZtLCBj
b2RlQmxvY2ssIGFzU3ltYm9sKHN1YnNjcmlwdCkpOwogICAgICAgICAgICAgICAgIG9wdGltaXph
dGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7CiAgICAgICAgICAgICB9
Ci0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA5ZDEzNDRlMTVjY2U2NTQxZGRjM2U1MmFhOTU3ZjY4
YTIxODA2ZTEzLi4xNGZiOTQwYjc3ZWVhNDkzZDYwM2IxYTU4YWJlNDZhZmFmMWMzNDAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
MjA5LDcgKzIwOSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChJ
bnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0dXJuIHNsb3dDYXNl
czsKIH0KIAotSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJ
ZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEp1bXAmIGZhc3REb25lQ2FzZSwgSnVtcCYgc2xvd0RvbmVDYXNlLCBKdW1wTGlz
dCYgc2xvd0Nhc2VzKQorSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdpdGhD
YWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKdW1wJiBmYXN0RG9uZUNhc2Us
IEp1bXAmIHNsb3dEb25lQ2FzZSwgSnVtcExpc3QmIHNsb3dDYXNlcykKIHsKICAgICAvLyBiYXNl
OiByZWdUMAogICAgIC8vIHByb3BlcnR5OiByZWdUMQpAQCAtMjE4LDcgKzIxOCw3IEBAIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0R2V0QnlWYWxXaXRoQ2FjaGVkSWQoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvCiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVn
VDEpKTsKLSAgICBlbWl0SWRlbnRpZmllckNoZWNrKHJlZ1QxLCByZWdUMywgcHJvcGVydHlOYW1l
LCBzbG93Q2FzZXMpOworICAgIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhieVZhbEluZm8sIHJl
Z1QxLCByZWdUMywgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwogCiAgICAgSklUR2V0QnlJZEdl
bmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVP
ZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCkBAIC00MjgsNyArNDI4LDcgQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBQYXQKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVRQdXRCeUlkR2VuZXJh
dG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFB1dEtpbmQgcHV0S2luZCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQorSklUUHV0QnlJZEdl
bmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5m
bywgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHV0S2luZCBwdXRLaW5kLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0
JiBzbG93Q2FzZXMpCiB7CiAgICAgLy8gYmFzZTogcmVnVDAKICAgICAvLyBwcm9wZXJ0eTogcmVn
VDEKQEAgLTQzOCw3ICs0MzgsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5
VmFsV2l0aENhY2hlZElkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpbwogICAgIGludCB2
YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBzbG93Q2FzZXMu
YXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDEpKTsKLSAgICBlbWl0SWRlbnRpZmllckNo
ZWNrKHJlZ1QxLCByZWdUMSwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOworICAgIGVtaXRCeVZh
bElkZW50aWZpZXJDaGVjayhieVZhbEluZm8sIHJlZ1QxLCByZWdUMSwgcHJvcGVydHlOYW1lLCBz
bG93Q2FzZXMpOwogCiAgICAgLy8gV3JpdGUgYmFycmllciBicmVha3MgdGhlIHJlZ2lzdGVycy4g
U28gYWZ0ZXIgaXNzdWluZyB0aGUgd3JpdGUgYmFycmllciwKICAgICAvLyByZWxvYWQgdGhlIHJl
Z2lzdGVycy4KQEAgLTEyNTMsMTYgKzEyNTMsMTUgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJp
ZXIoSlNDZWxsKiBvd25lcikKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25VbmNvbmRp
dGlvbmFsV3JpdGVCYXJyaWVyLCBvd25lcik7CiB9CiAKLXZvaWQgSklUOjplbWl0SWRlbnRpZmll
ckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCit2b2lkIEpJVDo6ZW1pdEJ5
VmFsSWRlbnRpZmllckNoZWNrKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZWdpc3RlcklEIGNlbGws
IFJlZ2lzdGVySUQgc2NyYXRjaCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKdW1w
TGlzdCYgc2xvd0Nhc2VzKQogewotICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewot
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVz
cyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3ZtLT5zeW1ib2xTdHJ1Y3R1
cmUuZ2V0KCkpKTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGNlbGwsIFN5bWJvbDo6b2Zmc2V0
T2ZQcml2YXRlTmFtZSgpKSwgc2NyYXRjaCk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAocHJvcGVy
dHlOYW1lLmlzU3ltYm9sKCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCBjZWxsLCBUcnVzdGVkSW1tUHRyKGJ5VmFsSW5mby0+Y2FjaGVkU3ltYm9sLmdldCgp
KSkpOworICAgIGVsc2UgewogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVy
ZShOb3RFcXVhbCwgQWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBt
X3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGNl
bGwsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoKTsKKyAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW1QdHIocHJv
cGVydHlOYW1lLmltcGwoKSkpKTsKICAgICB9Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQ
dHIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW1QdHIocHJvcGVydHlOYW1lLmltcGwoKSkp
KTsKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwoQnlWYWxJbmZvKiBieVZh
bEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5
TW9kZSkKQEAgLTEzMjUsNyArMTMyNCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAg
SnVtcCBzbG93RG9uZUNhc2U7CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4gPSBlbWl0R2V0QnlWYWxXaXRoQ2FjaGVkSWQoY3VycmVudEluc3Ry
dWN0aW9uLCBwcm9wZXJ0eU5hbWUsIGZhc3REb25lQ2FzZSwgc2xvd0RvbmVDYXNlLCBzbG93Q2Fz
ZXMpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1pdEdldEJ5VmFsV2l0aENhY2hl
ZElkKGJ5VmFsSW5mbywgY3VycmVudEluc3RydWN0aW9uLCBwcm9wZXJ0eU5hbWUsIGZhc3REb25l
Q2FzZSwgc2xvd0RvbmVDYXNlLCBzbG93Q2FzZXMpOwogCiAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrKTsKQEAgLTE0MTQsNyArMTQxMyw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgSnVtcExpc3QgZG9uZUNhc2VzOwogICAgIEp1bXBMaXN0
IHNsb3dDYXNlczsKIAotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuID0gZW1pdFB1dEJ5VmFs
V2l0aENhY2hlZElkKGN1cnJlbnRJbnN0cnVjdGlvbiwgcHV0S2luZCwgcHJvcGVydHlOYW1lLCBk
b25lQ2FzZXMsIHNsb3dDYXNlcyk7CisgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4gPSBlbWl0
UHV0QnlWYWxXaXRoQ2FjaGVkSWQoYnlWYWxJbmZvLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHB1dEtp
bmQsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMpOwogCiAgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7CiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDFkNjU2
MjQ3ZGQzZGE0MDgyZWRmZjRjZTMwM2I5ZTgyN2I0Y2RiMmYuLjJjZTUwYTJhYzBkNzRlZTkwNWY2
NDg2ODRjYWI3Nzc3NWM5MTE4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIEpJVDo6
SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChJbnN0cnVjdGlvbiosIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUR2V0QnlJZEdl
bmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXAmIGZhc3RE
b25lQ2FzZSwgSnVtcCYgc2xvd0RvbmVDYXNlLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQorSklUR2V0
QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5
VmFsSW5mbywgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKdW1wJiBmYXN0RG9uZUNhc2UsIEp1bXAmIHNsb3dEb25lQ2FzZSwg
SnVtcExpc3QmIHNsb3dDYXNlcykKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKIApAQCAtMjg4LDcgKzI4OCw3IEBAIEpJVEdldEJ5SWRHZW5lcmF0b3Ig
SklUOjplbWl0R2V0QnlWYWxXaXRoQ2FjaGVkSWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvCiAgICAgLy8gc2NyYXRjaDogcmVnVDQKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAg
ICBlbWl0SWRlbnRpZmllckNoZWNrKHJlZ1QyLCByZWdUNCwgcHJvcGVydHlOYW1lLCBzbG93Q2Fz
ZXMpOworICAgIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhieVZhbEluZm8sIHJlZ1QyLCByZWdU
NCwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBn
ZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBD
YWxsU2l0ZUluZGV4KGN1cnJlbnRJbnN0cnVjdGlvbiksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKQEAgLTQ4NSw3ICs0ODUsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFBhdAogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVFB1dEJ5SWRHZW5lcmF0b3IgSklU
OjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgUHV0S2luZCBwdXRLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXBM
aXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCitKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQdXRLaW5kIHB1dEtpbmQsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dD
YXNlcykKIHsKICAgICAvLyBiYXNlOiB0YWcocmVnVDEpLCBwYXlsb2FkKHJlZ1QwKQogICAgIC8v
IHByb3BlcnR5OiB0YWcocmVnVDMpLCBwYXlsb2FkKHJlZ1QyKQpAQCAtNDk0LDcgKzQ5NCw3IEBA
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvCiAgICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBlbWl0SWRl
bnRpZmllckNoZWNrKHJlZ1QyLCByZWdUMiwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOworICAg
IGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhieVZhbEluZm8sIHJlZ1QyLCByZWdUMiwgcHJvcGVy
dHlOYW1lLCBzbG93Q2FzZXMpOwogCiAgICAgLy8gV3JpdGUgYmFycmllciBicmVha3MgdGhlIHJl
Z2lzdGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3JpdGUgYmFycmllciwKICAgICAvLyByZWxv
YWQgdGhlIHJlZ2lzdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKaW5kZXggYjhkZDIyYWE4MGU4ZWVjMjRkOGEyNDM3MjEwNDAwMTM2MmMzZDc2Mi4u
ZDc2NmU0MjEyMGE2Mjk0ZGViZTZiMDY4MTUyZGQ3NTZhOTQ3MDAyYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTI1Miw3ICsyNTIsOSBAQCB2
b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSgKICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgIG91dC5wcmludCgiICh1bnJlc29sdmVkKSIpOwogICAg
ICAgICAgICAgb3V0LnByaW50KCI6ICIsIGltcGwpOwotICAgICAgICB9IGVsc2UgaWYgKHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihTdHJ1Y3R1cmU6OmluZm8oKSkpCisgICAg
ICAgIH0gZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKFN5bWJv
bDo6aW5mbygpKSkKKyAgICAgICAgICAgIG91dC5wcmludCgiU3ltYm9sOiAiLCBSYXdQb2ludGVy
KGFzQ2VsbCgpKSk7CisgICAgICAgIGVsc2UgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlz
U3ViQ2xhc3NPZihTdHJ1Y3R1cmU6OmluZm8oKSkpCiAgICAgICAgICAgICBvdXQucHJpbnQoIlN0
cnVjdHVyZTogIiwgaW5Db250ZXh0KCpqc0Nhc3Q8U3RydWN0dXJlKj4oYXNDZWxsKCkpLCBjb250
ZXh0KSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgb3V0LnByaW50KCJDZWxsOiAiLCBS
YXdQb2ludGVyKGFzQ2VsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA4MDJlYjI3MWFiOTljMWRhM2Y2ZjBhODkxZGU0
MjQyYTVlNjU3ODc3Li4zNGYzZWRhODdlZTliMTZhODk3ZDdmYTI3MDE4YjdlOTY1YTAxMWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKQEAgLTk0MSw3ICs5NDEsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxT
bG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVgogICAgICAgICBi
b29sIHN5bTIgPSB2Mi5pc1N5bWJvbCgpOwogICAgICAgICBpZiAoc3ltMSB8fCBzeW0yKSB7CiAg
ICAgICAgICAgICBpZiAoc3ltMSAmJiBzeW0yKQotICAgICAgICAgICAgICAgIHJldHVybiBhc1N5
bWJvbCh2MSktPnByaXZhdGVOYW1lKCkgPT0gYXNTeW1ib2wodjIpLT5wcml2YXRlTmFtZSgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBhc1N5bWJvbCh2MSkgPT0gYXNTeW1ib2wodjIpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTk3MCw5ICs5NzAsNiBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdgogCiAgICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N0cmluZygp
ICYmIHYyLmFzQ2VsbCgpLT5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gV1RGOjplcXVhbCgq
YXNTdHJpbmcodjEpLT52YWx1ZShleGVjKS5pbXBsKCksICphc1N0cmluZyh2MiktPnZhbHVlKGV4
ZWMpLmltcGwoKSk7Ci0gICAgaWYgKHYxLmFzQ2VsbCgpLT5pc1N5bWJvbCgpICYmIHYyLmFzQ2Vs
bCgpLT5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gYXNTeW1ib2wodjEpLT5wcml2YXRlTmFt
ZSgpID09IGFzU3ltYm9sKHYyKS0+cHJpdmF0ZU5hbWUoKTsKLQogICAgIHJldHVybiB2MSA9PSB2
MjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApp
bmRleCA1OGJmMjNhY2FkNTA0NzU0NzAxZDViYjRjZjdjNTBjMTIwN2JmOTM4Li5lYWU3OWM1ODFk
MzI3ODk1ZDc2ZmI5ZDNkOTJkNjI4NDhhMzI3Y2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgSlNGdW5j
dGlvbjo6c2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAg
ICAgICAgaWYgKHVpZC0+aXNOdWxsU3ltYm9sKCkpCiAgICAgICAgICAgICBuYW1lID0gZW1wdHlT
dHJpbmcoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbmFtZSA9IG1ha2VTdHJpbmcoIlsi
LCBTdHJpbmcoYXNTeW1ib2wodmFsdWUpLT5wcml2YXRlTmFtZSgpLnVpZCgpKSwgJ10nKTsKKyAg
ICAgICAgICAgIG5hbWUgPSBtYWtlU3RyaW5nKCdbJywgU3RyaW5nKHVpZCksICddJyk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNTdHJpbmcq
IGpzU3RyID0gdmFsdWUudG9TdHJpbmcoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBEYXRhLmgKaW5kZXggNzRiMmY5ODMyYzRlZTdmMzJlMGJhNzNjZjkzOGU5MmM3M2NiMGY1
ZC4uYTIwNzA1ODgyZjBmMWM3ZWU0ZGU0Zjc5ZmE4ZjdlYWNmOTQ1MzAxNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaApAQCAtMTE5LDcgKzExOSw2IEBAIGNsYXNzIE1h
cERhdGFJbXBsIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8SlNDZWxsKiwgaW50MzJfdCwgdHlwZW5h
bWUgV1RGOjpEZWZhdWx0SGFzaDxKU0NlbGwqPjo6SGFzaCwgV1RGOjpIYXNoVHJhaXRzPEpTQ2Vs
bCo+LCBJbmRleFRyYWl0cz4gQ2VsbEtleWVkTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxFbmNv
ZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWVIYXNoLCBFbmNvZGVkSlNWYWx1ZUhh
c2hUcmFpdHMsIEluZGV4VHJhaXRzPiBWYWx1ZUtleWVkTWFwOwogICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmdJbXBsKiwgaW50MzJfdCwgdHlwZW5hbWUgV1RGOjpEZWZhdWx0SGFzaDxTdHJpbmdJ
bXBsKj46Okhhc2gsIFdURjo6SGFzaFRyYWl0czxTdHJpbmdJbXBsKj4sIEluZGV4VHJhaXRzPiBT
dHJpbmdLZXllZE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3ltYm9sSW1wbCosIGludDMyX3Qs
IHR5cGVuYW1lIFdURjo6UHRySGFzaDxTeW1ib2xJbXBsKj4sIFdURjo6SGFzaFRyYWl0czxTeW1i
b2xJbXBsKj4sIEluZGV4VHJhaXRzPiBTeW1ib2xLZXllZE1hcDsKIAogICAgIEFMV0FZU19JTkxJ
TkUgRW50cnkqIGZpbmQoRXhlY1N0YXRlKiwgS2V5VHlwZSk7CiAgICAgQUxXQVlTX0lOTElORSBF
bnRyeSogYWRkKEV4ZWNTdGF0ZSosIEpTQ2VsbCogb3duZXIsIEtleVR5cGUpOwpAQCAtMTM0LDcg
KzEzMyw2IEBAIGNsYXNzIE1hcERhdGFJbXBsIHsKICAgICBDZWxsS2V5ZWRNYXAgbV9jZWxsS2V5
ZWRUYWJsZTsKICAgICBWYWx1ZUtleWVkTWFwIG1fdmFsdWVLZXllZFRhYmxlOwogICAgIFN0cmlu
Z0tleWVkTWFwIG1fc3RyaW5nS2V5ZWRUYWJsZTsKLSAgICBTeW1ib2xLZXllZE1hcCBtX3N5bWJv
bEtleWVkVGFibGU7CiAgICAgaW50MzJfdCBtX2NhcGFjaXR5OwogICAgIGludDMyX3QgbV9zaXpl
OwogICAgIGludDMyX3QgbV9kZWxldGVkQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBEYXRhSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwRGF0YUlubGluZXMuaAppbmRleCAzOGY1ZmZlNjBhZmMzZmIyYWJmZWEwZjU0
MDU4MDhlMDljMWEzZmYzLi41NGY5YWUxZjZiZDdkMGMwMWU5NzQ3ZDFhNTY1MGRmZGNkZTE2YWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGFJbmxpbmVzLmgK
QEAgLTQzLDcgKzQzLDYgQEAgaW5saW5lIHZvaWQgTWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0
b3I+OjpjbGVhcigpCiAgICAgbV9jZWxsS2V5ZWRUYWJsZS5jbGVhcigpOwogICAgIG1fdmFsdWVL
ZXllZFRhYmxlLmNsZWFyKCk7CiAgICAgbV9zdHJpbmdLZXllZFRhYmxlLmNsZWFyKCk7Ci0gICAg
bV9zeW1ib2xLZXllZFRhYmxlLmNsZWFyKCk7CiAgICAgbV9jYXBhY2l0eSA9IDA7CiAgICAgbV9z
aXplID0gMDsKICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CkBAIC02MiwxMiArNjEsNiBAQCBpbmxp
bmUgRW50cnkqIE1hcERhdGFJbXBsPEVudHJ5LCBKU0l0ZXJhdG9yPjo6ZmluZChFeGVjU3RhdGUq
IGV4ZWMsIEtleVR5cGUga2V5KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVy
biAmbV9lbnRyaWVzLmdldCgpW2l0ZXItPnZhbHVlXTsKICAgICB9Ci0gICAgaWYgKGtleS52YWx1
ZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGF1dG8gaXRlciA9IG1fc3ltYm9sS2V5ZWRUYWJsZS5m
aW5kKGFzU3ltYm9sKGtleS52YWx1ZSktPnByaXZhdGVOYW1lKCkudWlkKCkpOwotICAgICAgICBp
ZiAoaXRlciA9PSBtX3N5bWJvbEtleWVkVGFibGUuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgcmV0dXJuICZtX2VudHJpZXMuZ2V0KClbaXRlci0+dmFsdWVdOwotICAgIH0K
ICAgICBpZiAoa2V5LnZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgIGF1dG8gaXRlciA9IG1fY2Vs
bEtleWVkVGFibGUuZmluZChrZXkudmFsdWUuYXNDZWxsKCkpOwogICAgICAgICBpZiAoaXRlciA9
PSBtX2NlbGxLZXllZFRhYmxlLmVuZCgpKQpAQCAtMTIwLDggKzExMyw2IEBAIGlubGluZSBFbnRy
eSogTWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0b3I+OjphZGQoRXhlY1N0YXRlKiBleGVjLCBK
U0NlbGwqIG93bmVyCiB7CiAgICAgaWYgKGtleS52YWx1ZS5pc1N0cmluZygpKQogICAgICAgICBy
ZXR1cm4gYWRkKGV4ZWMsIG93bmVyLCBtX3N0cmluZ0tleWVkVGFibGUsIGFzU3RyaW5nKGtleS52
YWx1ZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwga2V5KTsKLSAgICBpZiAoa2V5LnZhbHVlLmlzU3lt
Ym9sKCkpCi0gICAgICAgIHJldHVybiBhZGQoZXhlYywgb3duZXIsIG1fc3ltYm9sS2V5ZWRUYWJs
ZSwgYXNTeW1ib2woa2V5LnZhbHVlKS0+cHJpdmF0ZU5hbWUoKS51aWQoKSwga2V5KTsKICAgICBp
ZiAoa2V5LnZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYWRkKGV4ZWMsIG93bmVyLCBt
X2NlbGxLZXllZFRhYmxlLCBrZXkudmFsdWUuYXNDZWxsKCksIGtleSk7CiAgICAgcmV0dXJuIGFk
ZChleGVjLCBvd25lciwgbV92YWx1ZUtleWVkVGFibGUsIEpTVmFsdWU6OmVuY29kZShrZXkudmFs
dWUpLCBrZXkpOwpAQCAtMTQ1LDEyICsxMzYsNiBAQCBpbmxpbmUgYm9vbCBNYXBEYXRhSW1wbDxF
bnRyeSwgSlNJdGVyYXRvcj46OnJlbW92ZShFeGVjU3RhdGUqIGV4ZWMsIEtleVR5cGUga2V5KQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBsb2NhdGlvbiA9IGl0ZXItPnZhbHVl
OwogICAgICAgICBtX3N0cmluZ0tleWVkVGFibGUucmVtb3ZlKGl0ZXIpOwotICAgIH0gIGVsc2Ug
aWYgKGtleS52YWx1ZS5pc1N5bWJvbCgpKSB7Ci0gICAgICAgIGF1dG8gaXRlciA9IG1fc3ltYm9s
S2V5ZWRUYWJsZS5maW5kKGFzU3ltYm9sKGtleS52YWx1ZSktPnByaXZhdGVOYW1lKCkudWlkKCkp
OwotICAgICAgICBpZiAoaXRlciA9PSBtX3N5bWJvbEtleWVkVGFibGUuZW5kKCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGxvY2F0aW9uID0gaXRlci0+dmFsdWU7Ci0gICAg
ICAgIG1fc3ltYm9sS2V5ZWRUYWJsZS5yZW1vdmUoaXRlcik7CiAgICAgfSBlbHNlIGlmIChrZXku
dmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgYXV0byBpdGVyID0gbV9jZWxsS2V5ZWRUYWJsZS5m
aW5kKGtleS52YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmIChpdGVyID09IG1fY2VsbEtleWVk
VGFibGUuZW5kKCkpCkBAIC0yMDAsOCArMTg1LDYgQEAgaW5saW5lIHZvaWQgTWFwRGF0YUltcGw8
RW50cnksIEpTSXRlcmF0b3I+OjpyZXBsYWNlQW5kUGFja0JhY2tpbmdTdG9yZShFbnRyeSogZGUK
ICAgICAgICAgcHRyLT52YWx1ZSA9IG1fZW50cmllcy5nZXQoKVtwdHItPnZhbHVlXS5rZXkoKS5n
ZXQoKS5hc0ludDMyKCk7CiAgICAgZm9yIChhdXRvIHB0ciA9IG1fc3RyaW5nS2V5ZWRUYWJsZS5i
ZWdpbigpOyBwdHIgIT0gbV9zdHJpbmdLZXllZFRhYmxlLmVuZCgpOyArK3B0cikKICAgICAgICAg
cHRyLT52YWx1ZSA9IG1fZW50cmllcy5nZXQoKVtwdHItPnZhbHVlXS5rZXkoKS5nZXQoKS5hc0lu
dDMyKCk7Ci0gICAgZm9yIChhdXRvIHB0ciA9IG1fc3ltYm9sS2V5ZWRUYWJsZS5iZWdpbigpOyBw
dHIgIT0gbV9zeW1ib2xLZXllZFRhYmxlLmVuZCgpOyArK3B0cikKLSAgICAgICAgcHRyLT52YWx1
ZSA9IG1fZW50cmllcy5nZXQoKVtwdHItPnZhbHVlXS5rZXkoKS5nZXQoKS5hc0ludDMyKCk7CiAK
ICAgICBBU1NFUlQoKG1fc2l6ZSAtIG5ld0VuZCkgPT0gbV9kZWxldGVkQ291bnQpOwogICAgIG1f
ZGVsZXRlZENvdW50ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3Bw
CmluZGV4IDZhYzc5MGFkMTEyYTRjYzBjYWY0M2ViZmI5NDU3OGU3ZTE5NDAzYjUuLjRjNDU4MjNj
ODQ3MmJlM2QxNTlmYzhjMzY0YWIxY2UxMzQxMzUwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Myw2ICs1MywxNCBAQCBTeW1ib2w6OlN5
bWJvbChWTSYgdm0sIFN5bWJvbEltcGwmIHVpZCkKIHsKIH0KIAordm9pZCBTeW1ib2w6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
QVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisgICAgdm0uc3ltYm9sSW1wbFRvU3ltYm9sTWFw
LnNldChtX3ByaXZhdGVOYW1lLnVpZCgpLCB0aGlzKTsKK30KKwogaW5saW5lIFN5bWJvbE9iamVj
dCogU3ltYm9sT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTeW1ib2wqIHN5bWJvbCkKIHsKICAgICBTeW1ib2xPYmplY3QqIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbE9iamVjdD4odm0uaGVhcCkpIFN5bWJvbE9iamVj
dCh2bSwgZ2xvYmFsT2JqZWN0LT5zeW1ib2xPYmplY3RTdHJ1Y3R1cmUoKSk7CkBAIC05Myw0ICsx
MDEsMzAgQEAgU3RyaW5nIFN5bWJvbDo6ZGVzY3JpcHRpdmVTdHJpbmcoKSBjb25zdAogICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJTeW1ib2woIiwgU3RyaW5nKHByaXZhdGVOYW1lKCkudWlkKCkpLCAn
KScpOwogfQogCitTeW1ib2wqIFN5bWJvbDo6Y3JlYXRlKFZNJiB2bSkKK3sKKyAgICBTeW1ib2wq
IHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbD4odm0uaGVhcCkpIFN5
bWJvbCh2bSk7CisgICAgc3ltYm9sLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIHN5
bWJvbDsKK30KKworU3ltYm9sKiBTeW1ib2w6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3Ry
aW5nKiBkZXNjcmlwdGlvbikKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFN0cmlu
ZyBkZXNjID0gZGVzY3JpcHRpb24tPnZhbHVlKGV4ZWMpOworICAgIFN5bWJvbCogc3ltYm9sID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sPih2bS5oZWFwKSkgU3ltYm9sKHZtLCBk
ZXNjKTsKKyAgICBzeW1ib2wtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gc3ltYm9s
OworfQorCitTeW1ib2wqIFN5bWJvbDo6Y3JlYXRlKFZNJiB2bSwgU3ltYm9sSW1wbCYgdWlkKQor
eworICAgIGlmIChTeW1ib2wqIHN5bWJvbCA9IHZtLnN5bWJvbEltcGxUb1N5bWJvbE1hcC5nZXQo
JnVpZCkpCisgICAgICAgIHJldHVybiBzeW1ib2w7CisKKyAgICBTeW1ib2wqIHN5bWJvbCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbD4odm0uaGVhcCkpIFN5bWJvbCh2bSwgdWlk
KTsKKyAgICBzeW1ib2wtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gc3ltYm9sOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
LmgKaW5kZXggYWNhYTcwMmZlNjEwNzhlYzFjZjk5ZmE5MTdkNDc4ZmNmMDIyZDYxMy4uOTMzYTJl
NTE4NGFiOTlmZjI2ZmNjMTJmNjIzMGI4ZDAzZWUxOWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDYgQEAKICNpZm5kZWYgU3ltYm9s
X2gKICNkZWZpbmUgU3ltYm9sX2gKIAotI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKIApAQCAtNDgsMjggKzQ3LDkgQEAg
Y2xhc3MgU3ltYm9sIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFN5bWJv
bFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgU3lt
Ym9sKiBjcmVhdGUoVk0mIHZtKQotICAgIHsKLSAgICAgICAgU3ltYm9sKiBzeW1ib2wgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2w+KHZtLmhlYXApKSBTeW1ib2wodm0pOwotICAg
ICAgICBzeW1ib2wtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHN5bWJvbDsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgU3ltYm9sKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1N0
cmluZyogZGVzY3JpcHRpb24pCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgICAgICBTdHJpbmcgZGVzYyA9IGRlc2NyaXB0aW9uLT52YWx1ZShleGVjKTsKLSAgICAgICAg
U3ltYm9sKiBzeW1ib2wgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2w+KHZtLmhl
YXApKSBTeW1ib2wodm0sIGRlc2MpOwotICAgICAgICBzeW1ib2wtPmZpbmlzaENyZWF0aW9uKHZt
KTsKLSAgICAgICAgcmV0dXJuIHN5bWJvbDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3ltYm9sKiBj
cmVhdGUoVk0mIHZtLCBTeW1ib2xJbXBsJiB1aWQpCi0gICAgewotICAgICAgICBTeW1ib2wqIHN5
bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbD4odm0uaGVhcCkpIFN5bWJv
bCh2bSwgdWlkKTsKLSAgICAgICAgc3ltYm9sLT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAg
IHJldHVybiBzeW1ib2w7Ci0gICAgfQorICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShWTSYpOwor
ICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU1N0cmluZyogZGVzY3JpcHRp
b24pOworICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShWTSYsIFN5bWJvbEltcGwmIHVpZCk7CiAK
ICAgICBjb25zdCBQcml2YXRlTmFtZSYgcHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGVOYW1lOyB9CiAgICAgU3RyaW5nIGRlc2NyaXB0aXZlU3RyaW5nKCkgY29uc3Q7CkBAIC03
OSw4ICs1OSw2IEBAIGNsYXNzIFN5bWJvbCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIEpT
T2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAg
IGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgIHN0YXRpYyBzaXplX3Qg
b2Zmc2V0T2ZQcml2YXRlTmFtZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTeW1ib2wsIG1f
cHJpdmF0ZU5hbWUpOyB9Ci0KIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOwogCkBAIC04OCwxMSArNjYsNyBAQCBjbGFzcyBTeW1ib2wgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBTeW1ib2woVk0mLCBjb25zdCBTdHJpbmcmKTsKICAgICBTeW1ib2woVk0m
LCBTeW1ib2xJbXBsJiB1aWQpOwogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi0g
ICAgewotICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKLSAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwog
CiAgICAgUHJpdmF0ZU5hbWUgbV9wcml2YXRlTmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKaW5kZXggYjFmZjQyNDhhMzQ4NGE0Y2JiYzIwNWMzMmQ0ZDA0YzE2MDYwY2Fj
Ni4uM2U3MjYzYWExMDEyMjU1NzZjYjQ2ZTAyY2NkYjk1OTI3ZmRiZjMwZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTY2LDYgKzE2Niw3IEBAIFZNOjpWTShWTVR5cGUg
dm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJn
dW1lbnRCdWZmZXIpCiAgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykK
ICAgICAsIHN0cmluZ0NhY2hlKCp0aGlzKQorICAgICwgc3ltYm9sSW1wbFRvU3ltYm9sTWFwKCp0
aGlzKQogICAgICwgcHJvdG90eXBlTWFwKCp0aGlzKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAg
ICAsIGpzQXJyYXlDbGFzc0luZm8oSlNBcnJheTo6aW5mbygpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKaW5kZXggZjBkZTE1MTM1YTkwNzg3OGI0N2ExZDM0MzRmNjgyOTFjYjVkYzczZS4u
NTIxNjFkNzllM2ZmMzI1NDhiYzNmMTgwMzRkNWU4M2I0NmNkYzEyYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCkBAIC0xMDgsNiArMTA4LDcgQEAgY2xhc3MgU3RydWN0dXJlOwogI2lm
IEVOQUJMRShSRUdFWFBfVFJBQ0lORykKIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgorY2xhc3MgU3lt
Ym9sOwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxv
Y2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKQEAgLTM0NSw2ICszNDYsOCBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIEF0b21p
Y1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXRvbWlj
U3RyaW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSgp
IHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KIAorICAgIFdlYWtHQ01hcDxTeW1ib2xJbXBs
KiwgU3ltYm9sLCBQdHJIYXNoPFN5bWJvbEltcGwqPj4gc3ltYm9sSW1wbFRvU3ltYm9sTWFwOwor
CiAgICAgZW51bSBjbGFzcyBEZWxldGVQcm9wZXJ0eU1vZGUgewogICAgICAgICAvLyBEZWZhdWx0
IGJlaGF2aW91ciBvZiBkZWxldGVQcm9wZXJ0eSwgbWF0Y2hpbmcgdGhlIHNwZWMuCiAgICAgICAg
IERlZmF1bHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3N5bWJvbC1lcXVhbGl0eS1vdmVyLWdjLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zeW1ib2wtZXF1YWxpdHktb3Zlci1nYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODBlMmZiNTc2
OTdmMzY0ZWMwYzA5MTViOTgxOTMyMDljMDA5YjVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtZXF1YWxpdHktb3Zlci1nYy5qcwpA
QCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQorewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBz
eW1ib2wgPSBTeW1ib2woKTsKKyAgICBsZXQgb2JqZWN0MSA9IHsKKyAgICAgICAgW3N5bWJvbF06
IDQyCisgICAgfQorICAgIGxldCBvYmplY3QyID0geworICAgICAgICBbc3ltYm9sXTogNDIKKyAg
ICB9CisgICAgc3ltYm9sID0gbnVsbDsKKyAgICBmdWxsR0MoKTsKKyAgICBzaG91bGRCZShPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdDEpWzBdLCBPYmplY3QuZ2V0T3duUHJvcGVy
dHlTeW1ib2xzKG9iamVjdDIpWzBdKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7ICsraSkKKyAgICB0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284770</attachid>
            <date>2016-07-28 03:26:58 -0700</date>
            <delta_ts>2016-07-28 10:56:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158908-20160728192545.patch</filename>
            <type>text/plain</type>
            <size>65649</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGNhYTRhZGUwMjQ5ZGVhMGNmOWJiZjhiYmRlMzM0ODM1YTkxZmViLi44M2YyZjVhNTA0MzNkNWVj
MTkxYzhkMDUxYTNkM2RiNTY4OTQ4Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzkgQEAKKzIwMTYtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgSlNDOjpTeW1ib2wgc2hvdWxkIGJlIGhhc2gtY29uc2VkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCBT
eW1ib2xJbXBscyBoZWxkIGJ5IHN5bWJvbHMgcmVwcmVzZW50IGlkZW50aXR5IG9mIHN5bWJvbHMu
CisgICAgICAgIFdoZW4gd2UgY2hlY2sgdGhlIGVxdWFsaXR5IGJldHdlZW4gc3ltYm9scywgd2Ug
bmVlZCB0byBsb2FkIFN5bWJvbEltcGxzIG9mIHN5bWJvbHMgYW5kIGNvbXBhcmUgdGhlbS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIHBlcmZvcm1zIGhhc2gtY29uc2luZyBvbnRvIHRoZSBzeW1ib2xz
LiBXZSBjYWNoZSBzeW1ib2xzIGluIHBlci1WTSdzIFN5bWJvbEltcGwta2V5ZWQgV2Vha0dDTWFw
LgorICAgICAgICBXaGVuIGNyZWF0aW5nIGEgbmV3IHN5bWJvbCBmcm9tIFN5bWJvbEltcGwsIHdl
IGZpcnN0IHF1ZXJ5IHRvIHRoaXMgbWFwIGFuZCByZXVzZSB0aGUgcHJldmlvdXNseSBjcmVhdGVk
IHN5bWJvbAorICAgICAgICBpZiBpdCBpcyBmb3VuZC4gVGhpcyBlbnN1cmVzIHRoYXQgb25lLW9u
LW9uZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIFN5bWJvbEltcGwgYW5kIHN5bWJvbC4gU28gbm93
LCB3ZSBjYW4gdXNlCisgICAgICAgIHBvaW50ZXItY29tcGFyaXNvbiB0byBxdWVyeSB0aGUgZXF1
YWxpdHkgb2Ygc3ltYm9scy4KKworICAgICAgICBUaGlzIGNoYW5nZSBkcm9wcyBTeW1ib2xJbXBs
IGxvYWRzIHdoZW4gY2hlY2tpbmcgdGhlIGVxdWFsaXR5LiBGdXJ0aGVybW9yZSwgd2UgY2FuIHVz
ZSBERkcgQ2hlY2tDZWxsIHRvIHN5bWJvbAorICAgICAgICB3aGVuIHdlIHdvdWxkIGxpa2UgdG8g
ZW5zdXJlIHRoYXQgdGhlIGdpdmVuIHZhbHVlIGlzIHRoZSBleHBlY3RlZCBzeW1ib2wuIFRoaXMg
Y2xlYW5zIHVwIEdldEJ5VmFsJ3Mgc3ltYm9sLWtleWQKKyAgICAgICAgY2FjaGluZy4gVGhlbiwg
d2UgY2hhbmdlZCBDaGVja0lkZW50IHRvIENoZWNrU3RyaW5nSWRlbnQgc2luY2UgaXQgb25seSBj
aGVja3MgdGhlIHN0cmluZyBjYXNlIG5vdy4gVGhlIHN5bWJvbAorICAgICAgICBjYXNlIGlzIGhh
bmRsZWQgYnkgQ2hlY2tDZWxsLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgdGhpcyBwYXRjaCBh
bHNvIGNsZWFucyB1cCBNYXAgLyBTZXQgaW1wbGVtZW50YXRpb24gc2luY2Ugd2UgY2FuIHVzZSB0
aGUgbG9naWMgZm9yIEpTQ2VsbCB0byBzeW1ib2xzLgorCisgICAgICAgIFRoZSBwZXJmb3JtYW5j
ZSBlZmZlY3RzIGluIHRoZSByZWxhdGVkIGJlbmNobWFya3MgYXJlIHRoZSBmb2xsb3dpbmdzLgor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgICBwYXRjaAorCisgICAgICAgICAgICBi
aWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sLW9yLXVuZGVmaW5lZCAgICAgICAgIDg1LjYyMTQrLTEu
MDA2MyAgICAgXiAgICAgNjMuMDUyMistMC44NjE1ICAgICAgICBeIGRlZmluaXRlbHkgMS4zNTc5
eCBmYXN0ZXIKKyAgICAgICAgICAgIGJpZ3N3aXRjaC1pbmRpcmVjdC1zeW1ib2wgICAgICAgICAg
ICAgICAgICAgICAgODQuOTY1MystMC42MjU4ICAgICBeICAgICA4MC40OTAwKy0wLjgwMDggICAg
ICAgIF4gZGVmaW5pdGVseSAxLjA1NTZ4IGZhc3RlcgorICAgICAgICAgICAgZm9sZC1wdXQtYnkt
dmFsLXdpdGgtc3ltYm9sLXRvLW11bHRpLXB1dC1ieS1vZmZzZXQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNDM5NistMC4zNzI2
ICAgICAgICAgICAgOS4yOTQxKy0wLjMzMTEgICAgICAgICAgbWlnaHQgYmUgMS4wMTU3eCBmYXN0
ZXIKKyAgICAgICAgICAgIGlubGluZWQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10cmFuc2l0aW9u
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQ5LjU0NzcrLTAuMjQwMSAgICAgPyAgICAgNDkuNzUzMystMC4zMzY5ICAgICAgICA/Cisg
ICAgICAgICAgICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXNlbGYtb3ItcHJvdG8gICAgICAgICAg
IDExLjk3NDArLTAuMDc5OCAgICAgPyAgICAgMTIuMTcwNistMC4yNzIzICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE2NHggc2xvd2VyCisgICAgICAgICAgICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXF1
YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTM2NCst
MC4wODQxICAgICAgICAgICAgNC4wODcyKy0wLjA5MjUgICAgICAgICAgbWlnaHQgYmUgMS4wMTIw
eCBmYXN0ZXIKKyAgICAgICAgICAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wgICAgICAgICAgICAg
ICAgICAgICAgICAgMTEuMzcwOSstMC4wMjIzICAgICAgICAgICAxMS4zNjEzKy0wLjAyNjQKKyAg
ICAgICAgICAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtcHJvdG8tb3Itc2VsZiAgICAgICAgICAg
MTEuODk4NCstMC4wNzA2ICAgICA/ICAgICAxMS45MDMwKy0wLjA3ODcgICAgICAgID8KKyAgICAg
ICAgICAgIHBvbHltb3JwaGljLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wgICAgICAgICAgICAgMzEu
NDE3NistMC4wNTU4ICAgICAgICAgICAzMS4zODI1Ky0wLjA0NDcKKyAgICAgICAgICAgIGltcGxp
Y2l0LWJpZ3N3aXRjaC1pbmRpcmVjdC1zeW1ib2wgICAgICAgICAgICAgNjEuMzExNSstMC42NTc3
ICAgICBeICAgICA1OC4wMDk4Ky0wLjEyMTIgICAgICAgIF4gZGVmaW5pdGVseSAxLjA1Njl4IGZh
c3RlcgorICAgICAgICAgICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBoaWMtY2hlY2st
c3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zMTM5Ky0wLjA1NjUgICAgIF4gICAg
ICAyLjk5NDcrLTAuMDczMiAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTA2NnggZmFzdGVyCisgICAg
ICAgICAgICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoYWluLWZyb20tdHJ5LWJsb2NrCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjIzMTYrLTAuMDE3OSAgICAgICAgICAgIDIuMjEzNystMC4wMjEwCisgICAgICAgICAgICBnZXQt
YnktdmFsLXdpdGgtc3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTAuNjAzMSstMC4yMjE2ICAgICBeICAgICAxMC4wOTM5Ky0wLjE5NzcgICAgICAgIF4gZGVm
aW5pdGVseSAxLjA1MDR4IGZhc3RlcgorICAgICAgICAgICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJv
bC1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguNTU3NistMC4xNTIxICAgICBeICAg
ICAgNy43MTA3Ky0wLjEzMDggICAgICAgIF4gZGVmaW5pdGVseSAxLjEwOTh4IGZhc3RlcgorICAg
ICAgICAgICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC1zbGlnaHRseS1wb2x5bW9ycGhpYworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
My4xOTU3Ky0wLjA1MzggICAgIF4gICAgICAyLjkxODErLTAuMDcwOCAgICAgICAgXiBkZWZpbml0
ZWx5IDEuMDk1MXggZmFzdGVyCisgICAgICAgICAgICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sLXJl
cGxhY2UtYW5kLXRyYW5zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTEuODI1MystMC4wNzU3ICAgICBeICAgICAxMS42NTkw
Ky0wLjAzNTEgICAgICAgIF4gZGVmaW5pdGVseSAxLjAxNDN4IGZhc3RlcgorCisgICAgICAgICAg
ICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjM5MTEr
LTAuMDUyNyAgICAgXiAgICAgMTIuNzM3NistMC4wNDU3ICAgICAgICBeIGRlZmluaXRlbHkgMS4w
NTEzeCBmYXN0ZXIKKworICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25n
bHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3Rh
bnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpk
b2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzVWlkT3BlcmFuZCk6CisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTeW1ib2xFcXVhbGl0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZVN5
bWJvbEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrU3RyaW5nSWRlbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
eHRyYWN0U3RyaW5nSW1wbEZyb21CaW5hcnlTeW1ib2xzKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSWRlbnQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ltYm9sVW50eXBlZEVxdWFs
aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTeW1ib2xVbnR5cGVkRXF1YWxpdHkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTeW1ib2xVbnR5cGVkRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja1N0cmluZ0lkZW50KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJp
Y3RFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVj
a0lkZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
bG93U3ltYm9sVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjp0cnlHZXRCeVZhbE9wdGltaXpl
KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1
dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QnlWYWxJZGVudGlm
aWVyQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWxXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJZGVudGlmaWVyQ2hlY2spOiBEZWxl
dGVkLgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0R2V0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
OjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpzZXRGdW5jdGlvbk5h
bWUpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFw
RGF0YUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNJdGVyYXRvcj46OmNsZWFyKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6SlNJdGVyYXRvcj46OmZpbmQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU0l0ZXJhdG9yPjo6YWRkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNJdGVyYXRv
cj46OnJlbW92ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTSXRlcmF0b3I+OjpyZXBsYWNl
QW5kUGFja0JhY2tpbmdTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TeW1ib2wu
Y3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3ltYm9sOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmg6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wtZXF1YWxpdHktb3Zlci1n
Yy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKwogMjAx
Ni0wNy0yNSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwMzcwMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeVZhbEluZm8uaAppbmRleCA1MzE0ODFlMmFjM2I0NGYxMDBkNmZmZDhkN2E1
YWZhZGMxOGE3MTM1Li44OTg4NmY5MzY4MDI1NTgyYTQ5NDJlNWU3NjA3NTkyZmYwOTY4NzFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCkBAIC0zNSw2ICsz
NSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBTeW1ib2w7CisKICNpZiBFTkFCTEUo
SklUKQogCiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKQEAgLTIzMiw2ICsyMzQsNyBAQCBzdHJ1
Y3QgQnlWYWxJbmZvIHsKICAgICB1bnNpZ25lZCBzbG93UGF0aENvdW50OwogICAgIFJlZlB0cjxK
SVRTdHViUm91dGluZT4gc3R1YlJvdXRpbmU7CiAgICAgSWRlbnRpZmllciBjYWNoZWRJZDsKKyAg
ICBXcml0ZUJhcnJpZXI8U3ltYm9sPiBjYWNoZWRTeW1ib2w7CiAgICAgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvOwogICAgIGJvb2wgdG9va1Nsb3dQYXRoIDogMTsKICAgICBib29sIHNlZW4g
OiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCAwMzJlMWVhOWVlZGFiMmEwZWIxNjM0NWM5ODQ2YTZlMWZhZTg1NWNmLi43ZWE1MzU3OGU5MjY3
MjU3MTkyNTBmMjE4NTZkYTUxMzJkNjJiOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzEwMiw2ICszMTAyLDkgQEAgdm9pZCBDb2RlQmxv
Y2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlcy5z
aXplKCk7ICsraSkKICAgICAgICAgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZXNbaV0udmlzaXRB
Z2dyZWdhdGUodmlzaXRvcik7CiAKKyAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9i
eVZhbEluZm9zKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmYnlWYWxJbmZvLT5jYWNoZWRTeW1i
b2wpOworCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemlu
Z0pJVChqaXRUeXBlKCkpKQogICAgICAgICB2aXNpdE9TUkV4aXRUYXJnZXRzKHZpc2l0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IDVhNDI1ZjBiM2Y2Nzg5Mzc2MDg0ZDkwZDM5NjE4ZGQyNzQy
YThhZDAuLjAzZjlhZDA2YmEyNzBhYTQwM2ZmMzM3YjI1ZGQ4NzA5NzU4OTg1MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKQEAgLTEzOTgsNyArMTM5OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENvbXBhcmVF
cSAmJiBsZWZ0Q29uc3QuaXNTeW1ib2woKSAmJiByaWdodENvbnN0LmlzU3ltYm9sKCkpIHsKLSAg
ICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oYXNTeW1ib2wobGVmdENv
bnN0KS0+cHJpdmF0ZU5hbWUoKSA9PSBhc1N5bWJvbChyaWdodENvbnN0KS0+cHJpdmF0ZU5hbWUo
KSkpOworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihhc1N5bWJv
bChsZWZ0Q29uc3QpID09IGFzU3ltYm9sKHJpZ2h0Q29uc3QpKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI2MjYsMjkgKzI2MjYsMjEgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2Fz
ZSBDaGVja0lkZW50OiB7CisgICAgY2FzZSBDaGVja1N0cmluZ0lkZW50OiB7CiAgICAgICAgIEFi
c3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBub2RlLT51aWRPcGVyYW5kKCk7Ci0gICAgICAgIEFTU0VS
VCh1aWQtPmlzU3ltYm9sKCkgPyAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjU3ltYm9sKSA6ICEodmFs
dWUubV90eXBlICYgflNwZWNTdHJpbmdJZGVudCkpOyAvLyBFZGdlIGZpbHRlcmluZyBzaG91bGQg
aGF2ZSBhbHJlYWR5IGVuc3VyZWQgdGhpcy4KKyAgICAgICAgQVNTRVJUKCEodmFsdWUubV90eXBl
ICYgflNwZWNTdHJpbmdJZGVudCkpOyAvLyBFZGdlIGZpbHRlcmluZyBzaG91bGQgaGF2ZSBhbHJl
YWR5IGVuc3VyZWQgdGhpcy4KIAogICAgICAgICBKU1ZhbHVlIGNoaWxkQ29uc3RhbnQgPSB2YWx1
ZS52YWx1ZSgpOwogICAgICAgICBpZiAoY2hpbGRDb25zdGFudCkgewotICAgICAgICAgICAgaWYg
KHVpZC0+aXNTeW1ib2woKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChjaGlsZENvbnN0YW50
LmlzU3ltYm9sKCkpOwotICAgICAgICAgICAgICAgIGlmIChhc1N5bWJvbChjaGlsZENvbnN0YW50
KS0+cHJpdmF0ZU5hbWUoKS51aWQoKSA9PSB1aWQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoY2hpbGRDb25zdGFudC5pc1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBpZiAo
YXNTdHJpbmcoY2hpbGRDb25zdGFudCktPnRyeUdldFZhbHVlSW1wbCgpID09IHVpZCkgewotICAg
ICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NF
UlQoY2hpbGRDb25zdGFudC5pc1N0cmluZygpKTsKKyAgICAgICAgICAgIGlmIChhc1N0cmluZyhj
aGlsZENvbnN0YW50KS0+dHJ5R2V0VmFsdWVJbXBsKCkgPT0gdWlkKSB7CisgICAgICAgICAgICAg
ICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGZpbHRlcih2YWx1ZSwgdWlk
LT5pc1N5bWJvbCgpID8gU3BlY1N5bWJvbCA6IFNwZWNTdHJpbmdJZGVudCk7CisgICAgICAgIGZp
bHRlcih2YWx1ZSwgU3BlY1N0cmluZ0lkZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IDM2ZDQ3NTljZjg3MGMwYWQyNDVlNjFiOGJjODlkYzFhMjI3MjU3ZjUuLmYxYTk3NTJjNTQ5Zjc2
NThkMmMyYmJhYmZlZWUxMjNiYWY0ZmExYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00MDYzLDEyICs0MDYzLDE4IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAg
ICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2J5VmFsSW5mb3Mu
Z2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSk7CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBp
biB0aGUgYmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAg
ICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCi0gICAgICAgICAg
ICAgICAgaWYgKGJ5VmFsSW5mbyAmJiBieVZhbEluZm8tPnN0dWJJbmZvICYmICFieVZhbEluZm8t
PnRvb2tTbG93UGF0aCAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGJ5
VmFsSW5mbyAmJiBieVZhbEluZm8tPnN0dWJJbmZvICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0
aCAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkSWRlbnQpICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgewogICAgICAgICAgICAgICAgICAg
ICBjb21waWxlZEFzR2V0QnlJZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGJ5VmFsSW5mby0+Y2FjaGVk
SWQuaW1wbCgpKTsKICAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKIAotICAgICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChTeW1ib2wqIHN5bWJvbCA9IGJ5VmFsSW5mby0+Y2FjaGVk
U3ltYm9sLmdldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJv
emVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoc3ltYm9sKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCF1aWQtPmlzU3ltYm9sKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChD
aGVja1N0cmluZ0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgZ2V0QnlJZFN0YXR1cyA9IEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLApAQCAtNDExMCwxMiArNDExNiwxOCBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9ieVZh
bEluZm9zLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkp
OwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29t
cGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KICAgICAg
ICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgotICAg
ICAgICAgICAgICAgIGlmIChieVZhbEluZm8gJiYgYnlWYWxJbmZvLT5zdHViSW5mbyAmJiAhYnlW
YWxJbmZvLT50b29rU2xvd1BhdGggJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KSkgeworICAgICAgICAgICAgICAg
IGlmIChieVZhbEluZm8gJiYgYnlWYWxJbmZvLT5zdHViSW5mbyAmJiAhYnlWYWxJbmZvLT50b29r
U2xvd1BhdGggJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZElkZW50KSAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgY29tcGlsZWRBc1B1dEJ5SWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShi
eVZhbEluZm8tPmNhY2hlZElkLmltcGwoKSk7CiAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07
CiAKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlk
KSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBpZiAoU3ltYm9sKiBzeW1ib2wgPSBi
eVZhbEluZm8tPmNhY2hlZFN5bWJvbC5nZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
RnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKHN5bWJvbCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiks
IHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVCghdWlkLT5pc1N5bWJvbCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJpbmdJZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsK
KyAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0
dXMgcHV0QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA0
Y2JiZTFmZjUxYjNkZTg3MmQzOWYwNzQ1OTUxMzVmM2I5MjZjNTExLi5jYzUxNDE2ODcxMzM2NGE1
Yzk1ZmU1MGQ1ODJiMzc1MmIzNDEyOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMzQ0LDggKzM0NCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tOb3RFbXB0eSwgQWRqYWNlbmN5TGlzdChBZGph
Y2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgIHJldHVybjsKIAot
ICAgIGNhc2UgQ2hlY2tJZGVudDoKLSAgICAgICAgZGVmKFB1cmVWYWx1ZShDaGVja0lkZW50LCBB
ZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUt
PnVpZE9wZXJhbmQoKSkpOworICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDoKKyAgICAgICAgZGVm
KFB1cmVWYWx1ZShDaGVja1N0cmluZ0lkZW50LCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6
OkZpeGVkLCBub2RlLT5jaGlsZDEoKSksIG5vZGUtPnVpZE9wZXJhbmQoKSkpOwogICAgICAgICBy
ZXR1cm47CiAKICAgICBjYXNlIENvbnN0YW50U3RvcmFnZVBvaW50ZXI6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4
IGY1ZmFjZTllOGIyOGRhYmYxODQzZTEwM2IyYTE3YjM5ZjUzZjEwZWMuLmVmZWZkYzU0YzBmYWZj
OTBjYTk0YjQyNTIzNDMzN2IwMGFhZjlmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0yNDUsMjUgKzI0NSwy
MCBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgQ2hlY2tJ
ZGVudDogeworICAgICAgICAgICAgY2FzZSBDaGVja1N0cmluZ0lkZW50OiB7CiAgICAgICAgICAg
ICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG5vZGUtPnVpZE9wZXJhbmQoKTsKICAgICAg
ICAgICAgICAgICBjb25zdCBVbmlxdWVkU3RyaW5nSW1wbCogY29uc3RhbnRVaWQgPSBudWxscHRy
OwogCiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBjaGlsZENvbnN0YW50ID0gbV9zdGF0ZS5mb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmIChjaGlsZENv
bnN0YW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZENvbnN0YW50LmlzU3ltYm9sKCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRVaWQgPSBhc1N5bWJvbChjaGlsZENvbnN0
YW50KS0+cHJpdmF0ZU5hbWUoKS51aWQoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZENvbnN0YW50LmlzU3RyaW5nKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byogaW1wbCA9IGFzU3Ry
aW5nKGNoaWxkQ29uc3RhbnQpLT50cnlHZXRWYWx1ZUltcGwoKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBFZGdlIGZpbHRlcmluZyByZXF1aXJlcyB0aGF0IGEgdmFsdWUg
aGVyZSBzaG91bGQgYmUgU3RyaW5nSWRlbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEhvd2V2ZXIsIGEgY29uc3RhbnQgdmFsdWUgcHJvcGFnYXRlZCBpbiBERkcgaXMgbm90
IGZpbHRlcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTbyBoZXJlLCB3
ZSBjaGVjayB0aGUgcHJvcGFnYXRlZCB2YWx1ZSBpcyBhY3R1YWxseSBhbiBhdG9taWMgc3RyaW5n
LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbmQgaWYgaXQncyBub3QsIHdl
IGp1c3QgaWdub3JlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1wbC0+
aXNBdG9taWMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50
VWlkID0gc3RhdGljX2Nhc3Q8Y29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqPihpbXBsKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZENv
bnN0YW50LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdCBh
dXRvKiBpbXBsID0gYXNTdHJpbmcoY2hpbGRDb25zdGFudCktPnRyeUdldFZhbHVlSW1wbCgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWRnZSBmaWx0ZXJpbmcgcmVxdWlyZXMg
dGhhdCBhIHZhbHVlIGhlcmUgc2hvdWxkIGJlIFN0cmluZ0lkZW50LgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIGEgY29uc3RhbnQgdmFsdWUgcHJvcGFnYXRlZCBpbiBE
RkcgaXMgbm90IGZpbHRlcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNvIGhl
cmUsIHdlIGNoZWNrIHRoZSBwcm9wYWdhdGVkIHZhbHVlIGlzIGFjdHVhbGx5IGFuIGF0b21pYyBz
dHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kIGlmIGl0J3Mgbm90LCB3
ZSBqdXN0IGlnbm9yZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1wbC0+aXNB
dG9taWMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRVaWQgPSBz
dGF0aWNfY2FzdDxjb25zdCBVbmlxdWVkU3RyaW5nSW1wbCo+KGltcGwpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDRhZjc3MDczYWU0ZDJl
ZjgxZmU5Mzg3NmY3ZTlmMjQ0YzFmNjQ5NjguLjA4MmM0MTVjZTJlZDNiODdjMzQyYWIyYTQ5NTFi
YTE4MTI4NWMzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAg
LTEyOSw3ICsxMjksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBQdXRHbG9iYWxWYXJpYWJsZToKICAgICBjYXNlIENoZWNrQ2VsbDoKICAgICBjYXNl
IENoZWNrTm90RW1wdHk6Ci0gICAgY2FzZSBDaGVja0lkZW50OgorICAgIGNhc2UgQ2hlY2tTdHJp
bmdJZGVudDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgogICAg
IGNhc2UgQ29tcGFyZUxlc3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAppbmRleCBjNjFhMzFlN2M2NmFiMzdjYzAwZWI0ZjA0OGZhMWZjOWVmMzBkYTNiLi5k
ZWUyMTY5Njk1ZmI3NjIxZDI0MThjNjE0NmMxZjMxYWQxZTEyN2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEyMTQsMTIgKzEyMTQsOCBAQCBj
bGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FzZSBDaGVja0lkZW50OiB7Ci0gICAgICAgICAgICBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkID0gbm9kZS0+dWlkT3BlcmFuZCgpOwotICAgICAgICAgICAgaWYgKHVp
ZC0+aXNTeW1ib2woKSkKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3Ry
aW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgY2FzZSBDaGVja1N0cmluZ0lk
ZW50OiB7CisgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDU2MGRhNGI5Mjg2MzRlYzI1YjA1ZTAzM2E4Y2Zj
OGQ5YThmZjdhOWYuLjQ0OWZiYjc5OTRmZWU4MjNhOTdjZTYzY2Y2NDdmZWViOGMzZTM2ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xNTE3LDcgKzE1MTcsNyBAQCBzdHJ1
Y3QgTm9kZSB7CiAKICAgICBib29sIGhhc1VpZE9wZXJhbmQoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIG9wKCkgPT0gQ2hlY2tJZGVudDsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tTdHJp
bmdJZGVudDsKICAgICB9CiAKICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkT3BlcmFuZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNDQ2NjhjZTYwNDE1OTI0
NzE4NjJjMWVhODdmOThjYzIyNWY2ZjUzZC4uNTVlOWU3ZGRhNmI2Y2MxYjBhOTI0NWJlZTBjMTJm
NjVlZmU4MDY0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAt
MjM5LDcgKzIzOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhDaGVja05vdEVtcHR5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tCYWRD
ZWxsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11
c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENoZWNrSWRlbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhDaGVja1N0cmluZ0lkZW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oQ2hlY2tUeXBlSW5mb0ZsYWdzLCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBUYWtlcyBhbiBPcElu
Zm8gd2l0aCB0aGUgZmxhZ3MgeW91IHdhbnQgdG8gdGVzdCBhcmUgc2V0ICovXAogICAgIFwKICAg
ICAvKiBPcHRpbWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9cCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCmluZGV4IDU1NzZlNjRiYzY3ZmZiYTJhMDQzZmRhM2ZhNTg1YzEyYTRmM2FlMmYuLmVm
NTkyYWM4ZjA1MzVmMTRjYjNiZjRlNGY0NGY0YzAxNWUxNDVlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAg
ICAgIGNhc2UgQ2hlY2tDZWxsOgogICAgICAgICBjYXNlIENoZWNrTm90RW1wdHk6Ci0gICAgICAg
IGNhc2UgQ2hlY2tJZGVudDoKKyAgICAgICAgY2FzZSBDaGVja1N0cmluZ0lkZW50OgogICAgICAg
ICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAg
IGNhc2UgUGhhbnRvbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKaW5kZXggYzhiYzYwM2FhMmU5NTU5MjkwMGNiMDU3NGJlYjY3MmMyNzU0ZDk5My4uNTY2
YTQ1OWRhNGUxM2RlYjU3YzIxOGQ4ZTAxOTI2MjYyNDRiNzcyMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIyNSw3ICsyMjUsNyBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAg
ICAgY2FzZSBDaGVja05vdEVtcHR5OgotICAgIGNhc2UgQ2hlY2tJZGVudDoKKyAgICBjYXNlIENo
ZWNrU3RyaW5nSWRlbnQ6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhwVGVz
dDoKICAgICBjYXNlIENvbXBhcmVMZXNzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAxMTNhNzk3ZTFkZTIyODdmMGIyYzI1MmNkYTVh
YTRhMmVjOTcyN2E3Li4wYTg5OTFmMzQyNTUyM2EyZWUyZjFmODYwNjc5MTVlMDZjYjZjYzk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtNTMxMCw1MCArNTMxMCw0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQm9vbGVh
bkNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYQogICAgIHVuYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmV4dHJhY3RTdHJpbmdJbXBsRnJv
bUJpbmFyeVN5bWJvbHMoRWRnZSBsZWZ0U3ltYm9sRWRnZSwgRWRnZSByaWdodFN5bWJvbEVkZ2Us
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3lt
Ym9sRXF1YWxpdHkoTm9kZSogbm9kZSkKIHsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0
KHRoaXMsIGxlZnRTeW1ib2xFZGdlKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCByaWdodCh0
aGlzLCByaWdodFN5bWJvbEVkZ2UpOwotICAgIEdQUlRlbXBvcmFyeSBsZWZ0VGVtcCh0aGlzKTsK
LSAgICBHUFJUZW1wb3JhcnkgcmlnaHRUZW1wKHRoaXMpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHJpZ2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIFJldXNlLCBsZWZ0LCByaWdodCk7CiAKICAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3By
KCk7CiAgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7Ci0gICAgR1BSUmVnIGxlZnRU
ZW1wR1BSID0gbGVmdFRlbXAuZ3ByKCk7Ci0gICAgR1BSUmVnIHJpZ2h0VGVtcEdQUiA9IHJpZ2h0
VGVtcC5ncHIoKTsKLQotICAgIHNwZWN1bGF0ZVN5bWJvbChsZWZ0U3ltYm9sRWRnZSwgbGVmdEdQ
Uik7Ci0gICAgc3BlY3VsYXRlU3ltYm9sKHJpZ2h0U3ltYm9sRWRnZSwgcmlnaHRHUFIpOwotCi0g
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhsZWZ0R1BSLCBTeW1ib2w6Om9m
ZnNldE9mUHJpdmF0ZU5hbWUoKSksIGxlZnRUZW1wR1BSKTsKLSAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJpZ2h0R1BSLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUo
KSksIHJpZ2h0VGVtcEdQUik7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
IAotICAgIGZ1bmN0b3IobGVmdFRlbXBHUFIsIHJpZ2h0VGVtcEdQUik7Ci19CisgICAgc3BlY3Vs
YXRlU3ltYm9sKG5vZGUtPmNoaWxkMSgpLCBsZWZ0R1BSKTsKKyAgICBzcGVjdWxhdGVTeW1ib2wo
bm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVN5bWJvbEVxdWFsaXR5KE5vZGUqIG5vZGUpCi17Ci0gICAgZXh0cmFjdFN0cmluZ0ltcGxGcm9t
QmluYXJ5U3ltYm9scyhub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIFsmXSAoR1BSUmVn
IGxlZnRTdHJpbmdJbXBsLCBHUFJSZWcgcmlnaHRTdHJpbmdJbXBsKSB7Ci0gICAgICAgIG1faml0
LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0U3RyaW5nSW1wbCwgcmlnaHRTdHJp
bmdJbXBsLCBsZWZ0U3RyaW5nSW1wbCk7Ci0gICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQo
bGVmdFN0cmluZ0ltcGwsIG5vZGUpOwotICAgIH0pOworICAgIG1faml0LmNvbXBhcmVQdHIoSklU
Q29tcGlsZXI6OkVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUiwgcmVzdWx0R1BSKTsKKyAgICB1bmJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZVN5bWJvbEVxdWFsaXR5KE5vZGUqIG5vZGUsIE5vZGUqIGJy
YW5jaE5vZGUpCiB7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgIEdQUlJlZyBy
aWdodEdQUiA9IHJpZ2h0LmdwcigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxk
MSgpLCBsZWZ0R1BSKTsKKyAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIHJpZ2h0
R1BSKTsKKwogICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgp
LT50YWtlbi5ibG9jazsKICAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPmJy
YW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7CiAKLSAgICBleHRyYWN0U3RyaW5nSW1wbEZyb21C
aW5hcnlTeW1ib2xzKG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIoKSwgWyZdIChHUFJSZWcg
bGVmdFN0cmluZ0ltcGwsIEdQUlJlZyByaWdodFN0cmluZ0ltcGwpIHsKLSAgICAgICAgaWYgKHRh
a2VuID09IG5leHRCbG9jaygpKSB7Ci0gICAgICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCBsZWZ0U3RyaW5nSW1wbCwgcmlnaHRTdHJpbmdJbXBsLCBub3RUYWtlbik7Ci0g
ICAgICAgICAgICBqdW1wKHRha2VuKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJy
YW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnRTdHJpbmdJbXBsLCByaWdodFN0cmluZ0lt
cGwsIHRha2VuKTsKLSAgICAgICAgICAgIGp1bXAobm90VGFrZW4pOwotICAgICAgICB9Ci0gICAg
fSk7CisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGJyYW5jaFB0cihK
SVRDb21waWxlcjo6Tm90RXF1YWwsIGxlZnRHUFIsIHJpZ2h0R1BSLCBub3RUYWtlbik7CisgICAg
ICAgIGp1bXAodGFrZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIGJyYW5jaFB0cihKSVRDb21w
aWxlcjo6RXF1YWwsIGxlZnRHUFIsIHJpZ2h0R1BSLCB0YWtlbik7CisgICAgICAgIGp1bXAobm90
VGFrZW4pOworICAgIH0KIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0Vx
dWFsaXR5KApAQCAtNTk5NywyOCArNTk5MSwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICB9IH0KIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNoZWNrSWRlbnQoTm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDaGVja1N0cmluZ0lkZW50KE5vZGUqIG5vZGUpCiB7Ci0gICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgc3RyaW5nKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jh
cnkgc3RvcmFnZSh0aGlzKTsKKworICAgIEdQUlJlZyBzdHJpbmdHUFIgPSBzdHJpbmcuZ3ByKCk7
CisgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOworCisgICAgc3BlY3VsYXRl
U3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBzdHJpbmdHUFIpOworICAgIHNwZWN1bGF0ZVN0cmluZ0lk
ZW50QW5kTG9hZFN0b3JhZ2Uobm9kZS0+Y2hpbGQxKCksIHN0cmluZ0dQUiwgc3RvcmFnZUdQUik7
CisKICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbm9kZS0+dWlkT3BlcmFuZCgpOwotICAg
IGlmICh1aWQtPmlzU3ltYm9sKCkpIHsKLSAgICAgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNo
aWxkMSgpLCBvcGVyYW5kLmdwcigpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAg
ICAgICAgIEJhZElkZW50LCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsCi0gICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAot
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wZXJhbmQuZ3ByKCksIFN5bWJv
bDo6b2Zmc2V0T2ZQcml2YXRlTmFtZSgpKSwKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRy
KHVpZCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hp
bGQxKCksIG9wZXJhbmQuZ3ByKCkpOwotICAgICAgICBzcGVjdWxhdGVTdHJpbmdJZGVudChub2Rl
LT5jaGlsZDEoKSwgb3BlcmFuZC5ncHIoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0g
ICAgICAgICAgICBCYWRJZGVudCwgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLAotICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcGVyYW5kLmdwcigpLCBK
U1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRy
KHVpZCkpKTsKLSAgICB9CisgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgQmFkSWRlbnQs
IEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwKKyAgICAgICAgbV9qaXQuYnJhbmNoUHRyKEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgc3RvcmFnZUdQUiwgVHJ1c3RlZEltbVB0cih1aWQpKSk7CiAgICAg
bm9SZXN1bHQobm9kZSk7CiB9CiAKQEAgLTgzMjAsMzYgKzgzMDcsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKE5vZGUqIG5vZGUpCiAgICAgYmxlc3NlZEJvb2xl
YW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVN5bWJvbFVudHlwZWRFcXVhbGl0eShOb2RlKiBub2RlLCBFZGdlIHN5bWJvbEVkZ2UsIEVk
Z2UgdW50eXBlZEVkZ2UpCi17Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3ltYm9sKHRoaXMs
IHN5bWJvbEVkZ2UpOwotICAgIEpTVmFsdWVPcGVyYW5kIHVudHlwZWQodGhpcywgdW50eXBlZEVk
Z2UpOwotICAgIEdQUlRlbXBvcmFyeSBsZWZ0VGVtcCh0aGlzKTsKLSAgICBHUFJUZW1wb3Jhcnkg
cmlnaHRUZW1wKHRoaXMpOwotICAgIAotICAgIEdQUlJlZyBzeW1ib2xHUFIgPSBzeW1ib2wuZ3By
KCk7Ci0gICAgSlNWYWx1ZVJlZ3MgdW50eXBlZFJlZ3MgPSB1bnR5cGVkLmpzVmFsdWVSZWdzKCk7
Ci0gICAgR1BSUmVnIGxlZnRUZW1wR1BSID0gbGVmdFRlbXAuZ3ByKCk7Ci0gICAgR1BSUmVnIHJp
Z2h0VGVtcEdQUiA9IHJpZ2h0VGVtcC5ncHIoKTsKLSAgICAKLSAgICBzcGVjdWxhdGVTeW1ib2wo
c3ltYm9sRWRnZSwgc3ltYm9sR1BSKTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBub3RD
ZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHVudHlwZWRSZWdzKTsKLSAgICBKSVRDb21waWxl
cjo6SnVtcCBpc1N5bWJvbCA9IG1faml0LmJyYW5jaElmU3ltYm9sKHVudHlwZWRSZWdzLnBheWxv
YWRHUFIoKSk7Ci0gICAgCi0gICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7Ci0gICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tMzIoMCksIGxlZnRUZW1wR1BSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBk
b25lID0gbV9qaXQuanVtcCgpOwotICAgIAotICAgIGlzU3ltYm9sLmxpbmsoJm1faml0KTsKLSAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHN5bWJvbEdQUiwgU3ltYm9sOjpv
ZmZzZXRPZlByaXZhdGVOYW1lKCkpLCBsZWZ0VGVtcEdQUik7Ci0gICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyh1bnR5cGVkUmVncy5wYXlsb2FkR1BSKCksIFN5bWJvbDo6b2Zm
c2V0T2ZQcml2YXRlTmFtZSgpKSwgcmlnaHRUZW1wR1BSKTsKLSAgICBtX2ppdC5jb21wYXJlUHRy
KEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdFRlbXBHUFIsIHJpZ2h0VGVtcEdQUiwgbGVmdFRlbXBH
UFIpOwotICAgIAotICAgIGRvbmUubGluaygmbV9qaXQpOwotICAgIHVuYmxlc3NlZEJvb2xlYW5S
ZXN1bHQobGVmdFRlbXBHUFIsIG5vZGUpOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCmluZGV4IDM1OTg0ZDhmMzQyYjY1OGVjZjE2YjliZWQzYmM3ZmEwNDY2YjIzZTIuLjUyODU0
NTE0NTJmNTM5NjVkNmQ5MGJjY2I0ZTBkNzdhMGY0YmQ1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTIzNDgsOCArMjM0OCw2IEBAIGNs
YXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdaZXJvTGVuZ3RoKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNaXNjU3RyaWN0RXEoTm9kZSopOwogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIGV4dHJhY3RTdHJpbmdJbXBsRnJvbUJpbmFy
eVN5bWJvbHMoRWRnZSBsZWZ0U3ltYm9sRWRnZSwgRWRnZSByaWdodFN5bWJvbEVkZ2UsIGNvbnN0
IEZ1bmN0b3ImKTsKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9k
ZSk7CiAgICAgdm9pZCBjb21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5KE5vZGUqLCBFZGdlIHN5
bWJvbEVkZ2UsIEVkZ2UgdW50eXBlZEVkZ2UpOwpAQCAtMjQzNiw3ICsyNDM0LDcgQEAgY2xhc3Mg
U3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsK
IAogICAgIHZvaWQgY29tcGlsZUNoZWNrVHlwZUluZm9GbGFncyhOb2RlKik7Ci0gICAgdm9pZCBj
b21waWxlQ2hlY2tJZGVudChOb2RlKik7CisgICAgdm9pZCBjb21waWxlQ2hlY2tTdHJpbmdJZGVu
dChOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVSZXAoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZURvdWJsZVJlcChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBkMjI2NzI1NzdiYmRiNmRk
NTU4NWU3ZjM4NGQ1ZTkyNzlkYmE0Y2RmLi5iYmYwMDU1NmNiMWNjODAwZTQ1NTdhZDcxNTljOGNh
MGI5Y2Y2YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE1MjUsNiArMTUyNSwzMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eShFZGdl
IGxlZnRDaGlsZAogICAgIGp1bXAobm90VGFrZW4pOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5KE5vZGUqIG5vZGUsIEVkZ2Ugc3ltYm9sRWRn
ZSwgRWRnZSB1bnR5cGVkRWRnZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzeW1ib2wo
dGhpcywgc3ltYm9sRWRnZSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdW50eXBlZCh0aGlzLCB1bnR5
cGVkRWRnZSk7CisKKyAgICBHUFJSZWcgc3ltYm9sR1BSID0gc3ltYm9sLmdwcigpOworICAgIEdQ
UlJlZyB1bnR5cGVkR1BSID0gdW50eXBlZC5wYXlsb2FkR1BSKCk7CisKKyAgICBzcGVjdWxhdGVT
eW1ib2woc3ltYm9sRWRnZSwgc3ltYm9sR1BSKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQ
YXlsb2FkKHRoaXMsIFJldXNlLCBzeW1ib2wpOworICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BS
ID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHVudHlw
ZWRDZWxsSnVtcCA9IG1faml0LmJyYW5jaElmQ2VsbCh1bnR5cGVkLmpzVmFsdWVSZWdzKCkpOwor
CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxvYWRHUFIpOworICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIHVudHlwZWROb3RDZWxsSnVtcCA9IG1faml0Lmp1bXAoKTsK
KworICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0IHdlIGNhbiBwZXJmb3JtIGEgc3Ry
YWlnaHQtZm9yd2FyZCBlcXVhbGl0eSBjb21wYXJpc29uIG9uIHBvaW50ZXIKKyAgICAvLyB2YWx1
ZXMgYmVjYXVzZSB3ZSBhcmUgZG9pbmcgc3RyaWN0IGVxdWFsaXR5LgorICAgIHVudHlwZWRDZWxs
SnVtcC5saW5rKCZtX2ppdCk7CisgICAgbV9qaXQuY29tcGFyZTMyKE1hY3JvQXNzZW1ibGVyOjpF
cXVhbCwgc3ltYm9sR1BSLCB1bnR5cGVkR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKKworICAgIHVu
dHlwZWROb3RDZWxsSnVtcC5saW5rKCZtX2ppdCk7CisgICAgYm9vbGVhblJlc3VsdChyZXN1bHRQ
YXlsb2FkR1BSLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMy
Q29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBj
b25kaXRpb24pCiB7CiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CkBAIC00MzMyLDggKzQzNTksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ2hlY2tJ
ZGVudDoKLSAgICAgICAgY29tcGlsZUNoZWNrSWRlbnQobm9kZSk7CisgICAgY2FzZSBDaGVja1N0
cmluZ0lkZW50OgorICAgICAgICBjb21waWxlQ2hlY2tTdHJpbmdJZGVudChub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI0ODk5NTZjN2Rm
NWNlYmMwZjA4YjE2YjZhOWFmNTA3ZTE0YTg4NWQuLjVmOTNiMWFlY2ZlMzNmM2FkYWJkZWUzZmU4
NTg3M2I4ZmFhN2YxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTYwNyw2ICsxNjA3LDI0IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KEVkZ2Ug
bGVmdENoaWxkCiAgICAganVtcChub3RUYWtlbik7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTeW1ib2xVbnR5cGVkRXF1YWxpdHkoTm9kZSogbm9kZSwgRWRnZSBzeW1ib2xFZGdl
LCBFZGdlIHVudHlwZWRFZGdlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN5bWJvbCh0
aGlzLCBzeW1ib2xFZGdlKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB1bnR5cGVkKHRoaXMsIHVudHlw
ZWRFZGdlKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBzeW1ib2wsIHVu
dHlwZWQpOworCisgICAgR1BSUmVnIHN5bWJvbEdQUiA9IHN5bWJvbC5ncHIoKTsKKyAgICBHUFJS
ZWcgdW50eXBlZEdQUiA9IHVudHlwZWQuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChzeW1ib2xFZGdlLCBzeW1ib2xHUFIp
OworCisgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgd2UgY2FuIHBlcmZvcm0gYSBz
dHJhaWdodC1mb3J3YXJkIGVxdWFsaXR5IGNvbXBhcmlzb24gb24gcG9pbnRlcgorICAgIC8vIHZh
bHVlcyBiZWNhdXNlIHdlIGFyZSBkb2luZyBzdHJpY3QgZXF1YWxpdHkuCisgICAgbV9qaXQuY29t
cGFyZTY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgc3ltYm9sR1BSLCB1bnR5cGVkR1BSLCByZXN1
bHRHUFIpOworICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30K
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyQ29tcGFyZShOb2RlKiBub2RlLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5pc0ludDMyQ29uc3RhbnQoKSkgewpAQCAtNDI4MSw4ICs0Mjk5LDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBjYXNlIENoZWNrSWRlbnQ6Ci0gICAgICAgIGNvbXBpbGVDaGVja0lk
ZW50KG5vZGUpOworICAgIGNhc2UgQ2hlY2tTdHJpbmdJZGVudDoKKyAgICAgICAgY29tcGlsZUNo
ZWNrU3RyaW5nSWRlbnQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBHZXRFeGVj
dXRhYmxlOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDIxMjU4MGZkYWI3YWRiYmMxNWY1NTg4YjVlNTNjMzcy
ZjI4OWE1MmEuLmNmZjA1YTgwOTI2ODJlN2IwMTdmN2RkYTc2MWI3M2RiNWQ1M2ZjYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCkBAIC0xMDIsOCArMTAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
ewogICAgIG1hY3JvKFN0cnVjdHVyZV9jbGFzc0luZm8sIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwgU3Ry
dWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1Y3R1
cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSBcCi0gICAgbWFjcm8oU3ltYm9s
X3ByaXZhdGVOYW1lLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSkKKyAgICBtYWNybyhT
dHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkKIAog
I2RlZmluZSBGT1JfRUFDSF9JTkRFWEVEX0FCU1RSQUNUX0hFQVAobWFjcm8pIFwKICAgICBtYWNy
byhEaXJlY3RBcmd1bWVudHNfc3RvcmFnZSwgRGlyZWN0QXJndW1lbnRzOjpzdG9yYWdlT2Zmc2V0
KCksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAzZTM5MmU5NWRjNzA4YTU5YTg4OWFkMjgyMjk5
NmI1NGZhN2JjNDM3Li5hZmM1MjcyMDg5ODQ3MDA2YTJmZjgyNzBlMmQwN2EzZDA2ZjY3OTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
MjgsNyArMTI4LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2Fz
ZSBDaGVja05vdEVtcHR5OgotICAgIGNhc2UgQ2hlY2tJZGVudDoKKyAgICBjYXNlIENoZWNrU3Ry
aW5nSWRlbnQ6CiAgICAgY2FzZSBDaGVja1dhdGNoZG9nVGltZXI6CiAgICAgY2FzZSBTdHJpbmdD
aGFyQ29kZUF0OgogICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDg0YzhiZjQ1MGM4MzlhYjBj
ZTIzYmFjZGI1Y2VlYjRlMmJiYTg1MTUuLmMyNmVlZTRlMzYxOWIyNjM3ZGZkM2EzY2ZlZWRjNWQ3
MTM2MThjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKQEAgLTYwMiw4ICs2MDIsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBj
YXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgICAgIGNvbXBpbGVDaGVja0JhZENlbGwoKTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoZWNrSWRlbnQ6Ci0gICAgICAgICAgICBj
b21waWxlQ2hlY2tJZGVudCgpOworICAgICAgICBjYXNlIENoZWNrU3RyaW5nSWRlbnQ6CisgICAg
ICAgICAgICBjb21waWxlQ2hlY2tTdHJpbmdJZGVudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICAgICAgICAgIGNvbXBpbGVHZXRFeGVjdXRh
YmxlKCk7CkBAIC0yNDc3LDE3ICsyNDc3LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIHNwZWN1bGF0ZShURFpGYWlsdXJlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmlzWmVy
bzY0KGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICB9CiAKLSAgICB2b2lkIGNv
bXBpbGVDaGVja0lkZW50KCkKKyAgICB2b2lkIGNvbXBpbGVDaGVja1N0cmluZ0lkZW50KCkKICAg
ICB7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX25vZGUtPnVpZE9wZXJhbmQo
KTsKLSAgICAgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkgewotICAgICAgICAgICAgTFZhbHVlIHN0
cmluZ0ltcGwgPSBsb3dTeW1ib2xVSUQobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBz
cGVjdWxhdGUoQmFkSWRlbnQsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubm90RXF1YWwoc3Ry
aW5nSW1wbCwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSkpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgTFZhbHVlIHN0cmluZyA9IGxvd1N0cmluZ0lkZW50KG1fbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgTFZhbHVlIHN0cmluZ0ltcGwgPSBtX291dC5sb2FkUHRyKHN0cmluZywg
bV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGUoQmFkSWRlbnQs
IG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubm90RXF1YWwoc3RyaW5nSW1wbCwgbV9vdXQuY29u
c3RJbnRQdHIodWlkKSkpOwotICAgICAgICB9CisgICAgICAgIExWYWx1ZSBzdHJpbmcgPSBsb3dT
dHJpbmdJZGVudChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHN0cmluZ0ltcGwg
PSBtX291dC5sb2FkUHRyKHN0cmluZywgbV9oZWFwcy5KU1N0cmluZ192YWx1ZSk7CisgICAgICAg
IHNwZWN1bGF0ZShCYWRJZGVudCwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5ub3RFcXVhbChz
dHJpbmdJbXBsLCBtX291dC5jb25zdEludFB0cih1aWQpKSk7CiAgICAgfQogCiAgICAgdm9pZCBj
b21waWxlR2V0RXhlY3V0YWJsZSgpCkBAIC01MDM5LDkgKzUwMzQsOSBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KFN5bWJvbFVzZSkpIHsKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0U3RyaW5nSW1wbCA9IGxvd1N5
bWJvbFVJRChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByaWdodFN0cmlu
Z0ltcGwgPSBsb3dTeW1ib2xVSUQobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBzZXRC
b29sZWFuKG1fb3V0LmVxdWFsKGxlZnRTdHJpbmdJbXBsLCByaWdodFN0cmluZ0ltcGwpKTsKKyAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0U3ltYm9sID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0U3ltYm9sID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5lcXVhbChsZWZ0U3ltYm9sLCBy
aWdodFN5bWJvbCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApA
QCAtNTA1MiwzMyArNTA0NywxMCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAg
aWYgKHN5bWJvbEVkZ2UudXNlS2luZCgpICE9IFN5bWJvbFVzZSkKICAgICAgICAgICAgICAgICBz
dGQ6OnN3YXAoc3ltYm9sRWRnZSwgdW50eXBlZEVkZ2UpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBMVmFsdWUgbGVmdFN0cmluZ0ltcGwgPSBsb3dTeW1ib2xVSUQoc3ltYm9sRWRnZSk7Cisg
ICAgICAgICAgICBMVmFsdWUgbGVmdFN5bWJvbCA9IGxvd1N5bWJvbChzeW1ib2xFZGdlKTsKICAg
ICAgICAgICAgIExWYWx1ZSB1bnR5cGVkVmFsdWUgPSBsb3dKU1ZhbHVlKHVudHlwZWRFZGdlKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBpc1N5bWJvbENhc2UgPSBtX291
dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
bm90U3ltYm9sUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7Ci0gICAg
ICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgaXNDZWxsKHVudHlwZWRWYWx1
ZSwgcHJvdmVuVHlwZSh1bnR5cGVkRWRnZSkpLAotICAgICAgICAgICAgICAgIHVuc3VyZShpc0Nl
bGxDYXNlKSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIGlzU3lt
Ym9sQ2FzZSk7Ci0gICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgaXNT
eW1ib2wodW50eXBlZFZhbHVlLCBwcm92ZW5UeXBlKHVudHlwZWRFZGdlKSksCi0gICAgICAgICAg
ICAgICAgdW5zdXJlKGlzU3ltYm9sQ2FzZSksIHVuc3VyZShjb250aW51YXRpb24pKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNTeW1ib2xDYXNlLCBjb250aW51
YXRpb24pOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc3ltYm9sUmVzdWx0ID0KLSAgICAg
ICAgICAgICAgICBtX291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFs
KAotICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cih1bnR5cGVkVmFsdWUsIG1f
aGVhcHMuU3ltYm9sX3ByaXZhdGVOYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRT
dHJpbmdJbXBsKSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwotICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIG5vdFN5bWJvbFJl
c3VsdCwgc3ltYm9sUmVzdWx0KSk7CisKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQuZXF1
YWwobGVmdFN5bWJvbCwgdW50eXBlZFZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgCkBAIC05ODcyLDE2ICs5ODQ0LDYgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGxvd1N5
bWJvbFVJRChFZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRp
Y09wZXJhbmRTcGVjdWxhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChTeW1ib2wqIHN5bWJvbCA9
IGVkZ2UtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3ltYm9sKj4oKSkKLSAgICAgICAgICAgIHJldHVy
biBtX291dC5jb25zdEludFB0cihzeW1ib2wtPnByaXZhdGVOYW1lKCkudWlkKCkpOwotICAgICAg
ICBMVmFsdWUgc3ltYm9sID0gbG93U3ltYm9sKGVkZ2UsIG1vZGUpOwotICAgICAgICAvLyBGSVhN
RTogV2UgY291bGQgYXZvaWQgdGhpcyBsb2FkIGlmIHdlIGhhZCBoYXNoLWNvbnNlZCBTeW1ib2xz
LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4
OTA4Ci0gICAgICAgIHJldHVybiBtX291dC5sb2FkUHRyKHN5bWJvbCwgbV9oZWFwcy5TeW1ib2xf
cHJpdmF0ZU5hbWUpOwotICAgIH0KLQogICAgIExWYWx1ZSBsb3dOb25OdWxsT2JqZWN0KEVkZ2Ug
ZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3BlcmFuZFNwZWN1
bGF0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggNWIxYWJiODdlZDQwM2M3ZmI0MmE4NmIwYzg4YTI3MmUz
ZWFkOWRmOC4uNWMzNjA2NmUyNzJlNmZmNWZmZjZkYTU5YjczYmFlMmQxZjg0YTgxZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC0zOTUsMTAgKzM5NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOwogCiAgICAgICAgIC8v
IElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCi0gICAg
ICAgIHZvaWQgZW1pdElkZW50aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQg
c2NyYXRjaCwgY29uc3QgSWRlbnRpZmllciYsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOworICAgICAg
ICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhCeVZhbEluZm8qLCBSZWdpc3RlcklEIGNl
bGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgY29uc3QgSWRlbnRpZmllciYsIEp1bXBMaXN0JiBzbG93
Q2FzZXMpOwogCi0gICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZW1pdEdldEJ5VmFsV2l0aENh
Y2hlZElkKEluc3RydWN0aW9uKiwgY29uc3QgSWRlbnRpZmllciYsIEp1bXAmIGZhc3REb25lQ2Fz
ZSwgSnVtcCYgc2xvd0RvbmVDYXNlLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKLSAgICAgICAgSklU
UHV0QnlJZEdlbmVyYXRvciBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoSW5zdHJ1Y3Rpb24qLCBQ
dXRLaW5kLCBjb25zdCBJZGVudGlmaWVyJiwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3Qm
IHNsb3dDYXNlcyk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZW1pdEdldEJ5VmFsV2l0
aENhY2hlZElkKEJ5VmFsSW5mbyosIEluc3RydWN0aW9uKiwgY29uc3QgSWRlbnRpZmllciYsIEp1
bXAmIGZhc3REb25lQ2FzZSwgSnVtcCYgc2xvd0RvbmVDYXNlLCBKdW1wTGlzdCYgc2xvd0Nhc2Vz
KTsKKyAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQo
QnlWYWxJbmZvKiwgSW5zdHJ1Y3Rpb24qLCBQdXRLaW5kLCBjb25zdCBJZGVudGlmaWVyJiwgSnVt
cExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKICAgICAgICAgZW51bSBG
aW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBLbm93bk5vdEZpbmFsIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGRhODgxYzY0MTY3NDNm
NTUwNzIzOTBmMjRlZjIzMzk4NDJkZGU1ZDguLjM3MGEyNGRkYmM0MWFmM2Y4OTBmYjY1MjY1NGVj
MzU0NTMzMjk2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcApAQCAtNjEyLDcgKzYxMiw3IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5UHV0
QnlWYWxPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlCiAKICAgICBp
ZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgaXNTdHJpbmdPclN5bWJvbChzdWJzY3JpcHQpKSB7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJv
cGVydHlLZXkoZXhlYyk7Ci0gICAgICAgIGlmICghc3Vic2NyaXB0LmlzU3RyaW5nKCkgfHwgIXBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9s
KCkgfHwgIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgQVNTRVJUKGV4
ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkpOwogICAgICAgICAgICAgQVNTRVJUKCFieVZhbEluZm8tPnN0
dWJSb3V0aW5lKTsKICAgICAgICAgICAgIGlmIChieVZhbEluZm8tPnNlZW4pIHsKQEAgLTYyNCw4
ICs2MjQsMTIgQEAgc3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlQdXRCeVZhbE9wdGltaXpl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUKICAgICAgICAgICAgICAgICAgICAg
b3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgICAgICAg
ICBieVZhbEluZm8tPnNlZW4gPSB0cnVlOwogICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2Fj
aGVkSWQgPSBwcm9wZXJ0eU5hbWU7CisgICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5
bWJvbCgpKQorICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZFN5bWJvbC5zZXQo
dm0sIGNvZGVCbG9jaywgYXNTeW1ib2woc3Vic2NyaXB0KSk7CiAgICAgICAgICAgICAgICAgb3B0
aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtNjkwLDkgKzY5NCw3IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25S
ZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBvCiAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6
OkdpdmVVcDsKICAgICB9IGVsc2UgaWYgKGlzU3RyaW5nT3JTeW1ib2woc3Vic2NyaXB0KSkgewog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGV4ZWMpOwotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSk7Ci0KLSAgICAgICAgaWYgKCFzdWJzY3JpcHQuaXNTdHJpbmcoKSB8
fCAhaW5kZXgpIHsKKyAgICAgICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIEFTU0VSVChleGVjLT5ieXRlY29kZU9m
ZnNldCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGluZSk7CiAg
ICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7CkBAIC03MDQsOCArNzA2LDEyIEBAIHN0
YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBvCiAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJl
c3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5z
ZWVuID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZElkID0gcHJvcGVy
dHlOYW1lOworICAgICAgICAgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2woKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRTeW1ib2wuc2V0KHZtLCBjb2RlQmxvY2ss
IGFzU3ltYm9sKHN1YnNjcmlwdCkpOwogICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3Vs
dCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTE2ODYsNyArMTY5Miw3IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5R2V0
QnlWYWxPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlCiAKICAgICBp
ZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgaXNTdHJpbmdPclN5bWJvbChzdWJzY3JpcHQpKSB7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJv
cGVydHlLZXkoZXhlYyk7Ci0gICAgICAgIGlmICghc3Vic2NyaXB0LmlzU3RyaW5nKCkgfHwgIXBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAoc3Vic2NyaXB0LmlzU3ltYm9s
KCkgfHwgIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgQVNTRVJUKGV4
ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkpOwogICAgICAgICAgICAgQVNTRVJUKCFieVZhbEluZm8tPnN0
dWJSb3V0aW5lKTsKICAgICAgICAgICAgIGlmIChieVZhbEluZm8tPnNlZW4pIHsKQEAgLTE2OTgs
MTEgKzE3MDQsMTQgQEAgc3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlHZXRCeVZhbE9wdGlt
aXplKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUKICAgICAgICAgICAgICAgICAg
ICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgICAg
ICAgICBieVZhbEluZm8tPnNlZW4gPSB0cnVlOwogICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+
Y2FjaGVkSWQgPSBwcm9wZXJ0eU5hbWU7CisgICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdC5p
c1N5bWJvbCgpKQorICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPmNhY2hlZFN5bWJvbC5z
ZXQodm0sIGNvZGVCbG9jaywgYXNTeW1ib2woc3Vic2NyaXB0KSk7CiAgICAgICAgICAgICAgICAg
b3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZTsKICAgICAg
ICAgICAgIH0KLQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDlkMTM0NGUxNWNjZTY1NDFkZGMzZTUy
YWE5NTdmNjhhMjE4MDZlMTMuLjE0ZmI5NDBiNzdlZWE0OTNkNjAzYjFhNThhYmU0NmFmYWYxYzM0
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCkBAIC0yMDksNyArMjA5LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3Jh
Z2VMb2FkKEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICByZXR1cm4g
c2xvd0Nhc2VzOwogfQogCi1KSVRHZXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdEdldEJ5VmFsV2l0
aENhY2hlZElkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSnVtcCYgZmFzdERvbmVDYXNlLCBKdW1wJiBzbG93RG9uZUNhc2Us
IEp1bXBMaXN0JiBzbG93Q2FzZXMpCitKSVRHZXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdEdldEJ5
VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXAmIGZhc3RE
b25lQ2FzZSwgSnVtcCYgc2xvd0RvbmVDYXNlLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQogewogICAg
IC8vIGJhc2U6IHJlZ1QwCiAgICAgLy8gcHJvcGVydHk6IHJlZ1QxCkBAIC0yMTgsNyArMjE4LDcg
QEAgSklUR2V0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW8KICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdEpT
Q2VsbChyZWdUMSkpOwotICAgIGVtaXRJZGVudGlmaWVyQ2hlY2socmVnVDEsIHJlZ1QzLCBwcm9w
ZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CisgICAgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKGJ5VmFs
SW5mbywgcmVnVDEsIHJlZ1QzLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CiAKICAgICBKSVRH
ZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKQEAgLTQyOCw3ICs0MjgsNyBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFBhdAogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVFB1dEJ5
SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgUHV0S2luZCBwdXRLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCitKSVRQ
dXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyog
YnlWYWxJbmZvLCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQdXRLaW5kIHB1dEtp
bmQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywg
SnVtcExpc3QmIHNsb3dDYXNlcykKIHsKICAgICAvLyBiYXNlOiByZWdUMAogICAgIC8vIHByb3Bl
cnR5OiByZWdUMQpAQCAtNDM4LDcgKzQzOCw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjpl
bWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvCiAg
ICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIHNs
b3dDYXNlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMSkpOwotICAgIGVtaXRJZGVu
dGlmaWVyQ2hlY2socmVnVDEsIHJlZ1QxLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CisgICAg
ZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKGJ5VmFsSW5mbywgcmVnVDEsIHJlZ1QxLCBwcm9wZXJ0
eU5hbWUsIHNsb3dDYXNlcyk7CiAKICAgICAvLyBXcml0ZSBiYXJyaWVyIGJyZWFrcyB0aGUgcmVn
aXN0ZXJzLiBTbyBhZnRlciBpc3N1aW5nIHRoZSB3cml0ZSBiYXJyaWVyLAogICAgIC8vIHJlbG9h
ZCB0aGUgcmVnaXN0ZXJzLgpAQCAtMTI1MywxNiArMTI1MywxNSBAQCB2b2lkIEpJVDo6ZW1pdFdy
aXRlQmFycmllcihKU0NlbGwqIG93bmVyKQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIG93bmVyKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRJ
ZGVudGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIHNsb3dDYXNlcykKK3ZvaWQgSklU
OjplbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soQnlWYWxJbmZvKiBieVZhbEluZm8sIFJlZ2lzdGVy
SUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCiB7Ci0gICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJv
bCgpKSB7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFs
LCBBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fdm0tPnN5bWJv
bFN0cnVjdHVyZS5nZXQoKSkpOwotICAgICAgICBsb2FkUHRyKEFkZHJlc3MoY2VsbCwgU3ltYm9s
OjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpLCBzY3JhdGNoKTsKLSAgICB9IGVsc2UgeworICAgIGlm
IChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2hQdHIoTm90RXF1YWwsIGNlbGwsIFRydXN0ZWRJbW1QdHIoYnlWYWxJbmZvLT5jYWNoZWRTeW1i
b2wuZ2V0KCkpKSk7CisgICAgZWxzZSB7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNo
U3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MoY2VsbCwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHNjcmF0Y2gpOworICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZElt
bVB0cihwcm9wZXJ0eU5hbWUuaW1wbCgpKSkpOwogICAgIH0KLSAgICBzbG93Q2FzZXMuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbVB0cihwcm9wZXJ0eU5hbWUu
aW1wbCgpKSkpOwogfQogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeVZhbChCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1v
ZGUgYXJyYXlNb2RlKQpAQCAtMTMyNSw3ICsxMzI0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJl
c3MKICAgICBKdW1wIHNsb3dEb25lQ2FzZTsKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbiA9IGVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHByb3BlcnR5TmFtZSwgZmFzdERvbmVDYXNlLCBzbG93RG9uZUNhc2Us
IHNsb3dDYXNlcyk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4gPSBlbWl0R2V0QnlWYWxX
aXRoQ2FjaGVkSWQoYnlWYWxJbmZvLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHByb3BlcnR5TmFtZSwg
ZmFzdERvbmVDYXNlLCBzbG93RG9uZUNhc2UsIHNsb3dDYXNlcyk7CiAKICAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKCptX3ZtLCAqdGhpcywgbV9jb2RlQmxvY2spOwpAQCAtMTQxNCw3ICsxNDEzLDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZv
KiBieVZhbEluZm8sIFJldHVybkFkZHJlc3MKICAgICBKdW1wTGlzdCBkb25lQ2FzZXM7CiAgICAg
SnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4gPSBlbWl0
UHV0QnlWYWxXaXRoQ2FjaGVkSWQoY3VycmVudEluc3RydWN0aW9uLCBwdXRLaW5kLCBwcm9wZXJ0
eU5hbWUsIGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKKyAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdl
biA9IGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChieVZhbEluZm8sIGN1cnJlbnRJbnN0cnVjdGlv
biwgcHV0S2luZCwgcHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7CiAKICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywgbV9jb2RlQmxvY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5k
ZXggMWQ2NTYyNDdkZDNkYTQwODJlZGZmNGNlMzAzYjllODI3YjRjZGIyZi4uMmNlNTBhMmFjMGQ3
NGVlOTA1ZjY0ODY4NGNhYjc3Nzc1YzkxMTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0yNzksNyArMjc5LDcg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKEluc3RydWN0aW9uKiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVRH
ZXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdEdldEJ5VmFsV2l0aENhY2hlZElkKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSnVt
cCYgZmFzdERvbmVDYXNlLCBKdW1wJiBzbG93RG9uZUNhc2UsIEp1bXBMaXN0JiBzbG93Q2FzZXMp
CitKSVRHZXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdEdldEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEp1bXAmIGZhc3REb25lQ2FzZSwgSnVtcCYgc2xvd0Rv
bmVDYXNlLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCkBAIC0yODgsNyArMjg4LDcgQEAgSklUR2V0QnlJZEdl
bmVyYXRvciBKSVQ6OmVtaXRHZXRCeVZhbFdpdGhDYWNoZWRJZChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW8KICAgICAvLyBzY3JhdGNoOiByZWdUNAogCiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSkpOwotICAgIGVtaXRJZGVudGlmaWVyQ2hlY2socmVnVDIsIHJlZ1Q0LCBwcm9wZXJ0eU5hbWUs
IHNsb3dDYXNlcyk7CisgICAgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKGJ5VmFsSW5mbywgcmVn
VDIsIHJlZ1Q0LCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CiAKICAgICBKSVRHZXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9m
ZnNldCksIENhbGxTaXRlSW5kZXgoY3VycmVudEluc3RydWN0aW9uKSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLApAQCAtNDg1LDcgKzQ4NSw3IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgUGF0CiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUUHV0QnlJZEdlbmVy
YXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBQdXRLaW5kIHB1dEtpbmQsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykKK0pJVFB1dEJ5SWRH
ZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbElu
Zm8sIEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFB1dEtpbmQgcHV0S2luZCwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlz
dCYgc2xvd0Nhc2VzKQogewogICAgIC8vIGJhc2U6IHRhZyhyZWdUMSksIHBheWxvYWQocmVnVDAp
CiAgICAgLy8gcHJvcGVydHk6IHRhZyhyZWdUMyksIHBheWxvYWQocmVnVDIpCkBAIC00OTQsNyAr
NDk0LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJ
ZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW8KICAgICBpbnQgdmFsdWUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gz
MihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAg
IGVtaXRJZGVudGlmaWVyQ2hlY2socmVnVDIsIHJlZ1QyLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNl
cyk7CisgICAgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKGJ5VmFsSW5mbywgcmVnVDIsIHJlZ1Qy
LCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CiAKICAgICAvLyBXcml0ZSBiYXJyaWVyIGJyZWFr
cyB0aGUgcmVnaXN0ZXJzLiBTbyBhZnRlciBpc3N1aW5nIHRoZSB3cml0ZSBiYXJyaWVyLAogICAg
IC8vIHJlbG9hZCB0aGUgcmVnaXN0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBiOGRkMjJhYTgwZThlZWMyNGQ4YTI0MzcyMTA0MDAxMzYy
YzNkNzYyLi5kNzY2ZTQyMTIwYTYyOTRkZWJlNmIwNjgxNTJkZDc1NmE5NDcwMDJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjUyLDcgKzI1
Miw5IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKHVucmVzb2x2ZWQp
Iik7CiAgICAgICAgICAgICBvdXQucHJpbnQoIjogIiwgaW1wbCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKFN0cnVjdHVyZTo6aW5mbygp
KSkKKyAgICAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNz
T2YoU3ltYm9sOjppbmZvKCkpKQorICAgICAgICAgICAgb3V0LnByaW50KCJTeW1ib2w6ICIsIFJh
d1BvaW50ZXIoYXNDZWxsKCkpKTsKKyAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLT5jbGFzc0lu
Zm8oKS0+aXNTdWJDbGFzc09mKFN0cnVjdHVyZTo6aW5mbygpKSkKICAgICAgICAgICAgIG91dC5w
cmludCgiU3RydWN0dXJlOiAiLCBpbkNvbnRleHQoKmpzQ2FzdDxTdHJ1Y3R1cmUqPihhc0NlbGwo
KSksIGNvbnRleHQpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIkNl
bGw6ICIsIFJhd1BvaW50ZXIoYXNDZWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDgwMmViMjcxYWI5OWMxZGEzZjZm
MGE4OTFkZTQyNDJhNWU2NTc4NzcuLjM0ZjNlZGE4N2VlOWIxNmE4OTdkN2ZhMjcwMThiN2U5NjVh
MDExZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaApAQCAtOTQxLDcgKzk0MSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVl
OjplcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWCiAg
ICAgICAgIGJvb2wgc3ltMiA9IHYyLmlzU3ltYm9sKCk7CiAgICAgICAgIGlmIChzeW0xIHx8IHN5
bTIpIHsKICAgICAgICAgICAgIGlmIChzeW0xICYmIHN5bTIpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGFzU3ltYm9sKHYxKS0+cHJpdmF0ZU5hbWUoKSA9PSBhc1N5bWJvbCh2MiktPnByaXZhdGVO
YW1lKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFzU3ltYm9sKHYxKSA9PSBhc1N5bWJvbCh2
Mik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtOTcwLDkgKzk3
MCw2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpzdHJpY3RFcXVhbFNsb3dDYXNlSW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2CiAKICAgICBpZiAodjEuYXNDZWxsKCktPmlz
U3RyaW5nKCkgJiYgdjIuYXNDZWxsKCktPmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBXVEY6
OmVxdWFsKCphc1N0cmluZyh2MSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgKmFzU3RyaW5nKHYyKS0+
dmFsdWUoZXhlYykuaW1wbCgpKTsKLSAgICBpZiAodjEuYXNDZWxsKCktPmlzU3ltYm9sKCkgJiYg
djIuYXNDZWxsKCktPmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBhc1N5bWJvbCh2MSktPnBy
aXZhdGVOYW1lKCkgPT0gYXNTeW1ib2wodjIpLT5wcml2YXRlTmFtZSgpOwotCiAgICAgcmV0dXJu
IHYxID09IHYyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCmluZGV4IDU4YmYyM2FjYWQ1MDQ3NTQ3MDFkNWJiNGNmN2M1MGMxMjA3YmY5MzguLmVh
ZTc5YzU4MWQzMjc4OTVkNzZmYjlkM2Q5MmQ2Mjg0OGEzMjdjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC01NzUsNyArNTc1LDcgQEAgdm9p
ZCBKU0Z1bmN0aW9uOjpzZXRGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlKQogICAgICAgICBpZiAodWlkLT5pc051bGxTeW1ib2woKSkKICAgICAgICAgICAgIG5hbWUg
PSBlbXB0eVN0cmluZygpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuYW1lID0gbWFrZVN0
cmluZygiWyIsIFN0cmluZyhhc1N5bWJvbCh2YWx1ZSktPnByaXZhdGVOYW1lKCkudWlkKCkpLCAn
XScpOworICAgICAgICAgICAgbmFtZSA9IG1ha2VTdHJpbmcoJ1snLCBTdHJpbmcodWlkKSwgJ10n
KTsKICAgICB9IGVsc2UgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBK
U1N0cmluZyoganNTdHIgPSB2YWx1ZS50b1N0cmluZyhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcERhdGEuaAppbmRleCA3NGIyZjk4MzJjNGVlN2YzMmUwYmE3M2NmOTM4ZTky
YzczY2IwZjVkLi5hMjA3MDU4ODJmMGYxYzdlZTRkZTRmNzlmYThmN2VhY2Y5NDUzMDE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCkBAIC0xMTksNyArMTE5LDYgQEAg
Y2xhc3MgTWFwRGF0YUltcGwgewogICAgIHR5cGVkZWYgSGFzaE1hcDxKU0NlbGwqLCBpbnQzMl90
LCB0eXBlbmFtZSBXVEY6OkRlZmF1bHRIYXNoPEpTQ2VsbCo+OjpIYXNoLCBXVEY6Okhhc2hUcmFp
dHM8SlNDZWxsKj4sIEluZGV4VHJhaXRzPiBDZWxsS2V5ZWRNYXA7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRK
U1ZhbHVlSGFzaFRyYWl0cywgSW5kZXhUcmFpdHM+IFZhbHVlS2V5ZWRNYXA7CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZ0ltcGwqLCBpbnQzMl90LCB0eXBlbmFtZSBXVEY6OkRlZmF1bHRIYXNo
PFN0cmluZ0ltcGwqPjo6SGFzaCwgV1RGOjpIYXNoVHJhaXRzPFN0cmluZ0ltcGwqPiwgSW5kZXhU
cmFpdHM+IFN0cmluZ0tleWVkTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTeW1ib2xJbXBsKiwg
aW50MzJfdCwgdHlwZW5hbWUgV1RGOjpQdHJIYXNoPFN5bWJvbEltcGwqPiwgV1RGOjpIYXNoVHJh
aXRzPFN5bWJvbEltcGwqPiwgSW5kZXhUcmFpdHM+IFN5bWJvbEtleWVkTWFwOwogCiAgICAgQUxX
QVlTX0lOTElORSBFbnRyeSogZmluZChFeGVjU3RhdGUqLCBLZXlUeXBlKTsKICAgICBBTFdBWVNf
SU5MSU5FIEVudHJ5KiBhZGQoRXhlY1N0YXRlKiwgSlNDZWxsKiBvd25lciwgS2V5VHlwZSk7CkBA
IC0xMzQsNyArMTMzLDYgQEAgY2xhc3MgTWFwRGF0YUltcGwgewogICAgIENlbGxLZXllZE1hcCBt
X2NlbGxLZXllZFRhYmxlOwogICAgIFZhbHVlS2V5ZWRNYXAgbV92YWx1ZUtleWVkVGFibGU7CiAg
ICAgU3RyaW5nS2V5ZWRNYXAgbV9zdHJpbmdLZXllZFRhYmxlOwotICAgIFN5bWJvbEtleWVkTWFw
IG1fc3ltYm9sS2V5ZWRUYWJsZTsKICAgICBpbnQzMl90IG1fY2FwYWNpdHk7CiAgICAgaW50MzJf
dCBtX3NpemU7CiAgICAgaW50MzJfdCBtX2RlbGV0ZWRDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGFJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBEYXRhSW5saW5lcy5oCmluZGV4IDM4ZjVmZmU2MGFmYzNmYjJh
YmZlYTBmNTQwNTgwOGUwOWMxYTNmZjMuLjU0ZjlhZTFmNmJkN2QwYzAxZTk3NDdkMWE1NjUwZGZk
Y2RlMTZhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERh
dGFJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlu
bGluZXMuaApAQCAtNDMsNyArNDMsNiBAQCBpbmxpbmUgdm9pZCBNYXBEYXRhSW1wbDxFbnRyeSwg
SlNJdGVyYXRvcj46OmNsZWFyKCkKICAgICBtX2NlbGxLZXllZFRhYmxlLmNsZWFyKCk7CiAgICAg
bV92YWx1ZUtleWVkVGFibGUuY2xlYXIoKTsKICAgICBtX3N0cmluZ0tleWVkVGFibGUuY2xlYXIo
KTsKLSAgICBtX3N5bWJvbEtleWVkVGFibGUuY2xlYXIoKTsKICAgICBtX2NhcGFjaXR5ID0gMDsK
ICAgICBtX3NpemUgPSAwOwogICAgIG1fZGVsZXRlZENvdW50ID0gMDsKQEAgLTYyLDEyICs2MSw2
IEBAIGlubGluZSBFbnRyeSogTWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0b3I+OjpmaW5kKEV4
ZWNTdGF0ZSogZXhlYywgS2V5VHlwZSBrZXkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgcmV0dXJuICZtX2VudHJpZXMuZ2V0KClbaXRlci0+dmFsdWVdOwogICAgIH0KLSAgICBpZiAo
a2V5LnZhbHVlLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgYXV0byBpdGVyID0gbV9zeW1ib2xLZXll
ZFRhYmxlLmZpbmQoYXNTeW1ib2woa2V5LnZhbHVlKS0+cHJpdmF0ZU5hbWUoKS51aWQoKSk7Ci0g
ICAgICAgIGlmIChpdGVyID09IG1fc3ltYm9sS2V5ZWRUYWJsZS5lbmQoKSkKLSAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICByZXR1cm4gJm1fZW50cmllcy5nZXQoKVtpdGVyLT52YWx1ZV07
Ci0gICAgfQogICAgIGlmIChrZXkudmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgYXV0byBpdGVy
ID0gbV9jZWxsS2V5ZWRUYWJsZS5maW5kKGtleS52YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlm
IChpdGVyID09IG1fY2VsbEtleWVkVGFibGUuZW5kKCkpCkBAIC0xMjAsOCArMTEzLDYgQEAgaW5s
aW5lIEVudHJ5KiBNYXBEYXRhSW1wbDxFbnRyeSwgSlNJdGVyYXRvcj46OmFkZChFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogb3duZXIKIHsKICAgICBpZiAoa2V5LnZhbHVlLmlzU3RyaW5nKCkpCiAg
ICAgICAgIHJldHVybiBhZGQoZXhlYywgb3duZXIsIG1fc3RyaW5nS2V5ZWRUYWJsZSwgYXNTdHJp
bmcoa2V5LnZhbHVlKS0+dmFsdWUoZXhlYykuaW1wbCgpLCBrZXkpOwotICAgIGlmIChrZXkudmFs
dWUuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIGFkZChleGVjLCBvd25lciwgbV9zeW1ib2xL
ZXllZFRhYmxlLCBhc1N5bWJvbChrZXkudmFsdWUpLT5wcml2YXRlTmFtZSgpLnVpZCgpLCBrZXkp
OwogICAgIGlmIChrZXkudmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBhZGQoZXhlYywg
b3duZXIsIG1fY2VsbEtleWVkVGFibGUsIGtleS52YWx1ZS5hc0NlbGwoKSwga2V5KTsKICAgICBy
ZXR1cm4gYWRkKGV4ZWMsIG93bmVyLCBtX3ZhbHVlS2V5ZWRUYWJsZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGtleS52YWx1ZSksIGtleSk7CkBAIC0xNDUsMTIgKzEzNiw2IEBAIGlubGluZSBib29sIE1hcERh
dGFJbXBsPEVudHJ5LCBKU0l0ZXJhdG9yPjo6cmVtb3ZlKEV4ZWNTdGF0ZSogZXhlYywgS2V5VHlw
ZSBrZXkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGxvY2F0aW9uID0gaXRl
ci0+dmFsdWU7CiAgICAgICAgIG1fc3RyaW5nS2V5ZWRUYWJsZS5yZW1vdmUoaXRlcik7Ci0gICAg
fSAgZWxzZSBpZiAoa2V5LnZhbHVlLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgYXV0byBpdGVyID0g
bV9zeW1ib2xLZXllZFRhYmxlLmZpbmQoYXNTeW1ib2woa2V5LnZhbHVlKS0+cHJpdmF0ZU5hbWUo
KS51aWQoKSk7Ci0gICAgICAgIGlmIChpdGVyID09IG1fc3ltYm9sS2V5ZWRUYWJsZS5lbmQoKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbG9jYXRpb24gPSBpdGVyLT52YWx1
ZTsKLSAgICAgICAgbV9zeW1ib2xLZXllZFRhYmxlLnJlbW92ZShpdGVyKTsKICAgICB9IGVsc2Ug
aWYgKGtleS52YWx1ZS5pc0NlbGwoKSkgewogICAgICAgICBhdXRvIGl0ZXIgPSBtX2NlbGxLZXll
ZFRhYmxlLmZpbmQoa2V5LnZhbHVlLmFzQ2VsbCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9j
ZWxsS2V5ZWRUYWJsZS5lbmQoKSkKQEAgLTIwMCw4ICsxODUsNiBAQCBpbmxpbmUgdm9pZCBNYXBE
YXRhSW1wbDxFbnRyeSwgSlNJdGVyYXRvcj46OnJlcGxhY2VBbmRQYWNrQmFja2luZ1N0b3JlKEVu
dHJ5KiBkZQogICAgICAgICBwdHItPnZhbHVlID0gbV9lbnRyaWVzLmdldCgpW3B0ci0+dmFsdWVd
LmtleSgpLmdldCgpLmFzSW50MzIoKTsKICAgICBmb3IgKGF1dG8gcHRyID0gbV9zdHJpbmdLZXll
ZFRhYmxlLmJlZ2luKCk7IHB0ciAhPSBtX3N0cmluZ0tleWVkVGFibGUuZW5kKCk7ICsrcHRyKQog
ICAgICAgICBwdHItPnZhbHVlID0gbV9lbnRyaWVzLmdldCgpW3B0ci0+dmFsdWVdLmtleSgpLmdl
dCgpLmFzSW50MzIoKTsKLSAgICBmb3IgKGF1dG8gcHRyID0gbV9zeW1ib2xLZXllZFRhYmxlLmJl
Z2luKCk7IHB0ciAhPSBtX3N5bWJvbEtleWVkVGFibGUuZW5kKCk7ICsrcHRyKQotICAgICAgICBw
dHItPnZhbHVlID0gbV9lbnRyaWVzLmdldCgpW3B0ci0+dmFsdWVdLmtleSgpLmdldCgpLmFzSW50
MzIoKTsKIAogICAgIEFTU0VSVCgobV9zaXplIC0gbmV3RW5kKSA9PSBtX2RlbGV0ZWRDb3VudCk7
CiAgICAgbV9kZWxldGVkQ291bnQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbC5jcHAKaW5kZXggNmFjNzkwYWQxMTJhNGNjMGNhZjQzZWJmYjk0NTc4ZTdlMTk0MDNiNS4u
NGM0NTgyM2M4NDcyYmUzZDE1OWZjOGMzNjRhYjFjZTEzNDEzNTBkOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDYgKzUzLDE0IEBAIFN5
bWJvbDo6U3ltYm9sKFZNJiB2bSwgU3ltYm9sSW1wbCYgdWlkKQogewogfQogCit2b2lkIFN5bWJv
bDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisKKyAgICB2bS5zeW1ib2xJbXBsVG9T
eW1ib2xNYXAuc2V0KG1fcHJpdmF0ZU5hbWUudWlkKCksIHRoaXMpOworfQorCiBpbmxpbmUgU3lt
Ym9sT2JqZWN0KiBTeW1ib2xPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN5bWJvbCogc3ltYm9sKQogewogICAgIFN5bWJvbE9iamVjdCogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sT2JqZWN0Pih2bS5oZWFwKSkgU3lt
Ym9sT2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPnN5bWJvbE9iamVjdFN0cnVjdHVyZSgpKTsKQEAg
LTkzLDQgKzEwMSwzMCBAQCBTdHJpbmcgU3ltYm9sOjpkZXNjcmlwdGl2ZVN0cmluZygpIGNvbnN0
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlN5bWJvbCgiLCBTdHJpbmcocHJpdmF0ZU5hbWUoKS51
aWQoKSksICcpJyk7CiB9CiAKK1N5bWJvbCogU3ltYm9sOjpjcmVhdGUoVk0mIHZtKQoreworICAg
IFN5bWJvbCogc3ltYm9sID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sPih2bS5o
ZWFwKSkgU3ltYm9sKHZtKTsKKyAgICBzeW1ib2wtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBy
ZXR1cm4gc3ltYm9sOworfQorCitTeW1ib2wqIFN5bWJvbDo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIGRlc2NyaXB0aW9uKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgU3RyaW5nIGRlc2MgPSBkZXNjcmlwdGlvbi0+dmFsdWUoZXhlYyk7CisgICAgU3ltYm9sKiBz
eW1ib2wgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2w+KHZtLmhlYXApKSBTeW1i
b2wodm0sIGRlc2MpOworICAgIHN5bWJvbC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVy
biBzeW1ib2w7Cit9CisKK1N5bWJvbCogU3ltYm9sOjpjcmVhdGUoVk0mIHZtLCBTeW1ib2xJbXBs
JiB1aWQpCit7CisgICAgaWYgKFN5bWJvbCogc3ltYm9sID0gdm0uc3ltYm9sSW1wbFRvU3ltYm9s
TWFwLmdldCgmdWlkKSkKKyAgICAgICAgcmV0dXJuIHN5bWJvbDsKKworICAgIFN5bWJvbCogc3lt
Ym9sID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sPih2bS5oZWFwKSkgU3ltYm9s
KHZtLCB1aWQpOworICAgIHN5bWJvbC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBz
eW1ib2w7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2wuaAppbmRleCBhY2FhNzAyZmU2MTA3OGVjMWNmOTlmYTkxN2Q0NzhmY2YwMjJkNjEz
Li45MzNhMmU1MTg0YWI5OWZmMjZmY2MxMmY2MjMwYjhkMDNlZTE5ZDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2wuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBAQAogI2lmbmRl
ZiBTeW1ib2xfaAogI2RlZmluZSBTeW1ib2xfaAogCi0jaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogCkBAIC00OCwyOCAr
NDcsOSBAQCBjbGFzcyBTeW1ib2wgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oU3ltYm9sVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0
YXRpYyBTeW1ib2wqIGNyZWF0ZShWTSYgdm0pCi0gICAgewotICAgICAgICBTeW1ib2wqIHN5bWJv
bCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJvbD4odm0uaGVhcCkpIFN5bWJvbCh2
bSk7Ci0gICAgICAgIHN5bWJvbC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4g
c3ltYm9sOwotICAgIH0KLQotICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTU3RyaW5nKiBkZXNjcmlwdGlvbikKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7Ci0gICAgICAgIFN0cmluZyBkZXNjID0gZGVzY3JpcHRpb24tPnZhbHVlKGV4ZWMpOwot
ICAgICAgICBTeW1ib2wqIHN5bWJvbCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN5bWJv
bD4odm0uaGVhcCkpIFN5bWJvbCh2bSwgZGVzYyk7Ci0gICAgICAgIHN5bWJvbC0+ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgICAgICByZXR1cm4gc3ltYm9sOwotICAgIH0KLQotICAgIHN0YXRpYyBT
eW1ib2wqIGNyZWF0ZShWTSYgdm0sIFN5bWJvbEltcGwmIHVpZCkKLSAgICB7Ci0gICAgICAgIFN5
bWJvbCogc3ltYm9sID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3ltYm9sPih2bS5oZWFw
KSkgU3ltYm9sKHZtLCB1aWQpOwotICAgICAgICBzeW1ib2wtPmZpbmlzaENyZWF0aW9uKHZtKTsK
LSAgICAgICAgcmV0dXJuIHN5bWJvbDsKLSAgICB9CisgICAgc3RhdGljIFN5bWJvbCogY3JlYXRl
KFZNJik7CisgICAgc3RhdGljIFN5bWJvbCogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiBk
ZXNjcmlwdGlvbik7CisgICAgc3RhdGljIFN5bWJvbCogY3JlYXRlKFZNJiwgU3ltYm9sSW1wbCYg
dWlkKTsKIAogICAgIGNvbnN0IFByaXZhdGVOYW1lJiBwcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZU5hbWU7IH0KICAgICBTdHJpbmcgZGVzY3JpcHRpdmVTdHJpbmcoKSBjb25z
dDsKQEAgLTc5LDggKzU5LDYgQEAgY2xhc3MgU3ltYm9sIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7CiAgICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogCi0gICAgc3RhdGlj
IHNpemVfdCBvZmZzZXRPZlByaXZhdGVOYW1lKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN5
bWJvbCwgbV9wcml2YXRlTmFtZSk7IH0KLQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAKQEAgLTg4LDExICs2Niw3IEBAIGNsYXNzIFN5bWJvbCBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIFN5bWJvbChWTSYsIGNvbnN0IFN0cmluZyYpOwogICAgIFN5
bWJvbChWTSYsIFN5bWJvbEltcGwmIHVpZCk7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKLSAgICB7Ci0gICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAg
QVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CiAKICAgICBQcml2YXRlTmFtZSBtX3ByaXZhdGVOYW1lOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBiMWZmNDI0OGEzNDg0YTRjYmJjMjA1YzMyZDRkMDRj
MTYwNjBjYWM2Li4zZTcyNjNhYTEwMTIyNTU3NmNiNDZlMDJjY2RiOTU5MjdmZGJmMzBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNjYsNiArMTY2LDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgZW1wdHlMaXN0KG5ldyBN
YXJrZWRBcmd1bWVudEJ1ZmZlcikKICAgICAsIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uTWFw
KCp0aGlzKQogICAgICwgc3RyaW5nQ2FjaGUoKnRoaXMpCisgICAgLCBzeW1ib2xJbXBsVG9TeW1i
b2xNYXAoKnRoaXMpCiAgICAgLCBwcm90b3R5cGVNYXAoKnRoaXMpCiAgICAgLCBpbnRlcnByZXRl
cigwKQogICAgICwganNBcnJheUNsYXNzSW5mbyhKU0FycmF5OjppbmZvKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAppbmRleCBmMGRlMTUxMzVhOTA3ODc4YjQ3YTFkMzQzNGY2ODI5MWNi
NWRjNzNlLi41MjE2MWQ3OWUzZmYzMjU0OGJjM2YxODAzNGQ1ZTgzYjQ2Y2RjMTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBjbGFzcyBTdHJ1Y3R1
cmU7CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogY2xhc3MgUmVnRXhwOwogI2VuZGlmCitj
bGFzcyBTeW1ib2w7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRXZh
bENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwpAQCAtMzQ1LDYg
KzM0Niw4IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAg
ICAgQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9hdG9taWNTdHJpbmdUYWJsZTsgfQogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJl
Z2lzdHJ5KCkgeyByZXR1cm4gbV9zeW1ib2xSZWdpc3RyeTsgfQogCisgICAgV2Vha0dDTWFwPFN5
bWJvbEltcGwqLCBTeW1ib2wsIFB0ckhhc2g8U3ltYm9sSW1wbCo+PiBzeW1ib2xJbXBsVG9TeW1i
b2xNYXA7CisKICAgICBlbnVtIGNsYXNzIERlbGV0ZVByb3BlcnR5TW9kZSB7CiAgICAgICAgIC8v
IERlZmF1bHQgYmVoYXZpb3VyIG9mIGRlbGV0ZVByb3BlcnR5LCBtYXRjaGluZyB0aGUgc3BlYy4K
ICAgICAgICAgRGVmYXVsdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3Mvc3ltYm9sLWVxdWFsaXR5LW92ZXItZ2MuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1lcXVhbGl0eS1vdmVyLWdjLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MGUyZmI1NzY5N2YzNjRlYzBjMDkxNWI5ODE5MzIwOWMwMDliNWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1lcXVhbGl0eS1vdmVy
LWdjLmpzCkBAIC0wLDAgKzEsMjMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgbGV0IHN5bWJvbCA9IFN5bWJvbCgpOworICAgIGxldCBvYmplY3QxID0geworICAgICAgICBb
c3ltYm9sXTogNDIKKyAgICB9CisgICAgbGV0IG9iamVjdDIgPSB7CisgICAgICAgIFtzeW1ib2xd
OiA0MgorICAgIH0KKyAgICBzeW1ib2wgPSBudWxsOworICAgIGZ1bGxHQygpOworICAgIHNob3Vs
ZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0MSlbMF0sIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0MilbMF0pOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKQorICAgIHRlc3QoKTsK
</data>
<flag name="review"
          id="308422"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>