<?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>162343</bug_id>
          
          <creation_ts>2016-09-21 09:40:44 -0700</creation_ts>
          <short_desc>Add a Fence opcode to B3</short_desc>
          <delta_ts>2016-09-21 12:12:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162350</blocked>
    
    <blocked>162316</blocked>
    
    <blocked>162342</blocked>
    
    <blocked>162349</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfbastien</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1232091</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-21 09:40:44 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232130</commentid>
    <comment_count>1</comment_count>
      <attachid>289469</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-21 11:30:55 -0700</bug_when>
    <thetext>Created attachment 289469
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232131</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-21 11:32:42 -0700</bug_when>
    <thetext>Attachment 289469 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3FenceValue.h:80:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3FenceValue.h:82:  The parameter name &quot;origin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232136</commentid>
    <comment_count>3</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-21 11:45:21 -0700</bug_when>
    <thetext>FYI an idempotent locked access to top-of-stack can kinda serve as a less-expensive fence on x86. Something like lock or4i [RSP-8] 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232138</commentid>
    <comment_count>4</comment_count>
      <attachid>289469</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-09-21 11:47:55 -0700</bug_when>
    <thetext>Comment on attachment 289469
the patch

r=me

I still hate threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232148</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-21 12:09:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; FYI an idempotent locked access to top-of-stack can kinda serve as a
&gt; less-expensive fence on x86. Something like lock or4i [RSP-8] 0

Huh.  Does this correctly guard the store-load case?  Should we change WTF&apos;s storeLoadFence to do this as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232149</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-21 12:12:01 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/206226</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289469</attachid>
            <date>2016-09-21 11:30:55 -0700</date>
            <delta_ts>2016-09-21 11:47:55 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30554</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MjE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDE2LTA5LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGEgRmVuY2Ugb3Bjb2RlIHRvIEIzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjIzNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWRkcyB0aGUgbW9zdCBiYXNpYyBmZW5jZSBz
dXBwb3J0IHRvIEIzLiBDdXJyZW50bHksIHRoaXMgaXMgb3B0aW1hbCBvbiB4ODYgYW5kIGNvcnJl
Y3QKKyAgICAgICAgb24gQVJNLiBJdCBhbHNvIGhhcHBlbnMgdG8gYmUgc3VmZmljaWVudCBhbmQg
b3B0aW1hbCBmb3Igd2hhdCB3ZSdsbCBkbyBpbiB0aGUgY29uY3VycmVudCBHQy4KKyAgICAgICAg
CisgICAgICAgIFRoZSBpZGVhIG9mIEZlbmNlIGlzIHRoYXQgaXQgY2FuIHJlcHJlc2VudCBhbnkg
c3RhbmRhbG9uZSBmZW5jZSBpbnN0cnVjdGlvbiBieSBoYXZpbmcgdHdvCisgICAgICAgIGFkZGl0
aW9uYWwgcGFyYW1zOiBhIHJlYWQgcmFuZ2UgYW5kIGEgd3JpdGUgcmFuZ2UuIElmIHRoZSB3cml0
ZSByYW5nZSBpcyBlbXB0eSwgdGhpcyBpcworICAgICAgICB0YWtlbiB0byBiZSBhIHN0b3JlLXN0
b3JlIGZlbmNlLCB3aGljaCB0dXJucyBpbnRvIHplcm8gY29kZSBvbiB4ODYgYW5kIGEgY2hlYXBl
ciBmZW5jZSBvbgorICAgICAgICBBUk0uCisgICAgICAgIAorICAgICAgICBJdCB0dXJucyBvdXQg
dGhhdCB0aGlzIGlzIHBvd2VyZnVsIGVub3VnaCB0byBleHByZXNzIHN0b3JlLWxvYWQgYW5kIHN0
b3JlLXN0b3JlIGZlbmNlcy4gRm9yCisgICAgICAgIGxvYWQtc3RvcmUgYW5kIGxvYWQtbG9hZCBm
ZW5jZXMsIHlvdSB3b3VsZG4ndCBoYXZlIHdhbnRlZCB0byB1c2UgYW55IGNvZGUgb24geDg2IGFu
ZCB5b3UKKyAgICAgICAgd291bGRuJ3QgaGF2ZSB3YW50ZWQgYSBzdGFuZGFsb25lIGJhcnJpZXIg
b24gQVJNLiBGb3IgdGhvc2UgY2FzZXMsIHlvdSdkIHdhbnQgZWl0aGVyIGEKKyAgICAgICAgZmVu
Y2VkIGxvYWQgKGxvYWQgYWNxdWlyZSkgb3IgYSBkZXBlbmRlbmN5LiBTZWUgYnVnIDE2MjM0OSBh
bmQgYnVnIDE2MjM1MCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBpc24n
dCB5ZXQgb3B0aW1pemVkIGZvciBzdG9yZS1zdG9yZSBmZW5jZXMgb24gQVJNIGJlY2F1c2Ugd2Ug
ZG9uJ3QgaGF2ZSB0aGUKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXIgc3VwcG9ydC4gQWxzbywgdGhl
IHN1cHBvcnQgZm9yICJkbWIgaXNoIiBpcyBub3QgcmVhbGx5IHdoYXQgd2Ugd2FudCAoaXQgc2Vl
bXMKKyAgICAgICAgdG8gdXNlIGEgaGVhdmllciBmZW5jZSkuIEkgZG9uJ3QgdGhpbmsgdGhhdCB0
aGlzIGlzIHVyZ2VudCBiZWNhdXNlIG9mIGhvdyB0aGUgY29uY3VycmVudCBHQworICAgICAgICB3
aWxsIHVzZSB0aGlzIGZhY2lsaXR5LiBJJ3ZlIGxlZnQgdGhhdCB0byBidWcgMTYyMzQyLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjp0cnlUb0Rp
c2Fzc2VtYmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpkaXNhc3Nl
bWJseSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OnNpemUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OnRyeVRvRGlzYXNzZW1ibGUpOiBEZWxldGVk
LgorICAgICAgICAqIGIzL0IzQ29tcGlsYXRpb24uaDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbXBp
bGF0aW9uOjpjb2RlUmVmKToKKyAgICAgICAgKEpTQzo6QjM6OkNvbXBpbGF0aW9uOjpkaXNhc3Nl
bWJseSk6CisgICAgICAgIChKU0M6OkIzOjpDb21waWxhdGlvbjo6Y29kZSk6IERlbGV0ZWQuCisg
ICAgICAgICogYjMvQjNFZmZlY3RzLmg6CisgICAgICAgICogYjMvQjNGZW5jZVZhbHVlLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpGZW5jZVZhbHVlOjp+RmVuY2VWYWx1ZSk6CisgICAg
ICAgIChKU0M6OkIzOjpGZW5jZVZhbHVlOjpjbG9uZUltcGwpOgorICAgICAgICAoSlNDOjpCMzo6
RmVuY2VWYWx1ZTo6RmVuY2VWYWx1ZSk6CisgICAgICAgICogYjMvQjNGZW5jZVZhbHVlLmg6IEFk
ZGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9CM09wY29kZS5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmg6CisgICAg
ICAgICogYjMvQjNWYWxpZGF0ZS5jcHA6CisgICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpWYWx1ZTo6ZWZmZWN0cyk6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpj
aGVja1VzZXNJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkIzOjpjaGVja0RvZXNOb3RVc2VJ
bnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0WDg2TUZlbmNlKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RYODZDb21waWxlckZlbmNlKToKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6
CisKIDIwMTYtMDktMjEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRlRMIG5lZWRzIHRvIHJlc2VydmUgY2FsbGVlIHN0YWNrIHNwYWNlIGluIGJ5dGVzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDYyMDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEyNSw2ICsxMjUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGIzL0IzRHVw
bGljYXRlVGFpbHMuY3BwCiAgICAgYjMvQjNFZmZlY3RzLmNwcAogICAgIGIzL0IzRWxpbWluYXRl
Q29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCisgICAgYjMvQjNGZW5jZVZhbHVlLmNwcAogICAgIGIz
L0IzRml4U1NBLmNwcAogICAgIGIzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwCiAgICAgYjMvQjNG
cmVxdWVuY3lDbGFzcy5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMDYyMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDUyLDYgKzQ1Miw4IEBA
CiAJCTBGNjZFMTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdFZGdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2OTE0REYzRjEzMDBCN0IyRTQg
LyogREZHRWRnZS5oICovOyB9OwogCQkwRjY4MkZCMjE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NB
Q2FsY3VsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjY4MkZCMDE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5jcHAgKi87
IH07CiAJCTBGNjgyRkIzMTlCQ0IzNjQwMEZBM0JBRCAvKiBERkdTU0FDYWxjdWxhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY4MkZCMTE5QkNC
MzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5oICovOyB9OworCQkwRjY5NzFFQTFEOTJG
NDI0MDBCQTAyQTUgLyogQjNGZW5jZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY5NzFFOTFEOTJGNDIxMDBCQTAyQTUgLyogQjNGZW5jZVZh
bHVlLmggKi87IH07CisJCTBGNjk3MUVCMUQ5MkY0MkQwMEJBMDJBNSAvKiBCM0ZlbmNlVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2OTcx
RTgxRDkyRjQyMTAwQkEwMkE1IC8qIEIzRmVuY2VWYWx1ZS5jcHAgKi87IH07CiAJCTBGNjlDQzg4
MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY5Q0M4NjE5M0FDNjBBMDA0NTc1OUUgLyog
REZHRnJvemVuVmFsdWUuY3BwICovOyB9OwogCQkwRjY5Q0M4OTE5M0FDNjBBMDA0NTc1OUUgLyog
REZHRnJvemVuVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNjlDQzg3MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5oICovOyB9
OwogCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I3MTg2MTI0NEMw
MDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yNjkxLDYgKzI2OTMsOCBAQAogCQkwRjY2RTE2OTE0REYz
RjEzMDBCN0IyRTQgLyogREZHRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdFZGdlLmg7IHBhdGggPSBkZmcvREZHRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjY4MkZCMDE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTU0FDYWxjdWxhdG9yLmNw
cDsgcGF0aCA9IGRmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY2ODJGQjExOUJDQjM2NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU1NBQ2FsY3VsYXRvci5oOyBwYXRo
ID0gZGZnL0RGR1NTQUNhbGN1bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY2OTcxRTgxRDkyRjQyMTAwQkEwMkE1IC8qIEIzRmVuY2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0ZlbmNlVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNG
ZW5jZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2OTcxRTkxRDky
RjQyMTAwQkEwMkE1IC8qIEIzRmVuY2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBCM0ZlbmNlVmFsdWUuaDsgcGF0aCA9IGIzL0IzRmVuY2VWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY5Q0M4NjE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJv
emVuVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRnJv
emVuVmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR0Zyb3plblZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY2OUNDODcxOTNBQzYwQTAwNDU3NTlFIC8qIERGR0Zyb3plblZh
bHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Zyb3plblZhbHVlLmg7
IHBhdGggPSBkZmcvREZHRnJvemVuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY2QjFDQjcxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyaXR5Q2hlY2tNb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00ODQ0LDYgKzQ4NDgsOCBAQAogCQkJCTBGRUM4NUJFMUJFMTY3QTAw
MDgwRkY3NCAvKiBCM0VmZmVjdHMuaCAqLywKIAkJCQkwRjcyNUNBMzFDNTAzREVEMDBBRDk0M0Eg
LyogQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAgKi8sCiAJCQkJMEY3MjVDQTQx
QzUwM0RFRDAwQUQ5NDNBIC8qIEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuaCAqLywK
KwkJCQkwRjY5NzFFODFEOTJGNDIxMDBCQTAyQTUgLyogQjNGZW5jZVZhbHVlLmNwcCAqLywKKwkJ
CQkwRjY5NzFFOTFEOTJGNDIxMDBCQTAyQTUgLyogQjNGZW5jZVZhbHVlLmggKi8sCiAJCQkJMEY2
QjhBRTAxQzRFRkUxNzAwOTY5MDUyIC8qIEIzRml4U1NBLmNwcCAqLywKIAkJCQkwRjZCOEFFMTFD
NEVGRTE3MDA5NjkwNTIgLyogQjNGaXhTU0EuaCAqLywKIAkJCQkwRjcyNUNBRDFDNTA2RDNCMDBB
RDk0M0EgLyogQjNGb2xkUGF0aENvbnN0YW50cy5jcHAgKi8sCkBAIC00OTIxLDkgKzQ5MjcsOSBA
QAogCQkJCTBGRUM4NEVGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaFZhbHVlLmNwcCAqLywK
IAkJCQkwRkVDODRGMDFCREFDREFDMDA4MEZGNzQgLyogQjNTd2l0Y2hWYWx1ZS5oICovLAogCQkJ
CTBGNDU3MDNFMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmNwcCAqLywKLQkJCQkw
RkVDODRGMjFCREFDREFDMDA4MEZGNzQgLyogQjNUeXBlLmggKi8sCiAJCQkJMEY0NTcwM0YxQkU1
ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCAqLywKIAkJCQkwRkVDODRGMTFCREFDREFD
MDA4MEZGNzQgLyogQjNUeXBlLmNwcCAqLywKKwkJCQkwRkVDODRGMjFCREFDREFDMDA4MEZGNzQg
LyogQjNUeXBlLmggKi8sCiAJCQkJRENGREZCRDgxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzVHlwZU1h
cC5oICovLAogCQkJCTBGRUM4NEYzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Vwc2lsb25WYWx1ZS5j
cHAgKi8sCiAJCQkJMEZFQzg0RjQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVXBzaWxvblZhbHVlLmgg
Ki8sCkBAIC03ODI2LDYgKzc4MzIsNyBAQAogCQkJCUExNTg3RDcyMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTg3
RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTU3MTRCRTFDRDgwNDlGMDAwNEQyQzYgLyogQ29uc29sZU9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2OTcxRUExRDkyRjQyNDAwQkEwMkE1IC8qIEIz
RmVuY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTk0NzgsNiArOTQ4NSw3IEBACiAJCQkJMEY0
NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTVBQjQ5REMxQkVDODA4MjAwNzAyMEZCIC8qIFBlckdsb2JhbE9iamVjdFdy
YXBwZXJXb3JsZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEI3MjNCMjEyRDdEQTQ2MDAzQkQ1
RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNjk3MUVC
MUQ5MkY0MkQwMEJBMDJBNSAvKiBCM0ZlbmNlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkUzQTA2QkQxQzExMDQwRDAwMzkwRkREIC8qIEpJVExlZnRTaGlmdEdlbmVyYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1h
Y3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmNw
cAkocmV2aXNpb24gMjA2MjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSwyNCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgTWFjcm9Bc3NlbWJsZXJDb2RlCiAgICAgcmV0dXJuIGNy
ZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21F
eGVjdXRhYmxlQWRkcmVzcyhMTEludDo6Z2V0Q29kZVB0cihjb2RlSWQpKSk7CiB9CiAKK2Jvb2wg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjp0cnlUb0Rpc2Fzc2VtYmxlKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0IGNoYXIqIHByZWZpeCkgY29uc3QKK3sKKyAgICByZXR1cm4gSlNDOjp0cnlUb0Rpc2Fz
c2VtYmxlKG1fY29kZVB0ciwgc2l6ZSgpLCBwcmVmaXgsIG91dCk7Cit9CisKK2Jvb2wgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjp0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IGNoYXIqIHByZWZpeCkgY29u
c3QKK3sKKyAgICByZXR1cm4gdHJ5VG9EaXNhc3NlbWJsZShXVEY6OmRhdGFGaWxlKCksIHByZWZp
eCk7Cit9CisKK0NTdHJpbmcgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpkaXNhc3NlbWJseSgpIGNv
bnN0Cit7CisgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OworICAgIGlmICghdHJ5VG9EaXNhc3Nl
bWJsZShvdXQsICIiKSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICByZXR1cm4gb3V0
LnRvQ1N0cmluZygpOworfQorCiB2b2lkIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG1fY29kZVB0ci5kdW1wV2l0aE5hbWUoIkNvZGVS
ZWYiLCBvdXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCShyZXZpc2lvbiAyMDYyMDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpZm5kZWYgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmX2gKICNkZWZpbmUgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmX2gKIAotI2luY2x1
ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLy8gQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUiBj
aGVja3MgdGhhdCBwdHIgaXMgYSBub24tbnVsbCBwb2ludGVyLCBhbmQgdGhhdCBpdCBpcyBhIHZh
bGlkCiAvLyBpbnN0cnVjdGlvbiBhZGRyZXNzIG9uIHRoZSBwbGF0Zm9ybSAoZm9yIGV4YW1wbGUs
IGNoZWNrIGFueSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzKS4KQEAgLTM5MSwxMSArMzkxLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV9leGVjdXRh
YmxlTWVtb3J5LT5zaXplSW5CeXRlcygpOwogICAgIH0KKworICAgIGJvb2wgdHJ5VG9EaXNhc3Nl
bWJsZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXggPSAiIikgY29uc3Q7CiAg
ICAgCi0gICAgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IGNoYXIqIHByZWZpeCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OnRyeVRvRGlzYXNzZW1ibGUobV9jb2RlUHRyLCBz
aXplKCksIHByZWZpeCwgV1RGOjpkYXRhRmlsZSgpKTsKLSAgICB9CisgICAgYm9vbCB0cnlUb0Rp
c2Fzc2VtYmxlKGNvbnN0IGNoYXIqIHByZWZpeCA9ICIiKSBjb25zdDsKKyAgICAKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBDU3RyaW5nIGRpc2Fzc2VtYmx5KCkgY29uc3Q7CiAgICAgCiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jb2RlUHRyOyB9CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21waWxhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbXBpbGF0aW9uLmgJKHJldmlzaW9u
IDIwNjIwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbXBpbGF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDkgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIH5Db21waWxhdGlvbigpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVSZWYuY29kZSgpOyB9CisgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGNvZGVSZWYoKSBjb25zdCB7IHJldHVybiBtX2NvZGVSZWY7IH0KKyAgICAKKyAgICBDU3Ry
aW5nIGRpc2Fzc2VtYmx5KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlUmVmLmRpc2Fzc2VtYmx5KCk7
IH0KIAogcHJpdmF0ZToKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9jb2RlUmVmOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAkocmV2aXNpb24gMjA2MjA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw5ICs1Myw5IEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICBib29sIGNvbnRyb2xEZXBlbmRlbnQg
eyBmYWxzZSB9OwogCiAgICAgLy8gVHJ1ZSBpZiB0aGlzIHdyaXRlcyB0byB0aGUgbG9jYWwgc3Rh
dGUuIE9wZXJhdGlvbnMgdGhhdCB3cml0ZSBsb2NhbCBzdGF0ZSBkb24ndCB3cml0ZSB0byBhbnl0
aGluZwotICAgIC8vIGluICJtZW1vcnkiIGJ1dCB0aGV5IGhhdmUgYSBzaWRlLWVmZmVjdCBhbnl3
YXkuIFRoaXMgaXMgZm9yIG1vZGVsaW5nIFVwc2lsb25zIGFuZCBTZXRzLiBZb3UgY2FuIGlnbm9y
ZQotICAgIC8vIHRoaXMgaWYgeW91IGhhdmUgeW91ciBvd24gd2F5IG9mIG1vZGVsaW5nIFVwc2ls
b25zIGFuZCBTZXRzIG9yIGlmIHlvdSBpbnRlbmQgdG8ganVzdCByZWJ1aWxkIHRoZW0KLSAgICAv
LyBhbnl3YXkuCisgICAgLy8gaW4gIm1lbW9yeSIgYnV0IHRoZXkgaGF2ZSBhIHNpZGUtZWZmZWN0
IGFueXdheS4gVGhpcyBpcyBmb3IgbW9kZWxpbmcgVXBzaWxvbnMsIFNldHMsIGFuZCBGZW5jZXMu
CisgICAgLy8gVGhpcyBpcyBhIHdheSBvZiBzYXlpbmc6IGV2ZW4gdGhvdWdoIHRoaXMgb3BlcmF0
aW9uIGlzIG5vdCBhIHRlcm1pbmFsLCBkb2VzIG5vdCBleGl0IHNpZGV3YXlzLAorICAgIC8vIGFu
ZCBkb2VzIG5vdCB3cml0ZSB0byB0aGUgaGVhcCwgeW91IHN0aWxsIGNhbm5vdCBraWxsIHRoaXMg
b3BlcmF0aW9uLgogICAgIGJvb2wgd3JpdGVzTG9jYWxTdGF0ZSB7IGZhbHNlIH07CiAKICAgICAv
LyBUcnVlIGlmIHRoaXMgcmVhZHMgZnJvbSB0aGUgbG9jYWwgc3RhdGUuIFRoaXMgaXMgb25seSB1
c2VkIGZvciBQaGkgYW5kIEdldC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Zl
bmNlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Zl
bmNlVmFsdWUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0ZlbmNlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNGZW5jZVZhbHVlLmgiCisKKyNp
ZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworRmVu
Y2VWYWx1ZTo6fkZlbmNlVmFsdWUoKQoreworfQorCitWYWx1ZSogRmVuY2VWYWx1ZTo6Y2xvbmVJ
bXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmV3IEZlbmNlVmFsdWUoKnRoaXMpOworfQorCitG
ZW5jZVZhbHVlOjpGZW5jZVZhbHVlKE9yaWdpbiBvcmlnaW4sIEhlYXBSYW5nZSByZWFkLCBIZWFw
UmFuZ2Ugd3JpdGUpCisgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBGZW5jZSwgVm9pZCwgb3Jp
Z2luKQorICAgICwgcmVhZChyZWFkKQorICAgICwgd3JpdGUod3JpdGUpCit7Cit9CisKK0ZlbmNl
VmFsdWU6OkZlbmNlVmFsdWUoT3JpZ2luIG9yaWdpbikKKyAgICA6IEZlbmNlVmFsdWUob3JpZ2lu
LCBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2U6OnRvcCgpKQoreworfQorCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZlbmNlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNGZW5jZVZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRmVuY2VWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQp
CisKKyNpbmNsdWRlICJCM0hlYXBSYW5nZS5oIgorI2luY2x1ZGUgIkIzVmFsdWUuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEZl
bmNlVmFsdWUgOiBwdWJsaWMgVmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIGFjY2Vw
dHMoT3Bjb2RlIG9wY29kZSkgeyByZXR1cm4gb3Bjb2RlID09IEZlbmNlOyB9CisgICAgCisgICAg
fkZlbmNlVmFsdWUoKTsKKyAgICAKKyAgICAvLyBUaGUgcmVhZC93cml0ZSBoZWFwcyBhcmUgcmVm
bGVjdGVkIGluIHRoZSBlZmZlY3RzKCkgb2YgdGhpcyB2YWx1ZS4gVGhlIGNvbXBpbGVyIG1heSBj
aGFuZ2UKKyAgICAvLyB0aGUgbG93ZXJpbmcgb2YgYSBGZW5jZSBiYXNlZCBvbiB0aGUgaGVhcHMu
IEZvciBleGFtcGxlLCBpZiBhIGZlbmNlIGRvZXMgbm90IHdyaXRlIGFueXRoaW5nCisgICAgLy8g
dGhlbiBpdCBpcyB1bmRlcnN0b29kIHRvIGJlIGEgc3RvcmUtc3RvcmUgZmVuY2UuIE9uIHg4Niwg
dGhpcyBtYXkgbGVhZCB1cyB0byBub3QgZW1pdCBhbnkKKyAgICAvLyBjb2RlLCB3aGlsZSBvbiBB
Uk0gd2UgbWF5IGVtaXQgYSBjaGVhcGVyIGZlbmNlIChkbWIgaXNoc3QgaW5zdGVhZCBvZiBkbWIg
aXNoKS4KKyAgICAvLworICAgIC8vIFRoaXMgYWJzdHJhY3Rpb24gYWxsb3dzIHVzIHRvIGNvdmVy
IGFsbCBvZiB0aGUgZmVuY2VzIG9uIHg4NiBhbmQgYWxsIG9mIHRoZSBzdGFuZGFsb25lIGZlbmNl
cworICAgIC8vIG9uIEFSTS4gWDg2IHJlYWxseSBqdXN0IGhhcyBvbmUgZmVuY2U6IG1mZW5jZS4g
VGhpcyBmZW5jZSBzaG91bGQgYmUgdXNlZCB0byBwcm90ZWN0IHN0b3JlcworICAgIC8vIGZyb20g
YmVpbmcgc3VuayBiZWxvdyBsb2Fkcy4gV1RGIGNhbGxzIGl0IHRoZSBzdG9yZUxvYWRGZW5jZS4g
QSBjbGFzc2ljIGV4YW1wbGUgaXMgdGhlIFN0ZWVsZQorICAgIC8vIGJhcnJpZXI6CisgICAgLy8K
KyAgICAvLyAgICAgby5mID0gdiAgPT4gIG8uZiA9IHYKKyAgICAvLyAgICAgICAgICAgICAgICAg
IGlmIChjb2xvcihvKSA9PSBibGFjaykKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICBsb2co
bykKKyAgICAvLworICAgIC8vIFdlIGFyZSB0cnlpbmcgdG8gZW5zdXJlIHRoYXQgaWYgdGhlIHN0
b3JlIHRvIG8uZiBvY2N1cnMgYWZ0ZXIgdGhlIGNvbGxlY3RvciBoYXMgc3RhcnRlZAorICAgIC8v
IHZpc2l0aW5nIG8sIHRoZW4gd2Ugd2lsbCBsb2cgby4gVW5kZXIgc2VxdWVudGlhbCBjb25zaXN0
ZW5jeSwgdGhpcyB3b3VsZCB3b3JrLiBUaGUgY29sbGVjdG9yCisgICAgLy8gd291bGQgc2V0IGNv
bG9yKG8pIHRvIGJsYWNrIGp1c3QgYmVmb3JlIGl0IHN0YXJ0ZWQgdmlzaXRpbmcuIEJ1dCB4ODYn
cyBpbGx1c2lvbiBvZiBzZXF1ZW50aWFsCisgICAgLy8gY29uc2lzdGVuY3kgaXMgYnJva2VuIGlu
IGV4YWN0bHkganVzdCB0aGlzIHN0b3JlLT5sb2FkIG9yZGVyaW5nIGNhc2UuIFRoZSBzdG9yZSB0
byBvLmYgbWF5CisgICAgLy8gZ2V0IGJ1ZmZlcmVkLCBhbmQgaXQgbWF5IG9jY3VyIHNvbWUgdGlt
ZSBhZnRlciB3ZSBoYXZlIGxvYWRlZCBhbmQgY2hlY2tlZCBjb2xvcihvKS4gQXMgd2VsbCwKKyAg
ICAvLyB0aGUgY29sbGVjdG9yJ3Mgc3RvcmUgdG8gc2V0IGNvbG9yKG8pIHRvIGJsYWNrIG1heSBn
ZXQgYnVmZmVyZWQgYW5kIGl0IG1heSBvY2N1ciBzb21lIHRpbWUKKyAgICAvLyBhZnRlciB0aGUg
Y29sbGVjdG9yIGhhcyBmaW5pc2hlZCB2aXNpdGluZyBvLiBUaGVyZWZvcmUsIHdlIG5lZWQgbWZl
bmNlcy4gSW4gQjMgd2UgbW9kZWwgdGhpcworICAgIC8vIGFzIGEgRmVuY2UgdGhhdCByZWFkcyBh
bmQgd3JpdGVzIHNvbWUgaGVhcHMuIFNldHRpbmcgd3JpdGVzIHRvIHRoZSBlbXB0eSBzZXQgd2ls
bCBjYXVzZSBCMyB0bworICAgIC8vIG5vdCBlbWl0IGFueSBiYXJyaWVyIG9uIHg4Ni4KKyAgICAv
LworICAgIC8vIE9uIEFSTSB0aGVyZSBhcmUgbWFueSBtb3JlIGZlbmNlcy4gVGhlIEZlbmNlIGlu
c3RydWN0aW9uIGlzIG1lYW50IHRvIG1vZGVsIGp1c3QgdHdvIG9mIHRoZW06CisgICAgLy8gZG1i
IGlzaCBhbmQgZG1iIGlzaHN0LiBZb3UgY2FuIGVtaXQgYSBkbWIgaXNoc3QgYnkgdXNpbmcgYSBG
ZW5jZSB3aXRoIGFuIGVtcHR5IHdyaXRlIGhlYXAuCisgICAgLy8gT3RoZXJ3aXNlLCB5b3Ugd2ls
bCBnZXQgYSBkbWIgaXNoLgorICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayByaWdodCBvbiBB
Uk0uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzNDIKKyAgICAv
LyBGSVhNRTogQWRkIGZlbmNlZCBtZW1vcnkgYWNjZXNzZXMuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzNDkKKyAgICAvLyBGSVhNRTogQWRkIGEgRGVwZW5kIG9w
ZXJhdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM1MAor
ICAgIEhlYXBSYW5nZSByZWFkIHsgSGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSB3
cml0ZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKworcHJvdGVjdGVkOgorICAgIFZhbHVlKiBjbG9u
ZUltcGwoKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJv
Y2VkdXJlOworICAgIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIEZlbmNlVmFsdWUoT3JpZ2luIG9y
aWdpbiwgSGVhcFJhbmdlIHJlYWQsIEhlYXBSYW5nZSB3cml0ZSk7CisgICAgCisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgRmVuY2VWYWx1ZShPcmlnaW4gb3JpZ2luKTsKK307CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIwNjIwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiQjNDaGVja1NwZWNpYWwuaCIKICNpbmNsdWRl
ICJCM0NvbW11dGF0aXZpdHkuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKKyNpbmNsdWRl
ICJCM0ZlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAi
QjNQYXRjaHBvaW50U3BlY2lhbC5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFZhbHVlLmgiCkBA
IC0yMDQ1LDYgKzIwNDYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1faW5zdHMubGFzdCgp
LmFwcGVuZChjcmVhdGVTdG9yZShBaXI6OlN0b3JlMTYsIHZhbHVlVG9TdG9yZSwgYWRkcihtX3Zh
bHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBGZW5jZTogeworICAgICAgICAgICAgRmVuY2VWYWx1ZSogZmVuY2UgPSBtX3Zh
bHVlLT5hczxGZW5jZVZhbHVlPigpOworICAgICAgICAgICAgaWYgKGlzWDg2KCkgJiYgIWZlbmNl
LT53cml0ZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBGSVhNRTog
T3B0aW1pemUgdGhpcyBvbiBBUk0uCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzQyCisgICAgICAgICAgICBhcHBlbmQoTWVtb3J5RmVu
Y2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBUcnVu
YzogewogICAgICAgICAgICAgQVNTRVJUKHRtcChtX3ZhbHVlLT5jaGlsZCgwKSkgPT0gdG1wKG1f
dmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAko
cmV2aXNpb24gMjA2MjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFs
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsKIAorLy8gRklYTUU6IFdlIHdhbnQgdG8gYWxsb3cgZmVuY2VkIG1lbW9y
eSBhY2Nlc3NlcyBvbiBBUk0uCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyMzQ5CisKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIE1lbW9yeVZhbHVlIDogcHVi
bGljIFZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhY2NlcHRzKE9wY29kZSBvcGNv
ZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHJldmlzaW9uIDIw
NjIwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1Nyw2ICsyNTcsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgT3BjCiAgICAgY2FzZSBTdG9yZToKICAgICAgICAgb3V0LnByaW50KCJTdG9yZSIpOwog
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBGZW5jZToKKyAgICAgICAgb3V0LnByaW50KCJGZW5j
ZSIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDQ2FsbDoKICAgICAgICAgb3V0LnByaW50
KCJDQ2FsbCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuaAkocmV2aXNpb24gMjA2MjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsMTIgQEAgZW51bSBPcGNvZGUg
OiBpbnQxNl90IHsKICAgICBTdG9yZTE2LAogICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9ycGhpYyBz
dG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBTdG9yZSwKKyAg
ICAKKyAgICAvLyBUaGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IHN0YW5kYWxvbmUgZmVuY2VzIC0g
aS5lLiBmZW5jZXMgdGhhdCBhcmUgbm90IHBhcnQgb2Ygb3RoZXIKKyAgICAvLyBpbnN0cnVjdGlv
bnMuIEl0J3MgZXhwcmVzc2l2ZSBlbm91Z2ggdG8gZXhwb3NlIG1mZW5jZSBvbiB4ODYgYW5kIGRt
YiBpc2gvaXNoc3Qgb24gQVJNLiBPbgorICAgIC8vIHg4NiwgaXQgYWxzbyBhY3RzIGFzIGEgY29t
cGlsZXIgc3RvcmUtc3RvcmUgZmVuY2UgaW4gdGhvc2UgY2FzZXMgd2hlcmUgaXQgd291bGQgaGF2
ZSBiZWVuIGEKKyAgICAvLyBkbWIgaXNoc3Qgb24gQVJNLgorICAgIEZlbmNlLAogCiAgICAgLy8g
VGhpcyBpcyBhIHJlZ3VsYXIgb3JkaW5hcnkgQyBmdW5jdGlvbiBjYWxsLCB1c2luZyB0aGUgc3lz
dGVtIEMgY2FsbGluZyBjb252ZW50aW9uLiBNYWtlIHN1cmUKICAgICAvLyB0aGF0IHRoZSBhcmd1
bWVudHMgYXJlIHBhc3NlZCB1c2luZyB0aGUgcmlnaHQgdHlwZXMuIFRoZSBmaXJzdCBhcmd1bWVu
dCBpcyB0aGUgY2FsbGVlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRl
LmNwcAkocmV2aXNpb24gMjA2MjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
aWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKGNoaWxkLT50eXBlKCkgIT0gVm9pZCwgKCJBdCAiLCAqdmFs
dWUsICItPiIsICpjaGlsZCkpOwogICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS0+b3Bjb2RlKCkp
IHsKICAgICAgICAgICAgIGNhc2UgTm9wOgorICAgICAgICAgICAgY2FzZSBGZW5jZToKICAgICAg
ICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAoIkF0
ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmNwcAkocmV2aXNpb24gMjA2MjA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQm90dG9tUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKKyNpbmNsdWRlICJCM0ZlbmNlVmFsdWUu
aCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNPcmlnaW5EdW1wLmgi
CiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCkBAIC01ODUsNiArNTg2LDI0IEBAIEVm
ZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgICAgICByZXN1bHQud3JpdGVzID0gYXM8
TWVtb3J5VmFsdWU+KCktPnJhbmdlKCk7CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGZW5jZTogeworICAgICAgICBjb25z
dCBGZW5jZVZhbHVlKiBmZW5jZSA9IGFzPEZlbmNlVmFsdWU+KCk7CisgICAgICAgIHJlc3VsdC5y
ZWFkcyA9IGZlbmNlLT5yZWFkOworICAgICAgICByZXN1bHQud3JpdGVzID0gZmVuY2UtPndyaXRl
OworICAgICAgICAKKyAgICAgICAgLy8gUHJldmVudCBraWxsaW5nIG9mIGZlbmNlcyB0aGF0IGNs
YWltIG5vdCB0byB3cml0ZSBhbnl0aGluZy4gSXQncyBhIGJpdCB3ZWlyZCB0aGF0IHdlIHVzZQor
ICAgICAgICAvLyBsb2NhbCBzdGF0ZSBhcyB0aGUgd2F5IHRvIGRvIHRoaXMsIGJ1dCBpdCBoYXBw
ZW5zIHRvIHdvcms6IHdlIG11c3QgYXNzdW1lIHRoYXQgd2UgY2Fubm90CisgICAgICAgIC8vIGtp
bGwgd3JpdGVzTG9jYWxTdGF0ZSB1bmxlc3Mgd2UgdW5kZXJzdGFuZHMgZXhhY3RseSB3aGF0IHRo
ZSBpbnN0cnVjdGlvbiBpcyBkb2luZyAobGlrZQorICAgICAgICAvLyB0aGUgd2F5IHRoYXQgZml4
U1NBIHVuZGVyc3RhbmRzIFNldC9HZXQgYW5kIHRoZSB3YXkgdGhhdCByZWR1Y2VTdHJlbmd0aCBh
bmQgb3RoZXJzCisgICAgICAgIC8vIHVuZGVyc3RhbmQgVXBzaWxvbikuIFRoaXMgd291bGQgb25s
eSBiZWNvbWUgYSBwcm9ibGVtIGlmIHdlIGhhZCBzb21lIGFuYWx5c2lzIHRoYXQgd2FzCisgICAg
ICAgIC8vIGxvb2tpbmcgdG8gdXNlIHRoZSB3cml0ZXNMb2NhbFN0YXRlIGJpdCB0byBpbnZhbGlk
YXRlIGEgQ1NFIG92ZXIgbG9jYWwgc3RhdGUgb3BlcmF0aW9ucy4KKyAgICAgICAgLy8gVGhlbiBh
IEZlbmNlIHdvdWxkIGxvb2sgYmxvY2ssIHNheSwgdGhlIGVsaW1pbmF0aW9uIG9mIGEgcmVkdW5k
YW50IEdldC4gQnV0IGl0IGxpa2UKKyAgICAgICAgLy8gdGhhdCdzIG5vdCBhdCBhbGwgaG93IG91
ciBvcHRpbWl6YXRpb25zIGZvciBTZXQvR2V0L1Vwc2lsb24vUGhpIHdvcmsgLSB0aGV5IGdyb2sg
dGhlaXIKKyAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWVwbHkgZW5vdWdoIHRoYXQgdGhleSBoYXZl
IG5vIG5lZWQgdG8gY2hlY2sgdGhpcyBiaXQgLSBzbyB0aGlzIGNoZWF0IGlzCisgICAgICAgIC8v
IGZpbmUuCisgICAgICAgIHJlc3VsdC53cml0ZXNMb2NhbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIGNhc2UgQ0NhbGw6CiAgICAgICAgIHJlc3VsdCA9IGFzPENDYWxs
VmFsdWU+KCktPmVmZmVjdHM7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDIwNjIwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiQjNDb25zdDMyVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNpbmNs
dWRlICJCM0VmZmVjdHMuaCIKKyNpbmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJC
M0dlbmVyYXRlLmgiCiAjaW5jbHVkZSAiQjNMb3dlclRvQWlyLmgiCiAjaW5jbHVkZSAiQjNNYXRo
RXh0cmFzLmgiCkBAIC0xNTEsNiArMTUyLDMwIEBAIHZvaWQgbG93ZXJUb0FpckZvclRlc3Rpbmco
UHJvY2VkdXJlJiBwcm8KICAgICBBaXI6OnZhbGlkYXRlKHByb2MuY29kZSgpKTsKIH0KIAordm9p
ZCBjaGVja1VzZXNJbnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNvbnN0IGNo
YXIqIHRleHQpCit7CisgICAgQ1N0cmluZyBkaXNhc3NlbWJseSA9IGNvbXBpbGF0aW9uLmRpc2Fz
c2VtYmx5KCk7CisgICAgaWYgKHN0cnN0cihkaXNhc3NlbWJseS5kYXRhKCksIHRleHQpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBjcmFzaExvY2subG9jaygpOworICAgIGRhdGFMb2coIkJhZCBs
b3dlcmluZyEgIEV4cGVjdGVkIHRvIGZpbmQgIiwgdGV4dCwgIiBidXQgZGlkbid0OlxuIik7Cisg
ICAgZGF0YUxvZyhkaXNhc3NlbWJseSk7CisgICAgQ1JBU0goKTsKK30KKwordm9pZCBjaGVja0Rv
ZXNOb3RVc2VJbnN0cnVjdGlvbihDb21waWxhdGlvbiYgY29tcGlsYXRpb24sIGNvbnN0IGNoYXIq
IHRleHQpCit7CisgICAgQ1N0cmluZyBkaXNhc3NlbWJseSA9IGNvbXBpbGF0aW9uLmRpc2Fzc2Vt
Ymx5KCk7CisgICAgaWYgKCFzdHJzdHIoZGlzYXNzZW1ibHkuZGF0YSgpLCB0ZXh0KSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY3Jhc2hMb2NrLmxvY2soKTsKKyAgICBkYXRhTG9nKCJCYWQgbG93
ZXJpbmchICBEaWQgbm90IGV4cGVjdGVkIHRvIGZpbmQgIiwgdGV4dCwgIiBidXQgaXQncyB0aGVy
ZTpcbiIpOworICAgIGRhdGFMb2coZGlzYXNzZW1ibHkpOworICAgIENSQVNIKCk7Cit9CisKIHRl
bXBsYXRlPHR5cGVuYW1lIFR5cGU+CiBzdHJ1Y3QgT3BlcmFuZCB7CiAgICAgY29uc3QgY2hhciog
bmFtZTsKQEAgLTEzMDI3LDYgKzEzMDUyLDMyIEBAIHZvaWQgdGVzdFBhdGNocG9pbnRUZXJtaW5h
bFJldHVyblZhbHVlKGIKICAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSwgLTEpLCA2NjYp
OwogfQogCit2b2lkIHRlc3RYODZNRmVuY2UoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IAorICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgCisgICAgcm9v
dC0+YXBwZW5kTmV3PEZlbmNlVmFsdWU+KHByb2MsIE9yaWdpbigpKTsKKyAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgIAorICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGUocHJvYyk7CisgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVu
Y2UiKTsKK30KKwordm9pZCB0ZXN0WDg2Q29tcGlsZXJGZW5jZSgpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgCisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICAKKyAgICByb290LT5hcHBlbmROZXc8RmVuY2VWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEhlYXBS
YW5nZTo6dG9wKCksIEhlYXBSYW5nZSgpKTsKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgIAorICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJv
Yyk7CisgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKK30K
KwogLy8gTWFrZSBzdXJlIHRoZSBjb21waWxlciBkb2VzIG5vdCB0cnkgdG8gb3B0aW1pemUgYW55
dGhpbmcgb3V0LgogTkVWRVJfSU5MSU5FIGRvdWJsZSB6ZXJvKCkKIHsKQEAgLTE0NDU2LDYgKzE0
NTA3LDkgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgICAgICBSVU4odGVzdEJy
YW5jaEJpdEFuZEltbUZ1c2lvbihMb2FkOFosIEludDMyLCAxLCBBaXI6OkJyYW5jaFRlc3Q4LCBB
aXI6OkFyZzo6QWRkcikpOwogICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihM
b2FkLCBJbnQzMiwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpBZGRyKSk7CiAgICAg
ICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKExvYWQsIEludDY0LCAxLCBBaXI6OkJy
YW5jaFRlc3QzMiwgQWlyOjpBcmc6OkFkZHIpKTsKKyAgICAgICAgCisgICAgICAgIFJVTih0ZXN0
WDg2TUZlbmNlKCkpOworICAgICAgICBSVU4odGVzdFg4NkNvbXBpbGVyRmVuY2UoKSk7CiAgICAg
fQogCiAgICAgaWYgKGlzQVJNNjQoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAyMDYyMDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBA
IC04NDMsNiArODQzLDggQEAgTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHOjMyLCBV
OgogTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlGbG9hdCBVOkc6MzIsIFU6RjozMiwgVTpGOjMyLCBV
OkY6NjQsIFU6Rjo2NCwgRDpGOjY0CiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1w
LCBUbXAKIAorTWVtb3J5RmVuY2UgL2VmZmVjdHMKKwogSnVtcCAvYnJhbmNoCiAKIFJldFZvaWQg
L3JldHVybgpJbmRleDogV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjIxNykKKysrIFdl
YnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTYtMDktMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgYSBGZW5jZSBvcGNvZGUgdG8gQjMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MjM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24u
aHRtbDoKKwogMjAxNi0wOC0xNiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24gb2YgQjMncyBSZXR1
cm4gb3Bjb2RlCkluZGV4OiBXZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRl
LXJlcHJlc2VudGF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0Lm9yZy9k
b2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCShyZXZpc2lvbiAyMDYyMDcp
CisrKyBXZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0
aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQyMSw2ICs0MjEsMTggQEAKICAgICAgIDxkZD5T
dG9yZXMgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBjaGlsZCBpbnRvIHRoZSBhZGRyZXNzIGNvbXB1
dGVkIGJ5IGFkZGluZyB0aGUKICAgICAgICAgY29tcGlsZS10aW1lIDMyLWJpdCBzaWduZWQgaW50
ZWdlciBvZmZzZXQgdG8gdGhlIHNlY29uZCBjaGlsZC4gIE1pc2FsaWduZWQgc3RvcmVzIGFyZQog
ICAgICAgICBub3QgcGVuYWxpemVkLiAgTXVzdCB1c2UgdGhlIE1lbW9yeVZhbHVlIGNsYXNzLjwv
ZGQ+CisgICAgICAKKyAgICAgIDxkdD5Wb2lkIEZlbmNlKCk8L2R0PgorICAgICAgPGRkPkFic3Ry
YWN0cyBzdGFuZGFsb25lIGRhdGEgZmVuY2VzIG9uIHg4NiBhbmQgQVJNLiBNdXN0IHVzZSB0aGUg
RmVuY2VWYWx1ZSBjbGFzcywgd2hpY2ggaGFzCisgICAgICAgIHR3byBhZGRpdGlvbmFsIG1lbWJl
cnMgdGhhdCBjb25maWd1cmUgdGhlIHByZWNpc2UgbWVhbmluZyBvZiB0aGUgZmVuY2U6CisgICAg
ICAgIDxjb2RlPkhlYXBSYW5nZSBGZW5jZVZhbHVlOjpyZWFkPC9jb2RlPiBhbmQgPGNvZGU+SGVh
cFJhbmdlIEZlbmNlVmFsdWU6OndyaXRlPC9jb2RlPi4gSWYgdGhlCisgICAgICAgIDxjb2RlPndy
aXRlPC9jb2RlPiByYW5nZSBpcyBlbXB0eSwgdGhpcyBpcyB0YWtlbiB0byBiZSBhIHN0b3JlLXN0
b3JlIGZlbmNlLCB3aGljaCBsZWFkcyB0bworICAgICAgICBubyBjb2RlIGdlbmVyYXRpb24gb24g
eDg2IGFuZCB0aGUgd2Vha2VyIDxjb2RlPmRtYiBpc2hzdDwvY29kZT4gZmVuY2Ugb24gQVJNLiBJ
ZiB0aGUgd3JpdGUKKyAgICAgICAgcmFuZ2UgaXMgbm9uLWVtcHR5LCB0aGlzIHByb2R1Y2VzIDxj
b2RlPm1mZW5jZTwvY29kZT4gb24geDg2IGFuZCA8Y29kZT5kbWIgaXNoPC9jb2RlPiBvbgorICAg
ICAgICBBUk0uIFdpdGhpbiBCMyBJUiwgdGhlIEZlbmNlIGFsc28gcmVwb3J0cyB0aGUgcmVhZC93
cml0ZSBpbiBpdHMgZWZmZWN0cy4gVGhpcyBhbGxvd3MgeW91IHRvCisgICAgICAgIHNjb3BlIHRo
ZSBmZW5jZSBmb3IgdGhlIHB1cnBvc2Ugb2YgQjMncyBsb2FkIGVsaW1pbmF0aW9uLiBGb3IgZXhh
bXBsZSwgeW91IG1heSB1c2UgYSBGZW5jZQorICAgICAgICB0byBwcm90ZWN0IGEgc3RvcmUgZnJv
bSBiZWluZyBzdW5rIGJlbG93IGEgc3BlY2lmaWMgbG9hZC4gSW4gdGhhdCBjYXNlLCB5b3UgY2Fu
IGNsYWltIHRvCisgICAgICAgIHJlYWQganVzdCB0aGF0IHN0b3JlJ3MgcmFuZ2UgYW5kIHdyaXRl
IHRoYXQgbG9hZCdzIHJhbmdlLjwvZGQ+CiAKICAgICAgIDxkdD5UMSBDQ2FsbChJbnRQdHIsIFtU
MiwgW1QzLCAuLi5dXSk8L2R0PgogICAgICAgPGRkPlBlcmZvcm1zIGEgQyBmdW5jdGlvbiBjYWxs
IHRvIHRoZSBmdW5jdGlvbiBwb2ludGVkIHRvIGJ5IHRoZSBmaXJzdCBjaGlsZC4gIFRoZSB0eXBl
cwo=
</data>
<flag name="review"
          id="312714"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>