<?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>65404</bug_id>
          
          <creation_ts>2011-07-29 18:00:34 -0700</creation_ts>
          <short_desc>JSC GC zombie support no longer works, and is likely no longer needed</short_desc>
          <delta_ts>2011-07-29 22:25:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>444207</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-29 18:00:34 -0700</bug_when>
    <thetext>The JSC GC has support for installing zombie cells in free memory as a way of tracking when a reference in the heap is missed.  But this functionality no longer works, and is not tested during any regressions (either in bots or in command-line tools).  It&apos;s not clear that it&apos;s needed, since WebCore and JSC appear to track references accurately enough to be correct.  Furthermore, it&apos;s not clear that the GC should continue to support a relatively complex piece of untested functionality, which makes implementing new features difficult, and whose existence is predicated upon the GC being broken.  In short, zombie support should be removed unless a good argument can be made for its necessity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444211</commentid>
    <comment_count>1</comment_count>
      <attachid>102416</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-29 18:14:11 -0700</bug_when>
    <thetext>Created attachment 102416
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444214</commentid>
    <comment_count>2</comment_count>
      <attachid>102416</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-29 18:24:16 -0700</bug_when>
    <thetext>Comment on attachment 102416
the patch

Attachment 102416 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9267624</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444216</commentid>
    <comment_count>3</comment_count>
      <attachid>102416</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-29 18:29:11 -0700</bug_when>
    <thetext>Comment on attachment 102416
the patch

Attachment 102416 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9267623</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444224</commentid>
    <comment_count>4</comment_count>
      <attachid>102419</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-29 18:40:44 -0700</bug_when>
    <thetext>Created attachment 102419
the patch (fix various platforms)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444237</commentid>
    <comment_count>5</comment_count>
      <attachid>102419</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 19:50:00 -0700</bug_when>
    <thetext>Comment on attachment 102419
the patch (fix various platforms)

Clearing flags on attachment: 102419

Committed r92046: &lt;http://trac.webkit.org/changeset/92046&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444238</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 19:50:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444255</commentid>
    <comment_count>7</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-07-29 22:25:34 -0700</bug_when>
    <thetext>Sad thing... was a nice feature.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102416</attachid>
            <date>2011-07-29 18:14:11 -0700</date>
            <delta_ts>2011-07-29 18:40:44 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>removezombies_patch_1.diff</filename>
            <type>text/plain</type>
            <size>27024</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIwMzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAK
KzIwMTEtMDctMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgR0Mgem9tYmllIHN1cHBvcnQgbm8gbG9uZ2VyIHdvcmtzLCBhbmQgaXMgbGlrZWx5IG5vIGxv
bmdlciBuZWVkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyByZW1vdmVzIHpvbWJpZXMsIGJlY2F1c2UgdGhleSBubyBsb25nZXIg
d29yaywgYXJlIG5vdCB0ZXN0ZWQsIGFyZQorICAgICAgICBwcm9iYWJseSBub3QgbmVlZGVkLCBh
bmQgYXJlIGdldHRpbmcgaW4gdGhlIHdheSBvZiBHQyBvcHRpbWl6YXRpb24KKyAgICAgICAgd29y
ay4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogaGVhcC9IYW5kbGUuaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlQ29udmVydGVy
OjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvciop
OgorICAgICAgICAqIGhlYXAvSGFuZGxlSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhhbmRsZUhl
YXA6OmlzVmFsaWRXZWFrTm9kZSk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAg
KEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAg
ICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
c3dlZXApOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OmNsZWFyTWFya3MpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyLmg6
CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAo
SlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6QXJnTGlz
dDo6QXJnTGlzdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlND
Ojppc1pvbWJpZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9i
YWxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjbGVhckJ1aWx0aW5TdHJ1Y3R1
cmVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaDoK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6SlNWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU1pv
bWJpZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9KU1pvbWJpZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6CisgICAgICAgIChKU0M6OldyaXRl
QmFycmllckJhc2U6OnNldEVhcmx5VmFsdWUpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJC
YXNlOjpvcGVyYXRvciopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpzZXRXaXRo
b3V0V3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0wNy0y
OSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBKSVQgZG9l
cyBub3QgaGF2ZSBhbnkgd2F5IG9mIHVuZG9pbmcgZG91YmxlIHNwZWN1bGF0aW9uLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkyMDMyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTQyNyw4ICs0MjcsNiBAQAogCQlBN0Y5OTM2MDBGRDczMjUxMDBBMEIy
RDAgLyogSlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Y5OTM1RTBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5jcHAgKi87
IH07CiAJCUE3RkI2MEE0MTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGQjYwQTMx
MDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi87IH07CiAJCUE3RkI2
MTAwMTA0MEMzOEIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4
NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlCQzAxRDRGMTExQThGMUZGMDBBNTRCMkEgLyogSlNab21iaWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMUQ0
RUYxMUE4RjFGRjAwQTU0QjJBIC8qIEpTWm9tYmllLmNwcCAqLzsgfTsKLQkJQkMwMUQ0RjIxMUE4
RjFGRjAwQTU0QjJBIC8qIEpTWm9tYmllLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzAxRDRGMDExQThGMUZGMDBBNTRCMkEgLyogSlNab21iaWUuaCAq
LzsgfTsKIAkJQkMwMkU5MEQwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA1MEUx
ODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVjdG9yLmggKi87IH07CiAJCUJDMDJFOTBGMEUx
ODM5REIwMDBGOTI5NyAvKiBFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5MDcwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9y
UHJvdG90eXBlLmggKi87IH07CiAJCUJDMDJFOTExMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzAyRTkwOTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oICovOyB9OwpAQCAtMTE1NSw4ICsxMTUzLDYgQEAKIAkJQTdGQjYwQTMxMDNGN0RDMjAwMTdB
Mjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEU4OTQzMTBDRDA2MDI0MDAzNjcxNzkgLyogSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RTg5NDMzMENEMDYw
M0YwMDM2NzE3OSAvKiBKU0dsb2JhbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0dsb2JhbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
QzAxRDRFRjExQThGMUZGMDBBNTRCMkEgLyogSlNab21iaWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNab21iaWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCQzAxRDRGMDExQThGMUZGMDBBNTRCMkEgLyogSlNab21iaWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNab21iaWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMwMjFCRjExMzY5MDBDMzAwRkM1NDY3IC8qIENvbXBpbGVyVmVyc2lvbi54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBDb21waWxlclZlcnNpb24ueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDIxQkYyMTM2OTAwQzMwMEZD
NTQ2NyAvKiBUZXN0QVBJLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IFRlc3RBUEkueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDJFOTA0
MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVycm9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTkzOCw4ICsxOTM0LDYgQEAKIAkJCQkxNEYyNTI1NjBEMDhERDhE
MDA0RUNGRkYgLyogSlNWYXJpYWJsZU9iamVjdC5oICovLAogCQkJCTY1QzdBMTcxMEE4RUFBQ0Iw
MEZBMzdFQSAvKiBKU1dyYXBwZXJPYmplY3QuY3BwICovLAogCQkJCTY1QzdBMTcyMEE4RUFBQ0Iw
MEZBMzdFQSAvKiBKU1dyYXBwZXJPYmplY3QuaCAqLywKLQkJCQlCQzAxRDRFRjExQThGMUZGMDBB
NTRCMkEgLyogSlNab21iaWUuY3BwICovLAotCQkJCUJDMDFENEYwMTFBOEYxRkYwMEE1NEIyQSAv
KiBKU1pvbWJpZS5oICovLAogCQkJCUE3RTJFQTZBMEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFs
UGFyc2VyLmNwcCAqLywKIAkJCQlBN0UyRUE2OTBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBh
cnNlci5oICovLAogCQkJCUY2OTJBODY4MDI1NTU5N0QwMUZGNjBGNyAvKiBMb29rdXAuY3BwICov
LApAQCAtMjM4MSw3ICsyMzc1LDYgQEAKIAkJCQlBNzQ4MkU5MzExNkE3Q0FEMDAzQjA3MTIgLyog
SlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgyQjkz
MTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQyRTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNXcmFwcGVyT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQlCQzAxRDRGMjExQThGMUZGMDBBNTRCMkEgLyogSlNab21iaWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkQ4QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzJBMEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJl
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVs
U2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjk0MSw3ICsyOTM0LDYgQEAKIAkJCQkxNDdGMzlE
NzEwN0VDMzc2MDA0MjdBNDggLyogSlNWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNzQ4MkI5NDExNjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg3MDEwN0VDMTM0MDAxM0U3QjIgLyogSlNX
cmFwcGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDMDFENEYxMTFBOEYxRkYwMEE1
NEIyQSAvKiBKU1pvbWJpZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ZEOEM5MjBFRUIyRUU3
MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUIwMTA3
RUM1NDEwMDQyRUMyQyAvKiBMZXhlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0UyRUE2QzBG
QjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCShyZXZpc2lvbiA5MjAzMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCwzMSAr
ODAsMTkgQEAgcHJpdmF0ZToKIHRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiBz
dHJ1Y3QgSGFuZGxlQ29udmVydGVyIHsKICAgICBUKiBvcGVyYXRvci0+KCkKICAgICB7Ci0jaWYg
RU5BQkxFKEpTQ19aT01CSUVTKQotICAgICAgICBBU1NFUlQoIXN0YXRpY19jYXN0PGNvbnN0IEJh
c2UqPih0aGlzKS0+Z2V0KCkgfHwgIXN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0
KCktPmlzWm9tYmllKCkpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxCYXNl
Kj4odGhpcyktPmdldCgpOwogICAgIH0KICAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QK
ICAgICB7Ci0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgICAgICBBU1NFUlQoIXN0YXRpY19j
YXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCkgfHwgIXN0YXRpY19jYXN0PGNvbnN0IEJhc2Uq
Pih0aGlzKS0+Z2V0KCktPmlzWm9tYmllKCkpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpOwogICAgIH0KIAogICAgIFQqIG9wZXJh
dG9yKigpCiAgICAgewotI2lmIEVOQUJMRShKU0NfWk9NQklFUykKLSAgICAgICAgQVNTRVJUKCFz
dGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpIHx8ICFzdGF0aWNfY2FzdDxjb25z
dCBCYXNlKj4odGhpcyktPmdldCgpLT5pc1pvbWJpZSgpKTsKLSNlbmRpZgogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8QmFzZSo+KHRoaXMpLT5nZXQoKTsKICAgICB9CiAgICAgY29uc3QgVCog
b3BlcmF0b3IqKCkgY29uc3QKICAgICB7Ci0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgICAg
ICBBU1NFUlQoIXN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCkgfHwgIXN0YXRp
Y19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCktPmlzWm9tYmllKCkpOwotI2VuZGlmCiAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpOwogICAg
IH0KIH07CkBAIC0xMTksOSArMTA3LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IHN0cnVj
dCBIYW5kbGVDbwogcHJpdmF0ZToKICAgICBKU1ZhbHVlIGpzVmFsdWUoKSBjb25zdAogICAgIHsK
LSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Y29u
c3QgQmFzZSo+KHRoaXMpLT5nZXQoKSB8fCAhc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMp
LT5nZXQoKS5pc1pvbWJpZSgpKTsKLSNlbmRpZgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5jcHAJKHJldmlzaW9uIDkyMDMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
MywxMSArMTYzLDYgQEAgYm9vbCBIYW5kbGVIZWFwOjppc1ZhbGlkV2Vha05vZGUoTm9kZSogbgog
ICAgIGlmICghY2VsbCB8fCAhY2VsbC0+c3RydWN0dXJlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotI2lmIEVOQUJMRShKU0NfWk9NQklFUykKLSAgICBpZiAoY2VsbC0+aXNab21iaWUoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KICAgICByZXR1cm4gdHJ1ZTsKIH0KICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDkyMDMy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3NywxMCArMjc3LDggQEAgdm9pZCBIZWFwOjpkZXN0cm95KCkKICAgICBtX2hhbmRsZUhl
YXAuZmluYWxpemVXZWFrSGFuZGxlcygpOwogICAgIG1fZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdz
LmZpbmFsaXplU21hbGxTdHJpbmdzKCk7CiAKLSNpZiAhRU5BQkxFKEpTQ19aT01CSUVTKQogICAg
IHNocmluaygpOwogICAgIEFTU0VSVCghc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgbV9nbG9iYWxE
YXRhID0gMDsKIH0KQEAgLTU2MSwxMCArNTU5LDYgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVw
VG9nZ2xlIHN3ZWVwVG9nZwogICAgIAogICAgIHJlc2V0QWxsb2NhdG9yKCk7CiAKLSNpZiBFTkFC
TEUoSlNDX1pPTUJJRVMpCi0gICAgc3dlZXBUb2dnbGUgPSBEb1N3ZWVwOwotI2VuZGlmCi0KICAg
ICBpZiAoc3dlZXBUb2dnbGUgPT0gRG9Td2VlcCkgewogICAgICAgICBzd2VlcCgpOwogICAgICAg
ICBzaHJpbmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5jcHAJKHJldmlzaW9uIDkyMDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRl
ICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIkpTWm9tYmllLmgi
CiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTY2LDE3ICs2
NSw4IEBAIHZvaWQgTWFya2VkQmxvY2s6OnN3ZWVwKCkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oJmF0b21z
KClbaV0pOwotI2lmIEVOQUJMRShKU0NfWk9NQklFUykKLSAgICAgICAgaWYgKGNlbGwtPnN0cnVj
dHVyZSgpICYmIGNlbGwtPnN0cnVjdHVyZSgpICE9IGR1bW15TWFya2FibGVDZWxsU3RydWN0dXJl
ICYmICFjZWxsLT5pc1pvbWJpZSgpKSB7Ci0gICAgICAgICAgICBjb25zdCBDbGFzc0luZm8qIGlu
Zm8gPSBjZWxsLT5jbGFzc0luZm8oKTsKLSAgICAgICAgICAgIGNlbGwtPn5KU0NlbGwoKTsKLSAg
ICAgICAgICAgIG5ldyAoY2VsbCkgSlNab21iaWUoKm1faGVhcC0+Z2xvYmFsRGF0YSgpLCBpbmZv
LCBtX2hlYXAtPmdsb2JhbERhdGEoKS0+em9tYmllU3RydWN0dXJlLmdldCgpKTsKLSAgICAgICAg
ICAgIG1fbWFya3Muc2V0KGkpOwotICAgICAgICB9Ci0jZWxzZQogICAgICAgICBjZWxsLT5+SlND
ZWxsKCk7CiAgICAgICAgIG5ldyAoY2VsbCkgSlNDZWxsKCptX2hlYXAtPmdsb2JhbERhdGEoKSwg
ZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUpOwotI2VuZGlmCiAgICAgfQogfQogCkBAIC0xNDQs
MTkgKzEzNCw0IEBAIHZvaWQgTWFya2VkQmxvY2s6OmNhbm9uaWNhbGl6ZUJsb2NrKEZyZWUKICAg
ICB9CiB9CiAKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi12b2lkIE1hcmtlZEJsb2NrOjpjbGVh
ck1hcmtzKCkKLXsKLSAgICAvKiBLZWVwIG91ciBwcmVjaW91cyB6b21iaWVzISAqLwotICAgIGZv
ciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVy
Q2VsbCkgewotICAgICAgICBpZiAobV9tYXJrcy5nZXQoaSkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KCZh
dG9tcygpW2ldKTsKLSAgICAgICAgaWYgKCFjZWxsLT5pc1pvbWJpZSgpKQotICAgICAgICAgICAg
bV9tYXJrcy5jbGVhcihpKTsKLSAgICB9Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9u
IDkyMDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMTg2LDEyICsxODYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHJldHVybiBtX21hcmtzLmlzRW1wdHkoKTsKICAgICB9CiAKLSNpZiAhRU5BQkxFKEpTQ19aT01C
SUVTKQogICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKCkKICAgICB7CiAg
ICAgICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKICAgICB9Ci0jZW5kaWYKICAgICAKICAgICBpbmxp
bmUgc2l6ZV90IE1hcmtlZEJsb2NrOjptYXJrQ291bnQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCShyZXZpc2lvbiA5MjAzMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NiwxNyArOTYsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBBTFdBWVNf
SU5MSU5FIFJlZ2lzdGVyOjpSZWdpc3Rlcihjb25zdCBKU1ZhbHVlJiB2KQogICAgIHsKLSNpZiBF
TkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIEFTU0VSVCghdi5pc1pvbWJpZSgpKTsKLSNlbmRp
ZgogICAgICAgICB1LnZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHYpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpvcGVyYXRvcj0oY29uc3QgSlNWYWx1ZSYg
dikKICAgICB7Ci0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgICAgICBBU1NFUlQoIXYuaXNa
b21iaWUoKSk7Ci0jZW5kaWYKICAgICAgICAgdS52YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2KTsK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcmdMaXN0LmgJKHJldmlzaW9uIDkyMDMyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTAgKzEwNyw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faXNSZWFk
T25seSk7CiAKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgICAgICBBU1NFUlQoIXYu
aXNab21iaWUoKSk7Ci0jZW5kaWYKLQogICAgICAgICAgICAgaWYgKG1faXNVc2luZ0lubGluZUJ1
ZmZlciAmJiBtX3NpemUgPCBpbmxpbmVDYXBhY2l0eSkgewogICAgICAgICAgICAgICAgIG1fdmVj
dG9yLnVuY2hlY2tlZEFwcGVuZCh2KTsKICAgICAgICAgICAgICAgICArK21fc2l6ZTsKQEAgLTE5
OSwxMCArMTk1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IG1fYXJncyhhcmdz
KQogICAgICAgICAgICAgLCBtX2FyZ0NvdW50KGFyZ0NvdW50KQogICAgICAgICB7Ci0jaWYgRU5B
QkxFKEpTQ19aT01CSUVTKQotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdD
b3VudDsgaSsrKQotICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzW2ldLmlzWm9tYmllKCkp
OwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIEFyZ0xpc3QoUmVnaXN0ZXIq
IGFyZ3MsIGludCBhcmdDb3VudCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcAkocmV2aXNpb24gOTIwMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsMTIgKzE2Nyw4IEBAIEpTT2Jq
ZWN0KiBKU0NlbGw6OnRvT2JqZWN0KEV4ZWNTdGF0ZSosIEoKIAogYm9vbCBpc1pvbWJpZShjb25z
dCBKU0NlbGwqIGNlbGwpCiB7Ci0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgIHJldHVybiBj
ZWxsICYmIGNlbGwtPmlzWm9tYmllKCk7Ci0jZWxzZQogICAgIFVOVVNFRF9QQVJBTShjZWxsKTsK
ICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogdm9pZCBzbG93VmFsaWRhdGVDZWxsKEpT
Q2VsbCogY2VsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShy
ZXZpc2lvbiA5MjAzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSlNTdHJpbmc7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwog
ICAgICAgICBmcmllbmQgY2xhc3MgSlNBUElWYWx1ZVdyYXBwZXI7Ci0gICAgICAgIGZyaWVuZCBj
bGFzcyBKU1pvbWJpZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIE5ld1NwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxv
Y2s7CkBAIC0xMjQsOSArMTIzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHBsYWNlbWVudE5ld0Rlc3RpbmF0aW9uKSB7IHJldHVy
biBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbjsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJik7Ci0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNab21iaWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlm
CiAKICAgICAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0IG9wZXJh
dGlvbiBpbmNsdWRlZC4KICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25z
dDsKQEAgLTM1NCwxMyArMzUwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBp
c0NlbGwoKSA/IGFzQ2VsbCgpLT50b1RoaXNPYmplY3QoZXhlYykgOiB0b1RoaXNPYmplY3RTbG93
Q2FzZShleGVjKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNab21iaWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlz
Q2VsbCgpICYmIGFzQ2VsbCgpLT5pc1pvbWJpZSgpOwotICAgIH0KLSNlbmRpZgotCiAgICAgaW5s
aW5lIHZvaWQgZGVzdHJ1Y3RvcihKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICBjZWxsLT5+
SlNDZWxsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHJldmlzaW9uIDkyMDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQAog
I2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgotI2luY2x1ZGUgIkpTWm9t
YmllLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRl
ICJOb2Rlcy5oIgpAQCAtMjMyLDEwICsyMzEsNiBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0
YShHbG9iYWxEYXRhVHlwCiAgICAgcmVnRXhwU3RydWN0dXJlLnNldCgqdGhpcywgUmVnRXhwOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7CiAgICAgc3RydWN0dXJlQ2hhaW5TdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBq
c051bGwoKSkpOwogCi0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgIHpvbWJpZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTWm9tYmllOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKSk7
Ci0jZW5kaWYKLQogICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxl
KGV4aXN0aW5nRW50cnlJZGVudGlmaWVyVGFibGUpOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
Mjk0LDEwICsyODksNiBAQCB2b2lkIEpTR2xvYmFsRGF0YTo6Y2xlYXJCdWlsdGluU3RydWN0dXJl
CiAgICAgZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUuY2xlYXIoKTsKICAgICByZWdFeHBTdHJ1
Y3R1cmUuY2xlYXIoKTsKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5jbGVhcigpOwotCi0j
aWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgIHpvbWJpZVN0cnVjdHVyZS5jbGVhcigpOwotI2Vu
ZGlmCiB9CiAKIEpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gOTIwMzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMTc3LDEwICsxNzcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gcmVnRXhwU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBz
dHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKIAotI2lmIEVOQUJMRShKU0NfWk9NQklFUykKLSAgICAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gem9tYmllU3RydWN0dXJlOwotI2VuZGlmCi0KICAgICAgICAg
c3RhdGljIHZvaWQgc3RvcmVWUHRycygpOwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2
b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cjsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9p
ZCoganNBcnJheVZQdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZS5oCShyZXZpc2lvbiA5MjAzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDEwICsxOTAsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgaW50MzJfdCB0b0ludDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB1
aW50MzJfdCB0b1VJbnQzMihFeGVjU3RhdGUqKSBjb25zdDsKIAotI2lmIEVOQUJMRShKU0NfWk9N
QklFUykKLSAgICAgICAgYm9vbCBpc1pvbWJpZSgpIGNvbnN0OwotI2VuZGlmCi0KICAgICAgICAg
Ly8gRmxvYXRpbmcgcG9pbnQgY29udmVyc2lvbnMgKHRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRo
b2QgZm9yIHdlYmNvcmU7CiAgICAgICAgIC8vIHNpZ25sZSBwcmVjaXNpb24gZmxvYXQgaXMgbm90
IGEgcmVwcmVzZW50YXRpb24gdXNlZCBpbiBKUyBvciBKU0MpLgogICAgICAgICBmbG9hdCB0b0Zs
b2F0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRv
TnVtYmVyKGV4ZWMpKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZUlubGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhbHVlSW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiA5MjAzMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyOCw5ICsyMjgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdS5hc0JpdHMudGFnID0gRW1wdHlWYWx1ZVRhZzsKICAgICAgICAgdS5hc0Jp
dHMucGF5bG9hZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4ocHRyKTsKLSNpZiBFTkFCTEUo
SlNDX1pPTUJJRVMpCi0gICAgICAgIEFTU0VSVCghaXNab21iaWUoKSk7Ci0jZW5kaWYKICAgICB9
CiAKICAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShjb25zdCBKU0NlbGwqIHB0cikKQEAgLTI0
MCw5ICsyMzcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
dS5hc0JpdHMudGFnID0gRW1wdHlWYWx1ZVRhZzsKICAgICAgICAgdS5hc0JpdHMucGF5bG9hZCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4oY29uc3RfY2FzdDxKU0NlbGwqPihwdHIpKTsKLSNp
ZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIEFTU0VSVCghaXNab21iaWUoKSk7Ci0jZW5k
aWYKICAgICB9CiAKICAgICBpbmxpbmUgSlNWYWx1ZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CkBA
IC0zODQsMTcgKzM3OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZShKU0NlbGwqIHB0cikKICAgICB7CiAgICAgICAgIHUucHRyID0gcHRyOwotI2lmIEVO
QUJMRShKU0NfWk9NQklFUykKLSAgICAgICAgQVNTRVJUKCFpc1pvbWJpZSgpKTsKLSNlbmRpZgog
ICAgIH0KIAogICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKQog
ICAgIHsKICAgICAgICAgdS5wdHIgPSBjb25zdF9jYXN0PEpTQ2VsbCo+KHB0cik7Ci0jaWYgRU5B
QkxFKEpTQ19aT01CSUVTKQotICAgICAgICBBU1NFUlQoIWlzWm9tYmllKCkpOwotI2VuZGlmCiAg
ICAgfQogCiAgICAgaW5saW5lIEpTVmFsdWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNwcAkocmV2aXNpb24gOTIw
MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNab21iaWUu
aCIKLSNpbmNsdWRlICJDbGFzc0luZm8uaCIKLSNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1
ZGUgIlNjb3BlQ2hhaW4uaCIKLQotI2lmIEVOQUJMRShKU0NfWk9NQklFUykKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1pvbWJpZTo6c19pbmZvID0geyAiWm9tYmllIiwg
MCwgMCwgMCB9OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSlNDX1pPTUJJRVMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmgJKHJldmlzaW9uIDkyMDMyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpZm5kZWYgSlNab21iaWVfaAotI2RlZmluZSBKU1pvbWJpZV9oCi0KLSNpbmNs
dWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKLQotI2lmIEVOQUJMRShKU0Nf
Wk9NQklFUykKLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1pvbWJpZSA6IHB1YmxpYyBKU0Nl
bGwgewotcHVibGljOgotICAgIEpTWm9tYmllKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgQ2xhc3NJbmZvKiBvbGRJbmZvLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBK
U0NlbGwoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQotICAgICAgICAsIG1fb2xkSW5mbyhvbGRJbmZv
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKLSAgICB9Ci0KLSAg
ICB+SlNab21iaWUoKQotICAgIHsKLSAgICAgICAgLyogWm9tYmllIGNlbGxzIHNob3VsZCBuZXZl
ciBiZWVuIHJldXNlZC4gKi8KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCBib29sIGlzWm9tYmllKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0g
ICAgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQVBJVmFsdWVXcmFwcGVy
KCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzUHJvcGVydHlOYW1lSXRlcmF0b3IoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRh
KENhbGxEYXRhJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIENhbGxUeXBlTm9uZTsg
fQotICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERh
dGEmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0VUludDMyKHVpbnQzMl90JikgY29uc3QgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0
aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0IHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiBqc051bGwoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBnZXRQcmlt
aXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiwgSlNWYWx1ZSYpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhl
Y1N0YXRlKikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3QgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIDAuMDsgfQotICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhF
eGVjU3RhdGUqKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gIiI7IH0KLSAg
ICB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVu
KFNsb3RWaXNpdG9yJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkLCBKU1ZhbHVlKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0g
ICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09i
amVjdChFeGVjU3RhdGUqKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsg
fQotICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1N0cmljdFRoaXNPYmplY3QoRXhlY1N0YXRlKikgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEpTVmFsdWUoKTsgfQotICAgIHZpcnR1
YWwgSlNWYWx1ZSBnZXRKU051bWJlcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBq
c051bGwoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlw
ZSwgVHlwZUluZm8oTGVhZlR5cGUsIDApLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwot
ICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwotCi1wcml2YXRlOgot
ICAgIGNvbnN0IENsYXNzSW5mbyogbV9vbGRJbmZvOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKEpTQ19aT01CSUVTKQotCi0jZW5kaWYgLy8gSlNab21iaWVfaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgJKHJldmlzaW9uIDkyMDMyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDEwICs4Niw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHRoaXMtPm1f
Y2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpOwogICAgICAgICBIZWFwOjp3
cml0ZUJhcnJpZXIob3duZXIsIHRoaXMtPm1fY2VsbCk7Ci0jaWYgRU5BQkxFKEpTQ19aT01CSUVT
KQotICAgICAgICBBU1NFUlQoIWlzWm9tYmllKG93bmVyKSk7Ci0gICAgICAgIEFTU0VSVCghaXNa
b21iaWUobV9jZWxsKSk7Ci0jZW5kaWYKICAgICB9CiAgICAgCiAgICAgVCogZ2V0KCkgY29uc3QK
QEAgLTEwMiw5ICs5OCw2IEBAIHB1YmxpYzoKICAgICBUKiBvcGVyYXRvciooKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fY2VsbCk7Ci0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAg
ICAgICBBU1NFUlQoIWlzWm9tYmllKG1fY2VsbCkpOwotI2VuZGlmCiAgICAgICAgIHZhbGlkYXRl
Q2VsbDxUPihzdGF0aWNfY2FzdDxUKj4obV9jZWxsKSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUKj4obV9jZWxsKTsKICAgICB9CkBAIC0xMjgsOSArMTIxLDYgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihUKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHRo
aXMtPm1fY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpOwotI2lmIEVOQUJM
RShKU0NfWk9NQklFUykKLSAgICAgICAgQVNTRVJUKCFtX2NlbGwgfHwgdmFsdWUgPT0gcmVpbnRl
cnByZXRfY2FzdDxUKj4oMSkgfHwgIWlzWm9tYmllKG1fY2VsbCkpOwotI2VuZGlmCiAgICAgfQog
CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCkBAIC0xNDUsMTkgKzEzNSwxMiBAQCB0ZW1wbGF0
ZSA8PiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlPFVua25vCiBwdWJsaWM6CiAgICAgdm9pZCBzZXQo
SlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7
Ci0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgICAgICBBU1NFUlQoIWlzWm9tYmllKG93bmVy
KSk7Ci0gICAgICAgIEFTU0VSVCghdmFsdWUuaXNab21iaWUoKSk7Ci0jZW5kaWYKICAgICAgICAg
bV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICAgICAgIEhlYXA6OndyaXRlQmFy
cmllcihvd25lciwgdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFy
cmllcihKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAg
ICAgIEFTU0VSVCghdmFsdWUuaXNab21iaWUoKSk7Ci0jZW5kaWYKICAgICAgICAgbV92YWx1ZSA9
IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA5MjAzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTE2Myw4ICsxMTYzLDYgQEAKIC8q
IFNldCB1cCBhIGRlZmluZSBmb3IgYSBjb21tb24gZXJyb3IgdGhhdCBpcyBpbnRlbmRlZCB0byBj
YXVzZSBhIGJ1aWxkIGVycm9yIC0tIHRodXMgdGhlIHNwYWNlIGFmdGVyIEVycm9yLiAqLwogI2Rl
ZmluZSBXVEZfUExBVEZPUk1fQ0ZORVRXT1JLIEVycm9yIFVTRV9tYWNyb19zaG91bGRfYmVfdXNl
ZF93aXRoX0NGTkVUV09SSwogCi0jZGVmaW5lIEVOQUJMRV9KU0NfWk9NQklFUyAwCi0KIC8qIEZJ
WE1FOiBFdmVudHVhbGx5IHdlIHNob3VsZCBlbmFibGUgdGhpcyBmb3IgYWxsIHBsYXRmb3JtcyBh
bmQgZ2V0IHJpZCBvZiB0aGUgZGVmaW5lLiAqLwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZP
Uk0oV0lOKSB8fCBQTEFURk9STShRVCkKICNkZWZpbmUgV1RGX1VTRV9QTEFURk9STV9TVFJBVEVH
SUVTIDEK
</data>
<flag name="review"
          id="97669"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="97670"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102419</attachid>
            <date>2011-07-29 18:40:44 -0700</date>
            <delta_ts>2011-07-29 19:50:00 -0700</delta_ts>
            <desc>the patch (fix various platforms)</desc>
            <filename>removezombies_patch_2.diff</filename>
            <type>text/plain</type>
            <size>28613</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIwMzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAK
KzIwMTEtMDctMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgR0Mgem9tYmllIHN1cHBvcnQgbm8gbG9uZ2VyIHdvcmtzLCBhbmQgaXMgbGlrZWx5IG5vIGxv
bmdlciBuZWVkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyByZW1vdmVzIHpvbWJpZXMsIGJlY2F1c2UgdGhleSBubyBsb25nZXIg
d29yaywgYXJlIG5vdCB0ZXN0ZWQsIGFyZQorICAgICAgICBwcm9iYWJseSBub3QgbmVlZGVkLCBh
bmQgYXJlIGdldHRpbmcgaW4gdGhlIHdheSBvZiBHQyBvcHRpbWl6YXRpb24KKyAgICAgICAgd29y
ay4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogaGVhcC9IYW5kbGUuaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlQ29udmVydGVy
OjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvciop
OgorICAgICAgICAqIGhlYXAvSGFuZGxlSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhhbmRsZUhl
YXA6OmlzVmFsaWRXZWFrTm9kZSk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAg
KEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAg
ICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
c3dlZXApOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OmNsZWFyTWFya3MpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyLmg6
CisgICAgICAgIChKU0M6OlJlZ2lzdGVyOjpSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OlJlZ2lz
dGVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAo
SlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6QXJnTGlz
dDo6QXJnTGlzdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlND
Ojppc1pvbWJpZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9i
YWxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjbGVhckJ1aWx0aW5TdHJ1Y3R1
cmVzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaDoK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6SlNWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU1pv
bWJpZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9KU1pvbWJpZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6CisgICAgICAgIChKU0M6OldyaXRl
QmFycmllckJhc2U6OnNldEVhcmx5VmFsdWUpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJC
YXNlOjpvcGVyYXRvciopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpzZXRXaXRo
b3V0V3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0wNy0y
OSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBKSVQgZG9l
cyBub3QgaGF2ZSBhbnkgd2F5IG9mIHVuZG9pbmcgZG91YmxlIHNwZWN1bGF0aW9uLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTIwMzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3
ICsxMzMsNiBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNWYWx1
ZS5jcHAKICAgICBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuY3BwCi0gICAgcnVudGltZS9KU1pvbWJpZS5jcHAKICAgICBydW50aW1lL0xp
dGVyYWxQYXJzZXIuY3BwCiAgICAgcnVudGltZS9Mb29rdXAuY3BwCiAgICAgcnVudGltZS9NYXRo
T2JqZWN0LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
bwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJv
CShyZXZpc2lvbiA5MjAzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNiBAQCBTT1VSQ0VTICs9IFwKICAg
ICBydW50aW1lL0pTVmFsdWUuY3BwIFwKICAgICBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3Bw
IFwKICAgICBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAgXAotICAgIHJ1bnRpbWUvSlNab21i
aWUuY3BwIFwKICAgICBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIFwKICAgICBydW50aW1lL0xv
b2t1cC5jcHAgXAogICAgIHJ1bnRpbWUvTWF0aE9iamVjdC5jcHAgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJl
dmlzaW9uIDkyMDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkK
QEAgLTkyMiwxNCArOTIyLDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxKU1pvbWJpZS5jcHAiCi0JCQkJPgotCQkJPC9GaWxl
PgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSlNab21iaWUuaCIK
LQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVu
dGltZVxMaXRlcmFsUGFyc2VyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTIwMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNDI3LDggKzQyNyw2IEBACiAJCUE3Rjk5MzYwMEZENzMyNTEwMEEwQjJEMCAvKiBK
U09OT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Rjk5MzVFMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCAqLzsgfTsKIAkJ
QTdGQjYwQTQxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0ZCNjBBMzEwM0Y3REMy
MDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLzsgfTsKIAkJQTdGQjYxMDAxMDQw
QzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFBy
b3BlcnR5RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCUJDMDFENEYxMTFBOEYxRkYwMEE1NEIyQSAvKiBKU1pvbWJpZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAxRDRFRjExQThG
MUZGMDBBNTRCMkEgLyogSlNab21iaWUuY3BwICovOyB9OwotCQlCQzAxRDRGMjExQThGMUZGMDBB
NTRCMkEgLyogSlNab21iaWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMDFENEYwMTFBOEYxRkYwMEE1NEIyQSAvKiBKU1pvbWJpZS5oICovOyB9Owog
CQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5MDUwRTE4MzlEQjAw
MEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJQkMwMkU5MEYwRTE4MzlEQjAw
MEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTkwNzBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5
cGUuaCAqLzsgfTsKIAkJQkMwMkU5MTEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMDJFOTA5MEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggKi87
IH07CkBAIC0xMTU1LDggKzExNTMsNiBAQAogCQlBN0ZCNjBBMzEwM0Y3REMyMDAxN0EyODYgLyog
UHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByb3BlcnR5RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4RTg5NDMxMENEMDYwMjQwMDM2NzE3OSAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThFODk0MzMwQ0QwNjAzRjAwMzY3
MTc5IC8qIEpTR2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTR2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDMDFENEVG
MTFBOEYxRkYwMEE1NEIyQSAvKiBKU1pvbWJpZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1pvbWJpZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUJDMDFENEYwMTFBOEYxRkYwMEE1NEIyQSAvKiBKU1pvbWJpZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1pvbWJpZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzAyMUJGMTEzNjkwMEMzMDBGQzU0NjcgLyogQ29tcGlsZXJWZXJzaW9uLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvbXBpbGVyVmVyc2lvbi54Y2NvbmZpZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8q
IFRlc3RBUEkueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVGVzdEFQ
SS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMkU5MDQwRTE4MzlE
QjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXJyb3JDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTM4LDggKzE5MzQsNiBAQAogCQkJCTE0RjI1MjU2MEQwOEREOEQwMDRFQ0ZG
RiAvKiBKU1ZhcmlhYmxlT2JqZWN0LmggKi8sCiAJCQkJNjVDN0ExNzEwQThFQUFDQjAwRkEzN0VB
IC8qIEpTV3JhcHBlck9iamVjdC5jcHAgKi8sCiAJCQkJNjVDN0ExNzIwQThFQUFDQjAwRkEzN0VB
IC8qIEpTV3JhcHBlck9iamVjdC5oICovLAotCQkJCUJDMDFENEVGMTFBOEYxRkYwMEE1NEIyQSAv
KiBKU1pvbWJpZS5jcHAgKi8sCi0JCQkJQkMwMUQ0RjAxMUE4RjFGRjAwQTU0QjJBIC8qIEpTWm9t
YmllLmggKi8sCiAJCQkJQTdFMkVBNkEwRkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIu
Y3BwICovLAogCQkJCUE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmgg
Ki8sCiAJCQkJRjY5MkE4NjgwMjU1NTk3RDAxRkY2MEY3IC8qIExvb2t1cC5jcHAgKi8sCkBAIC0y
MzgxLDcgKzIzNzUsNiBAQAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBKU1dlYWtP
YmplY3RNYXBSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJCOTMxMTY3MTE0
NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDJFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1dyYXBwZXJPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUJDMDFENEYyMTFBOEYxRkYwMEE1NEIyQSAvKiBKU1pvbWJpZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNGRDhDOTMwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MkEwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yOTQxLDcgKzI5MzQsNiBAQAogCQkJCTE0N0YzOUQ3MTA3RUMz
NzYwMDQyN0E0OCAvKiBKU1ZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
NDgyQjk0MTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0MjgwODcwMTA3RUMxMzQwMDEzRTdCMiAvKiBKU1dyYXBwZXJP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMwMUQ0RjExMUE4RjFGRjAwQTU0QjJBIC8q
IEpTWm9tYmllLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0
OCAvKiBKdW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4RjIxQjAxMDdFQzU0MTAw
NDJFQzJDIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RTJFQTZDMEZCNDYwQ0Yw
MDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgJKHJldmlzaW9uIDkyMDMyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDMxICs4MCwxOSBA
QCBwcml2YXRlOgogdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+IHN0cnVjdCBI
YW5kbGVDb252ZXJ0ZXIgewogICAgIFQqIG9wZXJhdG9yLT4oKQogICAgIHsKLSNpZiBFTkFCTEUo
SlNDX1pPTUJJRVMpCi0gICAgICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRo
aXMpLT5nZXQoKSB8fCAhc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKS0+aXNa
b21iaWUoKSk7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEJhc2UqPih0aGlz
KS0+Z2V0KCk7CiAgICAgfQogICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdAogICAgIHsK
LSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Y29u
c3QgQmFzZSo+KHRoaXMpLT5nZXQoKSB8fCAhc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMp
LT5nZXQoKS0+aXNab21iaWUoKSk7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7CiAgICAgfQogCiAgICAgVCogb3BlcmF0b3IqKCkK
ICAgICB7Ci0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgICAgICBBU1NFUlQoIXN0YXRpY19j
YXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCkgfHwgIXN0YXRpY19jYXN0PGNvbnN0IEJhc2Uq
Pih0aGlzKS0+Z2V0KCktPmlzWm9tYmllKCkpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxCYXNlKj4odGhpcyktPmdldCgpOwogICAgIH0KICAgICBjb25zdCBUKiBvcGVyYXRv
ciooKSBjb25zdAogICAgIHsKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIEFTU0VS
VCghc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKSB8fCAhc3RhdGljX2Nhc3Q8
Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKS0+aXNab21iaWUoKSk7Ci0jZW5kaWYKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7CiAgICAgfQogfTsK
QEAgLTExOSw5ICsxMDcsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZT4gc3RydWN0IEhhbmRs
ZUNvCiBwcml2YXRlOgogICAgIEpTVmFsdWUganNWYWx1ZSgpIGNvbnN0CiAgICAgewotI2lmIEVO
QUJMRShKU0NfWk9NQklFUykKLSAgICAgICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxjb25zdCBCYXNl
Kj4odGhpcyktPmdldCgpIHx8ICFzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgp
LmlzWm9tYmllKCkpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBC
YXNlKj4odGhpcyktPmdldCgpOwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IYW5kbGVIZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IYW5kbGVIZWFwLmNwcAkocmV2aXNpb24gOTIwMzIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDExICsx
NjMsNiBAQCBib29sIEhhbmRsZUhlYXA6OmlzVmFsaWRXZWFrTm9kZShOb2RlKiBuCiAgICAgaWYg
KCFjZWxsIHx8ICFjZWxsLT5zdHJ1Y3R1cmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0j
aWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgIGlmIChjZWxsLT5pc1pvbWJpZSgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gOTIwMzIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3
LDEwICsyNzcsOCBAQCB2b2lkIEhlYXA6OmRlc3Ryb3koKQogICAgIG1faGFuZGxlSGVhcC5maW5h
bGl6ZVdlYWtIYW5kbGVzKCk7CiAgICAgbV9nbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MuZmluYWxp
emVTbWFsbFN0cmluZ3MoKTsKIAotI2lmICFFTkFCTEUoSlNDX1pPTUJJRVMpCiAgICAgc2hyaW5r
KCk7CiAgICAgQVNTRVJUKCFzaXplKCkpOwotI2VuZGlmCiAKICAgICBtX2dsb2JhbERhdGEgPSAw
OwogfQpAQCAtNTYxLDEwICs1NTksNiBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUg
c3dlZXBUb2dnCiAgICAgCiAgICAgcmVzZXRBbGxvY2F0b3IoKTsKIAotI2lmIEVOQUJMRShKU0Nf
Wk9NQklFUykKLSAgICBzd2VlcFRvZ2dsZSA9IERvU3dlZXA7Ci0jZW5kaWYKLQogICAgIGlmIChz
d2VlcFRvZ2dsZSA9PSBEb1N3ZWVwKSB7CiAgICAgICAgIHN3ZWVwKCk7CiAgICAgICAgIHNocmlu
aygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAko
cmV2aXNpb24gOTIwMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNab21iaWUuaCIKICNpbmNs
dWRlICJTY29wZUNoYWluLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjYsMTcgKzY1LDggQEAg
dm9pZCBNYXJrZWRCbG9jazo6c3dlZXAoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgSlNDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPigmYXRvbXMoKVtpXSk7
Ci0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgICAgICBpZiAoY2VsbC0+c3RydWN0dXJlKCkg
JiYgY2VsbC0+c3RydWN0dXJlKCkgIT0gZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUgJiYgIWNl
bGwtPmlzWm9tYmllKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IGNl
bGwtPmNsYXNzSW5mbygpOwotICAgICAgICAgICAgY2VsbC0+fkpTQ2VsbCgpOwotICAgICAgICAg
ICAgbmV3IChjZWxsKSBKU1pvbWJpZSgqbV9oZWFwLT5nbG9iYWxEYXRhKCksIGluZm8sIG1faGVh
cC0+Z2xvYmFsRGF0YSgpLT56b21iaWVTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgICAgICAgICAgbV9t
YXJrcy5zZXQoaSk7Ci0gICAgICAgIH0KLSNlbHNlCiAgICAgICAgIGNlbGwtPn5KU0NlbGwoKTsK
ICAgICAgICAgbmV3IChjZWxsKSBKU0NlbGwoKm1faGVhcC0+Z2xvYmFsRGF0YSgpLCBkdW1teU1h
cmthYmxlQ2VsbFN0cnVjdHVyZSk7Ci0jZW5kaWYKICAgICB9CiB9CiAKQEAgLTE0NCwxOSArMTM0
LDQgQEAgdm9pZCBNYXJrZWRCbG9jazo6Y2Fub25pY2FsaXplQmxvY2soRnJlZQogICAgIH0KIH0K
IAotI2lmIEVOQUJMRShKU0NfWk9NQklFUykKLXZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3Mo
KQotewotICAgIC8qIEtlZXAgb3VyIHByZWNpb3VzIHpvbWJpZXMhICovCi0gICAgZm9yIChzaXpl
X3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7
Ci0gICAgICAgIGlmIChtX21hcmtzLmdldChpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oJmF0b21zKClb
aV0pOwotICAgICAgICBpZiAoIWNlbGwtPmlzWm9tYmllKCkpCi0gICAgICAgICAgICBtX21hcmtz
LmNsZWFyKGkpOwotICAgIH0KLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gOTIwMzIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODYsMTIgKzE4NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IG1fbWFya3MuaXNFbXB0eSgpOwogICAgIH0KIAotI2lmICFFTkFCTEUoSlNDX1pPTUJJRVMpCiAg
ICAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQogICAgIHsKICAgICAgICAg
bV9tYXJrcy5jbGVhckFsbCgpOwogICAgIH0KLSNlbmRpZgogICAgIAogICAgIGlubGluZSBzaXpl
X3QgTWFya2VkQmxvY2s6Om1hcmtDb3VudCgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHJldmlzaW9uIDkyMDMyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk2LDE3ICs5NiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIEFMV0FZU19JTkxJTkUg
UmVnaXN0ZXI6OlJlZ2lzdGVyKGNvbnN0IEpTVmFsdWUmIHYpCiAgICAgewotI2lmIEVOQUJMRShK
U0NfWk9NQklFUykKLSAgICAgICAgQVNTRVJUKCF2LmlzWm9tYmllKCkpOwotI2VuZGlmCiAgICAg
ICAgIHUudmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lO
TElORSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShjb25zdCBKU1ZhbHVlJiB2KQogICAg
IHsKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIEFTU0VSVCghdi5pc1pvbWJpZSgp
KTsKLSNlbmRpZgogICAgICAgICB1LnZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHYpOwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ0xpc3QuaAkocmV2aXNpb24gOTIwMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNywxMCArMTA3LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9pc1JlYWRPbmx5KTsK
IAotI2lmIEVOQUJMRShKU0NfWk9NQklFUykKLSAgICAgICAgICAgIEFTU0VSVCghdi5pc1pvbWJp
ZSgpKTsKLSNlbmRpZgotCiAgICAgICAgICAgICBpZiAobV9pc1VzaW5nSW5saW5lQnVmZmVyICYm
IG1fc2l6ZSA8IGlubGluZUNhcGFjaXR5KSB7CiAgICAgICAgICAgICAgICAgbV92ZWN0b3IudW5j
aGVja2VkQXBwZW5kKHYpOwogICAgICAgICAgICAgICAgICsrbV9zaXplOwpAQCAtMTk5LDEwICsx
OTUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIDogbV9hcmdzKGFyZ3MpCiAgICAg
ICAgICAgICAsIG1fYXJnQ291bnQoYXJnQ291bnQpCiAgICAgICAgIHsKLSNpZiBFTkFCTEUoSlND
X1pPTUJJRVMpCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ0NvdW50OyBp
KyspCi0gICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3NbaV0uaXNab21iaWUoKSk7Ci0jZW5k
aWYKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgQXJnTGlzdChSZWdpc3RlciogYXJncywg
aW50IGFyZ0NvdW50KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwCShyZXZpc2lvbiA5MjAzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NywxMiArMTY3LDggQEAgSlNPYmplY3QqIEpT
Q2VsbDo6dG9PYmplY3QoRXhlY1N0YXRlKiwgSgogCiBib29sIGlzWm9tYmllKGNvbnN0IEpTQ2Vs
bCogY2VsbCkKIHsKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgcmV0dXJuIGNlbGwgJiYg
Y2VsbC0+aXNab21iaWUoKTsKLSNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNlbGwpOwogICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiB2b2lkIHNsb3dWYWxpZGF0ZUNlbGwoSlNDZWxsKiBj
ZWxsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9u
IDkyMDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBKU1N0cmluZzsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKU0FQSVZhbHVlV3JhcHBlcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpT
Wm9tYmllOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgICAgICBmcmll
bmQgY2xhc3MgTmV3U3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKQEAg
LTEyNCw5ICsxMjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgdm9pZCogcGxhY2VtZW50TmV3RGVzdGluYXRpb24pIHsgcmV0dXJuIHBsYWNl
bWVudE5ld0Rlc3RpbmF0aW9uOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImKTsKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBpc1pvbWJpZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKIAogICAg
ICAgICAvLyBPYmplY3Qgb3BlcmF0aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGlu
Y2x1ZGVkLgogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OwpAQCAt
MzU0LDEzICszNTAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGlzQ2VsbCgp
ID8gYXNDZWxsKCktPnRvVGhpc09iamVjdChleGVjKSA6IHRvVGhpc09iamVjdFNsb3dDYXNlKGV4
ZWMpOwogICAgIH0KIAotI2lmIEVOQUJMRShKU0NfWk9NQklFUykKLSAgICBpbmxpbmUgYm9vbCBK
U1ZhbHVlOjppc1pvbWJpZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzWm9tYmllKCk7Ci0gICAgfQotI2VuZGlmCi0KICAgICBpbmxpbmUgdm9p
ZCBkZXN0cnVjdG9yKEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIGNlbGwtPn5KU0NlbGwo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAkocmV2aXNpb24gOTIwMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVk
ZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNab21iaWUuaCIK
ICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk5vZGVz
LmgiCkBAIC0yMzIsMTAgKzIzMSw2IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2Jh
bERhdGFUeXAKICAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBSZWdFeHA6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5z
ZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgp
KSk7CiAKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgem9tYmllU3RydWN0dXJlLnNldCgq
dGhpcywgSlNab21iaWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpKTsKLSNlbmRp
ZgotCiAgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZXhpc3Rp
bmdFbnRyeUlkZW50aWZpZXJUYWJsZSk7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0yOTQsMTAg
KzI4OSw2IEBAIHZvaWQgSlNHbG9iYWxEYXRhOjpjbGVhckJ1aWx0aW5TdHJ1Y3R1cmUKICAgICBk
dW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZS5jbGVhcigpOwogICAgIHJlZ0V4cFN0cnVjdHVyZS5j
bGVhcigpOwogICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmNsZWFyKCk7Ci0KLSNpZiBFTkFC
TEUoSlNDX1pPTUJJRVMpCi0gICAgem9tYmllU3RydWN0dXJlLmNsZWFyKCk7Ci0jZW5kaWYKIH0K
IAogSlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiA5MjAzMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzcsMTAgKzE3Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJvbmc8U3RydWN0
dXJlPiByZWdFeHBTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZUNoYWluU3RydWN0dXJlOwogCi0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotICAgICAgICBTdHJv
bmc8U3RydWN0dXJlPiB6b21iaWVTdHJ1Y3R1cmU7Ci0jZW5kaWYKLQogICAgICAgICBzdGF0aWMg
dm9pZCBzdG9yZVZQdHJzKCk7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQqIGpz
RmluYWxPYmplY3RWUHRyOwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0Fy
cmF5VlB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJl
dmlzaW9uIDkyMDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsMTAgKzE5MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBpbnQzMl90IHRvSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHVpbnQzMl90
IHRvVUludDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwogCi0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQot
ICAgICAgICBib29sIGlzWm9tYmllKCkgY29uc3Q7Ci0jZW5kaWYKLQogICAgICAgICAvLyBGbG9h
dGluZyBwb2ludCBjb252ZXJzaW9ucyAodGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCBmb3Ig
d2ViY29yZTsKICAgICAgICAgLy8gc2lnbmxlIHByZWNpc2lvbiBmbG9hdCBpcyBub3QgYSByZXBy
ZXNlbnRhdGlvbiB1c2VkIGluIEpTIG9yIEpTQykuCiAgICAgICAgIGZsb2F0IHRvRmxvYXQoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odG9OdW1iZXIo
ZXhlYykpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlSW5s
aW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWVJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDkyMDMyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjI4LDkgKzIyOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB1LmFzQml0cy50YWcgPSBFbXB0eVZhbHVlVGFnOwogICAgICAgICB1LmFzQml0cy5wYXls
b2FkID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihwdHIpOwotI2lmIEVOQUJMRShKU0NfWk9N
QklFUykKLSAgICAgICAgQVNTRVJUKCFpc1pvbWJpZSgpKTsKLSNlbmRpZgogICAgIH0KIAogICAg
IGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKQpAQCAtMjQwLDkgKzIz
Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1LmFzQml0
cy50YWcgPSBFbXB0eVZhbHVlVGFnOwogICAgICAgICB1LmFzQml0cy5wYXlsb2FkID0gcmVpbnRl
cnByZXRfY2FzdDxpbnQzMl90Pihjb25zdF9jYXN0PEpTQ2VsbCo+KHB0cikpOwotI2lmIEVOQUJM
RShKU0NfWk9NQklFUykKLSAgICAgICAgQVNTRVJUKCFpc1pvbWJpZSgpKTsKLSNlbmRpZgogICAg
IH0KIAogICAgIGlubGluZSBKU1ZhbHVlOjpvcGVyYXRvciBib29sKCkgY29uc3QKQEAgLTM4NCwx
NyArMzc4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVl
KEpTQ2VsbCogcHRyKQogICAgIHsKICAgICAgICAgdS5wdHIgPSBwdHI7Ci0jaWYgRU5BQkxFKEpT
Q19aT01CSUVTKQotICAgICAgICBBU1NFUlQoIWlzWm9tYmllKCkpOwotI2VuZGlmCiAgICAgfQog
CiAgICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpCiAgICAgewog
ICAgICAgICB1LnB0ciA9IGNvbnN0X2Nhc3Q8SlNDZWxsKj4ocHRyKTsKLSNpZiBFTkFCTEUoSlND
X1pPTUJJRVMpCi0gICAgICAgIEFTU0VSVCghaXNab21iaWUoKSk7Ci0jZW5kaWYKICAgICB9CiAK
ICAgICBpbmxpbmUgSlNWYWx1ZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuY3BwCShyZXZpc2lvbiA5MjAzMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1pvbWJpZS5oIgotI2lu
Y2x1ZGUgIkNsYXNzSW5mby5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiU2Nv
cGVDaGFpbi5oIgotCi0jaWYgRU5BQkxFKEpTQ19aT01CSUVTKQotCi1uYW1lc3BhY2UgSlNDIHsK
LQotY29uc3QgQ2xhc3NJbmZvIEpTWm9tYmllOjpzX2luZm8gPSB7ICJab21iaWUiLCAwLCAwLCAw
IH07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShKU0NfWk9NQklFUykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAkocmV2aXNpb24gOTIwMzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBKU1pvbWJpZV9oCi0jZGVmaW5lIEpTWm9tYmllX2gKLQotI2luY2x1ZGUgIkpT
Q2VsbC5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotCi0jaWYgRU5BQkxFKEpTQ19aT01CSUVT
KQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTWm9tYmllIDogcHVibGljIEpTQ2VsbCB7Ci1w
dWJsaWM6Ci0gICAgSlNab21iaWUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBDbGFz
c0luZm8qIG9sZEluZm8sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEpTQ2VsbChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCi0gICAgICAgICwgbV9vbGRJbmZvKG9sZEluZm8pCi0gICAg
ewotICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIH0KLQotICAgIH5KU1pv
bWJpZSgpCi0gICAgewotICAgICAgICAvKiBab21iaWUgY2VsbHMgc2hvdWxkIG5ldmVyIGJlZW4g
cmV1c2VkLiAqLwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNab21iaWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25z
dCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNQcm9wZXJ0eU5hbWVJdGVyYXRvcigpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERh
dGEmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gQ2FsbFR5cGVOb25lOyB9Ci0gICAg
dmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhl
Y1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIGpzTnVsbCgpOyB9Ci0gICAgdmlydHVhbCBib29sIGdldFByaW1pdGl2ZU51
bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmLCBKU1ZhbHVlJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUq
KSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gMC4wOyB9Ci0gICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0
ZSopIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAiIjsgfQotICAgIHZpcnR1
YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHB1dChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQsIEpTVmFsdWUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBk
ZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9Ci0gICAg
dmlydHVhbCBKU1ZhbHVlIHRvU3RyaWN0VGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSlNWYWx1ZSgpOyB9Ci0gICAgdmlydHVhbCBKU1Zh
bHVlIGdldEpTTnVtYmVyKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGpzTnVsbCgp
OyB9Ci0gICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBl
SW5mbyhMZWFmVHlwZSwgMCksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87Ci0KLXByaXZhdGU6Ci0gICAgY29u
c3QgQ2xhc3NJbmZvKiBtX29sZEluZm87Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSlND
X1pPTUJJRVMpCi0KLSNlbmRpZiAvLyBKU1pvbWJpZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAkocmV2aXNpb24gOTIwMzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtODYsMTAgKzg2LDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgdGhpcy0+bV9jZWxsID0g
cmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSk7CiAgICAgICAgIEhlYXA6OndyaXRlQmFy
cmllcihvd25lciwgdGhpcy0+bV9jZWxsKTsKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAg
ICAgIEFTU0VSVCghaXNab21iaWUob3duZXIpKTsKLSAgICAgICAgQVNTRVJUKCFpc1pvbWJpZSht
X2NlbGwpKTsKLSNlbmRpZgogICAgIH0KICAgICAKICAgICBUKiBnZXQoKSBjb25zdApAQCAtMTAy
LDkgKzk4LDYgQEAgcHVibGljOgogICAgIFQqIG9wZXJhdG9yKigpIGNvbnN0CiAgICAgewogICAg
ICAgICBBU1NFUlQobV9jZWxsKTsKLSNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIEFT
U0VSVCghaXNab21iaWUobV9jZWxsKSk7Ci0jZW5kaWYKICAgICAgICAgdmFsaWRhdGVDZWxsPFQ+
KHN0YXRpY19jYXN0PFQqPihtX2NlbGwpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQq
PihtX2NlbGwpOwogICAgIH0KQEAgLTEyOCw5ICsxMjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKFQqIHZhbHVlKQogICAgIHsKICAgICAgICAgdGhpcy0+bV9j
ZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSk7Ci0jaWYgRU5BQkxFKEpTQ19a
T01CSUVTKQotICAgICAgICBBU1NFUlQoIW1fY2VsbCB8fCB2YWx1ZSA9PSByZWludGVycHJldF9j
YXN0PFQqPigxKSB8fCAhaXNab21iaWUobV9jZWxsKSk7Ci0jZW5kaWYKICAgICB9CiAKICNpZiBF
TkFCTEUoR0NfVkFMSURBVElPTikKQEAgLTE0NSwxOSArMTM1LDEyIEBAIHRlbXBsYXRlIDw+IGNs
YXNzIFdyaXRlQmFycmllckJhc2U8VW5rbm8KIHB1YmxpYzoKICAgICB2b2lkIHNldChKU0dsb2Jh
bERhdGEmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSNpZiBF
TkFCTEUoSlNDX1pPTUJJRVMpCi0gICAgICAgIEFTU0VSVCghaXNab21iaWUob3duZXIpKTsKLSAg
ICAgICAgQVNTRVJUKCF2YWx1ZS5pc1pvbWJpZSgpKTsKLSNlbmRpZgogICAgICAgICBtX3ZhbHVl
ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKICAgICAgICAgSGVhcDo6d3JpdGVCYXJyaWVyKG93
bmVyLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpT
VmFsdWUgdmFsdWUpCiAgICAgewotI2lmIEVOQUJMRShKU0NfWk9NQklFUykKLSAgICAgICAgQVNT
RVJUKCF2YWx1ZS5pc1pvbWJpZSgpKTsKLSNlbmRpZgogICAgICAgICBtX3ZhbHVlID0gSlNWYWx1
ZTo6ZW5jb2RlKHZhbHVlKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgJKHJldmlzaW9uIDkyMDMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYzLDggKzExNjMsNiBAQAogLyogU2V0IHVw
IGEgZGVmaW5lIGZvciBhIGNvbW1vbiBlcnJvciB0aGF0IGlzIGludGVuZGVkIHRvIGNhdXNlIGEg
YnVpbGQgZXJyb3IgLS0gdGh1cyB0aGUgc3BhY2UgYWZ0ZXIgRXJyb3IuICovCiAjZGVmaW5lIFdU
Rl9QTEFURk9STV9DRk5FVFdPUksgRXJyb3IgVVNFX21hY3JvX3Nob3VsZF9iZV91c2VkX3dpdGhf
Q0ZORVRXT1JLCiAKLSNkZWZpbmUgRU5BQkxFX0pTQ19aT01CSUVTIDAKLQogLyogRklYTUU6IEV2
ZW50dWFsbHkgd2Ugc2hvdWxkIGVuYWJsZSB0aGlzIGZvciBhbGwgcGxhdGZvcm1zIGFuZCBnZXQg
cmlkIG9mIHRoZSBkZWZpbmUuICovCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4p
IHx8IFBMQVRGT1JNKFFUKQogI2RlZmluZSBXVEZfVVNFX1BMQVRGT1JNX1NUUkFURUdJRVMgMQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>