<?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>122625</bug_id>
          
          <creation_ts>2013-10-10 16:54:26 -0700</creation_ts>
          <short_desc>Remove EventRetargeter.h/cpp</short_desc>
          <delta_ts>2013-10-10 18:12:43 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>938612</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-10 16:54:26 -0700</bug_when>
    <thetext>Remove EventRetargeter.h/cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938615</commentid>
    <comment_count>1</comment_count>
      <attachid>213947</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-10 16:55:31 -0700</bug_when>
    <thetext>Created attachment 213947
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938628</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-10 18:12:43 -0700</bug_when>
    <thetext>Committed r157282: &lt;http://trac.webkit.org/changeset/157282&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213947</attachid>
            <date>2013-10-10 16:55:31 -0700</date>
            <delta_ts>2013-10-10 17:05:24 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-122625-20131010165530.patch</filename>
            <type>text/plain</type>
            <size>36815</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzI3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEzLTEwLTEwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBFdmVudFJldGFyZ2V0
ZXIuaC9jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMjYyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1lcmdlZCB0aGUgcmVtYWluaW5nIGNvbnRlbnRzIG9mIEV2ZW50UmV0YXJnZXRlci5oIGFuZCBF
dmVudFJldGFyZ3Rlci5jcHAgaW50byBFdmVudERpc3BhdGNoZXIuY3BwLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGlldWkvVUlSZXF1ZXN0RXZlbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3Bw
OgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAg
ICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpldmVudFRh
cmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRFdmVu
dENyb3NzU2hhZG93Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6bm9kZU9ySG9zdElmUHNl
dWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OkV2ZW50UGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsZFJlbGF0ZWROb2RlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZFJlbGF0ZWROb2RlRm9yVW5tYXBlZFRyZWVTY29wZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsY3VsYXRlQWRqdXN0ZWROb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVUb3VjaExp
c3RzSW5FdmVudFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjp1cGRhdGVUb3Vj
aExpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6c2V0UmVsYXRlZFRhcmdldCk6
CisgICAgICAgICogZG9tL0V2ZW50UmV0YXJnZXRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
ZG9tL0V2ZW50UmV0YXJnZXRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9Gb2N1c0V2ZW50
LmNwcDoKKyAgICAgICAgKiBkb20vR2VzdHVyZUV2ZW50Lmg6CisgICAgICAgICogZG9tL0tleWJv
YXJkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgICogZG9t
L01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vVG91Y2hFdmVudC5jcHA6CisgICAgICAgICog
ZG9tL1VJRXZlbnQuY3BwOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmNwcDoKKwogMjAxMy0x
MC0xMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBz
ZXRVc2VQcmVzZW50YXRpb25WYWx1ZSBvbiBNb3VudGFpbkxpb24gcmVzdWx0cyBpbiB1bnJlY29n
bml6ZWQgc2VsZWN0b3IgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTU3MjQ5
KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEx
MzIsNyArMTEzMiw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vRXZlbnRFeGNlcHRp
b24uY3BwCiAgICAgZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCiAgICAgZG9tL0V2ZW50TmFtZXMu
Y3BwCi0gICAgZG9tL0V2ZW50UmV0YXJnZXRlci5jcHAKICAgICBkb20vRXZlbnRUYXJnZXQuY3Bw
CiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCiAgICAgZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhv
bGRlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU3
MjQ5KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtMjgzMyw4ICsyODMzLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggXAotCVNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFJldGFyZ2V0ZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRSZXRhcmdldGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRRdWV1ZS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kaWV1aS9VSVJl
cXVlc3RFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRp
ZXVpL1VJUmVxdWVzdEV2ZW50LmNwcAkocmV2aXNpb24gMTU3MjQ5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRpZXVpL1VJUmVxdWVzdEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlVJUmVxdWVzdEV2
ZW50LmgiCiAKLSNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKLQogI2lmIEVOQUJMRShJTkRJ
RV9VSSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU3MjQ5KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTQwLDggKzE1NDAsNiBAQAogCQk0QTRGNDhBQTE2QjBERkMwMDBFREJCMjkg
LyogRG9jdW1lbnRSdWxlU2V0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEE0RjQ4QTgxNkIwREZDMDAwRURCQjI5IC8qIERvY3VtZW50UnVsZVNldHMu
aCAqLzsgfTsKIAkJNEE1QTJBREIxNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lv
blBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QTVBMkFEOTE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNw
cCAqLzsgfTsKIAkJNEE1QTJBREMxNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lv
blBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEE1QTJBREExNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oICov
OyB9OwotCQk0QTVDQjFDNTE2QzNBNUZEMDBBQjI4ODYgLyogRXZlbnRSZXRhcmdldGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNUNCMUMzMTZD
M0E1RkQwMEFCMjg4NiAvKiBFdmVudFJldGFyZ2V0ZXIuY3BwICovOyB9OwotCQk0QTVDQjFDNjE2
QzNBNUZEMDBBQjI4ODYgLyogRXZlbnRSZXRhcmdldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTVDQjFDNDE2QzNBNUZEMDBBQjI4ODYgLyogRXZl
bnRSZXRhcmdldGVyLmggKi87IH07CiAJCTRBNkU5RkMzMTNDMTdEMUQwMDQ2QTdGOCAvKiBDU1NG
b250RmVhdHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRBNkU5RkMxMTNDMTdEMUQwMDQ2QTdGOCAvKiBDU1NGb250RmVhdHVyZVZhbHVl
LmNwcCAqLzsgfTsKIAkJNEE2RTlGQzQxM0MxN0QxRDAwNDZBN0Y4IC8qIENTU0ZvbnRGZWF0dXJl
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRB
NkU5RkMyMTNDMTdEMUQwMDQ2QTdGOCAvKiBDU1NGb250RmVhdHVyZVZhbHVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEE2RTlGQzcxM0MxN0Q1
NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2RTlGQzUxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZv
bnRGZWF0dXJlU2V0dGluZ3MuY3BwICovOyB9OwpAQCAtODA5Nyw4ICs4MDk1LDYgQEAKIAkJNEE0
RjQ4QTgxNkIwREZDMDAwRURCQjI5IC8qIERvY3VtZW50UnVsZVNldHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRSdWxlU2V0cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QTVBMkFEOTE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5z
aW9uUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNv
Y2tldEV4dGVuc2lvblBhcnNlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RXh0ZW5zaW9uUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE1
QTJBREExNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaDsg
cGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEE1Q0IxQzMxNkMzQTVGRDAwQUIyODg2IC8qIEV2
ZW50UmV0YXJnZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
dmVudFJldGFyZ2V0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QTVDQjFD
NDE2QzNBNUZEMDBBQjI4ODYgLyogRXZlbnRSZXRhcmdldGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV2ZW50UmV0YXJnZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QTZFOUZDMTEzQzE3RDFEMDA0NkE3RjggLyogQ1NTRm9udEZlYXR1cmVWYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NGb250RmVhdHVyZVZh
bHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2RTlGQzIxM0MxN0QxRDAw
NDZBN0Y4IC8qIENTU0ZvbnRGZWF0dXJlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ1NTRm9udEZlYXR1cmVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVyZVNldHRpbmdz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODUyLDggKzIwODQ4LDYgQEAK
IAkJCQk5Mzk4ODVDMjA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5oICovLAogCQkJCUJD
OUE2MTQyMTQ2ODU5RDkwMDYwNTdGRCAvKiBFdmVudE5hbWVzLmluICovLAogCQkJCThGNjc1NjE5
MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi8sCi0JCQkJNEE1Q0IxQzMxNkMzQTVG
RDAwQUIyODg2IC8qIEV2ZW50UmV0YXJnZXRlci5jcHAgKi8sCi0JCQkJNEE1Q0IxQzQxNkMzQTVG
RDAwQUIyODg2IC8qIEV2ZW50UmV0YXJnZXRlci5oICovLAogCQkJCUNFNUNCMUIzMTRFREFCNkYw
MEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICovLAogCQkJCUUxMkVEQkU5MEIzMDhFMEIwMDI3MDRC
NiAvKiBFdmVudFRhcmdldC5jcHAgKi8sCiAJCQkJRTEyRURCN0EwQjMwOEE3ODAwMjcwNEI2IC8q
IEV2ZW50VGFyZ2V0LmggKi8sCkBAIC0yMjMyMyw3ICsyMjMxNyw2IEBACiAJCQkJMUNBMTlFMTYw
REMyNTVDQTAwNjVBOTk0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODg1
QzQwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCThG
Njc1NjFCMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk0QTVDQjFDNjE2QzNBNUZEMDBBQjI4ODYgLyogRXZlbnRSZXRhcmdldGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMEZFRjM3MkIxN0M1M0VBQzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxMkVEQjdCMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQTNDQTUxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFy
Z2V0SGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU5Nyw3ICsyNTU5MCw2IEBACiAJCQkJ
MUNBMTlFMDUwREMyNTU5NTAwNjVBOTk0IC8qIEV2ZW50TG9vcE1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTkzOTg4NUMzMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3OTY5REI5MTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1BlZXJDb25uZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTRBNUNCMUM1MTZDM0E1RkQwMEFCMjg4NiAvKiBF
dmVudFJldGFyZ2V0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTBGRUYzNzJCMjdDNTNFQUMx
QzFGQkVFIC8qIEV2ZW50U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMkVEQkVBMEIz
MDhFMEIwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYw
RDhGMjBEMkExMUUwMDBCOTkxOEYgLyogRXhjZXB0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAkocmV2aXNpb24gMTU3MjQ5KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYs
NyArNzYsNiBAQAogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmNwcCIKICNpbmNsdWRlICJFdmVu
dExpc3RlbmVyTWFwLmNwcCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmNwcCIKLSNpbmNsdWRlICJF
dmVudFJldGFyZ2V0ZXIuY3BwIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmNwcCIKICNpbmNsdWRl
ICJFeGNlcHRpb25CYXNlLmNwcCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIu
Y3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiAxNTcyNDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKIAotI2luY2x1ZGUgIkV2ZW50
RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuaAkocmV2aXNpb24gMTU3MjQ5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDbGlwYm9hcmQ7CiBjbGFzcyBFdmVudFRhcmdldDsKLWNsYXNzIEV2ZW50RGlzcGF0Y2hlcjsK
IGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50OwogCiBzdHJ1Y3QgRXZlbnRJbml0IHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCShyZXZpc2lvbiAxNTcyNTApCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkV2
ZW50Q29udGV4dC5oIgotI2luY2x1ZGUgIkV2ZW50UmV0YXJnZXRlci5oIgogI2luY2x1ZGUgIkZv
Y3VzRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRF
bGVtZW50LmgiCkBAIC0zNiwxNCArMzUsNDggQEAKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1vdXNl
RXZlbnQuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NvcGVkRXZl
bnRRdWV1ZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50
LmgiCiAjaW5jbHVkZSAiV2luZG93RXZlbnRDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIK
KyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2lubGluZSBFdmVudFRhcmdldCYgZXZlbnRUYXJn
ZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoTm9kZSYgcmVmZXJlbmNlTm9kZSkKK3sKKyAgICBpZiAo
cmVmZXJlbmNlTm9kZS5pc1BzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBFdmVudFRhcmdldCog
aG9zdEVsZW1lbnQgPSB0b1BzZXVkb0VsZW1lbnQocmVmZXJlbmNlTm9kZSkuaG9zdEVsZW1lbnQo
KTsKKyAgICAgICAgQVNTRVJUKGhvc3RFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuICpob3N0RWxl
bWVudDsKKyAgICB9CisKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmICghcmVmZXJlbmNlTm9kZS5p
c1NWR0VsZW1lbnQoKSB8fCAhcmVmZXJlbmNlTm9kZS5pc0luU2hhZG93VHJlZSgpKQorICAgICAg
ICByZXR1cm4gcmVmZXJlbmNlTm9kZTsKKworICAgIC8vIFNwZWM6IFRoZSBldmVudCBoYW5kbGlu
ZyBmb3IgdGhlIG5vbi1leHBvc2VkIHRyZWUgd29ya3MgYXMgaWYgdGhlIHJlZmVyZW5jZWQgZWxl
bWVudCBoYWQgYmVlbiB0ZXh0dWFsbHkgaW5jbHVkZWQKKyAgICAvLyBhcyBhIGRlZXBseSBjbG9u
ZWQgY2hpbGQgb2YgdGhlICd1c2UnIGVsZW1lbnQsIGV4Y2VwdCB0aGF0IGV2ZW50cyBhcmUgZGlz
cGF0Y2hlZCB0byB0aGUgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMKKyAgICBOb2RlKiByb290
Tm9kZSA9IHJlZmVyZW5jZU5vZGUudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKKyAgICBFbGVtZW50
KiBzaGFkb3dIb3N0RWxlbWVudCA9IHJvb3ROb2RlLT5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93
Um9vdChyb290Tm9kZSktPmhvc3RFbGVtZW50KCkgOiAwOworICAgIC8vIEF0IHRoaXMgdGltZSwg
U1ZHIG5vZGVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG5vbi08dXNlPiBzaGFkb3cgdHJlZXMuCisg
ICAgaWYgKCFzaGFkb3dIb3N0RWxlbWVudCB8fCAhc2hhZG93SG9zdEVsZW1lbnQtPmhhc1RhZ05h
bWUoU1ZHTmFtZXM6OnVzZVRhZykpCisgICAgICAgIHJldHVybiByZWZlcmVuY2VOb2RlOworICAg
IFNWR1VzZUVsZW1lbnQqIHVzZUVsZW1lbnQgPSB0b1NWR1VzZUVsZW1lbnQoc2hhZG93SG9zdEVs
ZW1lbnQpOworICAgIGlmIChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlID0gdXNlRWxlbWVu
dC0+aW5zdGFuY2VGb3JTaGFkb3dUcmVlRWxlbWVudCgmcmVmZXJlbmNlTm9kZSkpCisgICAgICAg
IHJldHVybiAqaW5zdGFuY2U7CisjZW5kaWYKKworICAgIHJldHVybiByZWZlcmVuY2VOb2RlOwor
fQorCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTY29wZWRFdmVudChOb2RlJiBub2Rl
LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUg
dGFyZ2V0IGhlcmUgYmVjYXVzZSBpdCBjYW4gZ28gYXdheSBieSB0aGUgdGltZSB3ZSBhY3R1YWxs
eSBmaXJlIHRoZSBldmVudC4KQEAgLTE5Miw2ICsyMjUsMjA3IEBAIGJvb2wgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaEV2ZW50KE5vZGUKICAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVu
dGVkKCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFdmVudENyb3NzU2hhZG93Qm91
bmRhcnkoRXZlbnQmIGV2ZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290LCBFdmVudFRhcmdldCYg
dGFyZ2V0KQoreworICAgIE5vZGUqIHRhcmdldE5vZGUgPSB0YXJnZXQudG9Ob2RlKCk7CisjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEUoVklERU8pCisgICAgLy8gVmlkZW8tb25s
eSBmdWxsIHNjcmVlbiBpcyBhIG1vZGUgd2hlcmUgd2UgdXNlIHRoZSBzaGFkb3cgRE9NIGFzIGFu
IGltcGxlbWVudGF0aW9uCisgICAgLy8gZGV0YWlsIHRoYXQgc2hvdWxkIG5vdCBiZSBkZXRlY3Rh
YmxlIGJ5IHRoZSB3ZWIgY29udGVudC4KKyAgICBpZiAodGFyZ2V0Tm9kZSkgeworICAgICAgICBp
ZiAoRWxlbWVudCogZWxlbWVudCA9IHRhcmdldE5vZGUtPmRvY3VtZW50KCkud2Via2l0Q3VycmVu
dEZ1bGxTY3JlZW5FbGVtZW50KCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBhc3N1bWUg
dGhhdCBpZiB0aGUgZnVsbCBzY3JlZW4gZWxlbWVudCBpcyBhIG1lZGlhIGVsZW1lbnQgdGhhdCBp
dCdzCisgICAgICAgICAgICAvLyB0aGUgdmlkZW8tb25seSBmdWxsIHNjcmVlbi4gQm90aCBoZXJl
IGFuZCBlbHNld2hlcmUuIEJ1dCB0aGF0IGlzIHByb2JhYmx5IHdyb25nLgorICAgICAgICAgICAg
aWYgKGVsZW1lbnQtPmlzTWVkaWFFbGVtZW50KCkgJiYgc2hhZG93Um9vdC5ob3N0RWxlbWVudCgp
ID09IGVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCisKKyAgICAvLyBXZWJLaXQgbmV2ZXIgYWxsb3dlZCBzZWxlY3RzdGFydCBl
dmVudCB0byBjcm9zcyB0aGUgdGhlIHNoYWRvdyBET00gYm91bmRhcnkuCisgICAgLy8gQ2hhbmdp
bmcgdGhpcyBicmVha3MgZXhpc3Rpbmcgc2l0ZXMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjE5NSBmb3IgZGV0YWlscy4KKyAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IGV2ZW50LnR5cGUoKTsKKyAgICBib29sIHRhcmdldElz
SW5TaGFkb3dSb290ID0gdGFyZ2V0Tm9kZSAmJiB0YXJnZXROb2RlLT50cmVlU2NvcGUoKS5yb290
Tm9kZSgpID09ICZzaGFkb3dSb290OworICAgIHJldHVybiAhdGFyZ2V0SXNJblNoYWRvd1Jvb3QK
KyAgICAgICAgfHwgIShldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmFib3J0RXZlbnQKKyAgICAg
ICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQKKyAgICAgICAg
ICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudAorICAgICAgICAgICAg
fHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQKKyAgICAgICAgICAgIHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkucmVzZXRFdmVudAorICAgICAgICAgICAgfHwgZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudAorICAgICAgICAgICAgfHwgZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudAorICAgICAgICAgICAgfHwgZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5zZWxlY3RFdmVudAorICAgICAgICAgICAgfHwgZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50KTsKK30KKworc3RhdGljIE5vZGUqIG5vZGVPckhv
c3RJZlBzZXVkb0VsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+aXNQc2V1
ZG9FbGVtZW50KCkgPyB0b1BzZXVkb0VsZW1lbnQobm9kZSktPmhvc3RFbGVtZW50KCkgOiBub2Rl
OworfQorCitFdmVudFBhdGg6OkV2ZW50UGF0aChOb2RlJiB0YXJnZXROb2RlLCBFdmVudCYgZXZl
bnQpCisgICAgOiBtX29yaWdpbigmdGFyZ2V0Tm9kZSkKK3sKKyAgICBib29sIGluRG9jdW1lbnQg
PSB0YXJnZXROb2RlLmluRG9jdW1lbnQoKTsKKyAgICBib29sIGlzU1ZHRWxlbWVudCA9IHRhcmdl
dE5vZGUuaXNTVkdFbGVtZW50KCk7CisgICAgYm9vbCBpc01vdXNlT3JGb2N1c0V2ZW50ID0gZXZl
bnQuaXNNb3VzZUV2ZW50KCkgfHwgZXZlbnQuaXNGb2N1c0V2ZW50KCk7CisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKyAgICBib29sIGlzVG91Y2hFdmVudCA9IGV2ZW50LmlzVG91Y2hFdmVudCgp
OworI2VuZGlmCisgICAgRXZlbnRUYXJnZXQqIHRhcmdldCA9IDA7CisKKyAgICBOb2RlKiBub2Rl
ID0gbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudCgmdGFyZ2V0Tm9kZSk7CisgICAgd2hpbGUgKG5v
ZGUpIHsKKyAgICAgICAgaWYgKCF0YXJnZXQgfHwgIWlzU1ZHRWxlbWVudCkgLy8gRklYTUU6IFRo
aXMgY29kZSBkb2Vzbid0IG1ha2Ugc2Vuc2Ugb25jZSB3ZSd2ZSBjbGltYmVkIG91dCBvZiB0aGUg
U1ZHIHN1YnRyZWUgaW4gYSBIVE1MIGRvY3VtZW50LgorICAgICAgICAgICAgdGFyZ2V0ID0gJmV2
ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKKyAgICAgICAgZm9yICg7IG5v
ZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgIEV2ZW50VGFyZ2V0
JiBjdXJyZW50VGFyZ2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMoKm5vZGUp
OworICAgICAgICAgICAgaWYgKGlzTW91c2VPckZvY3VzRXZlbnQpCisgICAgICAgICAgICAgICAg
bV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dD4o
bm9kZSwgJmN1cnJlbnRUYXJnZXQsIHRhcmdldCkpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgICAgICAgICBlbHNlIGlmIChpc1RvdWNoRXZlbnQpCisgICAgICAgICAgICAgICAgbV9w
YXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoRXZlbnRDb250ZXh0Pihub2RlLCAmY3Vy
cmVudFRhcmdldCwgdGFyZ2V0KSk7CisjZW5kaWYKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pihub2Rl
LCAmY3VycmVudFRhcmdldCwgdGFyZ2V0KSk7CisgICAgICAgICAgICBpZiAoIWluRG9jdW1lbnQp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKG5vZGUtPmlzU2hhZG93
Um9vdCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICgh
bm9kZSB8fCAhc2hvdWxkRXZlbnRDcm9zc1NoYWRvd0JvdW5kYXJ5KGV2ZW50LCAqdG9TaGFkb3dS
b290KG5vZGUpLCAqdGFyZ2V0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbm9kZSA9
IHRvU2hhZG93Um9vdChub2RlKS0+aG9zdEVsZW1lbnQoKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2
b2lkIGJ1aWxkUmVsYXRlZE5vZGVNYXAoY29uc3QgTm9kZSogcmVsYXRlZE5vZGUsIEhhc2hNYXA8
VHJlZVNjb3BlKiwgTm9kZSo+JiByZWxhdGVkTm9kZU1hcCkKK3sKKyAgICBOb2RlKiByZWxhdGVk
Tm9kZUluQ3VycmVudFRyZWUgPSAwOworICAgIFRyZWVTY29wZSogbGFzdFRyZWVTY29wZSA9IDA7
CisgICAgZm9yIChOb2RlKiBub2RlID0gbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudChjb25zdF9j
YXN0PE5vZGUqPihyZWxhdGVkTm9kZSkpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgpKSB7CisgICAgICAgIGlmICghcmVsYXRlZE5vZGVJbkN1cnJlbnRUcmVlKQor
ICAgICAgICAgICAgcmVsYXRlZE5vZGVJbkN1cnJlbnRUcmVlID0gbm9kZTsKKyAgICAgICAgVHJl
ZVNjb3BlKiBzY29wZSA9ICZub2RlLT50cmVlU2NvcGUoKTsKKyAgICAgICAgLy8gU2tpcHMgYWRk
aW5nIGEgbm9kZSB0byB0aGUgbWFwIGlmIHRyZWVTY29wZSBkb2VzIG5vdCBjaGFuZ2UuIEp1c3Qg
Zm9yIHRoZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uCisgICAgICAgIGlmIChzY29wZSAhPSBs
YXN0VHJlZVNjb3BlKQorICAgICAgICAgICAgcmVsYXRlZE5vZGVNYXAuYWRkKHNjb3BlLCByZWxh
dGVkTm9kZUluQ3VycmVudFRyZWUpOworICAgICAgICBsYXN0VHJlZVNjb3BlID0gc2NvcGU7Cisg
ICAgICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICAgICAgQVNTRVJUKHJl
bGF0ZWROb2RlSW5DdXJyZW50VHJlZSk7CisgICAgICAgICAgICByZWxhdGVkTm9kZUluQ3VycmVu
dFRyZWUgPSAwOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgTm9kZSogYWRkUmVsYXRl
ZE5vZGVGb3JVbm1hcGVkVHJlZVNjb3BlcyhUcmVlU2NvcGUqIHNjb3BlLCBIYXNoTWFwPFRyZWVT
Y29wZSosIE5vZGUqPiYgcmVsYXRlZE5vZGVNYXApCit7CisgICAgTm9kZSogcmVsYXRlZE5vZGUg
PSAwOworICAgIFRyZWVTY29wZSogZW5kU2NvcGUgPSAwOworICAgIGZvciAoVHJlZVNjb3BlKiBj
dXJyZW50U2NvcGUgPSBzY29wZTsgY3VycmVudFNjb3BlOyBjdXJyZW50U2NvcGUgPSBjdXJyZW50
U2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVsYXRl
ZE5vZGVNYXAuZmluZChjdXJyZW50U2NvcGUpOworICAgICAgICBpZiAocmVzdWx0ICE9IHJlbGF0
ZWROb2RlTWFwLmVuZCgpKSB7CisgICAgICAgICAgICByZWxhdGVkTm9kZSA9IHJlc3VsdC0+dmFs
dWU7CisgICAgICAgICAgICBlbmRTY29wZSA9IGN1cnJlbnRTY29wZTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoVHJlZVNjb3BlKiBjdXJyZW50U2NvcGUg
PSBzY29wZTsgY3VycmVudFNjb3BlICE9IGVuZFNjb3BlOyBjdXJyZW50U2NvcGUgPSBjdXJyZW50
U2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKQorICAgICAgICByZWxhdGVkTm9kZU1hcC5hZGQoY3Vy
cmVudFNjb3BlLCByZWxhdGVkTm9kZSk7CisgICAgcmV0dXJuIHJlbGF0ZWROb2RlOworfQorCitl
bnVtIEV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNwYXRjaEJlaGF2aW9yIHsKKyAgICBTdG9wQXRC
b3VuZGFyeUlmTmVlZGVkLAorICAgIERvZXNOb3RTdG9wQXRCb3VuZGFyeQorfTsKK3N0YXRpYyBz
aXplX3QgY2FsY3VsYXRlQWRqdXN0ZWROb2Rlcyhjb25zdCBOb2RlKiBub2RlLCBjb25zdCBOb2Rl
KiByZWxhdGVkTm9kZSwgRXZlbnRXaXRoUmVsYXRlZFRhcmdldERpc3BhdGNoQmVoYXZpb3IgZXZl
bnRXaXRoUmVsYXRlZFRhcmdldERpc3BhdGNoQmVoYXZpb3IsIGNvbnN0IEV2ZW50UGF0aCYgZXZl
bnRQYXRoLCBWZWN0b3I8UmVmUHRyPE5vZGU+PiYgYWRqdXN0ZWROb2RlcykKK3sKKyAgICBIYXNo
TWFwPFRyZWVTY29wZSosIE5vZGUqPiByZWxhdGVkTm9kZU1hcDsKKyAgICBidWlsZFJlbGF0ZWRO
b2RlTWFwKHJlbGF0ZWROb2RlLCByZWxhdGVkTm9kZU1hcCk7CisKKyAgICAvLyBTeW50aGV0aWMg
bW91c2UgZXZlbnRzIGNhbiBoYXZlIGEgcmVsYXRlZFRhcmdldCB3aGljaCBpcyBpZGVudGljYWwg
dG8gdGhlIHRhcmdldC4KKyAgICBib29sIHRhcmdldElzSWRlbnRpY2FsVG9Ub1JlbGF0ZWRUYXJn
ZXQgPSAobm9kZSA9PSByZWxhdGVkTm9kZSk7CisKKyAgICBUcmVlU2NvcGUqIGxhc3RUcmVlU2Nv
cGUgPSAwOworICAgIE5vZGUqIGFkanVzdGVkTm9kZSA9IDA7CisgICAgc2l6ZV90IGV2ZW50UGF0
aFNpemUgPSBldmVudFBhdGguc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZl
bnRQYXRoU2l6ZTsgaSsrKSB7CisgICAgICAgIGNvbnN0IEV2ZW50Q29udGV4dCYgY29udGV4dCA9
IGV2ZW50UGF0aC5jb250ZXh0QXQoaSk7CisgICAgICAgIFRyZWVTY29wZSogc2NvcGUgPSAmY29u
dGV4dC5ub2RlKCktPnRyZWVTY29wZSgpOworCisgICAgICAgIC8vIFJlLXVzZSB0aGUgcHJldmlv
dXMgYWRqdXN0ZWRSZWxhdGVkVGFyZ2V0IGlmIHRyZWVTY29wZSBkb2VzIG5vdCBjaGFuZ2UuIEp1
c3QgZm9yIHRoZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uCisgICAgICAgIGlmIChzY29wZSAh
PSBsYXN0VHJlZVNjb3BlKQorICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gYWRkUmVsYXRlZE5v
ZGVGb3JVbm1hcGVkVHJlZVNjb3BlcyhzY29wZSwgcmVsYXRlZE5vZGVNYXApOworICAgICAgICBh
ZGp1c3RlZE5vZGVzLmFwcGVuZChhZGp1c3RlZE5vZGUpOworCisgICAgICAgIGxhc3RUcmVlU2Nv
cGUgPSBzY29wZTsKKyAgICAgICAgaWYgKGV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNwYXRjaEJl
aGF2aW9yID09IERvZXNOb3RTdG9wQXRCb3VuZGFyeSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAodGFyZ2V0SXNJZGVudGljYWxUb1RvUmVsYXRlZFRhcmdldCkgeworICAgICAg
ICAgICAgaWYgKG5vZGUtPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkgPT0gY29udGV4dC5ub2RlKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGkgKyAxOworICAgICAgICB9IGVsc2UgaWYgKGNvbnRl
eHQudGFyZ2V0KCkgPT0gYWRqdXN0ZWROb2RlKSB7CisgICAgICAgICAgICAvLyBFdmVudCBkaXNw
YXRjaGluZyBzaG91bGQgYmUgc3RvcHBlZCBoZXJlLgorICAgICAgICAgICAgYWRqdXN0ZWROb2Rl
cy5zaHJpbmsoYWRqdXN0ZWROb2Rlcy5zaXplKCkgLSAxKTsKKyAgICAgICAgICAgIHJldHVybiBp
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBldmVudFBhdGhTaXplOworfQorCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKK3N0YXRpYyB2b2lkIHVwZGF0ZVRvdWNoTGlzdHNJbkV2ZW50
UGF0aChWZWN0b3I8UmVmUHRyPFRvdWNoTGlzdD4+JiB0b3VjaExpc3RzSW5FdmVudFBhdGgsIGNv
bnN0IE5vZGUqIG5vZGUsIGNvbnN0IFRvdWNoTGlzdCogdG91Y2hMaXN0LCBjb25zdCBFdmVudFBh
dGgmIGV2ZW50UGF0aCkKK3sKKyAgICBpZiAoIXRvdWNoTGlzdCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIHNpemVfdCBldmVudFBhdGhTaXplID0gZXZlbnRQYXRoLnNpemUoKTsKKyAgICBBU1NFUlQo
dG91Y2hMaXN0c0luRXZlbnRQYXRoLnNpemUoKSA9PSBldmVudFBhdGhTaXplKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHRvdWNoTGlzdC0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBj
b25zdCBUb3VjaCYgdG91Y2ggPSAqdG91Y2hMaXN0LT5pdGVtKGkpOworCisgICAgICAgIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4+IGFkanVzdGVkTm9kZXM7CisgICAgICAgIGNhbGN1bGF0ZUFkanVzdGVk
Tm9kZXMobm9kZSwgdG91Y2gudGFyZ2V0KCktPnRvTm9kZSgpLCBEb2VzTm90U3RvcEF0Qm91bmRh
cnksIGV2ZW50UGF0aCwgYWRqdXN0ZWROb2Rlcyk7CisKKyAgICAgICAgQVNTRVJUKGFkanVzdGVk
Tm9kZXMuc2l6ZSgpID09IGV2ZW50UGF0aFNpemUpOworICAgICAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IGV2ZW50UGF0aFNpemU7ICsraikKKyAgICAgICAgICAgIHRvdWNoTGlzdHNJbkV2ZW50
UGF0aFtqXS0+YXBwZW5kKHRvdWNoLmNsb25lV2l0aE5ld1RhcmdldChhZGp1c3RlZE5vZGVzW2pd
LmdldCgpKSk7CisgICAgfQorfQorCit2b2lkIEV2ZW50UGF0aDo6dXBkYXRlVG91Y2hMaXN0cyhj
b25zdCBUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQoreworICAgIHNpemVfdCBldmVudFBhdGhTaXpl
ID0gbV9wYXRoLnNpemUoKTsKKworICAgIFZlY3RvcjxSZWZQdHI8VG91Y2hMaXN0Pj4gdG91Y2hl
c0luRXZlbnRQYXRoKGV2ZW50UGF0aFNpemUpOworICAgIFZlY3RvcjxSZWZQdHI8VG91Y2hMaXN0
Pj4gdGFyZ2V0VG91Y2hlc0luRXZlbnRQYXRoKGV2ZW50UGF0aFNpemUpOworICAgIFZlY3RvcjxS
ZWZQdHI8VG91Y2hMaXN0Pj4gY2hhbmdlZFRvdWNoZXNJbkV2ZW50UGF0aChldmVudFBhdGhTaXpl
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRQYXRoU2l6ZTsgKytpKSB7Cisg
ICAgICAgIFRvdWNoRXZlbnRDb250ZXh0JiBjb250ZXh0ID0gKnRvVG91Y2hFdmVudENvbnRleHQo
bV9wYXRoW2ldLmdldCgpKTsKKyAgICAgICAgdG91Y2hlc0luRXZlbnRQYXRoW2ldID0gY29udGV4
dC50b3VjaGVzKCk7CisgICAgICAgIHRhcmdldFRvdWNoZXNJbkV2ZW50UGF0aFtpXSA9IGNvbnRl
eHQudGFyZ2V0VG91Y2hlcygpOworICAgICAgICBjaGFuZ2VkVG91Y2hlc0luRXZlbnRQYXRoW2ld
ID0gY29udGV4dC5jaGFuZ2VkVG91Y2hlcygpOworICAgIH0KKworICAgIHVwZGF0ZVRvdWNoTGlz
dHNJbkV2ZW50UGF0aCh0b3VjaGVzSW5FdmVudFBhdGgsIG1fb3JpZ2luLmdldCgpLCB0b3VjaEV2
ZW50LnRvdWNoZXMoKSwgKnRoaXMpOworICAgIHVwZGF0ZVRvdWNoTGlzdHNJbkV2ZW50UGF0aCh0
YXJnZXRUb3VjaGVzSW5FdmVudFBhdGgsIG1fb3JpZ2luLmdldCgpLCB0b3VjaEV2ZW50LnRhcmdl
dFRvdWNoZXMoKSwgKnRoaXMpOworICAgIHVwZGF0ZVRvdWNoTGlzdHNJbkV2ZW50UGF0aChjaGFu
Z2VkVG91Y2hlc0luRXZlbnRQYXRoLCBtX29yaWdpbi5nZXQoKSwgdG91Y2hFdmVudC5jaGFuZ2Vk
VG91Y2hlcygpLCAqdGhpcyk7Cit9CisjZW5kaWYKKwordm9pZCBFdmVudFBhdGg6OnNldFJlbGF0
ZWRUYXJnZXQoRXZlbnRUYXJnZXQmIHJlbGF0ZWRUYXJnZXQpCit7CisgICAgTm9kZSogcmVsYXRl
ZE5vZGUgPSByZWxhdGVkVGFyZ2V0LnRvTm9kZSgpOworICAgIGlmICghcmVsYXRlZE5vZGUpCisg
ICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBhZGp1c3RlZE5vZGVzOwor
ICAgIG1fcGF0aC5zaHJpbmsoY2FsY3VsYXRlQWRqdXN0ZWROb2RlcyhtX29yaWdpbi5nZXQoKSwg
cmVsYXRlZE5vZGUsIFN0b3BBdEJvdW5kYXJ5SWZOZWVkZWQsICp0aGlzLCBhZGp1c3RlZE5vZGVz
KSk7CisgICAgQVNTRVJUKGFkanVzdGVkTm9kZXMuc2l6ZSgpIDw9IG1fcGF0aC5zaXplKCkpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWRqdXN0ZWROb2Rlcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgdG9Nb3VzZU9yRm9jdXNFdmVudENvbnRleHQoKm1fcGF0aFtpXSkuc2V0UmVsYXRlZFRh
cmdldChhZGp1c3RlZE5vZGVzW2ldKTsKK30KKwogYm9vbCBFdmVudFBhdGg6Omhhc0V2ZW50TGlz
dGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAogewogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9wYXRoLnNpemUoKTsgaSsrKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRSZXRhcmdldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRSZXRhcmdldGVyLmNwcAkocmV2aXNpb24gMTU3MjQ5KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50UmV0YXJnZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkV2ZW50UmV0YXJnZXRlci5o
IgotCi0jaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgotI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5o
IgotI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgotI2luY2x1ZGUgIkZvY3VzRXZlbnQuaCIK
LSNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1
ZGUgIlRvdWNoLmgiCi0jaW5jbHVkZSAiVG91Y2hFdmVudC5oIgotI2luY2x1ZGUgIlRvdWNoTGlz
dC5oIgotI2luY2x1ZGUgIlRyZWVTY29wZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXZlbnRDcm9zc1No
YWRvd0JvdW5kYXJ5KEV2ZW50JiBldmVudCwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCwgRXZlbnRU
YXJnZXQmIHRhcmdldCkKLXsKLSAgICBOb2RlKiB0YXJnZXROb2RlID0gdGFyZ2V0LnRvTm9kZSgp
OwotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFKFZJREVPKQotICAgIC8vIFZp
ZGVvLW9ubHkgZnVsbCBzY3JlZW4gaXMgYSBtb2RlIHdoZXJlIHdlIHVzZSB0aGUgc2hhZG93IERP
TSBhcyBhbiBpbXBsZW1lbnRhdGlvbgotICAgIC8vIGRldGFpbCB0aGF0IHNob3VsZCBub3QgYmUg
ZGV0ZWN0YWJsZSBieSB0aGUgd2ViIGNvbnRlbnQuCi0gICAgaWYgKHRhcmdldE5vZGUpIHsKLSAg
ICAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSB0YXJnZXROb2RlLT5kb2N1bWVudCgpLndlYmtp
dEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ug
YXNzdW1lIHRoYXQgaWYgdGhlIGZ1bGwgc2NyZWVuIGVsZW1lbnQgaXMgYSBtZWRpYSBlbGVtZW50
IHRoYXQgaXQncwotICAgICAgICAgICAgLy8gdGhlIHZpZGVvLW9ubHkgZnVsbCBzY3JlZW4uIEJv
dGggaGVyZSBhbmQgZWxzZXdoZXJlLiBCdXQgdGhhdCBpcyBwcm9iYWJseSB3cm9uZy4KLSAgICAg
ICAgICAgIGlmIChlbGVtZW50LT5pc01lZGlhRWxlbWVudCgpICYmIHNoYWRvd1Jvb3QuaG9zdEVs
ZW1lbnQoKSA9PSBlbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgIH0KLSNlbmRpZgotCi0gICAgLy8gV2ViS2l0IG5ldmVyIGFsbG93ZWQgc2VsZWN0
c3RhcnQgZXZlbnQgdG8gY3Jvc3MgdGhlIHRoZSBzaGFkb3cgRE9NIGJvdW5kYXJ5LgotICAgIC8v
IENoYW5naW5nIHRoaXMgYnJlYWtzIGV4aXN0aW5nIHNpdGVzLgotICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxOTUgZm9yIGRldGFpbHMuCi0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUgPSBldmVudC50eXBlKCk7Ci0gICAgYm9vbCB0
YXJnZXRJc0luU2hhZG93Um9vdCA9IHRhcmdldE5vZGUgJiYgdGFyZ2V0Tm9kZS0+dHJlZVNjb3Bl
KCkucm9vdE5vZGUoKSA9PSAmc2hhZG93Um9vdDsKLSAgICByZXR1cm4gIXRhcmdldElzSW5TaGFk
b3dSb290Ci0gICAgICAgIHx8ICEoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50
Ci0gICAgICAgICAgICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50Ci0g
ICAgICAgICAgICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQKLSAgICAg
ICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50Ci0gICAgICAgICAg
ICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnJlc2V0RXZlbnQKLSAgICAgICAgICAgIHx8
IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkucmVzaXplRXZlbnQKLSAgICAgICAgICAgIHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQKLSAgICAgICAgICAgIHx8IGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuc2VsZWN0RXZlbnQKLSAgICAgICAgICAgIHx8IGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudCk7Ci19Ci0KLXN0YXRpYyBOb2RlKiBu
b2RlT3JIb3N0SWZQc2V1ZG9FbGVtZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUt
PmlzUHNldWRvRWxlbWVudCgpID8gdG9Qc2V1ZG9FbGVtZW50KG5vZGUpLT5ob3N0RWxlbWVudCgp
IDogbm9kZTsKLX0KLQotRXZlbnRQYXRoOjpFdmVudFBhdGgoTm9kZSYgdGFyZ2V0Tm9kZSwgRXZl
bnQmIGV2ZW50KQotICAgIDogbV9vcmlnaW4oJnRhcmdldE5vZGUpCi17Ci0gICAgYm9vbCBpbkRv
Y3VtZW50ID0gdGFyZ2V0Tm9kZS5pbkRvY3VtZW50KCk7Ci0gICAgYm9vbCBpc1NWR0VsZW1lbnQg
PSB0YXJnZXROb2RlLmlzU1ZHRWxlbWVudCgpOwotICAgIGJvb2wgaXNNb3VzZU9yRm9jdXNFdmVu
dCA9IGV2ZW50LmlzTW91c2VFdmVudCgpIHx8IGV2ZW50LmlzRm9jdXNFdmVudCgpOwotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgYm9vbCBpc1RvdWNoRXZlbnQgPSBldmVudC5pc1RvdWNo
RXZlbnQoKTsKLSNlbmRpZgotICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXQgPSAwOwotCi0gICAgTm9k
ZSogbm9kZSA9IG5vZGVPckhvc3RJZlBzZXVkb0VsZW1lbnQoJnRhcmdldE5vZGUpOwotICAgIHdo
aWxlIChub2RlKSB7Ci0gICAgICAgIGlmICghdGFyZ2V0IHx8ICFpc1NWR0VsZW1lbnQpIC8vIEZJ
WE1FOiBUaGlzIGNvZGUgZG9lc24ndCBtYWtlIHNlbnNlIG9uY2Ugd2UndmUgY2xpbWJlZCBvdXQg
b2YgdGhlIFNWRyBzdWJ0cmVlIGluIGEgSFRNTCBkb2N1bWVudC4KLSAgICAgICAgICAgIHRhcmdl
dCA9ICZldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygqbm9kZSk7Ci0gICAgICAgIGZv
ciAoOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBFdmVu
dFRhcmdldCYgY3VycmVudFRhcmdldCA9IGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVz
KCpub2RlKTsKLSAgICAgICAgICAgIGlmIChpc01vdXNlT3JGb2N1c0V2ZW50KQotICAgICAgICAg
ICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENv
bnRleHQ+KG5vZGUsICZjdXJyZW50VGFyZ2V0LCB0YXJnZXQpKTsKLSNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotICAgICAgICAgICAgZWxzZSBpZiAoaXNUb3VjaEV2ZW50KQotICAgICAgICAgICAg
ICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9k
ZSwgJmN1cnJlbnRUYXJnZXQsIHRhcmdldCkpOwotI2VuZGlmCi0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4
dD4obm9kZSwgJmN1cnJlbnRUYXJnZXQsIHRhcmdldCkpOwotICAgICAgICAgICAgaWYgKCFpbkRv
Y3VtZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChub2RlLT5p
c1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoIW5vZGUgfHwgIXNob3VsZEV2ZW50Q3Jvc3NTaGFkb3dCb3VuZGFyeShldmVudCwgKnRv
U2hhZG93Um9vdChub2RlKSwgKnRhcmdldCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IG5vZGUgPSB0b1NoYWRvd1Jvb3Qobm9kZSktPmhvc3RFbGVtZW50KCk7Ci0gICAgfQotfQotCi1z
dGF0aWMgdm9pZCBidWlsZFJlbGF0ZWROb2RlTWFwKGNvbnN0IE5vZGUqIHJlbGF0ZWROb2RlLCBI
YXNoTWFwPFRyZWVTY29wZSosIE5vZGUqPiYgcmVsYXRlZE5vZGVNYXApCi17Ci0gICAgTm9kZSog
cmVsYXRlZE5vZGVJbkN1cnJlbnRUcmVlID0gMDsKLSAgICBUcmVlU2NvcGUqIGxhc3RUcmVlU2Nv
cGUgPSAwOwotICAgIGZvciAoTm9kZSogbm9kZSA9IG5vZGVPckhvc3RJZlBzZXVkb0VsZW1lbnQo
Y29uc3RfY2FzdDxOb2RlKj4ocmVsYXRlZE5vZGUpKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVu
dE9yU2hhZG93SG9zdE5vZGUoKSkgewotICAgICAgICBpZiAoIXJlbGF0ZWROb2RlSW5DdXJyZW50
VHJlZSkKLSAgICAgICAgICAgIHJlbGF0ZWROb2RlSW5DdXJyZW50VHJlZSA9IG5vZGU7Ci0gICAg
ICAgIFRyZWVTY29wZSogc2NvcGUgPSAmbm9kZS0+dHJlZVNjb3BlKCk7Ci0gICAgICAgIC8vIFNr
aXBzIGFkZGluZyBhIG5vZGUgdG8gdGhlIG1hcCBpZiB0cmVlU2NvcGUgZG9lcyBub3QgY2hhbmdl
LiBKdXN0IGZvciB0aGUgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLgotICAgICAgICBpZiAoc2Nv
cGUgIT0gbGFzdFRyZWVTY29wZSkKLSAgICAgICAgICAgIHJlbGF0ZWROb2RlTWFwLmFkZChzY29w
ZSwgcmVsYXRlZE5vZGVJbkN1cnJlbnRUcmVlKTsKLSAgICAgICAgbGFzdFRyZWVTY29wZSA9IHNj
b3BlOwotICAgICAgICBpZiAobm9kZS0+aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVChyZWxhdGVkTm9kZUluQ3VycmVudFRyZWUpOwotICAgICAgICAgICAgcmVsYXRlZE5vZGVJ
bkN1cnJlbnRUcmVlID0gMDsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIE5vZGUqIGFk
ZFJlbGF0ZWROb2RlRm9yVW5tYXBlZFRyZWVTY29wZXMoVHJlZVNjb3BlKiBzY29wZSwgSGFzaE1h
cDxUcmVlU2NvcGUqLCBOb2RlKj4mIHJlbGF0ZWROb2RlTWFwKQotewotICAgIE5vZGUqIHJlbGF0
ZWROb2RlID0gMDsKLSAgICBUcmVlU2NvcGUqIGVuZFNjb3BlID0gMDsKLSAgICBmb3IgKFRyZWVT
Y29wZSogY3VycmVudFNjb3BlID0gc2NvcGU7IGN1cnJlbnRTY29wZTsgY3VycmVudFNjb3BlID0g
Y3VycmVudFNjb3BlLT5wYXJlbnRUcmVlU2NvcGUoKSkgewotICAgICAgICBhdXRvIHJlc3VsdCA9
IHJlbGF0ZWROb2RlTWFwLmZpbmQoY3VycmVudFNjb3BlKTsKLSAgICAgICAgaWYgKHJlc3VsdCAh
PSByZWxhdGVkTm9kZU1hcC5lbmQoKSkgewotICAgICAgICAgICAgcmVsYXRlZE5vZGUgPSByZXN1
bHQtPnZhbHVlOwotICAgICAgICAgICAgZW5kU2NvcGUgPSBjdXJyZW50U2NvcGU7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKFRyZWVTY29wZSogY3VycmVu
dFNjb3BlID0gc2NvcGU7IGN1cnJlbnRTY29wZSAhPSBlbmRTY29wZTsgY3VycmVudFNjb3BlID0g
Y3VycmVudFNjb3BlLT5wYXJlbnRUcmVlU2NvcGUoKSkKLSAgICAgICAgcmVsYXRlZE5vZGVNYXAu
YWRkKGN1cnJlbnRTY29wZSwgcmVsYXRlZE5vZGUpOwotICAgIHJldHVybiByZWxhdGVkTm9kZTsK
LX0KLQotZW51bSBFdmVudFdpdGhSZWxhdGVkVGFyZ2V0RGlzcGF0Y2hCZWhhdmlvciB7Ci0gICAg
U3RvcEF0Qm91bmRhcnlJZk5lZWRlZCwKLSAgICBEb2VzTm90U3RvcEF0Qm91bmRhcnkKLX07Ci1z
dGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUFkanVzdGVkTm9kZXMoY29uc3QgTm9kZSogbm9kZSwgY29u
c3QgTm9kZSogcmVsYXRlZE5vZGUsIEV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNwYXRjaEJlaGF2
aW9yIGV2ZW50V2l0aFJlbGF0ZWRUYXJnZXREaXNwYXRjaEJlaGF2aW9yLCBjb25zdCBFdmVudFBh
dGgmIGV2ZW50UGF0aCwgVmVjdG9yPFJlZlB0cjxOb2RlPj4mIGFkanVzdGVkTm9kZXMpCi17Ci0g
ICAgSGFzaE1hcDxUcmVlU2NvcGUqLCBOb2RlKj4gcmVsYXRlZE5vZGVNYXA7Ci0gICAgYnVpbGRS
ZWxhdGVkTm9kZU1hcChyZWxhdGVkTm9kZSwgcmVsYXRlZE5vZGVNYXApOwotCi0gICAgLy8gU3lu
dGhldGljIG1vdXNlIGV2ZW50cyBjYW4gaGF2ZSBhIHJlbGF0ZWRUYXJnZXQgd2hpY2ggaXMgaWRl
bnRpY2FsIHRvIHRoZSB0YXJnZXQuCi0gICAgYm9vbCB0YXJnZXRJc0lkZW50aWNhbFRvVG9SZWxh
dGVkVGFyZ2V0ID0gKG5vZGUgPT0gcmVsYXRlZE5vZGUpOwotCi0gICAgVHJlZVNjb3BlKiBsYXN0
VHJlZVNjb3BlID0gMDsKLSAgICBOb2RlKiBhZGp1c3RlZE5vZGUgPSAwOwotICAgIHNpemVfdCBl
dmVudFBhdGhTaXplID0gZXZlbnRQYXRoLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGV2ZW50UGF0aFNpemU7IGkrKykgewotICAgICAgICBjb25zdCBFdmVudENvbnRleHQmIGNv
bnRleHQgPSBldmVudFBhdGguY29udGV4dEF0KGkpOwotICAgICAgICBUcmVlU2NvcGUqIHNjb3Bl
ID0gJmNvbnRleHQubm9kZSgpLT50cmVlU2NvcGUoKTsKLQotICAgICAgICAvLyBSZS11c2UgdGhl
IHByZXZpb3VzIGFkanVzdGVkUmVsYXRlZFRhcmdldCBpZiB0cmVlU2NvcGUgZG9lcyBub3QgY2hh
bmdlLiBKdXN0IGZvciB0aGUgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLgotICAgICAgICBpZiAo
c2NvcGUgIT0gbGFzdFRyZWVTY29wZSkKLSAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IGFkZFJl
bGF0ZWROb2RlRm9yVW5tYXBlZFRyZWVTY29wZXMoc2NvcGUsIHJlbGF0ZWROb2RlTWFwKTsKLSAg
ICAgICAgYWRqdXN0ZWROb2Rlcy5hcHBlbmQoYWRqdXN0ZWROb2RlKTsKLQotICAgICAgICBsYXN0
VHJlZVNjb3BlID0gc2NvcGU7Ci0gICAgICAgIGlmIChldmVudFdpdGhSZWxhdGVkVGFyZ2V0RGlz
cGF0Y2hCZWhhdmlvciA9PSBEb2VzTm90U3RvcEF0Qm91bmRhcnkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWYgKHRhcmdldElzSWRlbnRpY2FsVG9Ub1JlbGF0ZWRUYXJnZXQpIHsK
LSAgICAgICAgICAgIGlmIChub2RlLT50cmVlU2NvcGUoKS5yb290Tm9kZSgpID09IGNvbnRleHQu
bm9kZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBpICsgMTsKLSAgICAgICAgfSBlbHNlIGlm
IChjb250ZXh0LnRhcmdldCgpID09IGFkanVzdGVkTm9kZSkgewotICAgICAgICAgICAgLy8gRXZl
bnQgZGlzcGF0Y2hpbmcgc2hvdWxkIGJlIHN0b3BwZWQgaGVyZS4KLSAgICAgICAgICAgIGFkanVz
dGVkTm9kZXMuc2hyaW5rKGFkanVzdGVkTm9kZXMuc2l6ZSgpIC0gMSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZXZlbnRQYXRoU2l6ZTsKLX0K
LQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1zdGF0aWMgdm9pZCB1cGRhdGVUb3VjaExpc3Rz
SW5FdmVudFBhdGgoVmVjdG9yPFJlZlB0cjxUb3VjaExpc3Q+PiYgdG91Y2hMaXN0c0luRXZlbnRQ
YXRoLCBjb25zdCBOb2RlKiBub2RlLCBjb25zdCBUb3VjaExpc3QqIHRvdWNoTGlzdCwgY29uc3Qg
RXZlbnRQYXRoJiBldmVudFBhdGgpCi17Ci0gICAgaWYgKCF0b3VjaExpc3QpCi0gICAgICAgIHJl
dHVybjsKLSAgICBzaXplX3QgZXZlbnRQYXRoU2l6ZSA9IGV2ZW50UGF0aC5zaXplKCk7Ci0gICAg
QVNTRVJUKHRvdWNoTGlzdHNJbkV2ZW50UGF0aC5zaXplKCkgPT0gZXZlbnRQYXRoU2l6ZSk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b3VjaExpc3QtPmxlbmd0aCgpOyArK2kpIHsKLSAg
ICAgICAgY29uc3QgVG91Y2gmIHRvdWNoID0gKnRvdWNoTGlzdC0+aXRlbShpKTsKLQotICAgICAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBhZGp1c3RlZE5vZGVzOwotICAgICAgICBjYWxjdWxhdGVB
ZGp1c3RlZE5vZGVzKG5vZGUsIHRvdWNoLnRhcmdldCgpLT50b05vZGUoKSwgRG9lc05vdFN0b3BB
dEJvdW5kYXJ5LCBldmVudFBhdGgsIGFkanVzdGVkTm9kZXMpOwotCi0gICAgICAgIEFTU0VSVChh
ZGp1c3RlZE5vZGVzLnNpemUoKSA9PSBldmVudFBhdGhTaXplKTsKLSAgICAgICAgZm9yIChzaXpl
X3QgaiA9IDA7IGogPCBldmVudFBhdGhTaXplOyArK2opCi0gICAgICAgICAgICB0b3VjaExpc3Rz
SW5FdmVudFBhdGhbal0tPmFwcGVuZCh0b3VjaC5jbG9uZVdpdGhOZXdUYXJnZXQoYWRqdXN0ZWRO
b2Rlc1tqXS5nZXQoKSkpOwotICAgIH0KLX0KLQotdm9pZCBFdmVudFBhdGg6OnVwZGF0ZVRvdWNo
TGlzdHMoY29uc3QgVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKLXsKLSAgICBzaXplX3QgZXZlbnRQ
YXRoU2l6ZSA9IG1fcGF0aC5zaXplKCk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPFRvdWNoTGlzdD4+
IHRvdWNoZXNJbkV2ZW50UGF0aChldmVudFBhdGhTaXplKTsKLSAgICBWZWN0b3I8UmVmUHRyPFRv
dWNoTGlzdD4+IHRhcmdldFRvdWNoZXNJbkV2ZW50UGF0aChldmVudFBhdGhTaXplKTsKLSAgICBW
ZWN0b3I8UmVmUHRyPFRvdWNoTGlzdD4+IGNoYW5nZWRUb3VjaGVzSW5FdmVudFBhdGgoZXZlbnRQ
YXRoU2l6ZSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50UGF0aFNpemU7ICsr
aSkgewotICAgICAgICBUb3VjaEV2ZW50Q29udGV4dCYgY29udGV4dCA9ICp0b1RvdWNoRXZlbnRD
b250ZXh0KG1fcGF0aFtpXS5nZXQoKSk7Ci0gICAgICAgIHRvdWNoZXNJbkV2ZW50UGF0aFtpXSA9
IGNvbnRleHQudG91Y2hlcygpOwotICAgICAgICB0YXJnZXRUb3VjaGVzSW5FdmVudFBhdGhbaV0g
PSBjb250ZXh0LnRhcmdldFRvdWNoZXMoKTsKLSAgICAgICAgY2hhbmdlZFRvdWNoZXNJbkV2ZW50
UGF0aFtpXSA9IGNvbnRleHQuY2hhbmdlZFRvdWNoZXMoKTsKLSAgICB9Ci0KLSAgICB1cGRhdGVU
b3VjaExpc3RzSW5FdmVudFBhdGgodG91Y2hlc0luRXZlbnRQYXRoLCBtX29yaWdpbi5nZXQoKSwg
dG91Y2hFdmVudC50b3VjaGVzKCksICp0aGlzKTsKLSAgICB1cGRhdGVUb3VjaExpc3RzSW5FdmVu
dFBhdGgodGFyZ2V0VG91Y2hlc0luRXZlbnRQYXRoLCBtX29yaWdpbi5nZXQoKSwgdG91Y2hFdmVu
dC50YXJnZXRUb3VjaGVzKCksICp0aGlzKTsKLSAgICB1cGRhdGVUb3VjaExpc3RzSW5FdmVudFBh
dGgoY2hhbmdlZFRvdWNoZXNJbkV2ZW50UGF0aCwgbV9vcmlnaW4uZ2V0KCksIHRvdWNoRXZlbnQu
Y2hhbmdlZFRvdWNoZXMoKSwgKnRoaXMpOwotfQotI2VuZGlmCi0KLXZvaWQgRXZlbnRQYXRoOjpz
ZXRSZWxhdGVkVGFyZ2V0KEV2ZW50VGFyZ2V0JiByZWxhdGVkVGFyZ2V0KQotewotICAgIE5vZGUq
IHJlbGF0ZWROb2RlID0gcmVsYXRlZFRhcmdldC50b05vZGUoKTsKLSAgICBpZiAoIXJlbGF0ZWRO
b2RlKQotICAgICAgICByZXR1cm47Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gYWRqdXN0ZWRO
b2RlczsKLSAgICBtX3BhdGguc2hyaW5rKGNhbGN1bGF0ZUFkanVzdGVkTm9kZXMobV9vcmlnaW4u
Z2V0KCksIHJlbGF0ZWROb2RlLCBTdG9wQXRCb3VuZGFyeUlmTmVlZGVkLCAqdGhpcywgYWRqdXN0
ZWROb2RlcykpOwotICAgIEFTU0VSVChhZGp1c3RlZE5vZGVzLnNpemUoKSA8PSBtX3BhdGguc2l6
ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFkanVzdGVkTm9kZXMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIHRvTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KCptX3BhdGhbaV0pLnNldFJl
bGF0ZWRUYXJnZXQoYWRqdXN0ZWROb2Rlc1tpXSk7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFJldGFyZ2V0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRSZXRhcmdldGVyLmgJKHJldmlzaW9uIDE1NzI0OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFJldGFyZ2V0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNpZm5kZWYgRXZlbnRSZXRhcmdldGVyX2gKLSNkZWZpbmUgRXZlbnRSZXRhcmdldGVyX2gKLQot
I2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKLSNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKLSNp
bmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR0VsZW1lbnRJ
bnN0YW5jZS5oIgotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZHVXNlRWxlbWVu
dC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRXZlbnRQYXRoOwot
Y2xhc3MgRXZlbnRUYXJnZXQ7Ci1jbGFzcyBGb2N1c0V2ZW50OwotY2xhc3MgTW91c2VFdmVudDsK
LWNsYXNzIE5vZGU7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIFRvdWNoRXZlbnQ7
Ci0jZW5kaWYKLWNsYXNzIFRyZWVTY29wZTsKLQotaW5saW5lIEV2ZW50VGFyZ2V0JiBldmVudFRh
cmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcyhOb2RlJiByZWZlcmVuY2VOb2RlKQotewotICAgIGlm
IChyZWZlcmVuY2VOb2RlLmlzUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIEV2ZW50VGFyZ2V0
KiBob3N0RWxlbWVudCA9IHRvUHNldWRvRWxlbWVudChyZWZlcmVuY2VOb2RlKS5ob3N0RWxlbWVu
dCgpOwotICAgICAgICBBU1NFUlQoaG9zdEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gKmhvc3RF
bGVtZW50OwotICAgIH0KLQotI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKCFyZWZlcmVuY2VOb2Rl
LmlzU1ZHRWxlbWVudCgpIHx8ICFyZWZlcmVuY2VOb2RlLmlzSW5TaGFkb3dUcmVlKCkpCi0gICAg
ICAgIHJldHVybiByZWZlcmVuY2VOb2RlOwotCi0gICAgLy8gU3BlYzogVGhlIGV2ZW50IGhhbmRs
aW5nIGZvciB0aGUgbm9uLWV4cG9zZWQgdHJlZSB3b3JrcyBhcyBpZiB0aGUgcmVmZXJlbmNlZCBl
bGVtZW50IGhhZCBiZWVuIHRleHR1YWxseSBpbmNsdWRlZAotICAgIC8vIGFzIGEgZGVlcGx5IGNs
b25lZCBjaGlsZCBvZiB0aGUgJ3VzZScgZWxlbWVudCwgZXhjZXB0IHRoYXQgZXZlbnRzIGFyZSBk
aXNwYXRjaGVkIHRvIHRoZSBTVkdFbGVtZW50SW5zdGFuY2Ugb2JqZWN0cwotICAgIE5vZGUqIHJv
b3ROb2RlID0gcmVmZXJlbmNlTm9kZS50cmVlU2NvcGUoKS5yb290Tm9kZSgpOwotICAgIEVsZW1l
bnQqIHNoYWRvd0hvc3RFbGVtZW50ID0gcm9vdE5vZGUtPmlzU2hhZG93Um9vdCgpID8gdG9TaGFk
b3dSb290KHJvb3ROb2RlKS0+aG9zdEVsZW1lbnQoKSA6IDA7Ci0gICAgLy8gQXQgdGhpcyB0aW1l
LCBTVkcgbm9kZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gbm9uLTx1c2U+IHNoYWRvdyB0cmVlcy4K
LSAgICBpZiAoIXNoYWRvd0hvc3RFbGVtZW50IHx8ICFzaGFkb3dIb3N0RWxlbWVudC0+aGFzVGFn
TmFtZShTVkdOYW1lczo6dXNlVGFnKSkKLSAgICAgICAgcmV0dXJuIHJlZmVyZW5jZU5vZGU7Ci0g
ICAgU1ZHVXNlRWxlbWVudCogdXNlRWxlbWVudCA9IHRvU1ZHVXNlRWxlbWVudChzaGFkb3dIb3N0
RWxlbWVudCk7Ci0gICAgaWYgKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSB1c2VFbGVt
ZW50LT5pbnN0YW5jZUZvclNoYWRvd1RyZWVFbGVtZW50KCZyZWZlcmVuY2VOb2RlKSkKLSAgICAg
ICAgcmV0dXJuICppbnN0YW5jZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHJlZmVyZW5jZU5vZGU7
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEV2ZW50UmV0YXJnZXRlcl9oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRm9jdXNFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0ZvY3VzRXZlbnQuY3BwCShyZXZpc2lvbiAxNTcyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Rm9jdXNFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDcgQEAKICNpbmNsdWRl
ICJGb2N1c0V2ZW50LmgiCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50RGlz
cGF0Y2hlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJFdmVudFJldGFy
Z2V0ZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9HZXN0dXJlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vR2VzdHVyZUV2ZW50LmgJKHJldmlzaW9uIDE1NzI0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9HZXN0dXJlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogCi0jaW5jbHVkZSAiRXZlbnREaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgJKHJl
dmlzaW9uIDE1NzI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBFdmVudERpc3BhdGNoZXI7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiAxNTcy
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDkgKzI0LDcgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAKICNpbmNsdWRlICJD
bGlwYm9hcmQuaCIKLSNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCi0jaW5jbHVkZSAiRXZlbnRSZXRhcmdldGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5o
IgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCShyZXZpc2lvbiAxNTcyNDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsaXBib2FyZDsKLWNsYXNzIEV2ZW50
RGlzcGF0Y2hlcjsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIAogc3RydWN0IE1vdXNlRXZl
bnRJbml0IDogcHVibGljIFVJRXZlbnRJbml0IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9U
b3VjaEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVu
dC5jcHAJKHJldmlzaW9uIDE1NzI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVkZSAiRXZlbnRE
aXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkV2ZW50UmV0
YXJnZXRlci5oIgogI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCShyZXZpc2lvbiAxNTcyNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDYgQEAKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
LSNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHJldmlzaW9u
IDE1NzI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKIAogI2luY2x1
ZGUgIkNsaXBib2FyZC5oIgotI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKIAo=
</data>
<flag name="review"
          id="236405"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>