<?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>50584</bug_id>
          
          <creation_ts>2010-12-06 13:22:29 -0800</creation_ts>
          <short_desc>Generalize didChangeLocationWithinPageForFrame for all same document navigations</short_desc>
          <delta_ts>2010-12-06 16:35:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>317816</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-06 13:22:29 -0800</bug_when>
    <thetext>We should generalize the didChangeLocationWithinPageForFrame callback for all same document navigations, including session state changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317817</commentid>
    <comment_count>1</comment_count>
      <attachid>75733</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-06 13:24:12 -0800</bug_when>
    <thetext>Created attachment 75733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317921</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-06 16:35:02 -0800</bug_when>
    <thetext>Landed in r73412.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75733</attachid>
            <date>2010-12-06 13:24:12 -0800</date>
            <delta_ts>2010-12-06 15:53:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>didSame.diff</filename>
            <type>text/plain</type>
            <size>46210</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzM4MikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMTAtMTItMDYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmFs
aXplIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lIGZvciBhbGwgc2FtZSBkb2N1
bWVudCBuYXZpZ2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTA1ODQKKworICAgICAgICAgIC0gUmVuYW1lIGRpZENoYW5nZUxvY2F0aW9uV2l0
aGluUGFnZUZvckZyYW1lIGNhbGxiYWNrcyB0byBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWUKKyAgICAgICAgICAtIEFkZCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHRvIGRp
ZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLgorICAgICAgICAgIC0gQ2FsbCBkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUgZm9yIEhUTUwgc2Vzc2lvbiBzdGF0ZSBjaGFu
Z2VzLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJL
aXQ6OnRvQVBJKToKKyAgICAgICAgTW92ZWQgV0tGcmFtZU5hdmlnYXRpb25UeXBlIGhlcmUgZnJv
bSBXS1BhZ2UuaCBhbmQgYWRkIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuCisKKyAgICAg
ICAgKiBTaGFyZWQvU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICBNb3ZlZCBXS0ZyYW1lTmF2
aWdhdGlvblR5cGUgY29udmVyc2lvbiBmcm9tIGhlcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoK
KyAgICAgICAgKFFXS1BhZ2U6OlFXS1BhZ2UpOgorICAgICAgICBVcGRhdGUgY29tbWVudC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpkaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgUGlwZSBuZXcgbmFtZSB0aHJv
dWdoLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVX
aXRoaW5QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKToKKyAgICAgICAgQ2FsbCBkaWRDaGFuZ2VMb2NhdGlv
bldpdGhpblBhZ2VGb3JGcmFtZSBmb3Igc2Vzc2lvbiBzdGF0ZSBjaGFuZ2VzLgorCisgICAgICAg
ICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0
MkdlbmVyYXRlZC5tYWtlOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCiAyMDEwLTEyLTA2ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24gNzMzNzgpCisrKyBXZWJLaXQyL1dlYktp
dDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNiArMjE4LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCBcCiAgICAgU2hhcmVkL0FQ
SS9jL1dLR2VvbWV0cnkuaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmggXAorICAgIFNo
YXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLU2VjdXJp
dHlPcmlnaW4uaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
XAogICAgIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaCBcCkBAIC0yNDEsNiArMjQyLDcg
QEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCBcCiAg
ICAgU2hhcmVkL05vdEltcGxlbWVudGVkLmggXAogICAgIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVu
dURhdGEuaCBcCisgICAgU2hhcmVkL1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggXAogICAg
IFNoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmggXAogICAgIFNoYXJlZC9Vc2VyTWVzc2FnZUNvZGVy
cy5oIFwKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5oIFwKSW5kZXg6IFdlYktpdDIvU2hh
cmVkL1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9T
aGFyZWQvU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaAkocmV2aXNpb24gMCkKKysrIFdlYktp
dDIvU2hhcmVkL1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlX2gKKyNkZWZpbmUgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGVfaAorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworZW51bSBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB7CisgICAgU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkFuY2hvck5hdmlnYXRpb24sCisgICAgU2FtZURvY3VtZW50TmF2aWdh
dGlvblNlc3Npb25TdGF0ZVB1c2gsCisgICAgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25T
dGF0ZVJlcGxhY2UsCisgICAgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcAor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZV9oCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAko
cmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BhZ2VM
b2FkVHlwZXNfaAorI2RlZmluZSBXS1BhZ2VMb2FkVHlwZXNfaAorCisjaWZkZWYgX19jcGx1c3Bs
dXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0geworICAgIGtXS0ZyYW1lTmF2aWdhdGlv
blR5cGVMaW5rQ2xpY2tlZCA9IDAsCisgICAga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUZvcm1TdWJt
aXR0ZWQgPSAxLAorICAgIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVCYWNrRm9yd2FyZCA9IDIsCisg
ICAga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZVJlbG9hZCA9IDMsCisgICAga1dLRnJhbWVOYXZpZ2F0
aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZCA9IDQsCisgICAga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU90
aGVyID0gNQorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tGcmFtZU5hdmlnYXRpb25UeXBlOworCitl
bnVtIHsKKyAgICBrV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbiwKKyAg
ICBrV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUHVzaCwKKyAgICBrV0tTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUmVwbGFjZSwKKyAgICBrV0tTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUG9wCit9OwordHlwZWRlZiB1aW50MzJfdCBXS1NhbWVE
b2N1bWVudE5hdmlnYXRpb25UeXBlOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgor
CisjZW5kaWYgLyogV0tQYWdlTG9hZFR5cGVzX2ggKi8KSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9j
L1dLU2hhcmVkQVBJQ2FzdC5oCShyZXZpc2lvbiA3MzM3OCkKKysrIFdlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLU2hhcmVkQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsMTMgQEAK
ICNpZm5kZWYgV0tTaGFyZWRBUElDYXN0X2gKICNkZWZpbmUgV0tTaGFyZWRBUElDYXN0X2gKIAor
I2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV0tCYXNl
LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIgogI2luY2x1ZGUgIldLRXZl
bnQuaCIKICNpbmNsdWRlICJXS0ZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiV0tHZW9tZXRyeS5o
IgorI2luY2x1ZGUgIldLUGFnZUxvYWRUeXBlcy5oIgogI2luY2x1ZGUgIldlYkVycm9yLmgiCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJGaW5kT3B0aW9ucy5oIgpAQCAtMzgs
OSArNDAsMTAgQEAKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
SW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJhaXRzLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjQ1LDYgKzY0OCw1NiBAQCBpbmxpbmUgRmluZE9w
dGlvbnMgdG9GaW5kT3B0aW9ucyhXS0ZpbmRPCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZpbmRP
cHRpb25zPihmaW5kT3B0aW9ucyk7CiB9CiAKK2lubGluZSBXS0ZyYW1lTmF2aWdhdGlvblR5cGUg
dG9BUEkoV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgdHlwZSkKK3sKKyAgICBXS0ZyYW1lTmF2aWdh
dGlvblR5cGUgd2tUeXBlID0ga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU90aGVyOworCisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2Vk
OgorICAgICAgICB3a1R5cGUgPSBrV0tGcmFtZU5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGVGb3JtU3VibWl0
dGVkOgorICAgICAgICB3a1R5cGUgPSBrV0tGcmFtZU5hdmlnYXRpb25UeXBlRm9ybVN1Ym1pdHRl
ZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZUJhY2tG
b3J3YXJkOgorICAgICAgICB3a1R5cGUgPSBrV0tGcmFtZU5hdmlnYXRpb25UeXBlQmFja0Zvcndh
cmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGVSZWxv
YWQ6CisgICAgICAgIHdrVHlwZSA9IGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVSZWxvYWQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGVGb3JtUmVzdWJtaXR0
ZWQ6CisgICAgICAgIHdrVHlwZSA9IGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVGb3JtUmVzdWJtaXR0
ZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGVPdGhl
cjoKKyAgICAgICAgd2tUeXBlID0ga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU90aGVyOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHdrVHlwZTsKK30KKworaW5saW5lIFdL
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgdG9BUEkoU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUgdHlwZSkKK3sKKyAgICBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgd2tUeXBlID0ga1dLU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkFuY2hvck5hdmlnYXRpb247CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIFNhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNob3JOYXZpZ2F0aW9uOgorICAgICAg
ICB3a1R5cGUgPSBrV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRl
UHVzaDoKKyAgICAgICAgd2tUeXBlID0ga1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25T
dGF0ZVB1c2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2FtZURvY3VtZW50TmF2aWdhdGlv
blNlc3Npb25TdGF0ZVJlcGxhY2U6CisgICAgICAgIHdrVHlwZSA9IGtXS1NhbWVEb2N1bWVudE5h
dmlnYXRpb25TZXNzaW9uU3RhdGVSZXBsYWNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNh
bWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3A6CisgICAgICAgIHdrVHlwZSA9IGtX
S1NhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3A7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gd2tUeXBlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIFdLU2hhcmVkQVBJQ2FzdF9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmNwcAkocmV2aXNpb24gNzMzNzgpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgV2Vi
RnJhbWVQcm94eTo6ZGlkRmFpbExvYWQoKQogICAgIG1fbG9hZFN0YXRlID0gTG9hZFN0YXRlRmlu
aXNoZWQ7CiB9CiAKLXZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hhbmdlVVJMV2l0aG91dE5hdmln
YXRpb24oY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb24oY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgbV91cmwgPSB1cmw7CiB9
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCShyZXZpc2lvbiA3MzM3OCkKKysrIFdl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyAr
OTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWlsTG9hZCgpOwotICAgIHZvaWQgZGlkQ2hhbmdl
VVJMV2l0aG91dE5hdmlnYXRpb24oY29uc3QgU3RyaW5nJik7IC8vIGVnLiBhbmNob3IgbmF2aWdh
dGlvbiwgc2Vzc2lvbiBzdGF0ZSBjaGFuZ2UuCisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uKGNvbnN0IFN0cmluZyYpOyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRpb24sIHNlc3Npb24g
c3RhdGUgY2hhbmdlLgogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwg
dWludDY0X3QgbGlzdGVuZXJJRCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVu
dC5jcHAJKHJldmlzaW9uIDczMzc4KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsMTIgKzg4LDEyIEBAIHZvaWQgV2ViTG9hZGVy
Q2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnIKICAgICBtX2NsaWVudC5kaWRGYWlsTG9hZFdpdGhF
cnJvckZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKGVycm9yKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJD
bGllbnQ6OmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lKFdlYlBhZ2VQcm94eSog
cGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCit2b2lkIFdl
YkxvYWRlckNsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYlBhZ2VQ
cm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlIHR5cGUsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgaWYgKCFtX2NsaWVudC5kaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSkKKyAgICBpZiAoIW1fY2xpZW50LmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
bGllbnQuZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUodG9BUEkocGFnZSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBt
X2NsaWVudC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodG9BUEkocGFnZSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkodHlwZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVy
Q2xpZW50LmgJKHJldmlzaW9uIDczMzc4KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViTG9h
ZGVyQ2xpZW50X2gKIAogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIlNhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIApAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJ
T2JqZWN0Kik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5Kiwg
V2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOwogICAgIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJy
b3JGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIEFQSU9iamVjdCopOwotICAgIHZvaWQgZGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVj
dCopOworICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYlBhZ2VQ
cm94eSosIFdlYkZyYW1lUHJveHkqLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgQVBJT2Jq
ZWN0Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBj
b25zdCBTdHJpbmcmLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CiAgICAgdm9pZCBkaWRG
aXJzdExheW91dEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUElPYmpl
Y3QqKTsKICAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdl
YlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNzMzNzgpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjIsNyArODYyLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodQogICAgIG1fbG9hZGVyQ2xpZW50
LmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodGhpcywgZnJhbWUsIGVycm9yLCB1c2VyRGF0
YS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VMb2NhdGlvbldpdGhp
blBhZ2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9w
YXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgUmVmUHRyPEFQSU9iamVjdD4g
dXNlckRhdGE7CiAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rl
cih1c2VyRGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0KCkpOwpAQCAtODcwLDkgKzg3MCw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VMb2NhdGlvbldpdGgKICAgICAgICAgcmV0
dXJuOwogCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZy
YW1lSUQpOwotICAgIGZyYW1lLT5kaWRDaGFuZ2VVUkxXaXRob3V0TmF2aWdhdGlvbih1cmwpOwor
ICAgIGZyYW1lLT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKHVybCk7CiAKLSAgICBtX2xvYWRl
ckNsaWVudC5kaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSh0aGlzLCBmcmFtZSwg
dXNlckRhdGEuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZSh0aGlzLCBmcmFtZSwgc3RhdGljX2Nhc3Q8U2FtZURvY3VtZW50TmF2aWdh
dGlvblR5cGU+KG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKSwgdXNlckRhdGEuZ2V0
KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiBhcmd1bWVudHMpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
NzMzNzgpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgzLDcgKzI4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciopOwotICAgIHZvaWQgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKik7CisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgc2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIGNvbnN0
IFN0cmluZyYsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWRGaXJzdExheW91dEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQgZGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKik7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiA3MzM3OCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIHRpdGxlLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQogICAgIERpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQogICAgIERpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29k
ZXIgdXNlckRhdGEpCi0gICAgRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgV1RGOjpTdHJpbmcgdXJsLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQorICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCB0eXBlLCBXVEY6OlN0cmluZyB1cmws
IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAKICAg
ICBGcmFtZURpZEJlY29tZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFsdWUpCiAK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiA3MzM3OCkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSAiV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTc2LDM0
ICs3NSw2IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwKIAogLyog
RW51bSBjb252ZXJzaW9ucyAqLwogCi1pbmxpbmUgV0tGcmFtZU5hdmlnYXRpb25UeXBlIHRvQVBJ
KFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpCi17Ci0gICAgV0tGcmFtZU5hdmlnYXRpb25U
eXBlIHdrVHlwZSA9IGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVPdGhlcjsKLQotICAgIHN3aXRjaCAo
dHlwZSkgewotICAgIGNhc2UgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZDoKLSAg
ICAgICAgd2tUeXBlID0ga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2VkOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlRm9ybVN1Ym1pdHRlZDoK
LSAgICAgICAgd2tUeXBlID0ga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUZvcm1TdWJtaXR0ZWQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGVCYWNrRm9yd2Fy
ZDoKLSAgICAgICAgd2tUeXBlID0ga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUJhY2tGb3J3YXJkOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlUmVsb2FkOgot
ICAgICAgICB3a1R5cGUgPSBrV0tGcmFtZU5hdmlnYXRpb25UeXBlUmVsb2FkOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkOgot
ICAgICAgICB3a1R5cGUgPSBrV0tGcmFtZU5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlT3RoZXI6Ci0g
ICAgICAgIHdrVHlwZSA9IGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVPdGhlcjsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIAotICAgIHJldHVybiB3a1R5cGU7Ci19Ci0KIGlubGluZSBDYWNoZU1v
ZGVsIHRvQ2FjaGVNb2RlbChXS0NhY2hlTW9kZWwgd2tDYWNoZU1vZGVsKQogewogICAgIHN3aXRj
aCAod2tDYWNoZU1vZGVsKSB7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNp
b24gNzMzNzgpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tGaW5kT3B0aW9ucy5o
PgogI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tO
YXRpdmVFdmVudC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlTG9hZFR5cGVzLmg+CiAKICNp
Zm5kZWYgX19jcGx1c3BsdXMKICNpbmNsdWRlIDxzdGRib29sLmg+CkBAIC00MCwxNiArNDEsNiBA
QAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotZW51bSB7Ci0gICAga1dLRnJhbWVOYXZpZ2F0aW9u
VHlwZUxpbmtDbGlja2VkID0gMCwKLSAgICBrV0tGcmFtZU5hdmlnYXRpb25UeXBlRm9ybVN1Ym1p
dHRlZCA9IDEsCi0gICAga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUJhY2tGb3J3YXJkID0gMiwKLSAg
ICBrV0tGcmFtZU5hdmlnYXRpb25UeXBlUmVsb2FkID0gMywKLSAgICBrV0tGcmFtZU5hdmlnYXRp
b25UeXBlRm9ybVJlc3VibWl0dGVkID0gNCwKLSAgICBrV0tGcmFtZU5hdmlnYXRpb25UeXBlT3Ro
ZXIgPSA1Ci19OwotdHlwZWRlZiB1aW50MzJfdCBXS0ZyYW1lTmF2aWdhdGlvblR5cGU7Ci0KIC8v
IEZyYW1lTG9hZCBDbGllbnQKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
IHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTU4LDcgKzQ5LDcgQEAgdHlw
ZWRlZiB2b2lkICgqV0tQYWdlRGlkQ29tbWl0TG9hZEZvckZyYQogdHlwZWRlZiB2b2lkICgqV0tQ
YWdlRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFj
aykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGYWlsTG9h
ZFdpdGhFcnJvckZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdl
UmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUg
dHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgdm9pZCAoKldLUGFnZURpZFJlY2VpdmVUaXRsZUZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJl
ZiBwYWdlLCBXS1N0cmluZ1JlZiB0aXRsZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVz
ZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZUNh
bGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJE
YXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTkxLDcgKzgyLDcgQEAgc3RydWN0IFdL
UGFnZUxvYWRlckNsaWVudCB7CiAgICAgV0tQYWdlRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZTsKICAgICBXS1BhZ2VEaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKICAgICBXS1Bh
Z2VEaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7Ci0gICAgV0tQYWdlRGlkQ2hhbmdl
TG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICBkaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZTsKKyAgICBXS1BhZ2VEaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgIGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKICAgICBXS1BhZ2VEaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lOwogICAgIFdLUGFnZURpZEZpcnN0TGF5b3V0Rm9yRnJhbWVDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZTsKICAgICBX
S1BhZ2VEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZUNhbGxiYWNrICAgICAg
ICAgICAgICAgIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lOwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2aXNpb24gNzMzNzgpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw3
ICszMTcsNyBAQCBRV0tQYWdlOjpRV0tQYWdlKFdLUGFnZU5hbWVzcGFjZVJlZiBuYW1lCiAgICAg
ICAgIHF0X3drX2RpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lLAogICAgICAgICBxdF93a19k
aWRGaW5pc2hMb2FkRm9yRnJhbWUsCiAgICAgICAgIHF0X3drX2RpZEZhaWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUsCi0gICAgICAgIDAsIC8qIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZy
YW1lICovCisgICAgICAgIDAsIC8qIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSAq
LwogICAgICAgICBxdF93a19kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSwKICAgICAgICAgcXRfd2tf
ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSwKICAgICAgICAgcXRfd2tfZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUsCkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gNzMzNzgpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMyNyw4IEBACiAJ
CUJDMjY1MjE3MTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2NTIxMzExODI2MDgxMDAy
NDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oICovOyB9OwogCQlCQzI2NTIxODExODI2MDgxMDAy
NDNFMTIgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjUyMTQxMTgyNjA4MTAwMjQzRTEy
IC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcCAqLzsgfTsKIAkJQkMyNjUyMTkx
MTgyNjA4MTAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2NTIxNTExODI2MDgx
MDAyNDNFMTIgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaCAqLzsgfTsKKwkJQkMy
RDAyMTcxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJEMDIxNjEyQUM0
MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCAqLzsgfTsKKwkJQkMy
RDAyMTkxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRDAyMTgxMkFDNDI2QzAwRTczMkEz
IC8qIFdLUGFnZUxvYWRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKIAkJQkMyREZCQTMxMkE3NjFBNTAwRTczMkEzIC8qIFdlYlByZWZlcmVuY2Vz
Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMy
REZCQTIxMkE3NjFBNTAwRTczMkEzIC8qIFdlYlByZWZlcmVuY2VzQ0YuY3BwICovOyB9OwogCQlC
QzJFNkU4NzExNDE5NzE1MDBBNjNCMUUgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3NzExNDE5NzBDMDBBNjNCMUUgLyog
UnVuTG9vcC5jcHAgKi87IH07CiAJCUJDMkU2RTg4MTE0MTk3MTUwMEE2M0IxRSAvKiBSdW5Mb29w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3
ODExNDE5NzBDMDBBNjNCMUUgLyogUnVuTG9vcC5oICovOyB9OwpAQCAtOTU3LDYgKzk1OSw4IEBA
CiAJCUJDMjY1MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhUHJveHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNjUyMTQxMTgyNjA4MTAwMjQzRTEyIC8qIENodW5rZWRV
cGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkMyNjUyMTUxMTgyNjA4MTAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJEMDIxODEyQUM0MjZDMDBF
NzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLUGFnZUxvYWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJE
RkJBMjEyQTc2MUE1MDBFNzMyQTMgLyogV2ViUHJlZmVyZW5jZXNDRi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQcmVmZXJlbmNlc0NGLmNwcDsgcGF0aCA9IGNm
L1dlYlByZWZlcmVuY2VzQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJF
NkU3NzExNDE5NzBDMDBBNjNCMUUgLyogUnVuTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSdW5Mb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMyRTZFNzgxMTQxOTcwQzAwQTYzQjFFIC8qIFJ1bkxvb3AuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUnVuTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTUxMiw2ICsxNTE2LDcgQEAKIAkJCQlCQ0M1NzE2MTExNUFEQjQyMDAxQ0NBRjkgLyogTm90
SW1wbGVtZW50ZWQuaCAqLywKIAkJCQlCQ0M0M0FCODEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhLmNwcCAqLywKIAkJCQlCQ0M0M0FCOTEyN0I5NURDMDAzMTdGMTYgLyog
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggKi8sCisJCQkJQkMyRDAyMTYxMkFDNDFDQjAwRTczMkEz
IC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8sCiAJCQkJMUFBQjRBOEMxMjk2RjBB
MjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCAqLywKIAkJCQlCQ0JEM0MzQTEyNUJGQTdB
MDBEMkMyOUYgLyogU3RyaW5nUGFpclZlY3Rvci5oICovLAogCQkJCUJDQjBCMERGMTIzMDVBQjEw
MEIxMzQxRSAvKiBVc2VyTWVzc2FnZUNvZGVycy5oICovLApAQCAtMjIzNyw2ICsyMjQyLDcgQEAK
IAkJCQlCQzQwNzVFNDEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlRGljdGlvbmFyeS5oICov
LAogCQkJCUJDNDA3NUU1MTI0RkYwMjcwMDY4RjIwQSAvKiBXS051bWJlci5jcHAgKi8sCiAJCQkJ
QkM0MDc1RTYxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTnVtYmVyLmggKi8sCisJCQkJQkMyRDAyMTgx
MkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oICovLAogCQkJCUY2MzQ0NDVBMTJB
ODg1RTkwMDA2MTJEOCAvKiBXS1NlY3VyaXR5T3JpZ2luLmNwcCAqLywKIAkJCQlGNjM0NDQ1QjEy
QTg4NUU5MDAwNjEyRDggLyogV0tTZWN1cml0eU9yaWdpbi5oICovLAogCQkJCUJDNDA3NUU3MTI0
RkYwMjcwMDY4RjIwQSAvKiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8sCkBAIC0yNjE5
LDYgKzI2MjUsOCBAQAogCQkJCTUxMkY1OEZDMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rp
b25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYzNDQ0NTYxMkE4ODVDODAwMDYxMkQ4IC8q
IFdlYlNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjM0NDQ1RDEyQTg4NUU5
MDAwNjEyRDggLyogV0tTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyRDAy
MTcxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlCQzJEMDIxOTEyQUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVz
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwCShyZXZpc2lvbiA3MzM3OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDUsMTMgKzEwNSwxMyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
ZGlkCiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0K
IAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENoYW5nZUxvY2F0aW9u
V2l0aGluUGFnZUZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRy
PEFQSU9iamVjdD4mIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJG
cmFtZSogZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFJlZlB0cjxBUElP
YmplY3Q+JiB1c2VyRGF0YSkKIHsKLSAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUxvY2F0aW9u
V2l0aGluUGFnZUZvckZyYW1lKQorICAgIGlmICghbV9jbGllbnQuZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBXS1R5cGVSZWYgdXNlckRh
dGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50LmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZv
ckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHR5cGUpLCAmdXNlckRhdGFU
b1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9J
bXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDczMzc4KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dF9oCiAKICNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01MSw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdl
YlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9i
amVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUo
V2ViUGFnZSosIFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFJlZlB0
cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7Ci0gICAgdm9pZCBkaWRDaGFuZ2VMb2NhdGlvbldpdGhp
blBhZ2VGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNl
ckRhdGEpOworICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYlBh
Z2UqLCBXZWJGcmFtZSosIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBSZWZQdHI8QVBJT2Jq
ZWN0PiYgdXNlckRhdGEpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV2ViUGFn
ZSosIGNvbnN0IFN0cmluZyYsIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRh
KTsKICAgICB2b2lkIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwg
UmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmpl
Y3Q+JiB1c2VyRGF0YSk7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiA3MzM3OCkKKysrIFdl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0V2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ZpbmRP
cHRpb25zLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VMb2FkVHlwZXMuaD4KIAogI2lmbmRl
ZiBfX2NwbHVzcGx1cwogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KQEAgLTczLDcgKzc0LDcgQEAgdHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRG9jdW1lbnRGaQogdHlwZWRlZiB2b2lkICgqV0tC
dW5kbGVQYWdlRGlkRmluaXNoTG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEZhaWxMb2FkV2l0aEVycm9yRm9y
RnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFdLVHlwZVJlZiogdXNl
ckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQ
YWdlRGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIHRpdGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVz
ZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxl
UGFnZURpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckZyYW1lKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC05
Nyw3ICs5OCw3IEBAIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewogICAgIFdLQnVu
ZGxlUGFnZURpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU7CiAgICAgV0tCdW5kbGVQYWdlRGlk
RmluaXNoTG9hZEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRG
aW5pc2hMb2FkRm9yRnJhbWU7CiAgICAgV0tCdW5kbGVQYWdlRGlkRmFpbExvYWRXaXRoRXJyb3JG
b3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICBkaWRGYWlsTG9hZFdpdGhFcnJvckZv
ckZyYW1lOwotICAgIFdLQnVuZGxlUGFnZURpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZy
YW1lQ2FsbGJhY2sgICAgICAgICAgICAgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJh
bWU7CisgICAgV0tCdW5kbGVQYWdlRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lQ2Fs
bGJhY2sgICAgICAgICAgICAgICBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU7CiAg
ICAgV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKICAgICBXS0J1bmRsZVBhZ2VE
aWRGaXJzdExheW91dEZvckZyYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWU7CiAgICAgV0tCdW5kbGVQYWdlRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUgICAgICAgICAgICAgICAgICBkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JGcmFtZTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24g
NzMzNzgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsMjUgKzI3OCw1NSBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoCiAgICAgUmVmUHRyPEFQSU9iamVjdD4g
dXNlckRhdGE7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCi0gICAgd2ViUGFn
ZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBh
Z2VGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CisgICAgd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUod2ViUGFnZSwgbV9mcmFtZSwgU2FtZURvY3VtZW50TmF2aWdhdGlvbkFuY2hvck5hdmlnYXRp
b24sIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCktPnVybCgpLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1
c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IFNhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNob3JOYXZpZ2F0aW9uLCBtX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3
ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0
YTsKKworICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KKyAgICB3ZWJQYWdlLT5pbmpl
Y3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZSh3ZWJQYWdlLCBtX2ZyYW1lLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUHVz
aCwgdXNlckRhdGEpOworCisgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCisgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lv
blN0YXRlUHVzaCwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5zdHJpbmco
KSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0
aGluUGFnZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisKKyAgICAvLyBOb3RpZnkgdGhlIGJ1
bmRsZSBjbGllbnQuCisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5k
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgU2FtZURv
Y3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVJlcGxhY2UsIHVzZXJEYXRhKTsKKworICAgIC8v
IE5vdGlmeSB0aGUgVUlQcm9jZXNzLgorICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1l
SUQoKSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVJlcGxhY2UsIG1fZnJhbWUt
PmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
IGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEFQSU9iamVjdD4g
dXNlckRhdGE7CisKKyAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCisgICAgd2ViUGFn
ZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25T
dGF0ZVBvcCwgdXNlckRhdGEpOworCisgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCisgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
U2Vzc2lvblN0YXRlUG9wLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLnN0
cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkp
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2xvc2UoKQpJ
bmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDczMzc4KQorKysgV2ViS2l0Mi93aW4vV2ViS2l0
Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3OSw2ICs0NzksMTAgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFNoYXJlZFxTdHJpbmdQYWlyVmVjdG9yLmgiCiAJCQkJPgogCQkJPC9GaWxl
PgpAQCAtNzU4LDYgKzc2MiwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLUGFnZUxvYWRUeXBlcy5oIgorCQkJ
CQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVk
XEFQSVxjXFdLU2VjdXJpdHlPcmlnaW4uY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDog
V2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
d2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQkocmV2aXNpb24gNzMzNzgpCisrKyBXZWJLaXQyL3dp
bi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAg
YWxsOgogICAgIHhjb3B5IC95IC9kICIuLlxTaGFyZWRcQVBJXGNcV0tNdXRhYmxlQXJyYXkuaCIg
IiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4u
XFNoYXJlZFxBUElcY1xXS011dGFibGVEaWN0aW9uYXJ5LmgiICIkKFdFQktJVE9VVFBVVERJUilc
aW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxTaGFyZWRcQVBJXGNcV0tOdW1i
ZXIuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCisgICAgeGNvcHkgL3kg
L2QgIi4uXFNoYXJlZFxBUElcY1xXS1BhZ2VMb2FkVHlwZXMuaCIgIiQoV0VCS0lUT1VUUFVURElS
KVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFNoYXJlZFxBUElcQ1xXS1Nl
Y3VyaXR5T3JpZ2luLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAg
IHhjb3B5IC95IC9kICIuLlxTaGFyZWRcQVBJXGNcV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIg
IiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4u
XFNoYXJlZFxBUElcY1xXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVByaXZhdGUuaCIgIiQoV0VCS0lU
T1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzM4MikKKysr
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDEwLTEyLTA2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhbGl6ZSBkaWRDaGFuZ2VMb2Nh
dGlvbldpdGhpblBhZ2VGb3JGcmFtZSBmb3IgYWxsIHNhbWUgZG9jdW1lbnQgbmF2aWdhdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNTg0CisK
KyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAg
ICAgICAgKGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgICgtW0Jy
b3dzZXJXaW5kb3dDb250cm9sbGVyIGF3YWtlRnJvbU5pYl0pOgorICAgICAgICAoLVtCcm93c2Vy
V2luZG93Q29udHJvbGxlciBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6XSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkRGlkQ2hhbmdlTG9j
YXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmluaXRpYWxpemUpOgorCiAyMDEwLTEyLTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9n
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4
OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQkocmV2aXNpb24gNzMzNzgpCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9t
YWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCAtICh2b2lkKWRpZENvbW1pdExvYWRGb3JGcmFtZTooV0tGcmFtZVJlCiAtICh2b2lkKWRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOihXS0ZyYW1l
UmVmKWZyYW1lOwogLSAodm9pZClkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJh
bWU6KFdLRnJhbWVSZWYpZnJhbWU7CiAtICh2b2lkKWRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJh
bWU6KFdLRnJhbWVSZWYpZnJhbWU7Ci0tICh2b2lkKWRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFn
ZUZvckZyYW1lOihXS0ZyYW1lUmVmKWZyYW1lOworLSAodm9pZClkaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uRm9yRnJhbWU6KFdLRnJhbWVSZWYpZnJhbWU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBCcm93c2VyV2luZG93Q29udHJvbGxlcgpAQCAtMjg0LDkgKzI4NCw5IEBAIHN0YXRpYyB2b2lk
IGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUKICAgICBbKEJyb3dzZXJXaW5kb3dDb250cm9s
bGVyICopY2xpZW50SW5mbyBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lOmZyYW1lXTsKIH0K
IAotc3RhdGljIHZvaWQgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUoV0tQYWdl
UmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZSB0eXBlLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pCiB7Ci0gICAgWyhCcm93c2VyV2luZG93Q29udHJvbGxlciAqKWNsaWVudEluZm8gZGlkQ2hh
bmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWU6ZnJhbWVdOworICAgIFsoQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgKiljbGllbnRJbmZvIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZTpmcmFtZV07CiB9CiAKIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFn
ZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0aXRsZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
IHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQpAQCAtNTU0LDcgKzU1NCw3IEBAIC0g
KHZvaWQpYXdha2VGcm9tTmliCiAgICAgICAgIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
LAogICAgICAgICBkaWRGaW5pc2hMb2FkRm9yRnJhbWUsCiAgICAgICAgIGRpZEZhaWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUsCi0gICAgICAgIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZy
YW1lLAorICAgICAgICBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUsCiAgICAgICAg
IGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lLAogICAgICAgICBkaWRGaXJzdExheW91dEZvckZyYW1l
LAogICAgICAgICBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSwKQEAgLTY3
OSw3ICs2NzksNyBAQCAtICh2b2lkKWRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWU6KFdLCiAg
ICAgW3NlbGYgdXBkYXRlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZTpmcmFtZV07CiB9CiAKLS0gKHZv
aWQpZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWU6KFdLRnJhbWVSZWYpZnJhbWUK
Ky0gKHZvaWQpZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOihXS0ZyYW1lUmVmKWZy
YW1lCiB7CiB9CiAKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9QYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWRE
aWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZS5jcHAJKHJldmlzaW9uIDczMzc4KQor
KysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkRGlkQ2hh
bmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4
ICs0Myw5IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2UKIH0KIAog
c3RhdGljIGJvb2wgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlOwotc3RhdGljIHZvaWQgZGlk
Q2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBX
S1R5cGVSZWYsIGNvbnN0IHZvaWQqKQorc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZSB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQogeworICAgIFRFU1RfQVNTRVJU
KHR5cGUgPT0ga1dLU2FtZURvY3VtZW50TmF2aWdhdGlvbkFuY2hvck5hdmlnYXRpb24pOwogICAg
IGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSA9IHRydWU7CiB9CiAKQEAgLTU4LDcgKzU5LDcg
QEAgVEVTVChXZWJLaXQyLCBQYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uVwogICAgIFdLUGFnZUxv
YWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNp
emVvZihsb2FkZXJDbGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZy
YW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwotICAgIGxvYWRlckNsaWVudC5kaWRDaGFuZ2VM
b2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSA9IGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZv
ckZyYW1lOworICAgIGxvYWRlckNsaWVudC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUgPSBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU7CiAgICAgV0tQYWdlU2V0UGFn
ZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJmxvYWRlckNsaWVudCk7CiAKICAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNl
KCJmaWxlLXdpdGgtYW5jaG9yIiwgImh0bWwiKSk7CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzMzNzgpCisrKyBX
ZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUo
aW50IGFyZ2MKICAgICAgICAgMCwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKICAg
ICAgICAgZGlkRmluaXNoTG9hZEZvckZyYW1lLAogICAgICAgICAwLCAvLyBkaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lCi0gICAgICAgIDAsIC8vIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFn
ZUZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZQogICAgICAgICAwLCAvLyBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZQogICAgICAgICAwLCAvLyBk
aWRGaXJzdExheW91dEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckZyYW1lCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCShyZXZpc2lvbiA3MzM3OCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgw
LDcgKzE4MCw3IEBAIEluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFcKICAg
ICAgICAgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUsCiAgICAgICAgIGRpZEZpbmlzaExv
YWRGb3JGcmFtZSwKICAgICAgICAgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSwKLSAgICAg
ICAgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUsCisgICAgICAgIGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSwKICAgICAgICAgZGlkUmVjZWl2ZVRpdGxlRm9yRnJh
bWUsCiAgICAgICAgIDAsCiAgICAgICAgIDAsCkBAIC0zMDIsOSArMzAyLDkgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OndpbGxQZXJmb3JtQ2xpZQogICAgIHN0YXRpY19jYXN0PEluamVjdGVk
QnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZvckZyYW1lKGZyYW1lLCB1cmwsIGRlbGF5LCBkYXRlKTsKIH0KIAotdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1l
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYq
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBXS1R5
cGVSZWYqLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PEluamVj
dGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkQ2hhbmdl
TG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUoZnJhbWUpOworICAgIHN0YXRpY19jYXN0PEluamVj
dGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKGZyYW1lLCB0eXBlKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpA
QCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNs
aWUKIHsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZENoYW5nZUxvY2F0aW9uV2l0
aGluUGFnZUZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCit2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgdHlwZSkKIHsKIH0KIApJbmRl
eDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCShyZXZpc2lvbiA3MzM3OCkKKysrIFdl
YktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgdm9pZCBkaWRDbGVhcldpbmRvd0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVG
cmFtZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRp
YyB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBX
S0J1bmRsZUZyYW1lUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJl
ZiwgV0tVUkxSZWYgdXJsLCBkb3VibGUgZGVsYXksIGRvdWJsZSBkYXRlLCBjb25zdCB2b2lkKik7
Ci0gICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUoV0tC
dW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKik7
CisgICAgc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgY29u
c3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0
IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShX
S0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQq
KTsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENsZWFyV2luZG93Rm9y
RnJhbWUoV0tCdW5kbGVGcmFtZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZik7CiAgICAgdm9p
ZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOwogICAg
IHZvaWQgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYs
IFdLVVJMUmVmIHVybCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZGF0ZSk7Ci0gICAgdm9pZCBkaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmKTsKKyAgICB2
b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmLCBX
S1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQgZGlkSGFuZGxlT25sb2Fk
RXZlbnRzRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZik7CiAgICAgdm9pZCBkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZik7Cg==
</data>
<flag name="review"
          id="66559"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>