<?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>164302</bug_id>
          
          <creation_ts>2016-11-01 17:02:40 -0700</creation_ts>
          <short_desc>Remove PageThrottler &amp; all related code</short_desc>
          <delta_ts>2016-11-03 10:03:15 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1247146</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-11-01 17:02:40 -0700</bug_when>
    <thetext>All relevant information now available from the ActivityState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247151</commentid>
    <comment_count>1</comment_count>
      <attachid>293619</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-11-01 17:03:52 -0700</bug_when>
    <thetext>Created attachment 293619
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247167</commentid>
    <comment_count>2</comment_count>
      <attachid>293622</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-11-01 17:19:48 -0700</bug_when>
    <thetext>Created attachment 293622
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247172</commentid>
    <comment_count>3</comment_count>
      <attachid>293624</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-11-01 17:25:58 -0700</bug_when>
    <thetext>Created attachment 293624
fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247732</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-11-03 10:03:15 -0700</bug_when>
    <thetext>Committed revision 208329.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293619</attachid>
            <date>2016-11-01 17:03:52 -0700</date>
            <delta_ts>2016-11-01 17:19:48 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>164302.1.patch</filename>
            <type>text/plain</type>
            <size>40507</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE2LTExLTAxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGFn
ZVRocm90dGxlciAmIGFsbCByZWxhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbCByZWxldmFudCBpbmZvcm1hdGlvbiBub3cgYXZhaWxh
YmxlIGZyb20gdGhlIEFjdGl2aXR5U3RhdGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldE11dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQ
bGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQXVk
aW9Bc3NlcnRpb25TdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnN0YXJ0ZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6cGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnBhZ2VUaHJvdHRsZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvUGFnZVRocm90dGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0
bGVyLmg6IFJlbW92ZWQuCisKIDIwMTYtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQiAyLjA6IFN1cHBvcnQgSURCSW5kZXggZ2V0QWxs
L2dldEFsbEtleXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA4MjYxKQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwNTgs
NyArMjA1OCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL1BhZ2VPdmVybGF5LmNw
cAogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCi0gICAgcGFnZS9QYWdlVGhyb3R0bGVyLmNwcAogICAgIHBhZ2UvUGFnZVZpc2li
aWxpdHlTdGF0ZS5jcHAKICAgICBwYWdlL1BlcmZvcm1hbmNlLmNwcAogICAgIHBhZ2UvUGVyZm9y
bWFuY2VFbnRyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk1
Myw4ICszOTUzLDYgQEAKIAkJQTcxNUU2NTMxMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hh
ZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcxNUU2NTExMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5oICov
OyB9OwogCQlBNzE4NzYwRTBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3NjBEMEIyQTEyMDEw
MEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3MTg3ODkwMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJv
bGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLzsgfTsK
LQkJQTcxOTdGMjQxNzU2ODlDNDAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTk3RjIzMTc1Njg5QzQwMDdC
OTQ0MiAvKiBQYWdlVGhyb3R0bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJQTcxOTdGMjYxNzU2OEFFNTAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcx
OTdGMjUxNzU2OEFFNTAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIuY3BwICovOyB9OwogCQlBNzIz
Rjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjNGNzdBMTQ4NENBNEMwMDhD
NkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3Mjc2M0JGMTY2ODlCRkIwMDJGQ0FDQiAvKiBVc2Vy
QWN0aW9uRWxlbWVudFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcyNzYzQkUxNjY4OUJGQjAwMkZDQUNCIC8qIFVzZXJBY3Rpb25FbGVtZW50U2V0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcz
Rjk1RkUxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAv
KiBSb3VuZGVkUmVjdC5jcHAgKi87IH07CkBAIC03NDQ2LDggKzc0NDQsOCBAQAogCQkwRjg3MTY2
RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGVuZ3RoUG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY4QjQ1NkYxREMzRkIxMDAwNDQzQzNGIC8qIEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2su
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2su
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhCNDU3MTFEQzNGQkEzMDA0NDND
M0YgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGOEI0NTczMURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2Vj
dGlvbk9ic2VydmVyQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSlNJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmNwcDsgcGF0aCA9IEpTSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGOEI0NTc0MURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNJbnRlcnNlY3Rpb25PYnNl
cnZlckNhbGxiYWNrLmg7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4QjQ1NzMxREM0MURCQTAwNDQzQzNGIC8q
IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjhCNDU3NDFEQzQxREJBMDA0NDNDM0YgLyogSlNJ
bnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjk3QTY1NzE1NURBODFFMDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTExNDY5LDggKzExNDY3LDYgQEAKIAkJQTcxNUU2NTExMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dy
ZXNzU2hhZG93RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9n
cmVzc1NoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxODc2
MEQwQjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERyYWdBY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERyYWdDb250cm9sbGVyTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzE5N0YyMzE3NTY4OUM0MDA3Qjk0NDIgLyog
UGFnZVRocm90dGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlVGhy
b3R0bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3MTk3RjI1MTc1NjhBRTUw
MDdCOTQ0MiAvKiBQYWdlVGhyb3R0bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhZ2VUaHJvdHRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzFBNzBDOTExQUZCMDIwMDA5ODlENkQgLyogSFRNTE1ldGVyRWxlbWVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSFRNTE1ldGVyRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3MjNGNzdBMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1h
Y3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUV4cG9ydE1h
Y3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzI3NjNCRTE2Njg5QkZCMDAy
RkNBQ0IgLyogVXNlckFjdGlvbkVsZW1lbnRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVXNlckFjdGlvbkVsZW1lbnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3NzEzLDggKzE3NzA5LDYgQEAKIAkJCQkyRDVDOUNGRTE5QzdCNTJFMDBCM0M1QzEg
LyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmggKi8sCiAJCQkJMzcxRTY1Q0QxMzY2MUVFRDAwQkVF
REIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLywKIAkJCQkzNzFFNjVDQjEzNjYxRURDMDBCRUVE
QjAgLyogUGFnZVNlcmlhbGl6ZXIuaCAqLywKLQkJCQlBNzE5N0YyNTE3NTY4QUU1MDA3Qjk0NDIg
LyogUGFnZVRocm90dGxlci5jcHAgKi8sCi0JCQkJQTcxOTdGMjMxNzU2ODlDNDAwN0I5NDQyIC8q
IFBhZ2VUaHJvdHRsZXIuaCAqLywKIAkJCQlGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFn
ZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8sCiAJCQkJRkZENUI5NzgxMzVDQzk3ODAwRDVFOTJBIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGUuaCAqLywKIAkJCQlFNTI2QUYzRTE3MjdGOEYyMDBFNDE3ODEg
LyogUGVyZm9ybWFuY2UuY3BwICovLApAQCAtMjY2MDQsNyArMjY1OTgsNiBAQAogCQkJCUYzODIw
ODk1MTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUYzNkQzQjE4Rjc1ODcyMDA1NEMwMjQgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzFFNjVDQzEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlh
bGl6ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3MTk3RjI0MTc1Njg5QzQwMDdCOTQ0MiAvKiBQ
YWdlVGhyb3R0bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI4NEFFMTEwNDQ3RDQ1MDBFQUVC
NTIgLyogUGFnZVRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMUVDQzMw
QzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZG
RDVCOTdCMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTMwMzI2LDcgKzMwMzE5LDYgQEAKIAkJCQlGMzgyMDg5NDE0N0QzNUY5MDAxMEJD
MDYgLyogUGFnZVJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUYzNkQzQTE4
Rjc1ODcyMDA1NEMwMjQgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTM3MUU2NUNFMTM2NjFFRUQwMEJFRURCMCAvKiBQYWdlU2VyaWFsaXplci5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlBNzE5N0YyNjE3NTY4QUU1MDA3Qjk0NDIgLyogUGFnZVRocm90dGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI4NEFFQTEwNDQ3REVFMDBFQUVCNTIgLyogUGFn
ZVRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUUxRUNDMjBDOTFDOTA0
MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkQ1Qjk3
QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNp
b24gMjA4MjYxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNiBAQAogI2luY2x1ZGUgIk5vRXZlbnREaXNwYXRj
aEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
LSNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgiCkBAIC0zMjc2LDcgKzMyNzUsNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldE11dGVkKGJvb2wgbXV0CiAgICAgfQogCiAgICAgc2NoZWR1bGVVcGRhdGVQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwotICAgIHVwZGF0ZUF1ZGlvQXNzZXJ0aW9uU3RhdGUo
KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUoKQpAQCAtNDc5
MSw4ICs0Nzg5LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAg
IGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+Y2hhbmdl
ZFZvbHVtZSgpOwogI2VuZGlmCi0KLSAgICB1cGRhdGVBdWRpb0Fzc2VydGlvblN0YXRlKCk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKFVwZGF0ZVN0YXRlIHVw
ZGF0ZVN0YXRlKQpAQCAtNDgxMiw3ICs0ODA4LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVQbGF5U3RhdGUoVQogICAgICAgICBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lci5zdG9wKCk7
CiAgICAgICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgICAgICBtZWRpYUNvbnRy
b2xzKCktPnBsYXliYWNrU3RvcHBlZCgpOwotICAgICAgICB1cGRhdGVBdWRpb0Fzc2VydGlvblN0
YXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC00ODc4LDggKzQ4NzMsNiBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZShVCiAKICAgICBtX2hhc0V2
ZXJIYWRBdWRpbyB8PSBoYXNBdWRpbygpOwogICAgIG1faGFzRXZlckhhZFZpZGVvIHw9IGhhc1Zp
ZGVvKCk7Ci0KLSAgICB1cGRhdGVBdWRpb0Fzc2VydGlvblN0YXRlKCk7CiB9CiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0UGxheWluZyhib29sIHBsYXlpbmcpCkBAIC02OTQ3LDQyICs2OTQw
LDYgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCgpIAogICAgIHJldHVy
biBtdXRlZCgpIHx8IChkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+aXNB
dWRpb011dGVkKCkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUF1ZGlvQXNz
ZXJ0aW9uU3RhdGUoKQotewotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKLSAg
ICBpZiAoIXBhZ2UpIHsKLSAgICAgICAgbV9hdWRpb0FjdGl2aXR5VG9rZW4gPSBudWxscHRyOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jZGVmaW5lIFJFTEVBU0VfQVVESU9fVE9LRU4oUkVB
U09OKSBcCi0gICAgUkVMRUFTRV9MT0dfSUYocGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCkgJiYgbV9hdWRpb0FjdGl2aXR5VG9rZW4sIE1lZGlhLCAiJXAgLSBIVE1MTWVkaWFFbGVtZW50
IHJlbGVhc2VzIGF1ZGlvIGFjdGl2aXR5IHRva2VuLCByZWFzb246ICIgUkVBU09OLCB0aGlzKTsg
XAotICAgIG1fYXVkaW9BY3Rpdml0eVRva2VuID0gbnVsbHB0cgotCi0gICAgaWYgKCFoYXNBdWRp
bygpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVVESU9fVE9LRU4oIk5vIGF1ZGlvIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFpc1BsYXlpbmcoKSkgewotICAgICAgICBSRUxFQVNF
X0FVRElPX1RPS0VOKCJOb3QgcGxheWluZyIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChlZmZlY3RpdmVNdXRlZCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVVESU9fVE9LRU4oIkF1
ZGlvIGlzIG11dGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCF2b2x1bWUo
KSkgewotICAgICAgICBSRUxFQVNFX0FVRElPX1RPS0VOKCJWb2x1bWUgaXMgMCIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9hdWRpb0FjdGl2aXR5VG9rZW4pIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUYocGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlh
LCAiJXAgLSBIVE1MTWVkaWFFbGVtZW50IHRha2VzIGF1ZGlvIGFjdGl2aXR5IHRva2VuIGJlY2F1
c2UgdGhlcmUgaXMgYXVkaWJsZSBhdWRpbyIsIHRoaXMpOwotICAgICAgICBtX2F1ZGlvQWN0aXZp
dHlUb2tlbiA9IHBhZ2UtPnBhZ2VUaHJvdHRsZXIoKS5tZWRpYUFjdGl2aXR5VG9rZW4oKTsKLSAg
ICB9Ci0KLSN1bmRlZiBSRUxFQVNFX0FVRElPX1RPS0VOCi19Ci0KIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGUsIEF0
b21pY1N0cmluZyogdmFsdWUpIGNvbnN0CiB7CiAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVO
YW1lKG51bGxBdG9tLCBhdHRyaWJ1dGUsIG51bGxBdG9tKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBA
QAogI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIk1lZGlh
RWxlbWVudFNlc3Npb24uaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCi0jaW5jbHVkZSAi
UGFnZVRocm90dGxlci5oIgogI2luY2x1ZGUgIlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24u
aCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTc3MSw4ICs3NzAsNiBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBlZmZlY3RpdmVNdXRlZCgpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVB
dWRpb0Fzc2VydGlvblN0YXRlKCk7Ci0KICAgICB2b2lkIHJlZ2lzdGVyV2l0aERvY3VtZW50KERv
Y3VtZW50Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CiAK
QEAgLTEwMDcsNyArMTAwNCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYUVsZW1lbnRTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKLSAgICBQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbiBtX2F1ZGlvQWN0aXZpdHlUb2tlbjsKICAgICBzaXplX3QgbV9yZXBv
cnRlZEV4dHJhTWVtb3J5Q29zdCB7IDAgfTsKIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19T
Q1JJUFQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9u
IDIwODI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDcgKzg3LDYgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKLSNpbmNsdWRlICJQYWdlVGhy
b3R0bGVyLmgiCiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKQEAgLTEwNzcsMTMg
KzEwNzYsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tcGxldGVkKCkKIAogICAgIGlmIChtX2Zy
YW1lLnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS52aWV3KCktPm1haW50YWluU2Nyb2xsUG9zaXRp
b25BdEFuY2hvcihudWxscHRyKTsKLSAgICBtX2FjdGl2aXR5QXNzZXJ0aW9uID0gbnVsbHB0cjsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c3RhcnRlZCgpCiB7Ci0gICAgaWYgKG1fZnJhbWUucGFn
ZSgpKQotICAgICAgICBtX2FjdGl2aXR5QXNzZXJ0aW9uID0gbV9mcmFtZS5wYWdlKCktPnBhZ2VU
aHJvdHRsZXIoKS5wYWdlTG9hZEFjdGl2aXR5VG9rZW4oKTsKICAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgpKQogICAg
ICAgICBmcmFtZS0+bG9hZGVyKCkubV9pc0NvbXBsZXRlID0gZmFsc2U7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYg
QEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0
b25lcy5oIgogI2luY2x1ZGUgIk1peGVkQ29udGVudENoZWNrZXIuaCIKLSNpbmNsdWRlICJQYWdl
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVUeXBlcy5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZE5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmgiCkBAIC00NTksNyArNDU4LDYgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3ByZXZpb3VzVVJM
OwogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbTsKLSAgICBQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBtX2FjdGl2aXR5QXNzZXJ0aW9uOwogfTsKIAogLy8g
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgY3JlYXRlV2luZG93KCkgaW4gSlNET01XaW5kb3dC
YXNlLmNwcCwgZm9yIGV4YW1wbGUsIGZvcgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiSG9zdFdpbmRv
dy5oIgogI2luY2x1ZGUgIkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmgiCiAjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQb3B1
cE1lbnUuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJSZW5kZXJF
bWJlZGRlZE9iamVjdC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyMDgyNjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw2IEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2FibGUuaCIKICNpbmNsdWRlICJQYWdlR3Jv
dXAuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJQYWdl
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUGx1Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgpAQCAtMjI0
LDcgKzIyMyw2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICNl
bmRpZgogICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQocGFnZUNvbmZpZ3VyYXRpb24uYWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KQogICAgICwgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQo
ZmFsc2UpCi0gICAgLCBtX3BhZ2VUaHJvdHRsZXIoKnRoaXMpCiAgICAgLCBtX2NvbnNvbGVDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZp
c2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZXMuaCIKICNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUg
IlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCiAjaW5j
bHVkZSAiUGFnaW5hdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCkBAIC0xMDQs
NyArMTAzLDYgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiBjbGFzcyBQYWdlQ29uc29sZUNs
aWVudDsKIGNsYXNzIFBhZ2VEZWJ1Z2dhYmxlOwogY2xhc3MgUGFnZUdyb3VwOwotY2xhc3MgUGFn
ZVRocm90dGxlcjsKIGNsYXNzIFBsdWdJbkNsaWVudDsKIGNsYXNzIFBsdWdpbkRhdGE7CiBjbGFz
cyBQbHVnaW5JbmZvUHJvdmlkZXI7CkBAIC0xMzcsNyArMTM1LDYgQEAgY2xhc3MgUGFnZSA6IHB1
YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPgogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2Up
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5n
czsKLSAgICBmcmllbmQgY2xhc3MgUGFnZVRocm90dGxlcjsKIAogcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENo
YW5nZUluRW52aXJvbm1lbnQoKTsKQEAgLTMzNiw3ICszMzMsNiBAQCBwdWJsaWM6CiAgICAgLy8g
Tm90aWZpY2F0aW9ucyB3aGVuIHRoZSBQYWdlIHN0YXJ0cyBhbmQgc3RvcHMgYmVpbmcgcHJlc2Vu
dGVkIHZpYSBhIG5hdGl2ZSB3aW5kb3cuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBY3Rp
dml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzKTsKICAgICBib29sIGlzVmlzaWJsZUFuZEFj
dGl2ZSgpIGNvbnN0OwotICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2VkKCkgeyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRJc1ByZXJlbmRlcigpOwogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOyB9CkBA
IC00MzcsOCArNDMzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2F3TWVkaWFFbmdpbmUoY29uc3Qg
U3RyaW5nJiBlbmdpbmVOYW1lKTsKICAgICB2b2lkIHJlc2V0U2Vlbk1lZGlhRW5naW5lcygpOwog
Ci0gICAgUGFnZVRocm90dGxlciYgcGFnZVRocm90dGxlcigpIHsgcmV0dXJuIG1fcGFnZVRocm90
dGxlcjsgfQotCiAgICAgUGFnZUNvbnNvbGVDbGllbnQmIGNvbnNvbGUoKSB7IHJldHVybiAqbV9j
b25zb2xlQ2xpZW50OyB9CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTY4NSw3
ICs2NzksNiBAQCBwcml2YXRlOgogICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogbV9hbHRlcm5h
dGl2ZVRleHRDbGllbnQ7CiAKICAgICBib29sIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVk
OwotICAgIFBhZ2VUaHJvdHRsZXIgbV9wYWdlVGhyb3R0bGVyOwogICAgIGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxQYWdlQ29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50OwogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5j
cHAJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxl
ci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKLQotI2luY2x1ZGUgIlBh
Z2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgZG91YmxlIFBhZ2VM
b2FkSHlzdGVyZXNpc1NlY29uZHMgPSAxMDsKLQotUGFnZVRocm90dGxlcjo6UGFnZVRocm90dGxl
cihQYWdlJiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCi0gICAgLCBtX21lZGlhQWN0aXZpdHlI
eXN0ZXJlc2lzKFt0aGlzXShIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgc2V0QWN0aXZpdHlGbGFn
KFBhZ2VBY3Rpdml0eVN0YXRlOjpNZWRpYUFjdGl2aXR5LCBzdGF0ZSA9PSBIeXN0ZXJlc2lzU3Rh
dGU6OlN0YXJ0ZWQpOyB9KQotICAgICwgbV9wYWdlTG9hZEFjdGl2aXR5SHlzdGVyZXNpcyhbdGhp
c10oSHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7IHNldEFjdGl2aXR5RmxhZyhQYWdlQWN0aXZpdHlT
dGF0ZTo6UGFnZUxvYWRBY3Rpdml0eSwgc3RhdGUgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdGFydGVk
KTsgfSwgUGFnZUxvYWRIeXN0ZXJlc2lzU2Vjb25kcykKLSAgICAsIG1fbWVkaWFBY3Rpdml0eUNv
dW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyBtZWRpYUFjdGl2aXR5Q291bnRlckNoYW5n
ZWQoKTsgfSkKLSAgICAsIG1fcGFnZUxvYWRBY3Rpdml0eUNvdW50ZXIoW3RoaXNdKFJlZkNvdW50
ZXJFdmVudCkgeyBwYWdlTG9hZEFjdGl2aXR5Q291bnRlckNoYW5nZWQoKTsgfSkKLXsKLX0KLQot
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gUGFnZVRocm90dGxlcjo6bWVkaWFBY3Rpdml0eVRv
a2VuKCkKLXsKLSAgICByZXR1cm4gbV9tZWRpYUFjdGl2aXR5Q291bnRlci5jb3VudCgpOwotfQot
Ci1QYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBQYWdlVGhyb3R0bGVyOjpwYWdlTG9hZEFjdGl2
aXR5VG9rZW4oKQotewotICAgIHJldHVybiBtX3BhZ2VMb2FkQWN0aXZpdHlDb3VudGVyLmNvdW50
KCk7Ci19Ci0KLXZvaWQgUGFnZVRocm90dGxlcjo6bWVkaWFBY3Rpdml0eUNvdW50ZXJDaGFuZ2Vk
KCkKLXsKLSAgICBpZiAobV9tZWRpYUFjdGl2aXR5Q291bnRlci52YWx1ZSgpKQotICAgICAgICBt
X21lZGlhQWN0aXZpdHlIeXN0ZXJlc2lzLnN0YXJ0KCk7Ci0gICAgZWxzZQotICAgICAgICBtX21l
ZGlhQWN0aXZpdHlIeXN0ZXJlc2lzLnN0b3AoKTsKLX0KLQotdm9pZCBQYWdlVGhyb3R0bGVyOjpw
YWdlTG9hZEFjdGl2aXR5Q291bnRlckNoYW5nZWQoKQotewotICAgIGlmIChtX3BhZ2VMb2FkQWN0
aXZpdHlDb3VudGVyLnZhbHVlKCkpCi0gICAgICAgIG1fcGFnZUxvYWRBY3Rpdml0eUh5c3RlcmVz
aXMuc3RhcnQoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFnZUxvYWRBY3Rpdml0eUh5c3RlcmVz
aXMuc3RvcCgpOwotfQotCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnNldEFjdGl2aXR5RmxhZyhQYWdl
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgZmxhZywgYm9vbCB2YWx1ZSkKLXsKLSAgICBQYWdlQWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSA9IG1fYWN0aXZpdHlTdGF0ZTsKLSAgICBpZiAo
dmFsdWUpCi0gICAgICAgIGFjdGl2aXR5U3RhdGUgfD0gZmxhZzsKLSAgICBlbHNlCi0gICAgICAg
IGFjdGl2aXR5U3RhdGUgJj0gfmZsYWc7Ci0KLSAgICBpZiAobV9hY3Rpdml0eVN0YXRlID09IGFj
dGl2aXR5U3RhdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2FjdGl2aXR5U3RhdGUgPSBhY3Rp
dml0eVN0YXRlOwotCi0gICAgbV9wYWdlLnBhZ2VBY3Rpdml0eVN0YXRlQ2hhbmdlZCgpOwotfQot
Ci19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkocmV2aXNpb24gMjA4MjYx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgJKG5vbmV4aXN0ZW50KQpA
QCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJB
Y3Rpdml0eVN0YXRlLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJVc2VyQWN0aXZp
dHkuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIFBhZ2U7Ci0KLWVudW0gUGFnZUFjdGl2aXR5Q291bnRlclR5cGUgeyB9OwotdHlw
ZWRlZiBSZWZDb3VudGVyPFBhZ2VBY3Rpdml0eUNvdW50ZXJUeXBlPiBQYWdlQWN0aXZpdHlDb3Vu
dGVyOwotdHlwZWRlZiBQYWdlQWN0aXZpdHlDb3VudGVyOjpUb2tlbiBQYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbjsKLQotc3RydWN0IFBhZ2VBY3Rpdml0eVN0YXRlIHsKLSAgICBlbnVtIHsKLSAg
ICAgICAgTWVkaWFBY3Rpdml0eSA9IDEgPDwgMCwKLSAgICAgICAgUGFnZUxvYWRBY3Rpdml0eSA9
IDEgPDwgMSwKLSAgICB9OwotCi0gICAgdHlwZWRlZiB1bnNpZ25lZCBGbGFnczsKLQotICAgIHN0
YXRpYyBjb25zdCBGbGFncyBOb0ZsYWdzID0gMDsKLSAgICBzdGF0aWMgY29uc3QgRmxhZ3MgQWxs
RmxhZ3MgPSBNZWRpYUFjdGl2aXR5IHwgUGFnZUxvYWRBY3Rpdml0eTsKLX07Ci0KLWNsYXNzIFBh
Z2VUaHJvdHRsZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IFBhZ2VUaHJvdHRsZXIoUGFnZSYpOwotCi0gICAgUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzIGFj
dGl2aXR5U3RhdGUoKSB7IHJldHVybiBtX2FjdGl2aXR5U3RhdGU7IH0KLSAgICB2b2lkIHBsdWdp
bkRpZEV2YWx1YXRlV2hpbGVBdWRpb0lzUGxheWluZygpIHsgbV9tZWRpYUFjdGl2aXR5SHlzdGVy
ZXNpcy5pbXB1bHNlKCk7IH0KLSAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBtZWRpYUFj
dGl2aXR5VG9rZW4oKTsKLSAgICBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBwYWdlTG9hZEFj
dGl2aXR5VG9rZW4oKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIG1lZGlhQWN0aXZpdHlDb3VudGVy
Q2hhbmdlZCgpOwotICAgIHZvaWQgcGFnZUxvYWRBY3Rpdml0eUNvdW50ZXJDaGFuZ2VkKCk7Ci0g
ICAgdm9pZCBzZXRBY3Rpdml0eUZsYWcoUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sKTsK
LQotICAgIFBhZ2UmIG1fcGFnZTsKLSAgICBQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbV9hY3Rp
dml0eVN0YXRlIHsgUGFnZUFjdGl2aXR5U3RhdGU6Ok5vRmxhZ3MgfTsKLSAgICBIeXN0ZXJlc2lz
QWN0aXZpdHkgbV9tZWRpYUFjdGl2aXR5SHlzdGVyZXNpczsKLSAgICBIeXN0ZXJlc2lzQWN0aXZp
dHkgbV9wYWdlTG9hZEFjdGl2aXR5SHlzdGVyZXNpczsKLSAgICBQYWdlQWN0aXZpdHlDb3VudGVy
IG1fbWVkaWFBY3Rpdml0eUNvdW50ZXI7Ci0gICAgUGFnZUFjdGl2aXR5Q291bnRlciBtX3BhZ2VM
b2FkQWN0aXZpdHlDb3VudGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTYtMTEtMDEgIEdhdmluIEJhcnJhY2xv
dWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBQYWdlVGhyb3R0
bGVyICYgYWxsIHJlbGF0ZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY0MzAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsIHJlbGV2YW50IGluZm9ybWF0aW9uIG5vdyBhdmFpbGFibGUgZnJv
bSB0aGUgQWN0aXZpdHlTdGF0ZS4KKworICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OlBsdWdpblByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmF1ZGlvSGFyZHdhcmVEaWRC
ZWNvbWVBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjph
dWRpb0hhcmR3YXJlRGlkQmVjb21lSW5hY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAqIFBsdWdp
blByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJk
d2FyZURpZEJlY29tZUluYWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGlt
ZU9iamVjdE1hcDo6ZXZhbHVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luOjphdWRpb0hhcmR3YXJlQWN0aXZpdHkpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjphdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmF1ZGlvSGFyZHdhcmVEaWRC
ZWNvbWVJbmFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmF1ZGlvSGFyZHdhcmVBY3Rp
dml0eSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjphdWRpb0hhcmR3
YXJlQWN0aXZpdHkpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6YXVkaW9IYXJkd2FyZUFjdGl2aXR5KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKwogMjAxNi0xMS0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBDTWFr
ZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Q
cm9jZXNzLmNwcAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNiBAQCBQ
bHVnaW5Qcm9jZXNzOjpQbHVnaW5Qcm9jZXNzKCkKICAgICAsIG1fY29ubmVjdGlvbkFjdGl2aXR5
KCJQbHVnaW5Qcm9jZXNzIGNvbm5lY3Rpb24gYWN0aXZpdHkuIikKIHsKICAgICBOZXRzY2FwZVBs
dWdpbjo6c2V0U2V0RXhjZXB0aW9uRnVuY3Rpb24oV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OnNldEds
b2JhbEV4Y2VwdGlvbik7Ci0gICAgbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIgPSBBdWRpb0hhcmR3
YXJlTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIFBsdWdpblByb2Nlc3M6On5QbHVnaW5Q
cm9jZXNzKCkKQEAgLTE2OCwxMyArMTY3LDYgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVX
ZWJQcm9jZXNzQ29ubgogICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgogICAg
IGF1dG8gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKIAotICAgIGlmIChtX2F1ZGlvSGFy
ZHdhcmVMaXN0ZW5lcikgewotICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPmhh
cmR3YXJlQWN0aXZpdHkoKSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJ
c0FjdGl2ZSkKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVB
Y3RpdmUoKTsKLSAgICAgICAgZWxzZSBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPmhhcmR3
YXJlQWN0aXZpdHkoKSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0lu
YWN0aXZlKQotICAgICAgICAgICAgY29ubmVjdGlvbi0+YXVkaW9IYXJkd2FyZURpZEJlY29tZUlu
YWN0aXZlKCk7Ci0gICAgfQotCiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdU
Rk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlz
dGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwpAQCAtMjUzLDE4ICsyNDUsNiBA
QCB2b2lkIFBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KGNvCiB9CiAjZW5kaWYKIAot
dm9pZCBQbHVnaW5Qcm9jZXNzOjphdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCkKLXsKLSAg
ICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucykKLSAgICAg
ICAgY29ubmVjdGlvbi0+YXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgpOwotfQotICAgIAot
dm9pZCBQbHVnaW5Qcm9jZXNzOjphdWRpb0hhcmR3YXJlRGlkQmVjb21lSW5hY3RpdmUoKQotewot
ICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQotICAg
ICAgICBjb25uZWN0aW9uLT5hdWRpb0hhcmR3YXJlRGlkQmVjb21lSW5hY3RpdmUoKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vz
cy5oCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpblByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVk
ZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db3VudGVkVXNlckFjdGl2aXR5
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0hhcmR3YXJlTGlzdGVuZXIuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDUsNyArNDQsNyBAQCBjbGFzcyBOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTsKIGNsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uOwogc3RydWN0IFBsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAgICAgICAgIAotY2xhc3MgUGx1Z2luUHJvY2Vz
cyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUxp
c3RlbmVyOjpDbGllbnQKK2NsYXNzIFBsdWdpblByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNz
CiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGx1Z2luUHJvY2Vzcyk7CiAgICAgZnJpZW5k
IGNsYXNzIE5ldmVyRGVzdHJveWVkPFBsdWdpblByb2Nlc3M+OwpAQCAtMTAxLDExICsxMDAsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
ICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBob3N0TmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCi0gICAgLy8gQXVkaW9IYXJk
d2FyZUxpc3RlbmVyQ2xpZW50Ci0gICAgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZl
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lSW5hY3RpdmUoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpIG92ZXJyaWRlIHsg
fQotCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgCiAgICAgdm9pZCBzZXRNaW5pbXVtTGlmZXRp
bWUoZG91YmxlKTsKQEAgLTEzNSw4ICsxMjksNiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBD
b3VudGVkVXNlckFjdGl2aXR5IG1fY29ubmVjdGlvbkFjdGl2aXR5OwotCi0gICAgUmVmUHRyPFdl
YkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lcj4gbV9hdWRpb0hhcmR3YXJlTGlzdGVuZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyMDgy
NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDE2ICszMjIsNiBAQCB2b2lkIFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGVQbHVnaW5BCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kU3luYyhNZXNz
YWdlczo6UGx1Z2luUHJveHk6OkRpZENyZWF0ZVBsdWdpbih3YW50c1doZWVsRXZlbnRzLCByZW1v
dGVMYXllckNsaWVudElEKSwgTWVzc2FnZXM6OlBsdWdpblByb3h5OjpEaWRDcmVhdGVQbHVnaW46
OlJlcGx5KCksIGNyZWF0aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKTsKIH0KICAgICAK
LXZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUo
KQotewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OkF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKSwgMCk7Ci19Ci0KLXZvaWQgV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpCi17Ci0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
QXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCksIDApOwotfQotICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmgJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNiBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBzZXRHbG9iYWxFeGNlcHRpb24oY29uc3QgU3Ry
aW5nJik7CiAgICAgCi0gICAgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCk7Ci0g
ICAgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lSW5hY3RpdmUoKTsKLQogcHJpdmF0ZToKICAg
ICBXZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCShyZXZpc2lv
biAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgUGx1Z2luX2gKICNkZWZp
bmUgUGx1Z2luX2gKIAotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CkBAIC0yOTMsOCArMjkyLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IGV4aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZp
dHlUeXBlIGF1ZGlvSGFyZHdhcmVBY3Rpdml0eSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkF1
ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGU6OlVua25vd247IH0KLQogICAgIHZpcnR1YWwgdm9pZCBt
dXRlZFN0YXRlQ2hhbmdlZChib29sKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5DcmVhdGVU
cmFuc2llbnRQYWludGluZ1NuYXBzaG90KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw2IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpQbHVn
aW5Qcm9jZXNzQ28KICAgICA6IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKHBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcikKICAgICAsIG1fcGx1Z2luUHJvY2Vzc1Rva2VuKHBs
dWdpblByb2Nlc3NUb2tlbikKICAgICAsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0
aWFsaXphdGlvbihzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQotICAg
ICwgbV9hdWRpb0hhcmR3YXJlQWN0aXZpdHkoV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5
VHlwZTo6VW5rbm93bikKIHsKICAgICBtX2Nvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNy
ZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKTsKIApAQCAt
OTEsMTEgKzkwLDYgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlUGx1Zwog
CiB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBpZiAo
IWRlY29kZXIuZGVzdGluYXRpb25JRCgpKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgCiAgICAgQVNTRVJUKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKIAog
ICAgIFBsdWdpblByb3h5KiBwbHVnaW5Qcm94eSA9IG1fcGx1Z2lucy5nZXQoZGVjb2Rlci5kZXN0
aW5hdGlvbklEKCkpOwpAQCAtMTQ1LDE2ICsxMzksNiBAQCB2b2lkIFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpzZXRFeGNlcHRpCiAgICAgTlBSdW50aW1lT2JqZWN0TWFwOjpzZXRHbG9iYWxFeGNl
cHRpb24oZXhjZXB0aW9uU3RyaW5nKTsKIH0KICAgICAKLXZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKQotewotICAgIG1fYXVkaW9IYXJk
d2FyZUFjdGl2aXR5ID0gV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6SXNBY3Rp
dmU7Ci19Ci0KLXZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmF1ZGlvSGFyZHdhcmVEaWRC
ZWNvbWVJbmFjdGl2ZSgpCi17Ci0gICAgbV9hdWRpb0hhcmR3YXJlQWN0aXZpdHkgPSBXZWJDb3Jl
OjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0luYWN0aXZlOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw3ICs1OCw2IEBAIHB1YmxpYzoKICAgICBOUFJlbW90ZU9iamVjdE1hcCog
bnBSZW1vdGVPYmplY3RNYXAoKSBjb25zdCB7IHJldHVybiBtX25wUmVtb3RlT2JqZWN0TWFwLmdl
dCgpOyB9CiAKICAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb247IH0KLSAgICBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlIGF1ZGlvSGFy
ZHdhcmVBY3Rpdml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9IYXJkd2FyZUFjdGl2aXR5OyB9
CiAgICAgCiBwcml2YXRlOgogICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlciosIHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRz
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwpAQCAtNzAsMTEgKzY5LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgotICAg
IHZvaWQgZGlkUmVjZWl2ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBzZXRFeGNlcHRpb24oY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCk7Ci0g
ICAgdm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lSW5hY3RpdmUoKTsKIAogICAgIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlciogbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI7
CiAgICAgdWludDY0X3QgbV9wbHVnaW5Qcm9jZXNzVG9rZW47CkBAIC04OCw3ICs4NCw2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPE5QUmVtb3RlT2JqZWN0TWFwPiBtX25wUmVtb3RlT2JqZWN0TWFw
OwogICAgIAogICAgIGJvb2wgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uOwotICAgIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGUgbV9hdWRpb0hhcmR3
YXJlQWN0aXZpdHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIwODI2MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjUsMTAgKzI1LDYgQEAKIG1lc3NhZ2VzIC0+
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIExlZ2FjeVJlY2VpdmVyIHsKICAgICAjIFNldCBhIGds
b2JhbCBKYXZhU2NyaXB0IGV4Y2VwdGlvbi4KICAgICBTZXRFeGNlcHRpb24oU3RyaW5nIGV4Y2Vw
dGlvblN0cmluZykgLT4gKCkKLSAgICAKLSAgICAjIFBsdWdpbiBwcm9jZXNzIGF1ZGlvIGhhcmR3
YXJlIHN0YXRlIGNoYW5nZWQKLSAgICBBdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCkKLSAg
ICBBdWRpb0hhcmR3YXJlRGlkQmVjb21lSW5hY3RpdmUoKQogfQogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAko
cmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQwLDEzICs3NDAsNiBAQCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQbHVnaW5Qcm94CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLSNpZiBQTEFURk9STShDT0NPQSkKLVdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5
cGUgUGx1Z2luUHJveHk6OmF1ZGlvSGFyZHdhcmVBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fY29ubmVjdGlvbi0+YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCk7Ci19Ci0jZW5kaWYKLQog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDEwICsxNDcsNiBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQb2ludChjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
ICAgICBib29sIGV4aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGUgYXVkaW9I
YXJkd2FyZUFjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7Ci0jZW5kaWYKLQogICAgIGZsb2F0IGNv
bnRlbnRzU2NhbGVGYWN0b3IoKTsKICAgICBib29sIG5lZWRzQmFja2luZ1N0b3JlKCkgY29uc3Q7
CiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDIwODI2MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTksNyArNTksNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlVGhy
b3R0bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJveHlT
ZXJ2ZXIuaD4KQEAgLTU0NiwxOCArNTQ1LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKAogICAgICAgICBtX3BsdWdpbi0+d2luZG93Rm9jdXNDaGFuZ2VkKG1fd2Vi
UGFnZS0+d2luZG93SXNGb2N1c2VkKCkpOwogfQogCi1XZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0
aXZpdHlUeXBlIFBsdWdpblZpZXc6OmF1ZGlvSGFyZHdhcmVBY3Rpdml0eSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQotICAgICAgICByZXR1cm4gQXVk
aW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6SXNJbmFjdGl2ZTsKLSAgICAKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICByZXR1cm4gbV9wbHVnaW4tPmF1ZGlvSGFyZHdhcmVBY3Rpdml0eSgpOwotI2Vs
c2UKLSAgICByZXR1cm4gQXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6VW5rbm93bjsKLSNlbmRp
ZgotfQotICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBQbHVnaW5WaWV3OjpzZXREZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkocmV2aXNpb24gMjA4MjYxKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw2IEBAIHB1YmxpYzoKICAgICBib29sIHBlcmZvcm1EaWN0
aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAg
U3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKSBjb25zdDsKICAgICBib29sIGV4aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAgV2ViQ29yZTo6QXVkaW9IYXJkd2Fy
ZUFjdGl2aXR5VHlwZSBhdWRpb0hhcmR3YXJlQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBQbHVnaW5WaWV3KFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTFBsdWdJbkVs
ZW1lbnQ+LCBQYXNzUmVmUHRyPFBsdWdpbj4sIGNvbnN0IFBsdWdpbjo6UGFyYW1ldGVycyYgcGFy
YW1ldGVycyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAkocmV2aXNp
b24gMjA4MjYxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VUaHJvdHRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMTg5LDE1ICsxODgsNiBAQCBib29s
IE5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUoTlBPYmplCiAgICAgaWYgKCFnbG9iYWxPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlm
IChtX3BsdWdpblZpZXcgJiYgIW1fcGx1Z2luVmlldy0+aXNCZWluZ0Rlc3Ryb3llZCgpKSB7Ci0g
ICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9wbHVnaW5WaWV3LT5mcmFtZSgpLT5wYWdlKCkpIHsK
LSAgICAgICAgICAgIGlmIChtX3BsdWdpblZpZXctPmF1ZGlvSGFyZHdhcmVBY3Rpdml0eSgpICE9
IFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGU6OklzSW5hY3RpdmUpCi0gICAgICAg
ICAgICAgICAgcGFnZS0+cGFnZVRocm90dGxlcigpLnBsdWdpbkRpZEV2YWx1YXRlV2hpbGVBdWRp
b0lzUGxheWluZygpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICAKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZVRocm90dGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXli
b2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUG9pbnRlckxvY2tDb250cm9sbGVyLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293622</attachid>
            <date>2016-11-01 17:19:48 -0700</date>
            <delta_ts>2016-11-01 17:25:58 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>164302.2.patch</filename>
            <type>text/plain</type>
            <size>40734</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE2LTExLTAxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGFn
ZVRocm90dGxlciAmIGFsbCByZWxhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbCByZWxldmFudCBpbmZvcm1hdGlvbiBub3cgYXZhaWxh
YmxlIGZyb20gdGhlIEFjdGl2aXR5U3RhdGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldE11dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQ
bGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQXVk
aW9Bc3NlcnRpb25TdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnN0YXJ0ZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6cGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnBhZ2VUaHJvdHRsZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvUGFnZVRocm90dGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0
bGVyLmg6IFJlbW92ZWQuCisKIDIwMTYtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQiAyLjA6IFN1cHBvcnQgSURCSW5kZXggZ2V0QWxs
L2dldEFsbEtleXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA4MjYxKQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwNTgs
NyArMjA1OCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL1BhZ2VPdmVybGF5LmNw
cAogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCi0gICAgcGFnZS9QYWdlVGhyb3R0bGVyLmNwcAogICAgIHBhZ2UvUGFnZVZpc2li
aWxpdHlTdGF0ZS5jcHAKICAgICBwYWdlL1BlcmZvcm1hbmNlLmNwcAogICAgIHBhZ2UvUGVyZm9y
bWFuY2VFbnRyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk1
Myw4ICszOTUzLDYgQEAKIAkJQTcxNUU2NTMxMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hh
ZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcxNUU2NTExMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5oICov
OyB9OwogCQlBNzE4NzYwRTBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3NjBEMEIyQTEyMDEw
MEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3MTg3ODkwMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJv
bGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLzsgfTsK
LQkJQTcxOTdGMjQxNzU2ODlDNDAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTk3RjIzMTc1Njg5QzQwMDdC
OTQ0MiAvKiBQYWdlVGhyb3R0bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJQTcxOTdGMjYxNzU2OEFFNTAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcx
OTdGMjUxNzU2OEFFNTAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIuY3BwICovOyB9OwogCQlBNzIz
Rjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjNGNzdBMTQ4NENBNEMwMDhD
NkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3Mjc2M0JGMTY2ODlCRkIwMDJGQ0FDQiAvKiBVc2Vy
QWN0aW9uRWxlbWVudFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcyNzYzQkUxNjY4OUJGQjAwMkZDQUNCIC8qIFVzZXJBY3Rpb25FbGVtZW50U2V0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcz
Rjk1RkUxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAv
KiBSb3VuZGVkUmVjdC5jcHAgKi87IH07CkBAIC03NDQ2LDggKzc0NDQsOCBAQAogCQkwRjg3MTY2
RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGVuZ3RoUG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY4QjQ1NkYxREMzRkIxMDAwNDQzQzNGIC8qIEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2su
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2su
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhCNDU3MTFEQzNGQkEzMDA0NDND
M0YgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGOEI0NTczMURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2Vj
dGlvbk9ic2VydmVyQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSlNJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmNwcDsgcGF0aCA9IEpTSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGOEI0NTc0MURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNJbnRlcnNlY3Rpb25PYnNl
cnZlckNhbGxiYWNrLmg7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4QjQ1NzMxREM0MURCQTAwNDQzQzNGIC8q
IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjhCNDU3NDFEQzQxREJBMDA0NDNDM0YgLyogSlNJ
bnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjk3QTY1NzE1NURBODFFMDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTExNDY5LDggKzExNDY3LDYgQEAKIAkJQTcxNUU2NTExMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dy
ZXNzU2hhZG93RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9n
cmVzc1NoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxODc2
MEQwQjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERyYWdBY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERyYWdDb250cm9sbGVyTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzE5N0YyMzE3NTY4OUM0MDA3Qjk0NDIgLyog
UGFnZVRocm90dGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlVGhy
b3R0bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3MTk3RjI1MTc1NjhBRTUw
MDdCOTQ0MiAvKiBQYWdlVGhyb3R0bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhZ2VUaHJvdHRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzFBNzBDOTExQUZCMDIwMDA5ODlENkQgLyogSFRNTE1ldGVyRWxlbWVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSFRNTE1ldGVyRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3MjNGNzdBMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1h
Y3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUV4cG9ydE1h
Y3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzI3NjNCRTE2Njg5QkZCMDAy
RkNBQ0IgLyogVXNlckFjdGlvbkVsZW1lbnRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVXNlckFjdGlvbkVsZW1lbnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3NzEzLDggKzE3NzA5LDYgQEAKIAkJCQkyRDVDOUNGRTE5QzdCNTJFMDBCM0M1QzEg
LyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmggKi8sCiAJCQkJMzcxRTY1Q0QxMzY2MUVFRDAwQkVF
REIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLywKIAkJCQkzNzFFNjVDQjEzNjYxRURDMDBCRUVE
QjAgLyogUGFnZVNlcmlhbGl6ZXIuaCAqLywKLQkJCQlBNzE5N0YyNTE3NTY4QUU1MDA3Qjk0NDIg
LyogUGFnZVRocm90dGxlci5jcHAgKi8sCi0JCQkJQTcxOTdGMjMxNzU2ODlDNDAwN0I5NDQyIC8q
IFBhZ2VUaHJvdHRsZXIuaCAqLywKIAkJCQlGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFn
ZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8sCiAJCQkJRkZENUI5NzgxMzVDQzk3ODAwRDVFOTJBIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGUuaCAqLywKIAkJCQlFNTI2QUYzRTE3MjdGOEYyMDBFNDE3ODEg
LyogUGVyZm9ybWFuY2UuY3BwICovLApAQCAtMjY2MDQsNyArMjY1OTgsNiBAQAogCQkJCUYzODIw
ODk1MTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUYzNkQzQjE4Rjc1ODcyMDA1NEMwMjQgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzFFNjVDQzEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlh
bGl6ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3MTk3RjI0MTc1Njg5QzQwMDdCOTQ0MiAvKiBQ
YWdlVGhyb3R0bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI4NEFFMTEwNDQ3RDQ1MDBFQUVC
NTIgLyogUGFnZVRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMUVDQzMw
QzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZG
RDVCOTdCMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTMwMzI2LDcgKzMwMzE5LDYgQEAKIAkJCQlGMzgyMDg5NDE0N0QzNUY5MDAxMEJD
MDYgLyogUGFnZVJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUYzNkQzQTE4
Rjc1ODcyMDA1NEMwMjQgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTM3MUU2NUNFMTM2NjFFRUQwMEJFRURCMCAvKiBQYWdlU2VyaWFsaXplci5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlBNzE5N0YyNjE3NTY4QUU1MDA3Qjk0NDIgLyogUGFnZVRocm90dGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI4NEFFQTEwNDQ3REVFMDBFQUVCNTIgLyogUGFn
ZVRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUUxRUNDMjBDOTFDOTA0
MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkQ1Qjk3
QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNp
b24gMjA4MjYxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNiBAQAogI2luY2x1ZGUgIk5vRXZlbnREaXNwYXRj
aEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
LSNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgiCkBAIC0zMjc2LDcgKzMyNzUsNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldE11dGVkKGJvb2wgbXV0CiAgICAgfQogCiAgICAgc2NoZWR1bGVVcGRhdGVQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwotICAgIHVwZGF0ZUF1ZGlvQXNzZXJ0aW9uU3RhdGUo
KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUoKQpAQCAtNDc5
MSw4ICs0Nzg5LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAg
IGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+Y2hhbmdl
ZFZvbHVtZSgpOwogI2VuZGlmCi0KLSAgICB1cGRhdGVBdWRpb0Fzc2VydGlvblN0YXRlKCk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKFVwZGF0ZVN0YXRlIHVw
ZGF0ZVN0YXRlKQpAQCAtNDgxMiw3ICs0ODA4LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVQbGF5U3RhdGUoVQogICAgICAgICBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lci5zdG9wKCk7
CiAgICAgICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgICAgICBtZWRpYUNvbnRy
b2xzKCktPnBsYXliYWNrU3RvcHBlZCgpOwotICAgICAgICB1cGRhdGVBdWRpb0Fzc2VydGlvblN0
YXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC00ODc4LDggKzQ4NzMsNiBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZShVCiAKICAgICBtX2hhc0V2
ZXJIYWRBdWRpbyB8PSBoYXNBdWRpbygpOwogICAgIG1faGFzRXZlckhhZFZpZGVvIHw9IGhhc1Zp
ZGVvKCk7Ci0KLSAgICB1cGRhdGVBdWRpb0Fzc2VydGlvblN0YXRlKCk7CiB9CiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0UGxheWluZyhib29sIHBsYXlpbmcpCkBAIC02OTQ3LDQyICs2OTQw
LDYgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCgpIAogICAgIHJldHVy
biBtdXRlZCgpIHx8IChkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+aXNB
dWRpb011dGVkKCkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUF1ZGlvQXNz
ZXJ0aW9uU3RhdGUoKQotewotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKLSAg
ICBpZiAoIXBhZ2UpIHsKLSAgICAgICAgbV9hdWRpb0FjdGl2aXR5VG9rZW4gPSBudWxscHRyOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jZGVmaW5lIFJFTEVBU0VfQVVESU9fVE9LRU4oUkVB
U09OKSBcCi0gICAgUkVMRUFTRV9MT0dfSUYocGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCkgJiYgbV9hdWRpb0FjdGl2aXR5VG9rZW4sIE1lZGlhLCAiJXAgLSBIVE1MTWVkaWFFbGVtZW50
IHJlbGVhc2VzIGF1ZGlvIGFjdGl2aXR5IHRva2VuLCByZWFzb246ICIgUkVBU09OLCB0aGlzKTsg
XAotICAgIG1fYXVkaW9BY3Rpdml0eVRva2VuID0gbnVsbHB0cgotCi0gICAgaWYgKCFoYXNBdWRp
bygpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVVESU9fVE9LRU4oIk5vIGF1ZGlvIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFpc1BsYXlpbmcoKSkgewotICAgICAgICBSRUxFQVNF
X0FVRElPX1RPS0VOKCJOb3QgcGxheWluZyIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChlZmZlY3RpdmVNdXRlZCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVVESU9fVE9LRU4oIkF1
ZGlvIGlzIG11dGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCF2b2x1bWUo
KSkgewotICAgICAgICBSRUxFQVNFX0FVRElPX1RPS0VOKCJWb2x1bWUgaXMgMCIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9hdWRpb0FjdGl2aXR5VG9rZW4pIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUYocGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlh
LCAiJXAgLSBIVE1MTWVkaWFFbGVtZW50IHRha2VzIGF1ZGlvIGFjdGl2aXR5IHRva2VuIGJlY2F1
c2UgdGhlcmUgaXMgYXVkaWJsZSBhdWRpbyIsIHRoaXMpOwotICAgICAgICBtX2F1ZGlvQWN0aXZp
dHlUb2tlbiA9IHBhZ2UtPnBhZ2VUaHJvdHRsZXIoKS5tZWRpYUFjdGl2aXR5VG9rZW4oKTsKLSAg
ICB9Ci0KLSN1bmRlZiBSRUxFQVNFX0FVRElPX1RPS0VOCi19Ci0KIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGUsIEF0
b21pY1N0cmluZyogdmFsdWUpIGNvbnN0CiB7CiAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVO
YW1lKG51bGxBdG9tLCBhdHRyaWJ1dGUsIG51bGxBdG9tKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBA
QAogI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIk1lZGlh
RWxlbWVudFNlc3Npb24uaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCi0jaW5jbHVkZSAi
UGFnZVRocm90dGxlci5oIgogI2luY2x1ZGUgIlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24u
aCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTc3MSw4ICs3NzAsNiBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBlZmZlY3RpdmVNdXRlZCgpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVB
dWRpb0Fzc2VydGlvblN0YXRlKCk7Ci0KICAgICB2b2lkIHJlZ2lzdGVyV2l0aERvY3VtZW50KERv
Y3VtZW50Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CiAK
QEAgLTEwMDcsNyArMTAwNCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYUVsZW1lbnRTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKLSAgICBQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbiBtX2F1ZGlvQWN0aXZpdHlUb2tlbjsKICAgICBzaXplX3QgbV9yZXBv
cnRlZEV4dHJhTWVtb3J5Q29zdCB7IDAgfTsKIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19T
Q1JJUFQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9u
IDIwODI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDcgKzg3LDYgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKLSNpbmNsdWRlICJQYWdlVGhy
b3R0bGVyLmgiCiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKQEAgLTEwNzcsMTMg
KzEwNzYsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tcGxldGVkKCkKIAogICAgIGlmIChtX2Zy
YW1lLnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS52aWV3KCktPm1haW50YWluU2Nyb2xsUG9zaXRp
b25BdEFuY2hvcihudWxscHRyKTsKLSAgICBtX2FjdGl2aXR5QXNzZXJ0aW9uID0gbnVsbHB0cjsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c3RhcnRlZCgpCiB7Ci0gICAgaWYgKG1fZnJhbWUucGFn
ZSgpKQotICAgICAgICBtX2FjdGl2aXR5QXNzZXJ0aW9uID0gbV9mcmFtZS5wYWdlKCktPnBhZ2VU
aHJvdHRsZXIoKS5wYWdlTG9hZEFjdGl2aXR5VG9rZW4oKTsKICAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgpKQogICAg
ICAgICBmcmFtZS0+bG9hZGVyKCkubV9pc0NvbXBsZXRlID0gZmFsc2U7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYg
QEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0
b25lcy5oIgogI2luY2x1ZGUgIk1peGVkQ29udGVudENoZWNrZXIuaCIKLSNpbmNsdWRlICJQYWdl
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVUeXBlcy5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZE5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmgiCkBAIC00NTksNyArNDU4LDYgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3ByZXZpb3VzVVJM
OwogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbTsKLSAgICBQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBtX2FjdGl2aXR5QXNzZXJ0aW9uOwogfTsKIAogLy8g
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgY3JlYXRlV2luZG93KCkgaW4gSlNET01XaW5kb3dC
YXNlLmNwcCwgZm9yIGV4YW1wbGUsIGZvcgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiSG9zdFdpbmRv
dy5oIgogI2luY2x1ZGUgIkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmgiCiAjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQb3B1
cE1lbnUuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJSZW5kZXJF
bWJlZGRlZE9iamVjdC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyMDgyNjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw2IEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2FibGUuaCIKICNpbmNsdWRlICJQYWdlR3Jv
dXAuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJQYWdl
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUGx1Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgpAQCAtMjI0
LDcgKzIyMyw2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICNl
bmRpZgogICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQocGFnZUNvbmZpZ3VyYXRpb24uYWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KQogICAgICwgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQo
ZmFsc2UpCi0gICAgLCBtX3BhZ2VUaHJvdHRsZXIoKnRoaXMpCiAgICAgLCBtX2NvbnNvbGVDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZp
c2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZXMuaCIKICNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUg
IlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCiAjaW5j
bHVkZSAiUGFnaW5hdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCkBAIC0xMDQs
NyArMTAzLDYgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiBjbGFzcyBQYWdlQ29uc29sZUNs
aWVudDsKIGNsYXNzIFBhZ2VEZWJ1Z2dhYmxlOwogY2xhc3MgUGFnZUdyb3VwOwotY2xhc3MgUGFn
ZVRocm90dGxlcjsKIGNsYXNzIFBsdWdJbkNsaWVudDsKIGNsYXNzIFBsdWdpbkRhdGE7CiBjbGFz
cyBQbHVnaW5JbmZvUHJvdmlkZXI7CkBAIC0xMzcsNyArMTM1LDYgQEAgY2xhc3MgUGFnZSA6IHB1
YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPgogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2Up
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5n
czsKLSAgICBmcmllbmQgY2xhc3MgUGFnZVRocm90dGxlcjsKIAogcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENo
YW5nZUluRW52aXJvbm1lbnQoKTsKQEAgLTMzNiw3ICszMzMsNiBAQCBwdWJsaWM6CiAgICAgLy8g
Tm90aWZpY2F0aW9ucyB3aGVuIHRoZSBQYWdlIHN0YXJ0cyBhbmQgc3RvcHMgYmVpbmcgcHJlc2Vu
dGVkIHZpYSBhIG5hdGl2ZSB3aW5kb3cuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBY3Rp
dml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzKTsKICAgICBib29sIGlzVmlzaWJsZUFuZEFj
dGl2ZSgpIGNvbnN0OwotICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2VkKCkgeyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRJc1ByZXJlbmRlcigpOwogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOyB9CkBA
IC00MzcsOCArNDMzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2F3TWVkaWFFbmdpbmUoY29uc3Qg
U3RyaW5nJiBlbmdpbmVOYW1lKTsKICAgICB2b2lkIHJlc2V0U2Vlbk1lZGlhRW5naW5lcygpOwog
Ci0gICAgUGFnZVRocm90dGxlciYgcGFnZVRocm90dGxlcigpIHsgcmV0dXJuIG1fcGFnZVRocm90
dGxlcjsgfQotCiAgICAgUGFnZUNvbnNvbGVDbGllbnQmIGNvbnNvbGUoKSB7IHJldHVybiAqbV9j
b25zb2xlQ2xpZW50OyB9CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTY2Nyw3
ICs2NjEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0VkaXRhYmxlOwogICAgIGJvb2wgbV9p
c1ByZXJlbmRlcjsKICAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7Ci0g
ICAgUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fcGFnZUFjdGl2aXR5U3RhdGU7CiAKICAgICBM
YXlvdXRNaWxlc3RvbmVzIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lczsKIApAQCAtNjg1LDcg
KzY3OCw2IEBAIHByaXZhdGU6CiAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBtX2FsdGVybmF0
aXZlVGV4dENsaWVudDsKIAogICAgIGJvb2wgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQ7
Ci0gICAgUGFnZVRocm90dGxlciBtX3BhZ2VUaHJvdHRsZXI7CiAgICAgY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPFBhZ2VDb25zb2xlQ2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7CiAKICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmNw
cAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVy
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgotCi0jaW5jbHVkZSAiUGFn
ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBkb3VibGUgUGFnZUxv
YWRIeXN0ZXJlc2lzU2Vjb25kcyA9IDEwOwotCi1QYWdlVGhyb3R0bGVyOjpQYWdlVGhyb3R0bGVy
KFBhZ2UmIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKLSAgICAsIG1fbWVkaWFBY3Rpdml0eUh5
c3RlcmVzaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBzZXRBY3Rpdml0eUZsYWco
UGFnZUFjdGl2aXR5U3RhdGU6Ok1lZGlhQWN0aXZpdHksIHN0YXRlID09IEh5c3RlcmVzaXNTdGF0
ZTo6U3RhcnRlZCk7IH0pCi0gICAgLCBtX3BhZ2VMb2FkQWN0aXZpdHlIeXN0ZXJlc2lzKFt0aGlz
XShIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgc2V0QWN0aXZpdHlGbGFnKFBhZ2VBY3Rpdml0eVN0
YXRlOjpQYWdlTG9hZEFjdGl2aXR5LCBzdGF0ZSA9PSBIeXN0ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQp
OyB9LCBQYWdlTG9hZEh5c3RlcmVzaXNTZWNvbmRzKQotICAgICwgbV9tZWRpYUFjdGl2aXR5Q291
bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IG1lZGlhQWN0aXZpdHlDb3VudGVyQ2hhbmdl
ZCgpOyB9KQotICAgICwgbV9wYWdlTG9hZEFjdGl2aXR5Q291bnRlcihbdGhpc10oUmVmQ291bnRl
ckV2ZW50KSB7IHBhZ2VMb2FkQWN0aXZpdHlDb3VudGVyQ2hhbmdlZCgpOyB9KQotewotfQotCi1Q
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBQYWdlVGhyb3R0bGVyOjptZWRpYUFjdGl2aXR5VG9r
ZW4oKQotewotICAgIHJldHVybiBtX21lZGlhQWN0aXZpdHlDb3VudGVyLmNvdW50KCk7Ci19Ci0K
LVBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIFBhZ2VUaHJvdHRsZXI6OnBhZ2VMb2FkQWN0aXZp
dHlUb2tlbigpCi17Ci0gICAgcmV0dXJuIG1fcGFnZUxvYWRBY3Rpdml0eUNvdW50ZXIuY291bnQo
KTsKLX0KLQotdm9pZCBQYWdlVGhyb3R0bGVyOjptZWRpYUFjdGl2aXR5Q291bnRlckNoYW5nZWQo
KQotewotICAgIGlmIChtX21lZGlhQWN0aXZpdHlDb3VudGVyLnZhbHVlKCkpCi0gICAgICAgIG1f
bWVkaWFBY3Rpdml0eUh5c3RlcmVzaXMuc3RhcnQoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbWVk
aWFBY3Rpdml0eUh5c3RlcmVzaXMuc3RvcCgpOwotfQotCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnBh
Z2VMb2FkQWN0aXZpdHlDb3VudGVyQ2hhbmdlZCgpCi17Ci0gICAgaWYgKG1fcGFnZUxvYWRBY3Rp
dml0eUNvdW50ZXIudmFsdWUoKSkKLSAgICAgICAgbV9wYWdlTG9hZEFjdGl2aXR5SHlzdGVyZXNp
cy5zdGFydCgpOwotICAgIGVsc2UKLSAgICAgICAgbV9wYWdlTG9hZEFjdGl2aXR5SHlzdGVyZXNp
cy5zdG9wKCk7Ci19Ci0KLXZvaWQgUGFnZVRocm90dGxlcjo6c2V0QWN0aXZpdHlGbGFnKFBhZ2VB
Y3Rpdml0eVN0YXRlOjpGbGFncyBmbGFnLCBib29sIHZhbHVlKQotewotICAgIFBhZ2VBY3Rpdml0
eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOwotICAgIGlmICh2
YWx1ZSkKLSAgICAgICAgYWN0aXZpdHlTdGF0ZSB8PSBmbGFnOwotICAgIGVsc2UKLSAgICAgICAg
YWN0aXZpdHlTdGF0ZSAmPSB+ZmxhZzsKLQotICAgIGlmIChtX2FjdGl2aXR5U3RhdGUgPT0gYWN0
aXZpdHlTdGF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2
aXR5U3RhdGU7Ci0KLSAgICBtX3BhZ2UucGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2VkKCk7Ci19Ci0K
LX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5oCShyZXZpc2lvbiAyMDgyNjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFj
dGl2aXR5U3RhdGUuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVzZXJBY3Rpdml0
eS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgUGFnZTsKLQotZW51bSBQYWdlQWN0aXZpdHlDb3VudGVyVHlwZSB7IH07Ci10eXBl
ZGVmIFJlZkNvdW50ZXI8UGFnZUFjdGl2aXR5Q291bnRlclR5cGU+IFBhZ2VBY3Rpdml0eUNvdW50
ZXI7Ci10eXBlZGVmIFBhZ2VBY3Rpdml0eUNvdW50ZXI6OlRva2VuIFBhZ2VBY3Rpdml0eUFzc2Vy
dGlvblRva2VuOwotCi1zdHJ1Y3QgUGFnZUFjdGl2aXR5U3RhdGUgewotICAgIGVudW0gewotICAg
ICAgICBNZWRpYUFjdGl2aXR5ID0gMSA8PCAwLAotICAgICAgICBQYWdlTG9hZEFjdGl2aXR5ID0g
MSA8PCAxLAotICAgIH07Ci0KLSAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwotCi0gICAgc3Rh
dGljIGNvbnN0IEZsYWdzIE5vRmxhZ3MgPSAwOwotICAgIHN0YXRpYyBjb25zdCBGbGFncyBBbGxG
bGFncyA9IE1lZGlhQWN0aXZpdHkgfCBQYWdlTG9hZEFjdGl2aXR5OwotfTsKLQotY2xhc3MgUGFn
ZVRocm90dGxlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
UGFnZVRocm90dGxlcihQYWdlJik7Ci0KLSAgICBQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0
aXZpdHlTdGF0ZSgpIHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZTsgfQotICAgIHZvaWQgcGx1Z2lu
RGlkRXZhbHVhdGVXaGlsZUF1ZGlvSXNQbGF5aW5nKCkgeyBtX21lZGlhQWN0aXZpdHlIeXN0ZXJl
c2lzLmltcHVsc2UoKTsgfQotICAgIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIG1lZGlhQWN0
aXZpdHlUb2tlbigpOwotICAgIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIHBhZ2VMb2FkQWN0
aXZpdHlUb2tlbigpOwotCi1wcml2YXRlOgotICAgIHZvaWQgbWVkaWFBY3Rpdml0eUNvdW50ZXJD
aGFuZ2VkKCk7Ci0gICAgdm9pZCBwYWdlTG9hZEFjdGl2aXR5Q291bnRlckNoYW5nZWQoKTsKLSAg
ICB2b2lkIHNldEFjdGl2aXR5RmxhZyhQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wpOwot
Ci0gICAgUGFnZSYgbV9wYWdlOwotICAgIFBhZ2VBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2
aXR5U3RhdGUgeyBQYWdlQWN0aXZpdHlTdGF0ZTo6Tm9GbGFncyB9OwotICAgIEh5c3RlcmVzaXNB
Y3Rpdml0eSBtX21lZGlhQWN0aXZpdHlIeXN0ZXJlc2lzOwotICAgIEh5c3RlcmVzaXNBY3Rpdml0
eSBtX3BhZ2VMb2FkQWN0aXZpdHlIeXN0ZXJlc2lzOwotICAgIFBhZ2VBY3Rpdml0eUNvdW50ZXIg
bV9tZWRpYUFjdGl2aXR5Q291bnRlcjsKLSAgICBQYWdlQWN0aXZpdHlDb3VudGVyIG1fcGFnZUxv
YWRBY3Rpdml0eUNvdW50ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAxNi0xMS0wMSAgR2F2aW4gQmFycmFjbG91
Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFBhZ2VUaHJvdHRs
ZXIgJiBhbGwgcmVsYXRlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjQzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbGwgcmVsZXZhbnQgaW5mb3JtYXRpb24gbm93IGF2YWlsYWJsZSBmcm9t
IHRoZSBBY3Rpdml0eVN0YXRlLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6UGx1Z2luUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6YXVkaW9IYXJkd2FyZURpZEJl
Y29tZUFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmF1
ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICogUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjphdWRpb0hhcmR3
YXJlRGlkQmVjb21lSW5hY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSdW50aW1l
T2JqZWN0TWFwOjpldmFsdWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OmF1ZGlvSGFyZHdhcmVBY3Rpdml0eSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZURpZEJl
Y29tZUluYWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OnN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZUFjdGl2
aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmF1ZGlvSGFyZHdh
cmVBY3Rpdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjphdWRpb0hhcmR3YXJlQWN0aXZpdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorCiAyMDE2LTExLTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IENNYWtl
IGJ1aWxkLgpJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblBy
b2Nlc3MuY3BwCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw2IEBAIFBs
dWdpblByb2Nlc3M6OlBsdWdpblByb2Nlc3MoKQogICAgICwgbV9jb25uZWN0aW9uQWN0aXZpdHko
IlBsdWdpblByb2Nlc3MgY29ubmVjdGlvbiBhY3Rpdml0eS4iKQogewogICAgIE5ldHNjYXBlUGx1
Z2luOjpzZXRTZXRFeGNlcHRpb25GdW5jdGlvbihXZWJQcm9jZXNzQ29ubmVjdGlvbjo6c2V0R2xv
YmFsRXhjZXB0aW9uKTsKLSAgICBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lciA9IEF1ZGlvSGFyZHdh
cmVMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogUGx1Z2luUHJvY2Vzczo6flBsdWdpblBy
b2Nlc3MoKQpAQCAtMTY4LDEzICsxNjcsNiBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdl
YlByb2Nlc3NDb25uCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCiAgICAg
YXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwogCi0gICAgaWYgKG1fYXVkaW9IYXJk
d2FyZUxpc3RlbmVyKSB7Ci0gICAgICAgIGlmIChtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lci0+aGFy
ZHdhcmVBY3Rpdml0eSgpID09IFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGU6Oklz
QWN0aXZlKQotICAgICAgICAgICAgY29ubmVjdGlvbi0+YXVkaW9IYXJkd2FyZURpZEJlY29tZUFj
dGl2ZSgpOwotICAgICAgICBlbHNlIGlmIChtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lci0+aGFyZHdh
cmVBY3Rpdml0eSgpID09IFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGU6OklzSW5h
Y3RpdmUpCi0gICAgICAgICAgICBjb25uZWN0aW9uLT5hdWRpb0hhcmR3YXJlRGlkQmVjb21lSW5h
Y3RpdmUoKTsKLSAgICB9Ci0KICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoV1RG
TW92ZShjb25uZWN0aW9uKSk7CiAKICAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0
ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CkBAIC0yNTMsMTggKzI0NSw2IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY28KIH0KICNlbmRpZgogCi12
b2lkIFBsdWdpblByb2Nlc3M6OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKQotewotICAg
IGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQotICAgICAg
ICBjb25uZWN0aW9uLT5hdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCk7Ci19Ci0gICAgCi12
b2lkIFBsdWdpblByb2Nlc3M6OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpCi17Ci0g
ICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCi0gICAg
ICAgIGNvbm5lY3Rpb24tPmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQpJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNz
LmgJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRl
ICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvdW50ZWRVc2VyQWN0aXZpdHku
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NSw3ICs0NCw3IEBAIGNsYXNzIE5ldHNjYXBl
UGx1Z2luTW9kdWxlOwogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiBzdHJ1Y3QgUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAgICAgCi1jbGFzcyBQbHVnaW5Qcm9jZXNz
IDogcHVibGljIENoaWxkUHJvY2VzcywgcHJpdmF0ZSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlTGlz
dGVuZXI6OkNsaWVudAorY2xhc3MgUGx1Z2luUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MK
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbHVnaW5Qcm9jZXNzKTsKICAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8UGx1Z2luUHJvY2Vzcz47CkBAIC0xMDEsMTEgKzEwMCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwog
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGhvc3ROYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKLSAgICAvLyBBdWRpb0hhcmR3
YXJlTGlzdGVuZXJDbGllbnQKLSAgICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUo
KSBvdmVycmlkZTsKLSAgICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpIG92
ZXJyaWRlOwotICAgIHZvaWQgYXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9
Ci0KICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICAKICAgICB2b2lkIHNldE1pbmltdW1MaWZldGlt
ZShkb3VibGUpOwpAQCAtMTM1LDggKzEyOSw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIENv
dW50ZWRVc2VyQWN0aXZpdHkgbV9jb25uZWN0aW9uQWN0aXZpdHk7Ci0KLSAgICBSZWZQdHI8V2Vi
Q29yZTo6QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIwODI2
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsMTYgKzMyMiw2IEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZVBsdWdpbkEKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpQbHVnaW5Qcm94eTo6RGlkQ3JlYXRlUGx1Z2luKHdhbnRzV2hlZWxFdmVudHMsIHJlbW90
ZUxheWVyQ2xpZW50SUQpLCBNZXNzYWdlczo6UGx1Z2luUHJveHk6OkRpZENyZWF0ZVBsdWdpbjo6
UmVwbHkoKSwgY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOwogfQogICAgIAot
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgp
Ci17Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6QXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgpLCAwKTsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCkKLXsKLSAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpB
dWRpb0hhcmR3YXJlRGlkQmVjb21lSW5hY3RpdmUoKSwgMCk7Ci19Ci0gICAgCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRl
eDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw2IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlvbihjb25zdCBTdHJp
bmcmKTsKICAgICAKLSAgICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKTsKLSAg
ICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpOwotCiBwcml2YXRlOgogICAg
IFdlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgJKHJldmlzaW9u
IDIwODI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRlZiBQbHVnaW5faAogI2RlZmlu
ZSBQbHVnaW5faAogCi0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0hhcmR3YXJlTGlzdGVuZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KQEAgLTI5Myw4ICsyOTIsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQo
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
ZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0
eVR5cGUgYXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6QXVk
aW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6VW5rbm93bjsgfQotCiAgICAgdmlydHVhbCB2b2lkIG11
dGVkU3RhdGVDaGFuZ2VkKGJvb2wpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGNhbkNyZWF0ZVRy
YW5zaWVudFBhaW50aW5nU25hcHNob3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdp
blByb2Nlc3NDbwogICAgIDogbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIocGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKQogICAgICwgbV9wbHVnaW5Qcm9jZXNzVG9rZW4ocGx1
Z2luUHJvY2Vzc1Rva2VuKQogICAgICwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uKHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCi0gICAg
LCBtX2F1ZGlvSGFyZHdhcmVBY3Rpdml0eShXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlU
eXBlOjpVbmtub3duKQogewogICAgIG1fY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3Jl
YXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOwogCkBAIC05
MSwxMSArOTAsNiBAQCB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVQbHVnCiAK
IHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIGlmICgh
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpIHsKLSAgICAgICAgZGlkUmVjZWl2ZVBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKICAgICBBU1NFUlQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogCiAg
ICAgUGx1Z2luUHJveHkqIHBsdWdpblByb3h5ID0gbV9wbHVnaW5zLmdldChkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSk7CkBAIC0xNDUsMTYgKzEzOSw2IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OnNldEV4Y2VwdGkKICAgICBOUFJ1bnRpbWVPYmplY3RNYXA6OnNldEdsb2JhbEV4Y2Vw
dGlvbihleGNlcHRpb25TdHJpbmcpOwogfQogICAgIAotdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgpCi17Ci0gICAgbV9hdWRpb0hhcmR3
YXJlQWN0aXZpdHkgPSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0FjdGl2
ZTsKLX0KLQotdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZURpZEJl
Y29tZUluYWN0aXZlKCkKLXsKLSAgICBtX2F1ZGlvSGFyZHdhcmVBY3Rpdml0eSA9IFdlYkNvcmU6
OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGU6OklzSW5hY3RpdmU7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgIE5QUmVtb3RlT2JqZWN0TWFwKiBu
cFJlbW90ZU9iamVjdE1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fbnBSZW1vdGVPYmplY3RNYXAuZ2V0
KCk7IH0KIAogICAgIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbjsgfQotICAgIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGUgYXVkaW9IYXJk
d2FyZUFjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0hhcmR3YXJlQWN0aXZpdHk7IH0K
ICAgICAKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyKiwgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNB
c3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7CkBAIC03MCwxMSArNjksOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAg
dm9pZCBkaWRSZWNlaXZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKICAgICB2b2lkIHNldEV4Y2VwdGlvbihjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKTsKLSAg
ICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpOwogCiAgICAgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjsK
ICAgICB1aW50NjRfdCBtX3BsdWdpblByb2Nlc3NUb2tlbjsKQEAgLTg4LDcgKzg0LDYgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8TlBSZW1vdGVPYmplY3RNYXA+IG1fbnBSZW1vdGVPYmplY3RNYXA7
CiAgICAgCiAgICAgYm9vbCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b247Ci0gICAgV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZSBtX2F1ZGlvSGFyZHdh
cmVBY3Rpdml0eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA4MjYxKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMCArMjUsNiBAQAogbWVzc2FnZXMgLT4g
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewogICAgICMgU2V0IGEgZ2xv
YmFsIEphdmFTY3JpcHQgZXhjZXB0aW9uLgogICAgIFNldEV4Y2VwdGlvbihTdHJpbmcgZXhjZXB0
aW9uU3RyaW5nKSAtPiAoKQotICAgIAotICAgICMgUGx1Z2luIHByb2Nlc3MgYXVkaW8gaGFyZHdh
cmUgc3RhdGUgY2hhbmdlZAotICAgIEF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKQotICAg
IEF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpCiB9CiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCShy
ZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDAsMTMgKzc0MCw2IEBAIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBsdWdpblByb3gKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotI2lmIFBMQVRGT1JNKENPQ09BKQotV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlw
ZSBQbHVnaW5Qcm94eTo6YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9jb25uZWN0aW9uLT5hdWRpb0hhcmR3YXJlQWN0aXZpdHkoKTsKLX0KLSNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmgJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMTAgKzE0Nyw2IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQog
ICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZSBhdWRpb0hh
cmR3YXJlQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKLSNlbmRpZgotCiAgICAgZmxvYXQgY29u
dGVudHNTY2FsZUZhY3RvcigpOwogICAgIGJvb2wgbmVlZHNCYWNraW5nU3RvcmUoKSBjb25zdDsK
ICAgICBib29sIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMjA4MjYxKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VUaHJv
dHRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm94eVNl
cnZlci5oPgpAQCAtNTQ2LDE4ICs1NDUsNiBAQCB2b2lkIFBsdWdpblZpZXc6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoCiAgICAgICAgIG1fcGx1Z2luLT53aW5kb3dGb2N1c0NoYW5nZWQobV93ZWJQ
YWdlLT53aW5kb3dJc0ZvY3VzZWQoKSk7CiB9CiAKLVdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rp
dml0eVR5cGUgUGx1Z2luVmlldzo6YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCi0gICAgICAgIHJldHVybiBBdWRp
b0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0luYWN0aXZlOwotICAgIAotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHJldHVybiBtX3BsdWdpbi0+YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCk7Ci0jZWxz
ZQotICAgIHJldHVybiBBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpVbmtub3duOwotI2VuZGlm
Ci19Ci0gICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFBsdWdpblZpZXc6OnNldERldmlj
ZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogewpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCShyZXZpc2lvbiAyMDgyNjEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsNyArMTE2LDYgQEAgcHVibGljOgogICAgIGJvb2wgcGVyZm9ybURpY3Rp
b25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICBT
dHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYpIGNvbnN0OwogICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKLSAgICBXZWJDb3JlOjpBdWRpb0hhcmR3YXJl
QWN0aXZpdHlUeXBlIGF1ZGlvSGFyZHdhcmVBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIFBsdWdpblZpZXcoUGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudD4sIFBhc3NSZWZQdHI8UGx1Z2luPiwgY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCShyZXZpc2lv
biAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBSdW50aW1lT2JqZWN0TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZVRocm90dGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0xODksMTUgKzE4OCw2IEBAIGJvb2wg
TlBSdW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZShOUE9iamUKICAgICBpZiAoIWdsb2JhbE9iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYg
KG1fcGx1Z2luVmlldyAmJiAhbV9wbHVnaW5WaWV3LT5pc0JlaW5nRGVzdHJveWVkKCkpIHsKLSAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3BsdWdpblZpZXctPmZyYW1lKCktPnBhZ2UoKSkgewot
ICAgICAgICAgICAgaWYgKG1fcGx1Z2luVmlldy0+YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgIT0g
V2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6SXNJbmFjdGl2ZSkKLSAgICAgICAg
ICAgICAgICBwYWdlLT5wYWdlVGhyb3R0bGVyKCkucGx1Z2luRGlkRXZhbHVhdGVXaGlsZUF1ZGlv
SXNQbGF5aW5nKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIAogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9QYWdlVGhyb3R0bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293624</attachid>
            <date>2016-11-01 17:25:58 -0700</date>
            <delta_ts>2016-11-01 18:40:39 -0700</delta_ts>
            <desc>fix</desc>
            <filename>164302.3.patch</filename>
            <type>text/plain</type>
            <size>40962</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE2LTExLTAxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGFn
ZVRocm90dGxlciAmIGFsbCByZWxhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbCByZWxldmFudCBpbmZvcm1hdGlvbiBub3cgYXZhaWxh
YmxlIGZyb20gdGhlIEFjdGl2aXR5U3RhdGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldE11dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQ
bGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQXVk
aW9Bc3NlcnRpb25TdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnN0YXJ0ZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6cGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnBhZ2VUaHJvdHRsZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvUGFnZVRocm90dGxlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0
bGVyLmg6IFJlbW92ZWQuCisKIDIwMTYtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQiAyLjA6IFN1cHBvcnQgSURCSW5kZXggZ2V0QWxs
L2dldEFsbEtleXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA4MjYxKQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwNTgs
NyArMjA1OCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL1BhZ2VPdmVybGF5LmNw
cAogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCi0gICAgcGFnZS9QYWdlVGhyb3R0bGVyLmNwcAogICAgIHBhZ2UvUGFnZVZpc2li
aWxpdHlTdGF0ZS5jcHAKICAgICBwYWdlL1BlcmZvcm1hbmNlLmNwcAogICAgIHBhZ2UvUGVyZm9y
bWFuY2VFbnRyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk1
Myw4ICszOTUzLDYgQEAKIAkJQTcxNUU2NTMxMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hh
ZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcxNUU2NTExMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVudC5oICov
OyB9OwogCQlBNzE4NzYwRTBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3NjBEMEIyQTEyMDEw
MEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3MTg3ODkwMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJv
bGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLzsgfTsK
LQkJQTcxOTdGMjQxNzU2ODlDNDAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTk3RjIzMTc1Njg5QzQwMDdC
OTQ0MiAvKiBQYWdlVGhyb3R0bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJQTcxOTdGMjYxNzU2OEFFNTAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcx
OTdGMjUxNzU2OEFFNTAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIuY3BwICovOyB9OwogCQlBNzIz
Rjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjNGNzdBMTQ4NENBNEMwMDhD
NkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3Mjc2M0JGMTY2ODlCRkIwMDJGQ0FDQiAvKiBVc2Vy
QWN0aW9uRWxlbWVudFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcyNzYzQkUxNjY4OUJGQjAwMkZDQUNCIC8qIFVzZXJBY3Rpb25FbGVtZW50U2V0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcz
Rjk1RkUxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAv
KiBSb3VuZGVkUmVjdC5jcHAgKi87IH07CkBAIC03NDQ2LDggKzc0NDQsOCBAQAogCQkwRjg3MTY2
RTFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGVuZ3RoUG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY4QjQ1NkYxREMzRkIxMDAwNDQzQzNGIC8qIEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2su
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2su
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhCNDU3MTFEQzNGQkEzMDA0NDND
M0YgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGOEI0NTczMURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2Vj
dGlvbk9ic2VydmVyQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSlNJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmNwcDsgcGF0aCA9IEpTSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGOEI0NTc0MURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNJbnRlcnNlY3Rpb25PYnNl
cnZlckNhbGxiYWNrLmg7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4QjQ1NzMxREM0MURCQTAwNDQzQzNGIC8q
IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjhCNDU3NDFEQzQxREJBMDA0NDNDM0YgLyogSlNJ
bnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjk3QTY1NzE1NURBODFFMDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTExNDY5LDggKzExNDY3LDYgQEAKIAkJQTcxNUU2NTExMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dy
ZXNzU2hhZG93RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9n
cmVzc1NoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxODc2
MEQwQjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERyYWdBY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERyYWdDb250cm9sbGVyTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzE5N0YyMzE3NTY4OUM0MDA3Qjk0NDIgLyog
UGFnZVRocm90dGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlVGhy
b3R0bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3MTk3RjI1MTc1NjhBRTUw
MDdCOTQ0MiAvKiBQYWdlVGhyb3R0bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhZ2VUaHJvdHRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzFBNzBDOTExQUZCMDIwMDA5ODlENkQgLyogSFRNTE1ldGVyRWxlbWVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSFRNTE1ldGVyRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3MjNGNzdBMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1h
Y3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUV4cG9ydE1h
Y3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzI3NjNCRTE2Njg5QkZCMDAy
RkNBQ0IgLyogVXNlckFjdGlvbkVsZW1lbnRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVXNlckFjdGlvbkVsZW1lbnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3NzEzLDggKzE3NzA5LDYgQEAKIAkJCQkyRDVDOUNGRTE5QzdCNTJFMDBCM0M1QzEg
LyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmggKi8sCiAJCQkJMzcxRTY1Q0QxMzY2MUVFRDAwQkVF
REIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLywKIAkJCQkzNzFFNjVDQjEzNjYxRURDMDBCRUVE
QjAgLyogUGFnZVNlcmlhbGl6ZXIuaCAqLywKLQkJCQlBNzE5N0YyNTE3NTY4QUU1MDA3Qjk0NDIg
LyogUGFnZVRocm90dGxlci5jcHAgKi8sCi0JCQkJQTcxOTdGMjMxNzU2ODlDNDAwN0I5NDQyIC8q
IFBhZ2VUaHJvdHRsZXIuaCAqLywKIAkJCQlGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFn
ZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8sCiAJCQkJRkZENUI5NzgxMzVDQzk3ODAwRDVFOTJBIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGUuaCAqLywKIAkJCQlFNTI2QUYzRTE3MjdGOEYyMDBFNDE3ODEg
LyogUGVyZm9ybWFuY2UuY3BwICovLApAQCAtMjY2MDQsNyArMjY1OTgsNiBAQAogCQkJCUYzODIw
ODk1MTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUYzNkQzQjE4Rjc1ODcyMDA1NEMwMjQgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzFFNjVDQzEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlh
bGl6ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3MTk3RjI0MTc1Njg5QzQwMDdCOTQ0MiAvKiBQ
YWdlVGhyb3R0bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI4NEFFMTEwNDQ3RDQ1MDBFQUVC
NTIgLyogUGFnZVRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMUVDQzMw
QzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZG
RDVCOTdCMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTMwMzI2LDcgKzMwMzE5LDYgQEAKIAkJCQlGMzgyMDg5NDE0N0QzNUY5MDAxMEJD
MDYgLyogUGFnZVJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUYzNkQzQTE4
Rjc1ODcyMDA1NEMwMjQgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTM3MUU2NUNFMTM2NjFFRUQwMEJFRURCMCAvKiBQYWdlU2VyaWFsaXplci5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlBNzE5N0YyNjE3NTY4QUU1MDA3Qjk0NDIgLyogUGFnZVRocm90dGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI4NEFFQTEwNDQ3REVFMDBFQUVCNTIgLyogUGFn
ZVRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUUxRUNDMjBDOTFDOTA0
MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkQ1Qjk3
QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNp
b24gMjA4MjYxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNiBAQAogI2luY2x1ZGUgIk5vRXZlbnREaXNwYXRj
aEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
LSNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgiCkBAIC0zMjc2LDcgKzMyNzUsNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldE11dGVkKGJvb2wgbXV0CiAgICAgfQogCiAgICAgc2NoZWR1bGVVcGRhdGVQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwotICAgIHVwZGF0ZUF1ZGlvQXNzZXJ0aW9uU3RhdGUo
KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUoKQpAQCAtNDc5
MSw4ICs0Nzg5LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQogICAg
IGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+Y2hhbmdl
ZFZvbHVtZSgpOwogI2VuZGlmCi0KLSAgICB1cGRhdGVBdWRpb0Fzc2VydGlvblN0YXRlKCk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKFVwZGF0ZVN0YXRlIHVw
ZGF0ZVN0YXRlKQpAQCAtNDgxMiw3ICs0ODA4LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVQbGF5U3RhdGUoVQogICAgICAgICBtX3BsYXliYWNrUHJvZ3Jlc3NUaW1lci5zdG9wKCk7
CiAgICAgICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgICAgICBtZWRpYUNvbnRy
b2xzKCktPnBsYXliYWNrU3RvcHBlZCgpOwotICAgICAgICB1cGRhdGVBdWRpb0Fzc2VydGlvblN0
YXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC00ODc4LDggKzQ4NzMsNiBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZShVCiAKICAgICBtX2hhc0V2
ZXJIYWRBdWRpbyB8PSBoYXNBdWRpbygpOwogICAgIG1faGFzRXZlckhhZFZpZGVvIHw9IGhhc1Zp
ZGVvKCk7Ci0KLSAgICB1cGRhdGVBdWRpb0Fzc2VydGlvblN0YXRlKCk7CiB9CiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0UGxheWluZyhib29sIHBsYXlpbmcpCkBAIC02OTQ3LDQyICs2OTQw
LDYgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVNdXRlZCgpIAogICAgIHJldHVy
biBtdXRlZCgpIHx8IChkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+aXNB
dWRpb011dGVkKCkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUF1ZGlvQXNz
ZXJ0aW9uU3RhdGUoKQotewotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKLSAg
ICBpZiAoIXBhZ2UpIHsKLSAgICAgICAgbV9hdWRpb0FjdGl2aXR5VG9rZW4gPSBudWxscHRyOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jZGVmaW5lIFJFTEVBU0VfQVVESU9fVE9LRU4oUkVB
U09OKSBcCi0gICAgUkVMRUFTRV9MT0dfSUYocGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCkgJiYgbV9hdWRpb0FjdGl2aXR5VG9rZW4sIE1lZGlhLCAiJXAgLSBIVE1MTWVkaWFFbGVtZW50
IHJlbGVhc2VzIGF1ZGlvIGFjdGl2aXR5IHRva2VuLCByZWFzb246ICIgUkVBU09OLCB0aGlzKTsg
XAotICAgIG1fYXVkaW9BY3Rpdml0eVRva2VuID0gbnVsbHB0cgotCi0gICAgaWYgKCFoYXNBdWRp
bygpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVVESU9fVE9LRU4oIk5vIGF1ZGlvIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFpc1BsYXlpbmcoKSkgewotICAgICAgICBSRUxFQVNF
X0FVRElPX1RPS0VOKCJOb3QgcGxheWluZyIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChlZmZlY3RpdmVNdXRlZCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfQVVESU9fVE9LRU4oIkF1
ZGlvIGlzIG11dGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCF2b2x1bWUo
KSkgewotICAgICAgICBSRUxFQVNFX0FVRElPX1RPS0VOKCJWb2x1bWUgaXMgMCIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9hdWRpb0FjdGl2aXR5VG9rZW4pIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUYocGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlh
LCAiJXAgLSBIVE1MTWVkaWFFbGVtZW50IHRha2VzIGF1ZGlvIGFjdGl2aXR5IHRva2VuIGJlY2F1
c2UgdGhlcmUgaXMgYXVkaWJsZSBhdWRpbyIsIHRoaXMpOwotICAgICAgICBtX2F1ZGlvQWN0aXZp
dHlUb2tlbiA9IHBhZ2UtPnBhZ2VUaHJvdHRsZXIoKS5tZWRpYUFjdGl2aXR5VG9rZW4oKTsKLSAg
ICB9Ci0KLSN1bmRlZiBSRUxFQVNFX0FVRElPX1RPS0VOCi19Ci0KIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6ZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGUsIEF0
b21pY1N0cmluZyogdmFsdWUpIGNvbnN0CiB7CiAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVO
YW1lKG51bGxBdG9tLCBhdHRyaWJ1dGUsIG51bGxBdG9tKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBA
QAogI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIk1lZGlh
RWxlbWVudFNlc3Npb24uaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCi0jaW5jbHVkZSAi
UGFnZVRocm90dGxlci5oIgogI2luY2x1ZGUgIlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24u
aCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTc3MSw4ICs3NzAsNiBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBlZmZlY3RpdmVNdXRlZCgpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVB
dWRpb0Fzc2VydGlvblN0YXRlKCk7Ci0KICAgICB2b2lkIHJlZ2lzdGVyV2l0aERvY3VtZW50KERv
Y3VtZW50Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CiAK
QEAgLTEwMDcsNyArMTAwNCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYUVsZW1lbnRTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKLSAgICBQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbiBtX2F1ZGlvQWN0aXZpdHlUb2tlbjsKICAgICBzaXplX3QgbV9yZXBv
cnRlZEV4dHJhTWVtb3J5Q29zdCB7IDAgfTsKIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19T
Q1JJUFQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9u
IDIwODI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDcgKzg3LDYgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKLSNpbmNsdWRlICJQYWdlVGhy
b3R0bGVyLmgiCiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKQEAgLTEwNzcsMTMg
KzEwNzYsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tcGxldGVkKCkKIAogICAgIGlmIChtX2Zy
YW1lLnZpZXcoKSkKICAgICAgICAgbV9mcmFtZS52aWV3KCktPm1haW50YWluU2Nyb2xsUG9zaXRp
b25BdEFuY2hvcihudWxscHRyKTsKLSAgICBtX2FjdGl2aXR5QXNzZXJ0aW9uID0gbnVsbHB0cjsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c3RhcnRlZCgpCiB7Ci0gICAgaWYgKG1fZnJhbWUucGFn
ZSgpKQotICAgICAgICBtX2FjdGl2aXR5QXNzZXJ0aW9uID0gbV9mcmFtZS5wYWdlKCktPnBhZ2VU
aHJvdHRsZXIoKS5wYWdlTG9hZEFjdGl2aXR5VG9rZW4oKTsKICAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgpKQogICAg
ICAgICBmcmFtZS0+bG9hZGVyKCkubV9pc0NvbXBsZXRlID0gZmFsc2U7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYg
QEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0
b25lcy5oIgogI2luY2x1ZGUgIk1peGVkQ29udGVudENoZWNrZXIuaCIKLSNpbmNsdWRlICJQYWdl
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVUeXBlcy5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZE5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmgiCkBAIC00NTksNyArNDU4LDYgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3ByZXZpb3VzVVJM
OwogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbTsKLSAgICBQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBtX2FjdGl2aXR5QXNzZXJ0aW9uOwogfTsKIAogLy8g
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgY3JlYXRlV2luZG93KCkgaW4gSlNET01XaW5kb3dC
YXNlLmNwcCwgZm9yIGV4YW1wbGUsIGZvcgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiSG9zdFdpbmRv
dy5oIgogI2luY2x1ZGUgIkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmgiCiAjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgotI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQb3B1
cE1lbnUuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJSZW5kZXJF
bWJlZGRlZE9iamVjdC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyMDgyNjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw2IEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2FibGUuaCIKICNpbmNsdWRlICJQYWdlR3Jv
dXAuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJQYWdl
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUGx1Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgpAQCAtMjI0
LDcgKzIyMyw2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICNl
bmRpZgogICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQocGFnZUNvbmZpZ3VyYXRpb24uYWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KQogICAgICwgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQo
ZmFsc2UpCi0gICAgLCBtX3BhZ2VUaHJvdHRsZXIoKnRoaXMpCiAgICAgLCBtX2NvbnNvbGVDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZp
c2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZXMuaCIKICNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgotI2luY2x1ZGUg
IlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCiAjaW5j
bHVkZSAiUGFnaW5hdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCkBAIC0zNCw2
ICszMyw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTZXNzaW9uSUQu
aCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSAiVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgIlZpZXdwb3J0
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCkBAIC0xMDQs
NyArMTA0LDYgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiBjbGFzcyBQYWdlQ29uc29sZUNs
aWVudDsKIGNsYXNzIFBhZ2VEZWJ1Z2dhYmxlOwogY2xhc3MgUGFnZUdyb3VwOwotY2xhc3MgUGFn
ZVRocm90dGxlcjsKIGNsYXNzIFBsdWdJbkNsaWVudDsKIGNsYXNzIFBsdWdpbkRhdGE7CiBjbGFz
cyBQbHVnaW5JbmZvUHJvdmlkZXI7CkBAIC0xMzcsNyArMTM2LDYgQEAgY2xhc3MgUGFnZSA6IHB1
YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPgogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2Up
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5n
czsKLSAgICBmcmllbmQgY2xhc3MgUGFnZVRocm90dGxlcjsKIAogcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENo
YW5nZUluRW52aXJvbm1lbnQoKTsKQEAgLTMzNiw3ICszMzQsNiBAQCBwdWJsaWM6CiAgICAgLy8g
Tm90aWZpY2F0aW9ucyB3aGVuIHRoZSBQYWdlIHN0YXJ0cyBhbmQgc3RvcHMgYmVpbmcgcHJlc2Vu
dGVkIHZpYSBhIG5hdGl2ZSB3aW5kb3cuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBY3Rp
dml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzKTsKICAgICBib29sIGlzVmlzaWJsZUFuZEFj
dGl2ZSgpIGNvbnN0OwotICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2VkKCkgeyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRJc1ByZXJlbmRlcigpOwogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlOyB9CkBA
IC00MzcsOCArNDM0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2F3TWVkaWFFbmdpbmUoY29uc3Qg
U3RyaW5nJiBlbmdpbmVOYW1lKTsKICAgICB2b2lkIHJlc2V0U2Vlbk1lZGlhRW5naW5lcygpOwog
Ci0gICAgUGFnZVRocm90dGxlciYgcGFnZVRocm90dGxlcigpIHsgcmV0dXJuIG1fcGFnZVRocm90
dGxlcjsgfQotCiAgICAgUGFnZUNvbnNvbGVDbGllbnQmIGNvbnNvbGUoKSB7IHJldHVybiAqbV9j
b25zb2xlQ2xpZW50OyB9CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTY2Nyw3
ICs2NjIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0VkaXRhYmxlOwogICAgIGJvb2wgbV9p
c1ByZXJlbmRlcjsKICAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2aXR5U3RhdGU7Ci0g
ICAgUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzIG1fcGFnZUFjdGl2aXR5U3RhdGU7CiAKICAgICBM
YXlvdXRNaWxlc3RvbmVzIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lczsKIApAQCAtNjg1LDcg
KzY3OSw2IEBAIHByaXZhdGU6CiAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBtX2FsdGVybmF0
aXZlVGV4dENsaWVudDsKIAogICAgIGJvb2wgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQ7
Ci0gICAgUGFnZVRocm90dGxlciBtX3BhZ2VUaHJvdHRsZXI7CiAgICAgY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPFBhZ2VDb25zb2xlQ2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7CiAKICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmNw
cAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVy
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgotCi0jaW5jbHVkZSAiUGFn
ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBkb3VibGUgUGFnZUxv
YWRIeXN0ZXJlc2lzU2Vjb25kcyA9IDEwOwotCi1QYWdlVGhyb3R0bGVyOjpQYWdlVGhyb3R0bGVy
KFBhZ2UmIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKLSAgICAsIG1fbWVkaWFBY3Rpdml0eUh5
c3RlcmVzaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBzZXRBY3Rpdml0eUZsYWco
UGFnZUFjdGl2aXR5U3RhdGU6Ok1lZGlhQWN0aXZpdHksIHN0YXRlID09IEh5c3RlcmVzaXNTdGF0
ZTo6U3RhcnRlZCk7IH0pCi0gICAgLCBtX3BhZ2VMb2FkQWN0aXZpdHlIeXN0ZXJlc2lzKFt0aGlz
XShIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgc2V0QWN0aXZpdHlGbGFnKFBhZ2VBY3Rpdml0eVN0
YXRlOjpQYWdlTG9hZEFjdGl2aXR5LCBzdGF0ZSA9PSBIeXN0ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQp
OyB9LCBQYWdlTG9hZEh5c3RlcmVzaXNTZWNvbmRzKQotICAgICwgbV9tZWRpYUFjdGl2aXR5Q291
bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IG1lZGlhQWN0aXZpdHlDb3VudGVyQ2hhbmdl
ZCgpOyB9KQotICAgICwgbV9wYWdlTG9hZEFjdGl2aXR5Q291bnRlcihbdGhpc10oUmVmQ291bnRl
ckV2ZW50KSB7IHBhZ2VMb2FkQWN0aXZpdHlDb3VudGVyQ2hhbmdlZCgpOyB9KQotewotfQotCi1Q
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbiBQYWdlVGhyb3R0bGVyOjptZWRpYUFjdGl2aXR5VG9r
ZW4oKQotewotICAgIHJldHVybiBtX21lZGlhQWN0aXZpdHlDb3VudGVyLmNvdW50KCk7Ci19Ci0K
LVBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIFBhZ2VUaHJvdHRsZXI6OnBhZ2VMb2FkQWN0aXZp
dHlUb2tlbigpCi17Ci0gICAgcmV0dXJuIG1fcGFnZUxvYWRBY3Rpdml0eUNvdW50ZXIuY291bnQo
KTsKLX0KLQotdm9pZCBQYWdlVGhyb3R0bGVyOjptZWRpYUFjdGl2aXR5Q291bnRlckNoYW5nZWQo
KQotewotICAgIGlmIChtX21lZGlhQWN0aXZpdHlDb3VudGVyLnZhbHVlKCkpCi0gICAgICAgIG1f
bWVkaWFBY3Rpdml0eUh5c3RlcmVzaXMuc3RhcnQoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbWVk
aWFBY3Rpdml0eUh5c3RlcmVzaXMuc3RvcCgpOwotfQotCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnBh
Z2VMb2FkQWN0aXZpdHlDb3VudGVyQ2hhbmdlZCgpCi17Ci0gICAgaWYgKG1fcGFnZUxvYWRBY3Rp
dml0eUNvdW50ZXIudmFsdWUoKSkKLSAgICAgICAgbV9wYWdlTG9hZEFjdGl2aXR5SHlzdGVyZXNp
cy5zdGFydCgpOwotICAgIGVsc2UKLSAgICAgICAgbV9wYWdlTG9hZEFjdGl2aXR5SHlzdGVyZXNp
cy5zdG9wKCk7Ci19Ci0KLXZvaWQgUGFnZVRocm90dGxlcjo6c2V0QWN0aXZpdHlGbGFnKFBhZ2VB
Y3Rpdml0eVN0YXRlOjpGbGFncyBmbGFnLCBib29sIHZhbHVlKQotewotICAgIFBhZ2VBY3Rpdml0
eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlID0gbV9hY3Rpdml0eVN0YXRlOwotICAgIGlmICh2
YWx1ZSkKLSAgICAgICAgYWN0aXZpdHlTdGF0ZSB8PSBmbGFnOwotICAgIGVsc2UKLSAgICAgICAg
YWN0aXZpdHlTdGF0ZSAmPSB+ZmxhZzsKLQotICAgIGlmIChtX2FjdGl2aXR5U3RhdGUgPT0gYWN0
aXZpdHlTdGF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2
aXR5U3RhdGU7Ci0KLSAgICBtX3BhZ2UucGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2VkKCk7Ci19Ci0K
LX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5oCShyZXZpc2lvbiAyMDgyNjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFj
dGl2aXR5U3RhdGUuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVzZXJBY3Rpdml0
eS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgUGFnZTsKLQotZW51bSBQYWdlQWN0aXZpdHlDb3VudGVyVHlwZSB7IH07Ci10eXBl
ZGVmIFJlZkNvdW50ZXI8UGFnZUFjdGl2aXR5Q291bnRlclR5cGU+IFBhZ2VBY3Rpdml0eUNvdW50
ZXI7Ci10eXBlZGVmIFBhZ2VBY3Rpdml0eUNvdW50ZXI6OlRva2VuIFBhZ2VBY3Rpdml0eUFzc2Vy
dGlvblRva2VuOwotCi1zdHJ1Y3QgUGFnZUFjdGl2aXR5U3RhdGUgewotICAgIGVudW0gewotICAg
ICAgICBNZWRpYUFjdGl2aXR5ID0gMSA8PCAwLAotICAgICAgICBQYWdlTG9hZEFjdGl2aXR5ID0g
MSA8PCAxLAotICAgIH07Ci0KLSAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwotCi0gICAgc3Rh
dGljIGNvbnN0IEZsYWdzIE5vRmxhZ3MgPSAwOwotICAgIHN0YXRpYyBjb25zdCBGbGFncyBBbGxG
bGFncyA9IE1lZGlhQWN0aXZpdHkgfCBQYWdlTG9hZEFjdGl2aXR5OwotfTsKLQotY2xhc3MgUGFn
ZVRocm90dGxlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
UGFnZVRocm90dGxlcihQYWdlJik7Ci0KLSAgICBQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0
aXZpdHlTdGF0ZSgpIHsgcmV0dXJuIG1fYWN0aXZpdHlTdGF0ZTsgfQotICAgIHZvaWQgcGx1Z2lu
RGlkRXZhbHVhdGVXaGlsZUF1ZGlvSXNQbGF5aW5nKCkgeyBtX21lZGlhQWN0aXZpdHlIeXN0ZXJl
c2lzLmltcHVsc2UoKTsgfQotICAgIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIG1lZGlhQWN0
aXZpdHlUb2tlbigpOwotICAgIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuIHBhZ2VMb2FkQWN0
aXZpdHlUb2tlbigpOwotCi1wcml2YXRlOgotICAgIHZvaWQgbWVkaWFBY3Rpdml0eUNvdW50ZXJD
aGFuZ2VkKCk7Ci0gICAgdm9pZCBwYWdlTG9hZEFjdGl2aXR5Q291bnRlckNoYW5nZWQoKTsKLSAg
ICB2b2lkIHNldEFjdGl2aXR5RmxhZyhQYWdlQWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wpOwot
Ci0gICAgUGFnZSYgbV9wYWdlOwotICAgIFBhZ2VBY3Rpdml0eVN0YXRlOjpGbGFncyBtX2FjdGl2
aXR5U3RhdGUgeyBQYWdlQWN0aXZpdHlTdGF0ZTo6Tm9GbGFncyB9OwotICAgIEh5c3RlcmVzaXNB
Y3Rpdml0eSBtX21lZGlhQWN0aXZpdHlIeXN0ZXJlc2lzOwotICAgIEh5c3RlcmVzaXNBY3Rpdml0
eSBtX3BhZ2VMb2FkQWN0aXZpdHlIeXN0ZXJlc2lzOwotICAgIFBhZ2VBY3Rpdml0eUNvdW50ZXIg
bV9tZWRpYUFjdGl2aXR5Q291bnRlcjsKLSAgICBQYWdlQWN0aXZpdHlDb3VudGVyIG1fcGFnZUxv
YWRBY3Rpdml0eUNvdW50ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAxNi0xMS0wMSAgR2F2aW4gQmFycmFjbG91
Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFBhZ2VUaHJvdHRs
ZXIgJiBhbGwgcmVsYXRlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjQzMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbGwgcmVsZXZhbnQgaW5mb3JtYXRpb24gbm93IGF2YWlsYWJsZSBmcm9t
IHRoZSBBY3Rpdml0eVN0YXRlLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6UGx1Z2luUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6YXVkaW9IYXJkd2FyZURpZEJl
Y29tZUFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmF1
ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICogUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9uOjphdWRpb0hhcmR3
YXJlRGlkQmVjb21lSW5hY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSdW50aW1l
T2JqZWN0TWFwOjpldmFsdWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OmF1ZGlvSGFyZHdhcmVBY3Rpdml0eSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZURpZEJl
Y29tZUluYWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OnN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZUFjdGl2
aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmF1ZGlvSGFyZHdh
cmVBY3Rpdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjphdWRpb0hhcmR3YXJlQWN0aXZpdHkpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorCiAyMDE2LTExLTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IENNYWtl
IGJ1aWxkLgpJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblBy
b2Nlc3MuY3BwCShyZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw2IEBAIFBs
dWdpblByb2Nlc3M6OlBsdWdpblByb2Nlc3MoKQogICAgICwgbV9jb25uZWN0aW9uQWN0aXZpdHko
IlBsdWdpblByb2Nlc3MgY29ubmVjdGlvbiBhY3Rpdml0eS4iKQogewogICAgIE5ldHNjYXBlUGx1
Z2luOjpzZXRTZXRFeGNlcHRpb25GdW5jdGlvbihXZWJQcm9jZXNzQ29ubmVjdGlvbjo6c2V0R2xv
YmFsRXhjZXB0aW9uKTsKLSAgICBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lciA9IEF1ZGlvSGFyZHdh
cmVMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogUGx1Z2luUHJvY2Vzczo6flBsdWdpblBy
b2Nlc3MoKQpAQCAtMTY4LDEzICsxNjcsNiBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdl
YlByb2Nlc3NDb25uCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCiAgICAg
YXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOwogCi0gICAgaWYgKG1fYXVkaW9IYXJk
d2FyZUxpc3RlbmVyKSB7Ci0gICAgICAgIGlmIChtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lci0+aGFy
ZHdhcmVBY3Rpdml0eSgpID09IFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGU6Oklz
QWN0aXZlKQotICAgICAgICAgICAgY29ubmVjdGlvbi0+YXVkaW9IYXJkd2FyZURpZEJlY29tZUFj
dGl2ZSgpOwotICAgICAgICBlbHNlIGlmIChtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lci0+aGFyZHdh
cmVBY3Rpdml0eSgpID09IFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGU6OklzSW5h
Y3RpdmUpCi0gICAgICAgICAgICBjb25uZWN0aW9uLT5hdWRpb0hhcmR3YXJlRGlkQmVjb21lSW5h
Y3RpdmUoKTsKLSAgICB9Ci0KICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoV1RG
TW92ZShjb25uZWN0aW9uKSk7CiAKICAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0
ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CkBAIC0yNTMsMTggKzI0NSw2IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY28KIH0KICNlbmRpZgogCi12
b2lkIFBsdWdpblByb2Nlc3M6OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKQotewotICAg
IGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQotICAgICAg
ICBjb25uZWN0aW9uLT5hdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCk7Ci19Ci0gICAgCi12
b2lkIFBsdWdpblByb2Nlc3M6OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpCi17Ci0g
ICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCi0gICAg
ICAgIGNvbm5lY3Rpb24tPmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQpJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNz
LmgJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRl
ICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvdW50ZWRVc2VyQWN0aXZpdHku
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lci5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NSw3ICs0NCw3IEBAIGNsYXNzIE5ldHNjYXBl
UGx1Z2luTW9kdWxlOwogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiBzdHJ1Y3QgUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAgICAgCi1jbGFzcyBQbHVnaW5Qcm9jZXNz
IDogcHVibGljIENoaWxkUHJvY2VzcywgcHJpdmF0ZSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlTGlz
dGVuZXI6OkNsaWVudAorY2xhc3MgUGx1Z2luUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MK
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbHVnaW5Qcm9jZXNzKTsKICAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8UGx1Z2luUHJvY2Vzcz47CkBAIC0xMDEsMTEgKzEwMCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwog
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGhvc3ROYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKLSAgICAvLyBBdWRpb0hhcmR3
YXJlTGlzdGVuZXJDbGllbnQKLSAgICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUo
KSBvdmVycmlkZTsKLSAgICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpIG92
ZXJyaWRlOwotICAgIHZvaWQgYXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9
Ci0KICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICAKICAgICB2b2lkIHNldE1pbmltdW1MaWZldGlt
ZShkb3VibGUpOwpAQCAtMTM1LDggKzEyOSw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIENv
dW50ZWRVc2VyQWN0aXZpdHkgbV9jb25uZWN0aW9uQWN0aXZpdHk7Ci0KLSAgICBSZWZQdHI8V2Vi
Q29yZTo6QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBtX2F1ZGlvSGFyZHdhcmVMaXN0ZW5lcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIwODI2
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsMTYgKzMyMiw2IEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZVBsdWdpbkEKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpQbHVnaW5Qcm94eTo6RGlkQ3JlYXRlUGx1Z2luKHdhbnRzV2hlZWxFdmVudHMsIHJlbW90
ZUxheWVyQ2xpZW50SUQpLCBNZXNzYWdlczo6UGx1Z2luUHJveHk6OkRpZENyZWF0ZVBsdWdpbjo6
UmVwbHkoKSwgY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOwogfQogICAgIAot
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgp
Ci17Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6QXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgpLCAwKTsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCkKLXsKLSAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpB
dWRpb0hhcmR3YXJlRGlkQmVjb21lSW5hY3RpdmUoKSwgMCk7Ci19Ci0gICAgCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRl
eDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw2IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlvbihjb25zdCBTdHJp
bmcmKTsKICAgICAKLSAgICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKTsKLSAg
ICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpOwotCiBwcml2YXRlOgogICAg
IFdlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgJKHJldmlzaW9u
IDIwODI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRlZiBQbHVnaW5faAogI2RlZmlu
ZSBQbHVnaW5faAogCi0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0hhcmR3YXJlTGlzdGVuZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KQEAgLTI5Myw4ICsyOTIsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQo
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
ZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0
eVR5cGUgYXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6QXVk
aW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6VW5rbm93bjsgfQotCiAgICAgdmlydHVhbCB2b2lkIG11
dGVkU3RhdGVDaGFuZ2VkKGJvb2wpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGNhbkNyZWF0ZVRy
YW5zaWVudFBhaW50aW5nU25hcHNob3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdp
blByb2Nlc3NDbwogICAgIDogbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIocGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKQogICAgICwgbV9wbHVnaW5Qcm9jZXNzVG9rZW4ocGx1
Z2luUHJvY2Vzc1Rva2VuKQogICAgICwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uKHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCi0gICAg
LCBtX2F1ZGlvSGFyZHdhcmVBY3Rpdml0eShXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlU
eXBlOjpVbmtub3duKQogewogICAgIG1fY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3Jl
YXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOwogCkBAIC05
MSwxMSArOTAsNiBAQCB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVQbHVnCiAK
IHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIGlmICgh
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpIHsKLSAgICAgICAgZGlkUmVjZWl2ZVBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKICAgICBBU1NFUlQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogCiAg
ICAgUGx1Z2luUHJveHkqIHBsdWdpblByb3h5ID0gbV9wbHVnaW5zLmdldChkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSk7CkBAIC0xNDUsMTYgKzEzOSw2IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OnNldEV4Y2VwdGkKICAgICBOUFJ1bnRpbWVPYmplY3RNYXA6OnNldEdsb2JhbEV4Y2Vw
dGlvbihleGNlcHRpb25TdHJpbmcpOwogfQogICAgIAotdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgpCi17Ci0gICAgbV9hdWRpb0hhcmR3
YXJlQWN0aXZpdHkgPSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0FjdGl2
ZTsKLX0KLQotdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXVkaW9IYXJkd2FyZURpZEJl
Y29tZUluYWN0aXZlKCkKLXsKLSAgICBtX2F1ZGlvSGFyZHdhcmVBY3Rpdml0eSA9IFdlYkNvcmU6
OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGU6OklzSW5hY3RpdmU7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgIE5QUmVtb3RlT2JqZWN0TWFwKiBu
cFJlbW90ZU9iamVjdE1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fbnBSZW1vdGVPYmplY3RNYXAuZ2V0
KCk7IH0KIAogICAgIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbjsgfQotICAgIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGUgYXVkaW9IYXJk
d2FyZUFjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0hhcmR3YXJlQWN0aXZpdHk7IH0K
ICAgICAKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyKiwgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNB
c3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7CkBAIC03MCwxMSArNjksOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAg
dm9pZCBkaWRSZWNlaXZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKICAgICB2b2lkIHNldEV4Y2VwdGlvbihjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKTsKLSAg
ICB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpOwogCiAgICAgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjsK
ICAgICB1aW50NjRfdCBtX3BsdWdpblByb2Nlc3NUb2tlbjsKQEAgLTg4LDcgKzg0LDYgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8TlBSZW1vdGVPYmplY3RNYXA+IG1fbnBSZW1vdGVPYmplY3RNYXA7
CiAgICAgCiAgICAgYm9vbCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b247Ci0gICAgV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZSBtX2F1ZGlvSGFyZHdh
cmVBY3Rpdml0eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA4MjYxKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMCArMjUsNiBAQAogbWVzc2FnZXMgLT4g
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewogICAgICMgU2V0IGEgZ2xv
YmFsIEphdmFTY3JpcHQgZXhjZXB0aW9uLgogICAgIFNldEV4Y2VwdGlvbihTdHJpbmcgZXhjZXB0
aW9uU3RyaW5nKSAtPiAoKQotICAgIAotICAgICMgUGx1Z2luIHByb2Nlc3MgYXVkaW8gaGFyZHdh
cmUgc3RhdGUgY2hhbmdlZAotICAgIEF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKQotICAg
IEF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpCiB9CiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCShy
ZXZpc2lvbiAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDAsMTMgKzc0MCw2IEBAIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBsdWdpblByb3gKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotI2lmIFBMQVRGT1JNKENPQ09BKQotV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlw
ZSBQbHVnaW5Qcm94eTo6YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9jb25uZWN0aW9uLT5hdWRpb0hhcmR3YXJlQWN0aXZpdHkoKTsKLX0KLSNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmgJKHJldmlzaW9uIDIwODI2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMTAgKzE0Nyw2IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQog
ICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZSBhdWRpb0hh
cmR3YXJlQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKLSNlbmRpZgotCiAgICAgZmxvYXQgY29u
dGVudHNTY2FsZUZhY3RvcigpOwogICAgIGJvb2wgbmVlZHNCYWNraW5nU3RvcmUoKSBjb25zdDsK
ICAgICBib29sIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMjA4MjYxKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VUaHJv
dHRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm94eVNl
cnZlci5oPgpAQCAtNTQ2LDE4ICs1NDUsNiBAQCB2b2lkIFBsdWdpblZpZXc6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoCiAgICAgICAgIG1fcGx1Z2luLT53aW5kb3dGb2N1c0NoYW5nZWQobV93ZWJQ
YWdlLT53aW5kb3dJc0ZvY3VzZWQoKSk7CiB9CiAKLVdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rp
dml0eVR5cGUgUGx1Z2luVmlldzo6YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCi0gICAgICAgIHJldHVybiBBdWRp
b0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJc0luYWN0aXZlOwotICAgIAotI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHJldHVybiBtX3BsdWdpbi0+YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCk7Ci0jZWxz
ZQotICAgIHJldHVybiBBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpVbmtub3duOwotI2VuZGlm
Ci19Ci0gICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFBsdWdpblZpZXc6OnNldERldmlj
ZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogewpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCShyZXZpc2lvbiAyMDgyNjEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsNyArMTE2LDYgQEAgcHVibGljOgogICAgIGJvb2wgcGVyZm9ybURpY3Rp
b25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICBT
dHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYpIGNvbnN0OwogICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKLSAgICBXZWJDb3JlOjpBdWRpb0hhcmR3YXJl
QWN0aXZpdHlUeXBlIGF1ZGlvSGFyZHdhcmVBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIFBsdWdpblZpZXcoUGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudD4sIFBhc3NSZWZQdHI8UGx1Z2luPiwgY29uc3QgUGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCShyZXZpc2lv
biAyMDgyNjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBSdW50aW1lT2JqZWN0TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZVRocm90dGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0xODksMTUgKzE4OCw2IEBAIGJvb2wg
TlBSdW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZShOUE9iamUKICAgICBpZiAoIWdsb2JhbE9iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYg
KG1fcGx1Z2luVmlldyAmJiAhbV9wbHVnaW5WaWV3LT5pc0JlaW5nRGVzdHJveWVkKCkpIHsKLSAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3BsdWdpblZpZXctPmZyYW1lKCktPnBhZ2UoKSkgewot
ICAgICAgICAgICAgaWYgKG1fcGx1Z2luVmlldy0+YXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgIT0g
V2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZTo6SXNJbmFjdGl2ZSkKLSAgICAgICAg
ICAgICAgICBwYWdlLT5wYWdlVGhyb3R0bGVyKCkucGx1Z2luRGlkRXZhbHVhdGVXaGlsZUF1ZGlv
SXNQbGF5aW5nKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIAogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjA4MjYxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9QYWdlVGhyb3R0bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaD4K
</data>
<flag name="review"
          id="316478"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>