<?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>178050</bug_id>
          
          <creation_ts>2017-10-07 09:51:32 -0700</creation_ts>
          <short_desc>Use one virtual allocation for all gigacages and their runways</short_desc>
          <delta_ts>2017-10-12 09:02:38 -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>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>177586</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>178182</dependson>
          <blocked>174917</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1357925</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-07 09:51:32 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357955</commentid>
    <comment_count>1</comment_count>
      <attachid>323101</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-07 14:00:08 -0700</bug_when>
    <thetext>Created attachment 323101
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357985</commentid>
    <comment_count>2</comment_count>
      <attachid>323109</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-07 17:52:04 -0700</bug_when>
    <thetext>Created attachment 323109
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358001</commentid>
    <comment_count>3</comment_count>
      <attachid>323114</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-07 19:01:37 -0700</bug_when>
    <thetext>Created attachment 323114
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358025</commentid>
    <comment_count>4</comment_count>
      <attachid>323118</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-07 20:33:31 -0700</bug_when>
    <thetext>Created attachment 323118
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358026</commentid>
    <comment_count>5</comment_count>
      <attachid>323119</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-07 20:34:47 -0700</bug_when>
    <thetext>Created attachment 323119
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358065</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-08 01:14:35 -0700</bug_when>
    <thetext>Attachment 323119 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/CryptoRandom.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 7 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>1358633</commentid>
    <comment_count>7</comment_count>
      <attachid>323280</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-09 20:43:12 -0700</bug_when>
    <thetext>Created attachment 323280
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358634</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-09 20:44:50 -0700</bug_when>
    <thetext>Attachment 323280 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/CryptoRandom.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 8 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>1358643</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-09 21:28:36 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/223121/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358644</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-09 21:29:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/34902910&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359333</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-11 12:31:22 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 178182</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359609</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-12 09:02:38 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 177586 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323101</attachid>
            <date>2017-10-07 14:00:08 -0700</date>
            <delta_ts>2017-10-07 17:52:04 -0700</delta_ts>
            <desc>wip</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16748</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzAyMSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA3ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG9uZSB2aXJ0dWFsIGFsbG9j
YXRpb24gZm9yIGFsbCBnaWdhY2FnZXMgYW5kIHRoZWlyIHJ1bndheXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODA1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6
CisgICAgICAgIChHaWdhY2FnZTo6ZW5zdXJlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6
OnJ1bndheSk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6dG90YWxTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmg6CisKIDIwMTctMDktMjkgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgZ2lnYWNhZ2Ugb24gaU9T
CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIzMDIwKQorKysgU291cmNlL2Jt
YWxsb2MvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBAIHNldChi
bWFsbG9jX1NPVVJDRVMKICAgICBibWFsbG9jL0FsbG9jYXRvci5jcHAKICAgICBibWFsbG9jL0F2
YWlsYWJsZU1lbW9yeS5jcHAKICAgICBibWFsbG9jL0NhY2hlLmNwcAorICAgIGJtYWxsb2MvQ3J5
cHRvUmFuZG9tLmNwcAogICAgIGJtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCiAgICAgYm1hbGxvYy9E
ZWJ1Z0hlYXAuY3BwCiAgICAgYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAKSW5kZXg6IFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIyMzAyMCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsOCBAQAogCQkwRjVCRjE1MjFGMjJFMTU3
MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNUJGMTUwMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3Bw
ICovOyB9OwogCQkwRjVCRjE1MzFGMjJFMTU3MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE1MTFGMjJFMTU3
MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1QkYxNzMxRjIzQzU3MTAwMjlEOTFEIC8qIEJFeHBvcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3NEI5M0UxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1Jh
bmRvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3
NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5oICovOyB9OworCQkwRjc0Qjkz
RjFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNEMUY4OTcxM0UwMEI5MzVEMyAvKiBD
cnlwdG9SYW5kb20uY3BwICovOyB9OwogCQkwRkQ1NTczMzFGN0VEQjdCMDBCMUYwQTMgLyogSGVh
cEtpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZENTU3MzIxRjdFREI3QjAwQjFGMEEzIC8qIEhlYXBLaW5kLmNwcCAqLzsgfTsKIAkJMTQwMDI3
NDkxOEY4OUMxMzAwMTE1Qzk3IC8qIEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0REEzMjBDMTg4NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDI3NEEx
OEY4OUMyMzAwMTE1Qzk3IC8qIFZNSGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQ0RjdCRkMxOEJGQzUxNzAwMzUzN0YzIC8qIFZNSGVhcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MSw2ICs5
Myw4IEBACiAJCTBGNUJGMTUwMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gU2NhdmVuZ2VyLmNwcDsgcGF0aCA9IGJtYWxsb2MvU2NhdmVuZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNTExRjIyRTE1NzAwMjlEOTFE
IC8qIFNjYXZlbmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY2F2ZW5nZXIuaDsgcGF0aCA9IGJtYWxs
b2MvU2NhdmVuZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJFeHBvcnQuaDsgcGF0
aCA9IGJtYWxsb2MvQkV4cG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc0
QjkzQzFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENyeXB0b1JhbmRvbS5oOyBwYXRoID0gYm1hbGxvYy9DcnlwdG9SYW5k
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NEI5M0QxRjg5NzEzRTAwQjkz
NUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBDcnlwdG9SYW5kb20uY3BwOyBwYXRoID0gYm1hbGxvYy9DcnlwdG9SYW5kb20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ1NTczMjFGN0VEQjdCMDBCMUYwQTMgLyog
SGVhcEtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGVhcEtp
bmQuY3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0MEZBMDAyMTlDRTQyOUMwMEZGRDNDOCAvKiBCdW1wUmFuZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQnVtcFJhbmdlLmg7IHBhdGggPSBibWFsbG9jL0J1
bXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDBGQTAwNDE5Q0U0QjY4
MDBGRkQzQzggLyogTGluZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExpbmVNZXRhZGF0YS5oOyBwYXRoID0gYm1hbGxvYy9MaW5lTWV0YWRhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OCw2ICsyOTIsOCBAQAogCQkJCTBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi8sCiAJCQkJMTQxM0U0NjAxODlEQ0UxRTAwNTQ2
RDY4IC8qIEJJbmxpbmUuaCAqLywKIAkJCQkxNEM5MTlDODE4RkNDNTlGMDAyOERCNDMgLyogQlBs
YXRmb3JtLmggKi8sCisJCQkJMEY3NEI5M0QxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRv
bS5jcHAgKi8sCisJCQkJMEY3NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5o
ICovLAogCQkJCTE0RDlEQjQ1MTdGMjQ0NzEwMEVBQUI3OSAvKiBGaXhlZFZlY3Rvci5oICovLAog
CQkJCTBGRDU1NzMyMUY3RURCN0IwMEIxRjBBMyAvKiBIZWFwS2luZC5jcHAgKi8sCiAJCQkJMEY1
QkYxNDYxRjIyQThCMTAwMjlEOTFEIC8qIEhlYXBLaW5kLmggKi8sCkBAIC0zNDIsNiArMzQ4LDcg
QEAKIAkJCQkxNEM5MTlDOTE4RkNDNTlGMDAyOERCNDMgLyogQlBsYXRmb3JtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NDI2RTI4MzFDODM5NTQ3MDA4RUIwNDIgLyogQlNvZnRMaW5raW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNERENzg5QzE4RjQ4RDRBMDA5NTA3MDIgLyogQnVtcEFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NEI5M0UxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0
b1JhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRkEwMDMxOUNFNDI5QzAwRkZEM0M4IC8q
IEJ1bXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTkxOEY0OEQ0QTAwOTUwNzAy
IC8qIENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdEQzZFMzFDQTVCNzBCMDA3MjRFOEQg
LyogQ2h1bmsuaCBpbiBIZWFkZXJzICovLApAQCAtNDY3LDYgKzQ3NCw3IEBACiAJCQkJMTQyQjQ0
MzYxRTI4MzlFNzAwMURBNkU5IC8qIERlYnVnSGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDg5NUQ5MTFBM0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRGMjcxQzcxOEVBMzk5MDAwOEMxNTJGIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEY3NEI5M0YxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjVCRjE0RjFGMjJERUFGMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ0QzA3RjQxQzdCNzAyNjAwNTFCQjZBIC8qIExhcmdlTWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ0MjZFMjgwMUM4MzhFRTAwMDhFQjA0MiAvKiBMb2dnaW5n
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9S
YW5kb20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFu
ZG9tLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0b1Jh
bmRvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiQ3J5cHRvUmFuZG9tLmgi
CisKKyNpbmNsdWRlICJCQXNzZXJ0LmgiCisjaW5jbHVkZSAiQlBsYXRmb3JtLmgiCisKKyNpZiAh
Qk9TKERBUldJTikKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5j
bHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2lmIEJPUyhEQVJXSU4pCit0eXBlZGVmIHN0cnVj
dCBfX0NDUmFuZG9tKiBDQ1JhbmRvbVJlZjsKKworZXh0ZXJuICJDIiB7CitleHRlcm4gY29uc3Qg
Q0NSYW5kb21SZWYga0NDUmFuZG9tRGVmYXVsdDsKK2ludCBDQ1JhbmRvbUNvcHlCeXRlcyhDQ1Jh
bmRvbVJlZiBybmQsIHZvaWQgKmJ5dGVzLCBzaXplX3QgY291bnQpOworfQorI2VuZGlmCisKK25h
bWVzcGFjZSBibWFsbG9jIHsKKwordm9pZCBjcnlwdG9SYW5kb20odW5zaWduZWQgY2hhciogYnVm
ZmVyLCBzaXplX3QgbGVuZ3RoKQoreworI2lmIEJPUyhEQVJXSU4pCisgICAgUkVMRUFTRV9CQVNT
RVJUKCFDQ1JhbmRvbUNvcHlCeXRlcyhrQ0NSYW5kb21EZWZhdWx0LCBidWZmZXIsIGxlbmd0aCkp
OworI2Vsc2UKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RhdGlj
IGludCBmZDsKKyAgICBzdGQ6OmNhbGxfb25jZSgKKyAgICAgICAgb25jZUZsYWcsCisgICAgICAg
IFtdIHsKKyAgICAgICAgICAgIGludCByZXQgPSAwOworICAgICAgICAgICAgZG8geworICAgICAg
ICAgICAgICAgIHJldCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZLCAwKTsKKyAgICAg
ICAgICAgIH0gd2hpbGUgKHJldCA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7CisgICAgICAgICAg
ICBSRUxFQVNFX0JBU1NFUlQocmV0ID49IDApOworICAgICAgICAgICAgZmQgPSByZXQ7CisgICAg
ICAgIH0pOworICAgIHNzaXplX3QgYW1vdW50UmVhZCA9IDA7CisgICAgd2hpbGUgKHN0YXRpY19j
YXN0PHNpemVfdD4oYW1vdW50UmVhZCkgPCBsZW5ndGgpIHsKKyAgICAgICAgc3NpemVfdCBjdXJy
ZW50UmVhZCA9IHJlYWQoZmQsIGJ1ZmZlciArIGFtb3VudFJlYWQsIGxlbmd0aCAtIGFtb3VudFJl
YWQpOworICAgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBib3RoIEVBR0FJTiBhbmQgRUlO
VFIgc2luY2Ugb24gc29tZSBzeXN0ZW1zIC9kZXYvdXJhbmRvbQorICAgICAgICAvLyBpcyBibG9j
a2luZyBhbmQgb24gb3RoZXJzIGl0IGlzIG5vbi1ibG9ja2luZy4KKyAgICAgICAgaWYgKGN1cnJl
bnRSZWFkID09IC0xKQorICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGVycm5vID09IEVBR0FJ
TiB8fCBlcnJubyA9PSBFSU5UUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFtb3VudFJl
YWQgKz0gY3VycmVudFJlYWQ7CisgICAgfQorI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIGJt
YWxsb2MKKwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9SYW5kb20uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0b1JhbmRvbS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFuZG9tLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVk
ZSA8aW50dHlwZXMuaD4KKworbmFtZXNwYWNlIGJtYWxsb2MgeworCit2b2lkIGNyeXB0b1JhbmRv
bSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOworCit9CisKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCShyZXZpc2lvbiAyMjMwMjApCisrKyBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUs
NyBAQAogCiAjaW5jbHVkZSAiR2lnYWNhZ2UuaCIKIAorI2luY2x1ZGUgIkNyeXB0b1JhbmRvbS5o
IgogI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiUGVyUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIlZNQWxsb2NhdGUuaCIKQEAgLTM2LDE4ICszNywxMyBAQAogI2lmIEJDUFUoQVJNNjQp
CiAvLyBGSVhNRTogVGhlcmUgaXMgbm8gZ29vZCByZWFzb24gZm9yIEFSTTY0IHRvIGJlIHNwZWNp
YWwuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjA1Ci0j
ZGVmaW5lIFBSSU1JVElWRV9HSUdBQ0FHRV9SVU5XQVkgMAorI2RlZmluZSBHSUdBQ0FHRV9SVU5X
QVkgMAogI2Vsc2UKIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyAzMkdCLCBpbiBjYXNl
IHVuc2lnbmVkIDMyLWJpdCBpbmRpY2VzIGZpbmQgdGhlaXIgd2F5IGludG8gaW5kZXhlZCBhY2Nl
c3Nlcy4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUwNjIK
LSNkZWZpbmUgUFJJTUlUSVZFX0dJR0FDQUdFX1JVTldBWSAoMTZsbHUgKiAxMDI0ICogMTAyNCAq
IDEwMjQpCisjZGVmaW5lIEdJR0FDQUdFX1JVTldBWSAoMTZsbHUgKiAxMDI0ICogMTAyNCAqIDEw
MjQpCiAjZW5kaWYKIAotLy8gRklYTUU6IFJlY29uc2lkZXIgdGhpcy4KLS8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5MjEKLSNkZWZpbmUgSlNWQUxVRV9HSUdB
Q0FHRV9SVU5XQVkgMAotI2RlZmluZSBTVFJJTkdfR0lHQUNBR0VfUlVOV0FZIDAKLQogY2hhciBn
X2dpZ2FjYWdlQmFzZVB0cnNbR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkVdIF9fYXR0cmlidXRlX18o
KGFsaWduZWQoR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUpKSk7CiAKIHVzaW5nIG5hbWVzcGFjZSBi
bWFsbG9jOwpAQCAtMTE3LDM4ICsxMTMsNjIgQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAgICAg
ICAgICAgICBpZiAoIXNob3VsZEJlRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7CisgICAgICAgICAgICBL
aW5kIHNodWZmbGVkS2luZHNbbnVtS2luZHNdOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bUtpbmRzOyArK2kpCisgICAgICAgICAgICAgICAgc2h1ZmZsZWRLaW5kc1tp
XSA9IHN0YXRpY19jYXN0PEtpbmQ+KGkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBX
ZSBqdXN0IGdvIGFoZWFkIGFuZCBhc3N1bWUgdGhhdCA2NCBiaXRzIGlzIGVub3VnaCByYW5kb21u
ZXNzLiBUaGF0J3MgdHJpdmlhbGx5IHRydWUgcmlnaHQKKyAgICAgICAgICAgIC8vIG5vdywgYnV0
IHdvdWxkIHN0b3AgYmVpbmcgdHJ1ZSBpZiB3ZSB3ZW50IGNyYXp5IHdpdGggZ2lnYWNhZ2VzLiBC
YXNlZCBvbiBteSBtYXRoLCAyMSBpcyB0aGUKKyAgICAgICAgICAgIC8vIGxhcmdlc3QgdmFsdWUg
b2YgbiBzbyB0aGF0IG4hIDw9IDJeNjQuCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KG51bUtp
bmRzIDw9IDIxLCAidG9vIG1hbnkga2luZHMiKTsKKyAgICAgICAgICAgIHVpbnQ2NF90IHJhbmRv
bTsKKyAgICAgICAgICAgIGNyeXB0b1JhbmRvbShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNo
YXIqPigmcmFuZG9tKSwgc2l6ZW9mKHJhbmRvbSkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtS2luZHM7IGktLTspIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW1pdCA9
IGkgKyAxOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGogPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmFuZG9tICUgbGltaXQpOworICAgICAgICAgICAgICAgIHJhbmRvbSAvPSBsaW1pdDsKKyAg
ICAgICAgICAgICAgICBzdGQ6OnN3YXAoc2h1ZmZsZWRLaW5kc1tpXSwgc2h1ZmZsZWRLaW5kc1tq
XSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvckVhY2hLaW5k
KAotICAgICAgICAgICAgICAgIFsmXSAoS2luZCBraW5kKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghb2spCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBSYW5kb21pemUgd2hlcmUgdGhpcyBnb2VzLgotICAgICAgICAgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ1
Ci0gICAgICAgICAgICAgICAgICAgIGJhc2VQdHIoa2luZCkgPSB0cnlWTUFsbG9jYXRlKGFsaWdu
bWVudChraW5kKSwgdG90YWxTaXplKGtpbmQpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFi
YXNlUHRyKGtpbmQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoR0lHQUNBR0VfQUxM
T0NBVElPTl9DQU5fRkFJTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGQVRB
TDogQ291bGQgbm90IGFsbG9jYXRlICVzIGdpZ2FjYWdlLlxuIiwgbmFtZShraW5kKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBCQ1JBU0goKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgdm1EZWFsbG9jYXRlUGh5c2lj
YWxQYWdlcyhiYXNlUHRyKGtpbmQpLCB0b3RhbFNpemUoa2luZCkpOwotICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICAg
ICAgZm9yRWFjaEtpbmQoCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoS2luZCBraW5kKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJhc2VQdHIoa2luZCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICB2bURlYWxsb2NhdGUoYmFzZVB0cihraW5kKSwgdG90YWxTaXplKGtp
bmQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZVB0cihraW5kKSA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHByaW50ZigiU2h1ZmZsZWQgZ2lnYWNhZ2Vz
OiIpOworICAgICAgICAgICAgZm9yIChLaW5kIGtpbmQgOiBzaHVmZmxlZEtpbmRzKQorICAgICAg
ICAgICAgICAgIHByaW50ZigiICVzIiwgbmFtZShraW5kKSk7CisgICAgICAgICAgICBwcmludGYo
IlxuIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGF1dG8gYWxpZ25UbyA9IFtdIChLaW5k
IGtpbmQsIHNpemVfdCB0b3RhbFNpemUpIC0+IHNpemVfdCB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25tZW50KGtpbmQpLCB0b3RhbFNpemUpOworICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gYnVtcCA9IFtdIChLaW5kIGtpbmQsIHNpemVf
dCB0b3RhbFNpemUpIC0+IHNpemVfdCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6
ZSArIHNpemUoa2luZCk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgCisgICAgICAgICAg
ICBzaXplX3QgdG90YWxTaXplID0gMDsKKyAgICAgICAgICAgIHNpemVfdCBtYXhBbGlnbm1lbnQg
PSAwOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKEtpbmQga2luZCA6IHNodWZmbGVk
S2luZHMpIHsKKyAgICAgICAgICAgICAgICB0b3RhbFNpemUgPSBidW1wKGtpbmQsIGFsaWduVG8o
a2luZCwgdG90YWxTaXplKSk7CisgICAgICAgICAgICAgICAgbWF4QWxpZ25tZW50ID0gc3RkOjpt
YXgobWF4QWxpZ25tZW50LCBhbGlnbm1lbnQoa2luZCkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdG90YWxTaXplICs9IEdJR0FDQUdFX1JVTldBWTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gRklYTUU6IFJhbmRvbWl6ZSB3aGVyZSB0aGlzIGdvZXMuCisgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ1CisgICAgICAg
ICAgICB2b2lkKiBiYXNlID0gdHJ5Vk1BbGxvY2F0ZShtYXhBbGlnbm1lbnQsIHRvdGFsU2l6ZSk7
CisgICAgICAgICAgICBpZiAoIWJhc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoR0lHQUNBR0Vf
QUxMT0NBVElPTl9DQU5fRkFJTCkgeworICAgICAgICAgICAgICAgICAgICB2bURlYWxsb2NhdGUo
YmFzZSwgdG90YWxTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZBVEFMOiBDb3VsZCBu
b3QgYWxsb2NhdGUgZ2lnYWNhZ2UgbWVtb3J5IHdpdGggbWF4QWxpZ25tZW50ID0gJWx1LCB0b3Rh
bFNpemUgPSAlbHUuXG4iLCBtYXhBbGlnbm1lbnQsIHRvdGFsU2l6ZSk7CisgICAgICAgICAgICAg
ICAgQkNSQVNIKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2bURlYWxsb2NhdGVQaHlz
aWNhbFBhZ2VzKGJhc2UsIHRvdGFsU2l6ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNp
emVfdCBuZXh0Q2FnZSA9IDA7CisgICAgICAgICAgICBmb3IgKEtpbmQga2luZCA6IHNodWZmbGVk
S2luZHMpIHsKKyAgICAgICAgICAgICAgICBuZXh0Q2FnZSA9IGFsaWduVG8oa2luZCwgbmV4dENh
Z2UpOworICAgICAgICAgICAgICAgIGJhc2VQdHIoa2luZCkgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPihiYXNlKSArIG5leHRDYWdlOworICAgICAgICAgICAgICAgIG5leHRDYWdlID0gYnVtcChr
aW5kLCBuZXh0Q2FnZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHByb3RlY3RHaWdhY2FnZUJhc2VQdHJzKCk7CkBAIC0xNTcsMjUgKzE3Nyw2IEBAIHZvaWQgZW5z
dXJlR2lnYWNhZ2UoKQogI2VuZGlmIC8vIEdJR0FDQUdFX0VOQUJMRUQKIH0KIAotc2l6ZV90IHJ1
bndheShLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBQcmltaXRp
dmU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFBSSU1JVElWRV9HSUdBQ0FH
RV9SVU5XQVkpOwotICAgIGNhc2UgSlNWYWx1ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHNpemVfdD4oSlNWQUxVRV9HSUdBQ0FHRV9SVU5XQVkpOwotICAgIGNhc2UgU3RyaW5nOgotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihTVFJJTkdfR0lHQUNBR0VfUlVOV0FZKTsK
LSAgICB9Ci0gICAgQkNSQVNIKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXNpemVfdCB0b3RhbFNp
emUoS2luZCBraW5kKQotewotICAgIHJldHVybiBzaXplKGtpbmQpICsgcnVud2F5KGtpbmQpOwot
fQotCiB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpCiB7CiAgICAgZW5zdXJlR2lnYWNh
Z2UoKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJKHJldmlzaW9uIDIyMzAyMCkK
KysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
ODMsNiArODMsOCBAQCBlbnVtIEtpbmQgewogICAgIFN0cmluZwogfTsKIAorc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBudW1LaW5kcyA9IDM7CisKIEJFWFBPUlQgdm9pZCBlbnN1cmVHaWdhY2Fn
ZSgpOwogCiBCRVhQT1JUIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0xNjQs
OSArMTY2LDYgQEAgQklOTElORSBzaXplX3QgbWFzayhLaW5kIGtpbmQpCiAgICAgcmV0dXJuIEdJ
R0FDQUdFX1NJWkVfVE9fTUFTSyhzaXplKGtpbmQpKTsKIH0KIAotc2l6ZV90IHJ1bndheShLaW5k
IGtpbmQpOwotc2l6ZV90IHRvdGFsU2l6ZShLaW5kIGtpbmQpOwotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgogdm9pZCBmb3JFYWNoS2luZChjb25zdCBGdW5jJiBmdW5jKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323109</attachid>
            <date>2017-10-07 17:52:04 -0700</date>
            <delta_ts>2017-10-07 19:01:37 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16964</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzAyMSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA3ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG9uZSB2aXJ0dWFsIGFsbG9j
YXRpb24gZm9yIGFsbCBnaWdhY2FnZXMgYW5kIHRoZWlyIHJ1bndheXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODA1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6
CisgICAgICAgIChHaWdhY2FnZTo6ZW5zdXJlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6
OnJ1bndheSk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6dG90YWxTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmg6CisKIDIwMTctMDktMjkgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgZ2lnYWNhZ2Ugb24gaU9T
CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIzMDIwKQorKysgU291cmNlL2Jt
YWxsb2MvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBAIHNldChi
bWFsbG9jX1NPVVJDRVMKICAgICBibWFsbG9jL0FsbG9jYXRvci5jcHAKICAgICBibWFsbG9jL0F2
YWlsYWJsZU1lbW9yeS5jcHAKICAgICBibWFsbG9jL0NhY2hlLmNwcAorICAgIGJtYWxsb2MvQ3J5
cHRvUmFuZG9tLmNwcAogICAgIGJtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCiAgICAgYm1hbGxvYy9E
ZWJ1Z0hlYXAuY3BwCiAgICAgYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAKSW5kZXg6IFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIyMzAyMCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsOCBAQAogCQkwRjVCRjE1MjFGMjJFMTU3
MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNUJGMTUwMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3Bw
ICovOyB9OwogCQkwRjVCRjE1MzFGMjJFMTU3MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE1MTFGMjJFMTU3
MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1QkYxNzMxRjIzQzU3MTAwMjlEOTFEIC8qIEJFeHBvcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3NEI5M0UxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1Jh
bmRvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3
NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5oICovOyB9OworCQkwRjc0Qjkz
RjFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNEMUY4OTcxM0UwMEI5MzVEMyAvKiBD
cnlwdG9SYW5kb20uY3BwICovOyB9OwogCQkwRkQ1NTczMzFGN0VEQjdCMDBCMUYwQTMgLyogSGVh
cEtpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZENTU3MzIxRjdFREI3QjAwQjFGMEEzIC8qIEhlYXBLaW5kLmNwcCAqLzsgfTsKIAkJMTQwMDI3
NDkxOEY4OUMxMzAwMTE1Qzk3IC8qIEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0REEzMjBDMTg4NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDI3NEEx
OEY4OUMyMzAwMTE1Qzk3IC8qIFZNSGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQ0RjdCRkMxOEJGQzUxNzAwMzUzN0YzIC8qIFZNSGVhcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MSw2ICs5
Myw4IEBACiAJCTBGNUJGMTUwMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gU2NhdmVuZ2VyLmNwcDsgcGF0aCA9IGJtYWxsb2MvU2NhdmVuZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNTExRjIyRTE1NzAwMjlEOTFE
IC8qIFNjYXZlbmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY2F2ZW5nZXIuaDsgcGF0aCA9IGJtYWxs
b2MvU2NhdmVuZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJFeHBvcnQuaDsgcGF0
aCA9IGJtYWxsb2MvQkV4cG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc0
QjkzQzFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENyeXB0b1JhbmRvbS5oOyBwYXRoID0gYm1hbGxvYy9DcnlwdG9SYW5k
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NEI5M0QxRjg5NzEzRTAwQjkz
NUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBDcnlwdG9SYW5kb20uY3BwOyBwYXRoID0gYm1hbGxvYy9DcnlwdG9SYW5kb20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ1NTczMjFGN0VEQjdCMDBCMUYwQTMgLyog
SGVhcEtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGVhcEtp
bmQuY3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0MEZBMDAyMTlDRTQyOUMwMEZGRDNDOCAvKiBCdW1wUmFuZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQnVtcFJhbmdlLmg7IHBhdGggPSBibWFsbG9jL0J1
bXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDBGQTAwNDE5Q0U0QjY4
MDBGRkQzQzggLyogTGluZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExpbmVNZXRhZGF0YS5oOyBwYXRoID0gYm1hbGxvYy9MaW5lTWV0YWRhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OCw2ICsyOTIsOCBAQAogCQkJCTBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi8sCiAJCQkJMTQxM0U0NjAxODlEQ0UxRTAwNTQ2
RDY4IC8qIEJJbmxpbmUuaCAqLywKIAkJCQkxNEM5MTlDODE4RkNDNTlGMDAyOERCNDMgLyogQlBs
YXRmb3JtLmggKi8sCisJCQkJMEY3NEI5M0QxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRv
bS5jcHAgKi8sCisJCQkJMEY3NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5o
ICovLAogCQkJCTE0RDlEQjQ1MTdGMjQ0NzEwMEVBQUI3OSAvKiBGaXhlZFZlY3Rvci5oICovLAog
CQkJCTBGRDU1NzMyMUY3RURCN0IwMEIxRjBBMyAvKiBIZWFwS2luZC5jcHAgKi8sCiAJCQkJMEY1
QkYxNDYxRjIyQThCMTAwMjlEOTFEIC8qIEhlYXBLaW5kLmggKi8sCkBAIC0zNDIsNiArMzQ4LDcg
QEAKIAkJCQkxNEM5MTlDOTE4RkNDNTlGMDAyOERCNDMgLyogQlBsYXRmb3JtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NDI2RTI4MzFDODM5NTQ3MDA4RUIwNDIgLyogQlNvZnRMaW5raW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNERENzg5QzE4RjQ4RDRBMDA5NTA3MDIgLyogQnVtcEFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NEI5M0UxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0
b1JhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRkEwMDMxOUNFNDI5QzAwRkZEM0M4IC8q
IEJ1bXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTkxOEY0OEQ0QTAwOTUwNzAy
IC8qIENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdEQzZFMzFDQTVCNzBCMDA3MjRFOEQg
LyogQ2h1bmsuaCBpbiBIZWFkZXJzICovLApAQCAtNDY3LDYgKzQ3NCw3IEBACiAJCQkJMTQyQjQ0
MzYxRTI4MzlFNzAwMURBNkU5IC8qIERlYnVnSGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDg5NUQ5MTFBM0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRGMjcxQzcxOEVBMzk5MDAwOEMxNTJGIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEY3NEI5M0YxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjVCRjE0RjFGMjJERUFGMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ0QzA3RjQxQzdCNzAyNjAwNTFCQjZBIC8qIExhcmdlTWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ0MjZFMjgwMUM4MzhFRTAwMDhFQjA0MiAvKiBMb2dnaW5n
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9S
YW5kb20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFu
ZG9tLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0b1Jh
bmRvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiQ3J5cHRvUmFuZG9tLmgi
CisKKyNpbmNsdWRlICJCQXNzZXJ0LmgiCisjaW5jbHVkZSAiQlBsYXRmb3JtLmgiCisKKyNpZiAh
Qk9TKERBUldJTikKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5j
bHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2lmIEJPUyhEQVJXSU4pCit0eXBlZGVmIHN0cnVj
dCBfX0NDUmFuZG9tKiBDQ1JhbmRvbVJlZjsKKworZXh0ZXJuICJDIiB7CitleHRlcm4gY29uc3Qg
Q0NSYW5kb21SZWYga0NDUmFuZG9tRGVmYXVsdDsKK2ludCBDQ1JhbmRvbUNvcHlCeXRlcyhDQ1Jh
bmRvbVJlZiBybmQsIHZvaWQgKmJ5dGVzLCBzaXplX3QgY291bnQpOworfQorI2VuZGlmCisKK25h
bWVzcGFjZSBibWFsbG9jIHsKKwordm9pZCBjcnlwdG9SYW5kb20odW5zaWduZWQgY2hhciogYnVm
ZmVyLCBzaXplX3QgbGVuZ3RoKQoreworI2lmIEJPUyhEQVJXSU4pCisgICAgUkVMRUFTRV9CQVNT
RVJUKCFDQ1JhbmRvbUNvcHlCeXRlcyhrQ0NSYW5kb21EZWZhdWx0LCBidWZmZXIsIGxlbmd0aCkp
OworI2Vsc2UKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RhdGlj
IGludCBmZDsKKyAgICBzdGQ6OmNhbGxfb25jZSgKKyAgICAgICAgb25jZUZsYWcsCisgICAgICAg
IFtdIHsKKyAgICAgICAgICAgIGludCByZXQgPSAwOworICAgICAgICAgICAgZG8geworICAgICAg
ICAgICAgICAgIHJldCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZLCAwKTsKKyAgICAg
ICAgICAgIH0gd2hpbGUgKHJldCA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7CisgICAgICAgICAg
ICBSRUxFQVNFX0JBU1NFUlQocmV0ID49IDApOworICAgICAgICAgICAgZmQgPSByZXQ7CisgICAg
ICAgIH0pOworICAgIHNzaXplX3QgYW1vdW50UmVhZCA9IDA7CisgICAgd2hpbGUgKHN0YXRpY19j
YXN0PHNpemVfdD4oYW1vdW50UmVhZCkgPCBsZW5ndGgpIHsKKyAgICAgICAgc3NpemVfdCBjdXJy
ZW50UmVhZCA9IHJlYWQoZmQsIGJ1ZmZlciArIGFtb3VudFJlYWQsIGxlbmd0aCAtIGFtb3VudFJl
YWQpOworICAgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBib3RoIEVBR0FJTiBhbmQgRUlO
VFIgc2luY2Ugb24gc29tZSBzeXN0ZW1zIC9kZXYvdXJhbmRvbQorICAgICAgICAvLyBpcyBibG9j
a2luZyBhbmQgb24gb3RoZXJzIGl0IGlzIG5vbi1ibG9ja2luZy4KKyAgICAgICAgaWYgKGN1cnJl
bnRSZWFkID09IC0xKQorICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGVycm5vID09IEVBR0FJ
TiB8fCBlcnJubyA9PSBFSU5UUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFtb3VudFJl
YWQgKz0gY3VycmVudFJlYWQ7CisgICAgfQorI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIGJt
YWxsb2MKKwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9SYW5kb20uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0b1JhbmRvbS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFuZG9tLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVk
ZSA8aW50dHlwZXMuaD4KKworbmFtZXNwYWNlIGJtYWxsb2MgeworCit2b2lkIGNyeXB0b1JhbmRv
bSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOworCit9CisKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCShyZXZpc2lvbiAyMjMwMjApCisrKyBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUs
NyBAQAogCiAjaW5jbHVkZSAiR2lnYWNhZ2UuaCIKIAorI2luY2x1ZGUgIkNyeXB0b1JhbmRvbS5o
IgogI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiUGVyUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIlZNQWxsb2NhdGUuaCIKQEAgLTM2LDE4ICszNywxMyBAQAogI2lmIEJDUFUoQVJNNjQp
CiAvLyBGSVhNRTogVGhlcmUgaXMgbm8gZ29vZCByZWFzb24gZm9yIEFSTTY0IHRvIGJlIHNwZWNp
YWwuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjA1Ci0j
ZGVmaW5lIFBSSU1JVElWRV9HSUdBQ0FHRV9SVU5XQVkgMAorI2RlZmluZSBHSUdBQ0FHRV9SVU5X
QVkgMAogI2Vsc2UKIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyAzMkdCLCBpbiBjYXNl
IHVuc2lnbmVkIDMyLWJpdCBpbmRpY2VzIGZpbmQgdGhlaXIgd2F5IGludG8gaW5kZXhlZCBhY2Nl
c3Nlcy4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUwNjIK
LSNkZWZpbmUgUFJJTUlUSVZFX0dJR0FDQUdFX1JVTldBWSAoMTZsbHUgKiAxMDI0ICogMTAyNCAq
IDEwMjQpCisjZGVmaW5lIEdJR0FDQUdFX1JVTldBWSAoMTZsbHUgKiAxMDI0ICogMTAyNCAqIDEw
MjQpCiAjZW5kaWYKIAotLy8gRklYTUU6IFJlY29uc2lkZXIgdGhpcy4KLS8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5MjEKLSNkZWZpbmUgSlNWQUxVRV9HSUdB
Q0FHRV9SVU5XQVkgMAotI2RlZmluZSBTVFJJTkdfR0lHQUNBR0VfUlVOV0FZIDAKLQogY2hhciBn
X2dpZ2FjYWdlQmFzZVB0cnNbR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkVdIF9fYXR0cmlidXRlX18o
KGFsaWduZWQoR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUpKSk7CiAKIHVzaW5nIG5hbWVzcGFjZSBi
bWFsbG9jOwpAQCAtNTgsNiArNTQsOCBAQCBib29sIGdfd2FzRW5hYmxlZDsKIAogbmFtZXNwYWNl
IHsKIAorY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworCiBib29sIHNfaXNEaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkOwogCiB2b2lkIHByb3RlY3RHaWdhY2FnZUJhc2VQ
dHJzKCkKQEAgLTExNywzOCArMTE1LDY0IEBAIHZvaWQgZW5zdXJlR2lnYWNhZ2UoKQogICAgICAg
ICAgICAgaWYgKCFzaG91bGRCZUVuYWJsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICAgICAgICAgS2lu
ZCBzaHVmZmxlZEtpbmRzW251bUtpbmRzXTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1LaW5kczsgKytpKQorICAgICAgICAgICAgICAgIHNodWZmbGVkS2luZHNbaV0g
PSBzdGF0aWNfY2FzdDxLaW5kPihpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2Ug
anVzdCBnbyBhaGVhZCBhbmQgYXNzdW1lIHRoYXQgNjQgYml0cyBpcyBlbm91Z2ggcmFuZG9tbmVz
cy4gVGhhdCdzIHRyaXZpYWxseSB0cnVlIHJpZ2h0CisgICAgICAgICAgICAvLyBub3csIGJ1dCB3
b3VsZCBzdG9wIGJlaW5nIHRydWUgaWYgd2Ugd2VudCBjcmF6eSB3aXRoIGdpZ2FjYWdlcy4gQmFz
ZWQgb24gbXkgbWF0aCwgMjEgaXMgdGhlCisgICAgICAgICAgICAvLyBsYXJnZXN0IHZhbHVlIG9m
IG4gc28gdGhhdCBuISA8PSAyXjY0LgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChudW1LaW5k
cyA8PSAyMSwgInRvbyBtYW55IGtpbmRzIik7CisgICAgICAgICAgICB1aW50NjRfdCByYW5kb207
CisgICAgICAgICAgICBjcnlwdG9SYW5kb20ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4oJnJhbmRvbSksIHNpemVvZihyYW5kb20pKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG51bUtpbmRzOyBpLS07KSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbGltaXQgPSBp
ICsgMTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBqID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHJhbmRvbSAlIGxpbWl0KTsKKyAgICAgICAgICAgICAgICByYW5kb20gLz0gbGltaXQ7CisgICAg
ICAgICAgICAgICAgc3RkOjpzd2FwKHNodWZmbGVkS2luZHNbaV0sIHNodWZmbGVkS2luZHNbal0p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAg
ICAgICAgIHByaW50ZigiU2h1ZmZsZWQgZ2lnYWNhZ2VzOiIpOworICAgICAgICAgICAgICAgIGZv
ciAoS2luZCBraW5kIDogc2h1ZmZsZWRLaW5kcykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRm
KCIgJXMiLCBuYW1lKGtpbmQpKTsKKyAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvckVhY2hLaW5kKAotICAgICAg
ICAgICAgICAgIFsmXSAoS2luZCBraW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghb2sp
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBSYW5kb21pemUgd2hlcmUgdGhpcyBnb2VzLgotICAgICAgICAgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ1Ci0gICAgICAg
ICAgICAgICAgICAgIGJhc2VQdHIoa2luZCkgPSB0cnlWTUFsbG9jYXRlKGFsaWdubWVudChraW5k
KSwgdG90YWxTaXplKGtpbmQpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlUHRyKGtp
bmQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoR0lHQUNBR0VfQUxMT0NBVElPTl9D
QU5fRkFJTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGQVRBTDogQ291bGQg
bm90IGFsbG9jYXRlICVzIGdpZ2FjYWdlLlxuIiwgbmFtZShraW5kKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBCQ1JBU0goKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlcyhi
YXNlUHRyKGtpbmQpLCB0b3RhbFNpemUoa2luZCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICAgICAgZm9yRWFj
aEtpbmQoCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoS2luZCBraW5kKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIWJhc2VQdHIoa2luZCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICB2bURlYWxsb2NhdGUoYmFzZVB0cihraW5kKSwgdG90YWxTaXplKGtpbmQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVB0cihr
aW5kKSA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGF1dG8gYWxpZ25UbyA9IFtdIChLaW5kIGtpbmQsIHNpemVf
dCB0b3RhbFNpemUpIC0+IHNpemVfdCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJvdW5kVXBU
b011bHRpcGxlT2YoYWxpZ25tZW50KGtpbmQpLCB0b3RhbFNpemUpOworICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIGF1dG8gYnVtcCA9IFtdIChLaW5kIGtpbmQsIHNpemVfdCB0b3RhbFNpemUp
IC0+IHNpemVfdCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSArIHNpemUoa2lu
ZCk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgCisgICAgICAgICAgICBzaXplX3QgdG90
YWxTaXplID0gMDsKKyAgICAgICAgICAgIHNpemVfdCBtYXhBbGlnbm1lbnQgPSAwOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBmb3IgKEtpbmQga2luZCA6IHNodWZmbGVkS2luZHMpIHsKKyAg
ICAgICAgICAgICAgICB0b3RhbFNpemUgPSBidW1wKGtpbmQsIGFsaWduVG8oa2luZCwgdG90YWxT
aXplKSk7CisgICAgICAgICAgICAgICAgbWF4QWxpZ25tZW50ID0gc3RkOjptYXgobWF4QWxpZ25t
ZW50LCBhbGlnbm1lbnQoa2luZCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdG90YWxT
aXplICs9IEdJR0FDQUdFX1JVTldBWTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRklY
TUU6IFJhbmRvbWl6ZSB3aGVyZSB0aGlzIGdvZXMuCisgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ1CisgICAgICAgICAgICB2b2lkKiBi
YXNlID0gdHJ5Vk1BbGxvY2F0ZShtYXhBbGlnbm1lbnQsIHRvdGFsU2l6ZSk7CisgICAgICAgICAg
ICBpZiAoIWJhc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoR0lHQUNBR0VfQUxMT0NBVElPTl9D
QU5fRkFJTCkgeworICAgICAgICAgICAgICAgICAgICB2bURlYWxsb2NhdGUoYmFzZSwgdG90YWxT
aXplKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZBVEFMOiBDb3VsZCBub3QgYWxsb2NhdGUg
Z2lnYWNhZ2UgbWVtb3J5IHdpdGggbWF4QWxpZ25tZW50ID0gJWx1LCB0b3RhbFNpemUgPSAlbHUu
XG4iLCBtYXhBbGlnbm1lbnQsIHRvdGFsU2l6ZSk7CisgICAgICAgICAgICAgICAgQkNSQVNIKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKGJh
c2UsIHRvdGFsU2l6ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNpemVfdCBuZXh0Q2Fn
ZSA9IDA7CisgICAgICAgICAgICBmb3IgKEtpbmQga2luZCA6IHNodWZmbGVkS2luZHMpIHsKKyAg
ICAgICAgICAgICAgICBuZXh0Q2FnZSA9IGFsaWduVG8oa2luZCwgbmV4dENhZ2UpOworICAgICAg
ICAgICAgICAgIGJhc2VQdHIoa2luZCkgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihiYXNlKSAr
IG5leHRDYWdlOworICAgICAgICAgICAgICAgIG5leHRDYWdlID0gYnVtcChraW5kLCBuZXh0Q2Fn
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHByb3RlY3RHaWdh
Y2FnZUJhc2VQdHJzKCk7CkBAIC0xNTcsMjUgKzE4MSw2IEBAIHZvaWQgZW5zdXJlR2lnYWNhZ2Uo
KQogI2VuZGlmIC8vIEdJR0FDQUdFX0VOQUJMRUQKIH0KIAotc2l6ZV90IHJ1bndheShLaW5kIGtp
bmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBQcmltaXRpdmU6Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFBSSU1JVElWRV9HSUdBQ0FHRV9SVU5XQVkpOwot
ICAgIGNhc2UgSlNWYWx1ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oSlNW
QUxVRV9HSUdBQ0FHRV9SVU5XQVkpOwotICAgIGNhc2UgU3RyaW5nOgotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8c2l6ZV90PihTVFJJTkdfR0lHQUNBR0VfUlVOV0FZKTsKLSAgICB9Ci0gICAg
QkNSQVNIKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXNpemVfdCB0b3RhbFNpemUoS2luZCBraW5k
KQotewotICAgIHJldHVybiBzaXplKGtpbmQpICsgcnVud2F5KGtpbmQpOwotfQotCiB2b2lkIGRp
c2FibGVQcmltaXRpdmVHaWdhY2FnZSgpCiB7CiAgICAgZW5zdXJlR2lnYWNhZ2UoKTsKSW5kZXg6
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJKHJldmlzaW9uIDIyMzAyMCkKKysrIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBA
QCBlbnVtIEtpbmQgewogICAgIFN0cmluZwogfTsKIAorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBudW1LaW5kcyA9IDM7CisKIEJFWFBPUlQgdm9pZCBlbnN1cmVHaWdhY2FnZSgpOwogCiBCRVhQ
T1JUIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0xNjQsOSArMTY2LDYgQEAg
QklOTElORSBzaXplX3QgbWFzayhLaW5kIGtpbmQpCiAgICAgcmV0dXJuIEdJR0FDQUdFX1NJWkVf
VE9fTUFTSyhzaXplKGtpbmQpKTsKIH0KIAotc2l6ZV90IHJ1bndheShLaW5kIGtpbmQpOwotc2l6
ZV90IHRvdGFsU2l6ZShLaW5kIGtpbmQpOwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9p
ZCBmb3JFYWNoS2luZChjb25zdCBGdW5jJiBmdW5jKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323114</attachid>
            <date>2017-10-07 19:01:37 -0700</date>
            <delta_ts>2017-10-07 20:33:31 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16793</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzAyMSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA3ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG9uZSB2aXJ0dWFsIGFsbG9j
YXRpb24gZm9yIGFsbCBnaWdhY2FnZXMgYW5kIHRoZWlyIHJ1bndheXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODA1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6
CisgICAgICAgIChHaWdhY2FnZTo6ZW5zdXJlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6
OnJ1bndheSk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6dG90YWxTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmg6CisKIDIwMTctMDktMjkgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgZ2lnYWNhZ2Ugb24gaU9T
CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIzMDIwKQorKysgU291cmNlL2Jt
YWxsb2MvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBAIHNldChi
bWFsbG9jX1NPVVJDRVMKICAgICBibWFsbG9jL0FsbG9jYXRvci5jcHAKICAgICBibWFsbG9jL0F2
YWlsYWJsZU1lbW9yeS5jcHAKICAgICBibWFsbG9jL0NhY2hlLmNwcAorICAgIGJtYWxsb2MvQ3J5
cHRvUmFuZG9tLmNwcAogICAgIGJtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCiAgICAgYm1hbGxvYy9E
ZWJ1Z0hlYXAuY3BwCiAgICAgYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAKSW5kZXg6IFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIyMzAyMCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsOCBAQAogCQkwRjVCRjE1MjFGMjJFMTU3
MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNUJGMTUwMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3Bw
ICovOyB9OwogCQkwRjVCRjE1MzFGMjJFMTU3MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE1MTFGMjJFMTU3
MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1QkYxNzMxRjIzQzU3MTAwMjlEOTFEIC8qIEJFeHBvcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3NEI5M0UxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1Jh
bmRvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3
NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5oICovOyB9OworCQkwRjc0Qjkz
RjFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNEMUY4OTcxM0UwMEI5MzVEMyAvKiBD
cnlwdG9SYW5kb20uY3BwICovOyB9OwogCQkwRkQ1NTczMzFGN0VEQjdCMDBCMUYwQTMgLyogSGVh
cEtpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZENTU3MzIxRjdFREI3QjAwQjFGMEEzIC8qIEhlYXBLaW5kLmNwcCAqLzsgfTsKIAkJMTQwMDI3
NDkxOEY4OUMxMzAwMTE1Qzk3IC8qIEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0REEzMjBDMTg4NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDI3NEEx
OEY4OUMyMzAwMTE1Qzk3IC8qIFZNSGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQ0RjdCRkMxOEJGQzUxNzAwMzUzN0YzIC8qIFZNSGVhcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MSw2ICs5
Myw4IEBACiAJCTBGNUJGMTUwMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gU2NhdmVuZ2VyLmNwcDsgcGF0aCA9IGJtYWxsb2MvU2NhdmVuZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNTExRjIyRTE1NzAwMjlEOTFE
IC8qIFNjYXZlbmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY2F2ZW5nZXIuaDsgcGF0aCA9IGJtYWxs
b2MvU2NhdmVuZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJFeHBvcnQuaDsgcGF0
aCA9IGJtYWxsb2MvQkV4cG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc0
QjkzQzFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENyeXB0b1JhbmRvbS5oOyBwYXRoID0gYm1hbGxvYy9DcnlwdG9SYW5k
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NEI5M0QxRjg5NzEzRTAwQjkz
NUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBDcnlwdG9SYW5kb20uY3BwOyBwYXRoID0gYm1hbGxvYy9DcnlwdG9SYW5kb20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ1NTczMjFGN0VEQjdCMDBCMUYwQTMgLyog
SGVhcEtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGVhcEtp
bmQuY3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0MEZBMDAyMTlDRTQyOUMwMEZGRDNDOCAvKiBCdW1wUmFuZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQnVtcFJhbmdlLmg7IHBhdGggPSBibWFsbG9jL0J1
bXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDBGQTAwNDE5Q0U0QjY4
MDBGRkQzQzggLyogTGluZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExpbmVNZXRhZGF0YS5oOyBwYXRoID0gYm1hbGxvYy9MaW5lTWV0YWRhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OCw2ICsyOTIsOCBAQAogCQkJCTBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi8sCiAJCQkJMTQxM0U0NjAxODlEQ0UxRTAwNTQ2
RDY4IC8qIEJJbmxpbmUuaCAqLywKIAkJCQkxNEM5MTlDODE4RkNDNTlGMDAyOERCNDMgLyogQlBs
YXRmb3JtLmggKi8sCisJCQkJMEY3NEI5M0QxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRv
bS5jcHAgKi8sCisJCQkJMEY3NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5o
ICovLAogCQkJCTE0RDlEQjQ1MTdGMjQ0NzEwMEVBQUI3OSAvKiBGaXhlZFZlY3Rvci5oICovLAog
CQkJCTBGRDU1NzMyMUY3RURCN0IwMEIxRjBBMyAvKiBIZWFwS2luZC5jcHAgKi8sCiAJCQkJMEY1
QkYxNDYxRjIyQThCMTAwMjlEOTFEIC8qIEhlYXBLaW5kLmggKi8sCkBAIC0zNDIsNiArMzQ4LDcg
QEAKIAkJCQkxNEM5MTlDOTE4RkNDNTlGMDAyOERCNDMgLyogQlBsYXRmb3JtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NDI2RTI4MzFDODM5NTQ3MDA4RUIwNDIgLyogQlNvZnRMaW5raW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNERENzg5QzE4RjQ4RDRBMDA5NTA3MDIgLyogQnVtcEFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NEI5M0UxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0
b1JhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRkEwMDMxOUNFNDI5QzAwRkZEM0M4IC8q
IEJ1bXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTkxOEY0OEQ0QTAwOTUwNzAy
IC8qIENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdEQzZFMzFDQTVCNzBCMDA3MjRFOEQg
LyogQ2h1bmsuaCBpbiBIZWFkZXJzICovLApAQCAtNDY3LDYgKzQ3NCw3IEBACiAJCQkJMTQyQjQ0
MzYxRTI4MzlFNzAwMURBNkU5IC8qIERlYnVnSGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDg5NUQ5MTFBM0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRGMjcxQzcxOEVBMzk5MDAwOEMxNTJGIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEY3NEI5M0YxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjVCRjE0RjFGMjJERUFGMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ0QzA3RjQxQzdCNzAyNjAwNTFCQjZBIC8qIExhcmdlTWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ0MjZFMjgwMUM4MzhFRTAwMDhFQjA0MiAvKiBMb2dnaW5n
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9S
YW5kb20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFu
ZG9tLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0b1Jh
bmRvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiQ3J5cHRvUmFuZG9tLmgi
CisKKyNpbmNsdWRlICJCQXNzZXJ0LmgiCisjaW5jbHVkZSAiQlBsYXRmb3JtLmgiCisKKyNpZiAh
Qk9TKERBUldJTikKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5j
bHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2lmIEJPUyhEQVJXSU4pCit0eXBlZGVmIHN0cnVj
dCBfX0NDUmFuZG9tKiBDQ1JhbmRvbVJlZjsKKworZXh0ZXJuICJDIiB7CitleHRlcm4gY29uc3Qg
Q0NSYW5kb21SZWYga0NDUmFuZG9tRGVmYXVsdDsKK2ludCBDQ1JhbmRvbUNvcHlCeXRlcyhDQ1Jh
bmRvbVJlZiBybmQsIHZvaWQgKmJ5dGVzLCBzaXplX3QgY291bnQpOworfQorI2VuZGlmCisKK25h
bWVzcGFjZSBibWFsbG9jIHsKKwordm9pZCBjcnlwdG9SYW5kb20odW5zaWduZWQgY2hhciogYnVm
ZmVyLCBzaXplX3QgbGVuZ3RoKQoreworI2lmIEJPUyhEQVJXSU4pCisgICAgUkVMRUFTRV9CQVNT
RVJUKCFDQ1JhbmRvbUNvcHlCeXRlcyhrQ0NSYW5kb21EZWZhdWx0LCBidWZmZXIsIGxlbmd0aCkp
OworI2Vsc2UKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RhdGlj
IGludCBmZDsKKyAgICBzdGQ6OmNhbGxfb25jZSgKKyAgICAgICAgb25jZUZsYWcsCisgICAgICAg
IFtdIHsKKyAgICAgICAgICAgIGludCByZXQgPSAwOworICAgICAgICAgICAgZG8geworICAgICAg
ICAgICAgICAgIHJldCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZLCAwKTsKKyAgICAg
ICAgICAgIH0gd2hpbGUgKHJldCA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7CisgICAgICAgICAg
ICBSRUxFQVNFX0JBU1NFUlQocmV0ID49IDApOworICAgICAgICAgICAgZmQgPSByZXQ7CisgICAg
ICAgIH0pOworICAgIHNzaXplX3QgYW1vdW50UmVhZCA9IDA7CisgICAgd2hpbGUgKHN0YXRpY19j
YXN0PHNpemVfdD4oYW1vdW50UmVhZCkgPCBsZW5ndGgpIHsKKyAgICAgICAgc3NpemVfdCBjdXJy
ZW50UmVhZCA9IHJlYWQoZmQsIGJ1ZmZlciArIGFtb3VudFJlYWQsIGxlbmd0aCAtIGFtb3VudFJl
YWQpOworICAgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBib3RoIEVBR0FJTiBhbmQgRUlO
VFIgc2luY2Ugb24gc29tZSBzeXN0ZW1zIC9kZXYvdXJhbmRvbQorICAgICAgICAvLyBpcyBibG9j
a2luZyBhbmQgb24gb3RoZXJzIGl0IGlzIG5vbi1ibG9ja2luZy4KKyAgICAgICAgaWYgKGN1cnJl
bnRSZWFkID09IC0xKQorICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGVycm5vID09IEVBR0FJ
TiB8fCBlcnJubyA9PSBFSU5UUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFtb3VudFJl
YWQgKz0gY3VycmVudFJlYWQ7CisgICAgfQorI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIGJt
YWxsb2MKKwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9SYW5kb20uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0b1JhbmRvbS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFuZG9tLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVk
ZSA8aW50dHlwZXMuaD4KKworbmFtZXNwYWNlIGJtYWxsb2MgeworCit2b2lkIGNyeXB0b1JhbmRv
bSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOworCit9CisKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCShyZXZpc2lvbiAyMjMwMjApCisrKyBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUs
NyBAQAogCiAjaW5jbHVkZSAiR2lnYWNhZ2UuaCIKIAorI2luY2x1ZGUgIkNyeXB0b1JhbmRvbS5o
IgogI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiUGVyUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIlZNQWxsb2NhdGUuaCIKQEAgLTM2LDE4ICszNywxMyBAQAogI2lmIEJDUFUoQVJNNjQp
CiAvLyBGSVhNRTogVGhlcmUgaXMgbm8gZ29vZCByZWFzb24gZm9yIEFSTTY0IHRvIGJlIHNwZWNp
YWwuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjA1Ci0j
ZGVmaW5lIFBSSU1JVElWRV9HSUdBQ0FHRV9SVU5XQVkgMAorI2RlZmluZSBHSUdBQ0FHRV9SVU5X
QVkgMAogI2Vsc2UKIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyAzMkdCLCBpbiBjYXNl
IHVuc2lnbmVkIDMyLWJpdCBpbmRpY2VzIGZpbmQgdGhlaXIgd2F5IGludG8gaW5kZXhlZCBhY2Nl
c3Nlcy4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUwNjIK
LSNkZWZpbmUgUFJJTUlUSVZFX0dJR0FDQUdFX1JVTldBWSAoMTZsbHUgKiAxMDI0ICogMTAyNCAq
IDEwMjQpCisjZGVmaW5lIEdJR0FDQUdFX1JVTldBWSAoMTZsbHUgKiAxMDI0ICogMTAyNCAqIDEw
MjQpCiAjZW5kaWYKIAotLy8gRklYTUU6IFJlY29uc2lkZXIgdGhpcy4KLS8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5MjEKLSNkZWZpbmUgSlNWQUxVRV9HSUdB
Q0FHRV9SVU5XQVkgMAotI2RlZmluZSBTVFJJTkdfR0lHQUNBR0VfUlVOV0FZIDAKLQogY2hhciBn
X2dpZ2FjYWdlQmFzZVB0cnNbR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkVdIF9fYXR0cmlidXRlX18o
KGFsaWduZWQoR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUpKSk7CiAKIHVzaW5nIG5hbWVzcGFjZSBi
bWFsbG9jOwpAQCAtMTE3LDM4ICsxMTMsNjQgQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAgICAg
ICAgICAgICBpZiAoIXNob3VsZEJlRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7CisgICAgICAgICAgICBL
aW5kIHNodWZmbGVkS2luZHNbbnVtS2luZHNdOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bUtpbmRzOyArK2kpCisgICAgICAgICAgICAgICAgc2h1ZmZsZWRLaW5kc1tp
XSA9IHN0YXRpY19jYXN0PEtpbmQ+KGkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBX
ZSBqdXN0IGdvIGFoZWFkIGFuZCBhc3N1bWUgdGhhdCA2NCBiaXRzIGlzIGVub3VnaCByYW5kb21u
ZXNzLiBUaGF0J3MgdHJpdmlhbGx5IHRydWUgcmlnaHQKKyAgICAgICAgICAgIC8vIG5vdywgYnV0
IHdvdWxkIHN0b3AgYmVpbmcgdHJ1ZSBpZiB3ZSB3ZW50IGNyYXp5IHdpdGggZ2lnYWNhZ2VzLiBC
YXNlZCBvbiBteSBtYXRoLCAyMSBpcyB0aGUKKyAgICAgICAgICAgIC8vIGxhcmdlc3QgdmFsdWUg
b2YgbiBzbyB0aGF0IG4hIDw9IDJeNjQuCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KG51bUtp
bmRzIDw9IDIxLCAidG9vIG1hbnkga2luZHMiKTsKKyAgICAgICAgICAgIHVpbnQ2NF90IHJhbmRv
bTsKKyAgICAgICAgICAgIGNyeXB0b1JhbmRvbShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNo
YXIqPigmcmFuZG9tKSwgc2l6ZW9mKHJhbmRvbSkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtS2luZHM7IGktLTspIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW1pdCA9
IGkgKyAxOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGogPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmFuZG9tICUgbGltaXQpOworICAgICAgICAgICAgICAgIHJhbmRvbSAvPSBsaW1pdDsKKyAg
ICAgICAgICAgICAgICBzdGQ6OnN3YXAoc2h1ZmZsZWRLaW5kc1tpXSwgc2h1ZmZsZWRLaW5kc1tq
XSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAg
ICAgICAgIHByaW50ZigiU2h1ZmZsZWQgZ2lnYWNhZ2VzOiIpOworICAgICAgICAgICAgICAgIGZv
ciAoS2luZCBraW5kIDogc2h1ZmZsZWRLaW5kcykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRm
KCIgJXMiLCBuYW1lKGtpbmQpKTsKKyAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZvckVhY2hLaW5kKAotICAgICAg
ICAgICAgICAgIFsmXSAoS2luZCBraW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghb2sp
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBSYW5kb21pemUgd2hlcmUgdGhpcyBnb2VzLgotICAgICAgICAgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ1Ci0gICAgICAg
ICAgICAgICAgICAgIGJhc2VQdHIoa2luZCkgPSB0cnlWTUFsbG9jYXRlKGFsaWdubWVudChraW5k
KSwgdG90YWxTaXplKGtpbmQpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlUHRyKGtp
bmQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoR0lHQUNBR0VfQUxMT0NBVElPTl9D
QU5fRkFJTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGQVRBTDogQ291bGQg
bm90IGFsbG9jYXRlICVzIGdpZ2FjYWdlLlxuIiwgbmFtZShraW5kKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBCQ1JBU0goKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlcyhi
YXNlUHRyKGtpbmQpLCB0b3RhbFNpemUoa2luZCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICAgICAgZm9yRWFj
aEtpbmQoCi0gICAgICAgICAgICAgICAgICAgIFsmXSAoS2luZCBraW5kKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIWJhc2VQdHIoa2luZCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgICAgICB2bURlYWxsb2NhdGUoYmFzZVB0cihraW5kKSwgdG90YWxTaXplKGtpbmQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVB0cihr
aW5kKSA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGF1dG8gYWxpZ25UbyA9IFtdIChLaW5kIGtpbmQsIHNpemVf
dCB0b3RhbFNpemUpIC0+IHNpemVfdCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJvdW5kVXBU
b011bHRpcGxlT2YoYWxpZ25tZW50KGtpbmQpLCB0b3RhbFNpemUpOworICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIGF1dG8gYnVtcCA9IFtdIChLaW5kIGtpbmQsIHNpemVfdCB0b3RhbFNpemUp
IC0+IHNpemVfdCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSArIHNpemUoa2lu
ZCk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgCisgICAgICAgICAgICBzaXplX3QgdG90
YWxTaXplID0gMDsKKyAgICAgICAgICAgIHNpemVfdCBtYXhBbGlnbm1lbnQgPSAwOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBmb3IgKEtpbmQga2luZCA6IHNodWZmbGVkS2luZHMpIHsKKyAg
ICAgICAgICAgICAgICB0b3RhbFNpemUgPSBidW1wKGtpbmQsIGFsaWduVG8oa2luZCwgdG90YWxT
aXplKSk7CisgICAgICAgICAgICAgICAgbWF4QWxpZ25tZW50ID0gc3RkOjptYXgobWF4QWxpZ25t
ZW50LCBhbGlnbm1lbnQoa2luZCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdG90YWxT
aXplICs9IEdJR0FDQUdFX1JVTldBWTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRklY
TUU6IFJhbmRvbWl6ZSB3aGVyZSB0aGlzIGdvZXMuCisgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ1CisgICAgICAgICAgICB2b2lkKiBi
YXNlID0gdHJ5Vk1BbGxvY2F0ZShtYXhBbGlnbm1lbnQsIHRvdGFsU2l6ZSk7CisgICAgICAgICAg
ICBpZiAoIWJhc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoR0lHQUNBR0VfQUxMT0NBVElPTl9D
QU5fRkFJTCkgeworICAgICAgICAgICAgICAgICAgICB2bURlYWxsb2NhdGUoYmFzZSwgdG90YWxT
aXplKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZBVEFMOiBDb3VsZCBub3QgYWxsb2NhdGUg
Z2lnYWNhZ2UgbWVtb3J5IHdpdGggbWF4QWxpZ25tZW50ID0gJWx1LCB0b3RhbFNpemUgPSAlbHUu
XG4iLCBtYXhBbGlnbm1lbnQsIHRvdGFsU2l6ZSk7CisgICAgICAgICAgICAgICAgQkNSQVNIKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKGJh
c2UsIHRvdGFsU2l6ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNpemVfdCBuZXh0Q2Fn
ZSA9IDA7CisgICAgICAgICAgICBmb3IgKEtpbmQga2luZCA6IHNodWZmbGVkS2luZHMpIHsKKyAg
ICAgICAgICAgICAgICBuZXh0Q2FnZSA9IGFsaWduVG8oa2luZCwgbmV4dENhZ2UpOworICAgICAg
ICAgICAgICAgIGJhc2VQdHIoa2luZCkgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihiYXNlKSAr
IG5leHRDYWdlOworICAgICAgICAgICAgICAgIG5leHRDYWdlID0gYnVtcChraW5kLCBuZXh0Q2Fn
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHByb3RlY3RHaWdh
Y2FnZUJhc2VQdHJzKCk7CkBAIC0xNTcsMjUgKzE3OSw2IEBAIHZvaWQgZW5zdXJlR2lnYWNhZ2Uo
KQogI2VuZGlmIC8vIEdJR0FDQUdFX0VOQUJMRUQKIH0KIAotc2l6ZV90IHJ1bndheShLaW5kIGtp
bmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBQcmltaXRpdmU6Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFBSSU1JVElWRV9HSUdBQ0FHRV9SVU5XQVkpOwot
ICAgIGNhc2UgSlNWYWx1ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oSlNW
QUxVRV9HSUdBQ0FHRV9SVU5XQVkpOwotICAgIGNhc2UgU3RyaW5nOgotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8c2l6ZV90PihTVFJJTkdfR0lHQUNBR0VfUlVOV0FZKTsKLSAgICB9Ci0gICAg
QkNSQVNIKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXNpemVfdCB0b3RhbFNpemUoS2luZCBraW5k
KQotewotICAgIHJldHVybiBzaXplKGtpbmQpICsgcnVud2F5KGtpbmQpOwotfQotCiB2b2lkIGRp
c2FibGVQcmltaXRpdmVHaWdhY2FnZSgpCiB7CiAgICAgZW5zdXJlR2lnYWNhZ2UoKTsKSW5kZXg6
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJKHJldmlzaW9uIDIyMzAyMCkKKysrIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBA
QCBlbnVtIEtpbmQgewogICAgIFN0cmluZwogfTsKIAorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBudW1LaW5kcyA9IDM7CisKIEJFWFBPUlQgdm9pZCBlbnN1cmVHaWdhY2FnZSgpOwogCiBCRVhQ
T1JUIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0xNjQsOSArMTY2LDYgQEAg
QklOTElORSBzaXplX3QgbWFzayhLaW5kIGtpbmQpCiAgICAgcmV0dXJuIEdJR0FDQUdFX1NJWkVf
VE9fTUFTSyhzaXplKGtpbmQpKTsKIH0KIAotc2l6ZV90IHJ1bndheShLaW5kIGtpbmQpOwotc2l6
ZV90IHRvdGFsU2l6ZShLaW5kIGtpbmQpOwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9p
ZCBmb3JFYWNoS2luZChjb25zdCBGdW5jJiBmdW5jKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323118</attachid>
            <date>2017-10-07 20:33:31 -0700</date>
            <delta_ts>2017-10-07 20:34:47 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16580</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzAyMSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA3ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG9uZSB2aXJ0dWFsIGFsbG9j
YXRpb24gZm9yIGFsbCBnaWdhY2FnZXMgYW5kIHRoZWlyIHJ1bndheXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODA1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6
CisgICAgICAgIChHaWdhY2FnZTo6ZW5zdXJlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6
OnJ1bndheSk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6dG90YWxTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmg6CisKIDIwMTctMDktMjkgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgZ2lnYWNhZ2Ugb24gaU9T
CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIzMDIwKQorKysgU291cmNlL2Jt
YWxsb2MvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBAIHNldChi
bWFsbG9jX1NPVVJDRVMKICAgICBibWFsbG9jL0FsbG9jYXRvci5jcHAKICAgICBibWFsbG9jL0F2
YWlsYWJsZU1lbW9yeS5jcHAKICAgICBibWFsbG9jL0NhY2hlLmNwcAorICAgIGJtYWxsb2MvQ3J5
cHRvUmFuZG9tLmNwcAogICAgIGJtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCiAgICAgYm1hbGxvYy9E
ZWJ1Z0hlYXAuY3BwCiAgICAgYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAKSW5kZXg6IFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIyMzAyMCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsOCBAQAogCQkwRjVCRjE1MjFGMjJFMTU3
MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNUJGMTUwMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3Bw
ICovOyB9OwogCQkwRjVCRjE1MzFGMjJFMTU3MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE1MTFGMjJFMTU3
MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1QkYxNzMxRjIzQzU3MTAwMjlEOTFEIC8qIEJFeHBvcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3NEI5M0UxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1Jh
bmRvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3
NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5oICovOyB9OworCQkwRjc0Qjkz
RjFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNEMUY4OTcxM0UwMEI5MzVEMyAvKiBD
cnlwdG9SYW5kb20uY3BwICovOyB9OwogCQkwRkQ1NTczMzFGN0VEQjdCMDBCMUYwQTMgLyogSGVh
cEtpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZENTU3MzIxRjdFREI3QjAwQjFGMEEzIC8qIEhlYXBLaW5kLmNwcCAqLzsgfTsKIAkJMTQwMDI3
NDkxOEY4OUMxMzAwMTE1Qzk3IC8qIEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0REEzMjBDMTg4NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDI3NEEx
OEY4OUMyMzAwMTE1Qzk3IC8qIFZNSGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQ0RjdCRkMxOEJGQzUxNzAwMzUzN0YzIC8qIFZNSGVhcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MSw2ICs5
Myw4IEBACiAJCTBGNUJGMTUwMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gU2NhdmVuZ2VyLmNwcDsgcGF0aCA9IGJtYWxsb2MvU2NhdmVuZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNTExRjIyRTE1NzAwMjlEOTFE
IC8qIFNjYXZlbmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY2F2ZW5nZXIuaDsgcGF0aCA9IGJtYWxs
b2MvU2NhdmVuZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJFeHBvcnQuaDsgcGF0
aCA9IGJtYWxsb2MvQkV4cG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc0
QjkzQzFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENyeXB0b1JhbmRvbS5oOyBwYXRoID0gYm1hbGxvYy9DcnlwdG9SYW5k
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NEI5M0QxRjg5NzEzRTAwQjkz
NUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBDcnlwdG9SYW5kb20uY3BwOyBwYXRoID0gYm1hbGxvYy9DcnlwdG9SYW5kb20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ1NTczMjFGN0VEQjdCMDBCMUYwQTMgLyog
SGVhcEtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGVhcEtp
bmQuY3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0MEZBMDAyMTlDRTQyOUMwMEZGRDNDOCAvKiBCdW1wUmFuZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQnVtcFJhbmdlLmg7IHBhdGggPSBibWFsbG9jL0J1
bXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDBGQTAwNDE5Q0U0QjY4
MDBGRkQzQzggLyogTGluZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExpbmVNZXRhZGF0YS5oOyBwYXRoID0gYm1hbGxvYy9MaW5lTWV0YWRhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OCw2ICsyOTIsOCBAQAogCQkJCTBGNUJGMTcyMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi8sCiAJCQkJMTQxM0U0NjAxODlEQ0UxRTAwNTQ2
RDY4IC8qIEJJbmxpbmUuaCAqLywKIAkJCQkxNEM5MTlDODE4RkNDNTlGMDAyOERCNDMgLyogQlBs
YXRmb3JtLmggKi8sCisJCQkJMEY3NEI5M0QxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRv
bS5jcHAgKi8sCisJCQkJMEY3NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5o
ICovLAogCQkJCTE0RDlEQjQ1MTdGMjQ0NzEwMEVBQUI3OSAvKiBGaXhlZFZlY3Rvci5oICovLAog
CQkJCTBGRDU1NzMyMUY3RURCN0IwMEIxRjBBMyAvKiBIZWFwS2luZC5jcHAgKi8sCiAJCQkJMEY1
QkYxNDYxRjIyQThCMTAwMjlEOTFEIC8qIEhlYXBLaW5kLmggKi8sCkBAIC0zNDIsNiArMzQ4LDcg
QEAKIAkJCQkxNEM5MTlDOTE4RkNDNTlGMDAyOERCNDMgLyogQlBsYXRmb3JtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NDI2RTI4MzFDODM5NTQ3MDA4RUIwNDIgLyogQlNvZnRMaW5raW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNERENzg5QzE4RjQ4RDRBMDA5NTA3MDIgLyogQnVtcEFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NEI5M0UxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0
b1JhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRkEwMDMxOUNFNDI5QzAwRkZEM0M4IC8q
IEJ1bXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTkxOEY0OEQ0QTAwOTUwNzAy
IC8qIENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdEQzZFMzFDQTVCNzBCMDA3MjRFOEQg
LyogQ2h1bmsuaCBpbiBIZWFkZXJzICovLApAQCAtNDY3LDYgKzQ3NCw3IEBACiAJCQkJMTQyQjQ0
MzYxRTI4MzlFNzAwMURBNkU5IC8qIERlYnVnSGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDg5NUQ5MTFBM0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRGMjcxQzcxOEVBMzk5MDAwOEMxNTJGIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEY3NEI5M0YxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjVCRjE0RjFGMjJERUFGMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ0QzA3RjQxQzdCNzAyNjAwNTFCQjZBIC8qIExhcmdlTWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ0MjZFMjgwMUM4MzhFRTAwMDhFQjA0MiAvKiBMb2dnaW5n
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9S
YW5kb20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFu
ZG9tLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0b1Jh
bmRvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiQ3J5cHRvUmFuZG9tLmgi
CisKKyNpbmNsdWRlICJCQXNzZXJ0LmgiCisjaW5jbHVkZSAiQlBsYXRmb3JtLmgiCisjaW5jbHVk
ZSA8bXV0ZXg+CisKKyNpZiAhQk9TKERBUldJTikKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1
ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2lmIEJPUyhEQVJX
SU4pCit0eXBlZGVmIHN0cnVjdCBfX0NDUmFuZG9tKiBDQ1JhbmRvbVJlZjsKKworZXh0ZXJuICJD
IiB7CitleHRlcm4gY29uc3QgQ0NSYW5kb21SZWYga0NDUmFuZG9tRGVmYXVsdDsKK2ludCBDQ1Jh
bmRvbUNvcHlCeXRlcyhDQ1JhbmRvbVJlZiBybmQsIHZvaWQgKmJ5dGVzLCBzaXplX3QgY291bnQp
OworfQorI2VuZGlmCisKK25hbWVzcGFjZSBibWFsbG9jIHsKKwordm9pZCBjcnlwdG9SYW5kb20o
dW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQoreworI2lmIEJPUyhEQVJXSU4p
CisgICAgUkVMRUFTRV9CQVNTRVJUKCFDQ1JhbmRvbUNvcHlCeXRlcyhrQ0NSYW5kb21EZWZhdWx0
LCBidWZmZXIsIGxlbmd0aCkpOworI2Vsc2UKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CisgICAgc3RhdGljIGludCBmZDsKKyAgICBzdGQ6OmNhbGxfb25jZSgKKyAgICAgICAg
b25jZUZsYWcsCisgICAgICAgIFtdIHsKKyAgICAgICAgICAgIGludCByZXQgPSAwOworICAgICAg
ICAgICAgZG8geworICAgICAgICAgICAgICAgIHJldCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9f
UkRPTkxZLCAwKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHJldCA9PSAtMSAmJiBlcnJubyA9PSBF
SU5UUik7CisgICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQocmV0ID49IDApOworICAgICAgICAg
ICAgZmQgPSByZXQ7CisgICAgICAgIH0pOworICAgIHNzaXplX3QgYW1vdW50UmVhZCA9IDA7Cisg
ICAgd2hpbGUgKHN0YXRpY19jYXN0PHNpemVfdD4oYW1vdW50UmVhZCkgPCBsZW5ndGgpIHsKKyAg
ICAgICAgc3NpemVfdCBjdXJyZW50UmVhZCA9IHJlYWQoZmQsIGJ1ZmZlciArIGFtb3VudFJlYWQs
IGxlbmd0aCAtIGFtb3VudFJlYWQpOworICAgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBi
b3RoIEVBR0FJTiBhbmQgRUlOVFIgc2luY2Ugb24gc29tZSBzeXN0ZW1zIC9kZXYvdXJhbmRvbQor
ICAgICAgICAvLyBpcyBibG9ja2luZyBhbmQgb24gb3RoZXJzIGl0IGlzIG5vbi1ibG9ja2luZy4K
KyAgICAgICAgaWYgKGN1cnJlbnRSZWFkID09IC0xKQorICAgICAgICAgICAgUkVMRUFTRV9CQVNT
RVJUKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGFtb3VudFJlYWQgKz0gY3VycmVudFJlYWQ7CisgICAgfQorI2VuZGlmCit9CisK
K30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKKwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9D
cnlwdG9SYW5kb20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0
b1JhbmRvbS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRv
UmFuZG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PGNzdGRkZWY+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKworbmFtZXNwYWNlIGJtYWxsb2Mgewor
Cit2b2lkIGNyeXB0b1JhbmRvbSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgp
OworCit9CisKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCShyZXZpc2lvbiAy
MjMwMjApCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiR2lnYWNhZ2UuaCIKIAorI2luY2x1
ZGUgIkNyeXB0b1JhbmRvbS5oIgogI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
UGVyUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlZNQWxsb2NhdGUuaCIKQEAgLTM2LDE4ICszNywxMyBA
QAogI2lmIEJDUFUoQVJNNjQpCiAvLyBGSVhNRTogVGhlcmUgaXMgbm8gZ29vZCByZWFzb24gZm9y
IEFSTTY0IHRvIGJlIHNwZWNpYWwuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc3NjA1Ci0jZGVmaW5lIFBSSU1JVElWRV9HSUdBQ0FHRV9SVU5XQVkgMAorI2Rl
ZmluZSBHSUdBQ0FHRV9SVU5XQVkgMAogI2Vsc2UKIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcg
dGhpcyAzMkdCLCBpbiBjYXNlIHVuc2lnbmVkIDMyLWJpdCBpbmRpY2VzIGZpbmQgdGhlaXIgd2F5
IGludG8gaW5kZXhlZCBhY2Nlc3Nlcy4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUwNjIKLSNkZWZpbmUgUFJJTUlUSVZFX0dJR0FDQUdFX1JVTldBWSAoMTZs
bHUgKiAxMDI0ICogMTAyNCAqIDEwMjQpCisjZGVmaW5lIEdJR0FDQUdFX1JVTldBWSAoMTZsbHUg
KiAxMDI0ICogMTAyNCAqIDEwMjQpCiAjZW5kaWYKIAotLy8gRklYTUU6IFJlY29uc2lkZXIgdGhp
cy4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5MjEKLSNk
ZWZpbmUgSlNWQUxVRV9HSUdBQ0FHRV9SVU5XQVkgMAotI2RlZmluZSBTVFJJTkdfR0lHQUNBR0Vf
UlVOV0FZIDAKLQogY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbR0lHQUNBR0VfQkFTRV9QVFJTX1NJ
WkVdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUpKSk7CiAK
IHVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwpAQCAtMTE3LDM4ICsxMTMsNTcgQEAgdm9pZCBlbnN1
cmVHaWdhY2FnZSgpCiAgICAgICAgICAgICBpZiAoIXNob3VsZEJlRW5hYmxlZCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBvayA9IHRy
dWU7CisgICAgICAgICAgICBLaW5kIHNodWZmbGVkS2luZHNbbnVtS2luZHNdOworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUtpbmRzOyArK2kpCisgICAgICAgICAgICAg
ICAgc2h1ZmZsZWRLaW5kc1tpXSA9IHN0YXRpY19jYXN0PEtpbmQ+KGkpOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBXZSBqdXN0IGdvIGFoZWFkIGFuZCBhc3N1bWUgdGhhdCA2NCBiaXRz
IGlzIGVub3VnaCByYW5kb21uZXNzLiBUaGF0J3MgdHJpdmlhbGx5IHRydWUgcmlnaHQKKyAgICAg
ICAgICAgIC8vIG5vdywgYnV0IHdvdWxkIHN0b3AgYmVpbmcgdHJ1ZSBpZiB3ZSB3ZW50IGNyYXp5
IHdpdGggZ2lnYWNhZ2VzLiBCYXNlZCBvbiBteSBtYXRoLCAyMSBpcyB0aGUKKyAgICAgICAgICAg
IC8vIGxhcmdlc3QgdmFsdWUgb2YgbiBzbyB0aGF0IG4hIDw9IDJeNjQuCisgICAgICAgICAgICBz
dGF0aWNfYXNzZXJ0KG51bUtpbmRzIDw9IDIxLCAidG9vIG1hbnkga2luZHMiKTsKKyAgICAgICAg
ICAgIHVpbnQ2NF90IHJhbmRvbTsKKyAgICAgICAgICAgIGNyeXB0b1JhbmRvbShyZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmcmFuZG9tKSwgc2l6ZW9mKHJhbmRvbSkpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtS2luZHM7IGktLTspIHsKKyAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsaW1pdCA9IGkgKyAxOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGogPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tICUgbGltaXQpOworICAgICAgICAgICAgICAgIHJh
bmRvbSAvPSBsaW1pdDsKKyAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoc2h1ZmZsZWRLaW5kc1tp
XSwgc2h1ZmZsZWRLaW5kc1tqXSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8g
YWxpZ25UbyA9IFtdIChLaW5kIGtpbmQsIHNpemVfdCB0b3RhbFNpemUpIC0+IHNpemVfdCB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25tZW50KGtpbmQp
LCB0b3RhbFNpemUpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gYnVtcCA9IFtd
IChLaW5kIGtpbmQsIHNpemVfdCB0b3RhbFNpemUpIC0+IHNpemVfdCB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRvdGFsU2l6ZSArIHNpemUoa2luZCk7CisgICAgICAgICAgICB9OworICAgICAg
ICAgICAgCisgICAgICAgICAgICBzaXplX3QgdG90YWxTaXplID0gMDsKKyAgICAgICAgICAgIHNp
emVfdCBtYXhBbGlnbm1lbnQgPSAwOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKEtp
bmQga2luZCA6IHNodWZmbGVkS2luZHMpIHsKKyAgICAgICAgICAgICAgICB0b3RhbFNpemUgPSBi
dW1wKGtpbmQsIGFsaWduVG8oa2luZCwgdG90YWxTaXplKSk7CisgICAgICAgICAgICAgICAgbWF4
QWxpZ25tZW50ID0gc3RkOjptYXgobWF4QWxpZ25tZW50LCBhbGlnbm1lbnQoa2luZCkpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgdG90YWxTaXplICs9IEdJR0FDQUdFX1JVTldBWTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgLy8gRklYTUU6IFJhbmRvbWl6ZSB3aGVyZSB0aGlzIGdv
ZXMuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1MjQ1CisgICAgICAgICAgICB2b2lkKiBiYXNlID0gdHJ5Vk1BbGxvY2F0ZShtYXhBbGln
bm1lbnQsIHRvdGFsU2l6ZSk7CisgICAgICAgICAgICBpZiAoIWJhc2UpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCkgeworICAgICAgICAgICAgICAg
ICAgICB2bURlYWxsb2NhdGUoYmFzZSwgdG90YWxTaXplKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkZBVEFMOiBDb3VsZCBub3QgYWxsb2NhdGUgZ2lnYWNhZ2UgbWVtb3J5IHdpdGggbWF4QWxp
Z25tZW50ID0gJWx1LCB0b3RhbFNpemUgPSAlbHUuXG4iLCBtYXhBbGlnbm1lbnQsIHRvdGFsU2l6
ZSk7CisgICAgICAgICAgICAgICAgQkNSQVNIKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKGJhc2UsIHRvdGFsU2l6ZSk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGZvckVhY2hLaW5kKAotICAgICAgICAgICAgICAgIFsmXSAoS2luZCBr
aW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghb2spCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSYW5kb21pemUgd2hl
cmUgdGhpcyBnb2VzLgotICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ1Ci0gICAgICAgICAgICAgICAgICAgIGJhc2VQdHIo
a2luZCkgPSB0cnlWTUFsbG9jYXRlKGFsaWdubWVudChraW5kKSwgdG90YWxTaXplKGtpbmQpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlUHRyKGtpbmQpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9rID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJGQVRBTDogQ291bGQgbm90IGFsbG9jYXRlICVzIGdpZ2Fj
YWdlLlxuIiwgbmFtZShraW5kKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBCQ1JBU0goKTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlcyhiYXNlUHRyKGtpbmQpLCB0b3RhbFNp
emUoa2luZCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICAgICAgZm9yRWFjaEtpbmQoCi0gICAgICAgICAgICAg
ICAgICAgIFsmXSAoS2luZCBraW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJh
c2VQdHIoa2luZCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICB2bURlYWxsb2NhdGUo
YmFzZVB0cihraW5kKSwgdG90YWxTaXplKGtpbmQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVB0cihraW5kKSA9IG51bGxwdHI7Ci0gICAg
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IHNpemVfdCBuZXh0Q2FnZSA9IDA7CisgICAgICAgICAgICBmb3IgKEtpbmQga2luZCA6IHNodWZm
bGVkS2luZHMpIHsKKyAgICAgICAgICAgICAgICBuZXh0Q2FnZSA9IGFsaWduVG8oa2luZCwgbmV4
dENhZ2UpOworICAgICAgICAgICAgICAgIGJhc2VQdHIoa2luZCkgPSByZWludGVycHJldF9jYXN0
PGNoYXIqPihiYXNlKSArIG5leHRDYWdlOworICAgICAgICAgICAgICAgIG5leHRDYWdlID0gYnVt
cChraW5kLCBuZXh0Q2FnZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIHByb3RlY3RHaWdhY2FnZUJhc2VQdHJzKCk7CkBAIC0xNTcsMjUgKzE3Miw2IEBAIHZvaWQg
ZW5zdXJlR2lnYWNhZ2UoKQogI2VuZGlmIC8vIEdJR0FDQUdFX0VOQUJMRUQKIH0KIAotc2l6ZV90
IHJ1bndheShLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBQcmlt
aXRpdmU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFBSSU1JVElWRV9HSUdB
Q0FHRV9SVU5XQVkpOwotICAgIGNhc2UgSlNWYWx1ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHNpemVfdD4oSlNWQUxVRV9HSUdBQ0FHRV9SVU5XQVkpOwotICAgIGNhc2UgU3RyaW5nOgot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihTVFJJTkdfR0lHQUNBR0VfUlVOV0FZ
KTsKLSAgICB9Ci0gICAgQkNSQVNIKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXNpemVfdCB0b3Rh
bFNpemUoS2luZCBraW5kKQotewotICAgIHJldHVybiBzaXplKGtpbmQpICsgcnVud2F5KGtpbmQp
OwotfQotCiB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpCiB7CiAgICAgZW5zdXJlR2ln
YWNhZ2UoKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJKHJldmlzaW9uIDIyMzAy
MCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtODMsNiArODMsOCBAQCBlbnVtIEtpbmQgewogICAgIFN0cmluZwogfTsKIAorc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBudW1LaW5kcyA9IDM7CisKIEJFWFBPUlQgdm9pZCBlbnN1cmVHaWdh
Y2FnZSgpOwogCiBCRVhQT1JUIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CkBAIC0x
NjQsOSArMTY2LDYgQEAgQklOTElORSBzaXplX3QgbWFzayhLaW5kIGtpbmQpCiAgICAgcmV0dXJu
IEdJR0FDQUdFX1NJWkVfVE9fTUFTSyhzaXplKGtpbmQpKTsKIH0KIAotc2l6ZV90IHJ1bndheShL
aW5kIGtpbmQpOwotc2l6ZV90IHRvdGFsU2l6ZShLaW5kIGtpbmQpOwotCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgogdm9pZCBmb3JFYWNoS2luZChjb25zdCBGdW5jJiBmdW5jKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323119</attachid>
            <date>2017-10-07 20:34:47 -0700</date>
            <delta_ts>2017-10-09 20:43:12 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16608</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzAyNykKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA3ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG9uZSB2aXJ0dWFsIGFsbG9j
YXRpb24gZm9yIGFsbCBnaWdhY2FnZXMgYW5kIHRoZWlyIHJ1bndheXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODA1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6
CisgICAgICAgIChHaWdhY2FnZTo6ZW5zdXJlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6
OnJ1bndheSk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6dG90YWxTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmg6CisKIDIwMTctMTAtMDcgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZGlz
YWJsZSBHaWdhY2FnZSBvbiBBUk02NCBMaW51eApJbmRleDogU291cmNlL2JtYWxsb2MvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDIyMzAyNykKKysrIFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC04LDYgKzgsNyBAQCBzZXQoYm1hbGxvY19TT1VSQ0VTCiAgICAgYm1hbGxvYy9B
bGxvY2F0b3IuY3BwCiAgICAgYm1hbGxvYy9BdmFpbGFibGVNZW1vcnkuY3BwCiAgICAgYm1hbGxv
Yy9DYWNoZS5jcHAKKyAgICBibWFsbG9jL0NyeXB0b1JhbmRvbS5jcHAKICAgICBibWFsbG9jL0Rl
YWxsb2NhdG9yLmNwcAogICAgIGJtYWxsb2MvRGVidWdIZWFwLmNwcAogICAgIGJtYWxsb2MvRW52
aXJvbm1lbnQuY3BwCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjMwMjcpCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1LDYg
KzE1LDggQEAKIAkJMEY1QkYxNTIxRjIyRTE1NzAwMjlEOTFEIC8qIFNjYXZlbmdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE1MDFGMjJF
MTU3MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCAqLzsgfTsKIAkJMEY1QkYxNTMxRjIyRTE1NzAw
MjlEOTFEIC8qIFNjYXZlbmdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1QkYxNTExRjIyRTE1NzAwMjlEOTFEIC8qIFNjYXZlbmdlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUJGMTczMUYy
M0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE3MjFGMjNDNTcxMDAyOUQ5MUQgLyogQkV4cG9ydC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNzRCOTNF
MUY4OTcxM0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNDMUY4OTcxM0UwMEI5MzVEMyAvKiBDcnlw
dG9SYW5kb20uaCAqLzsgfTsKKwkJMEY3NEI5M0YxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1Jh
bmRvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
Rjc0QjkzRDFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCAqLzsgfTsKIAkJMEZE
NTU3MzMxRjdFREI3QjAwQjFGMEEzIC8qIEhlYXBLaW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDU1NzMyMUY3RURCN0IwMEIxRjBBMyAvKiBI
ZWFwS2luZC5jcHAgKi87IH07CiAJCTE0MDAyNzQ5MThGODlDMTMwMDExNUM5NyAvKiBIZWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERBMzIwQzE4
ODc1QjA5MDA3MjY5RTAgLyogSGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTE0MDAyNzRBMThGODlDMjMwMDExNUM5NyAvKiBWTUhlYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NEY3QkZDMThC
RkM1MTcwMDM1MzdGMyAvKiBWTUhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTEsNiArOTMsOCBAQAogCQkwRjVCRjE1MDFGMjJFMTU3MDAy
OUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNjYXZlbmdlci5jcHA7
IHBhdGggPSBibWFsbG9jL1NjYXZlbmdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNUJGMTUxMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gU2NhdmVuZ2VyLmg7IHBhdGggPSBibWFsbG9jL1NjYXZlbmdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjVCRjE3MjFGMjNDNTcxMDAyOUQ5MUQgLyogQkV4cG9ydC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBCRXhwb3J0Lmg7IHBhdGggPSBibWFsbG9jL0JFeHBvcnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0
b1JhbmRvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDcnlwdG9SYW5kb20u
aDsgcGF0aCA9IGJtYWxsb2MvQ3J5cHRvUmFuZG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNzRCOTNEMUY4OTcxM0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3J5cHRvUmFuZG9tLmNwcDsgcGF0aCA9
IGJtYWxsb2MvQ3J5cHRvUmFuZG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZENTU3MzIxRjdFREI3QjAwQjFGMEEzIC8qIEhlYXBLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhlYXBLaW5kLmNwcDsgcGF0aCA9IGJtYWxsb2MvSGVhcEtp
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDBGQTAwMjE5Q0U0MjlDMDBG
RkQzQzggLyogQnVtcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJ1
bXBSYW5nZS5oOyBwYXRoID0gYm1hbGxvYy9CdW1wUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTQwRkEwMDQxOUNFNEI2ODAwRkZEM0M4IC8qIExpbmVNZXRhZGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaW5lTWV0YWRhdGEuaDsgcGF0aCA9IGJt
YWxsb2MvTGluZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODgs
NiArMjkyLDggQEAKIAkJCQkwRjVCRjE3MjFGMjNDNTcxMDAyOUQ5MUQgLyogQkV4cG9ydC5oICov
LAogCQkJCTE0MTNFNDYwMTg5RENFMUUwMDU0NkQ2OCAvKiBCSW5saW5lLmggKi8sCiAJCQkJMTRD
OTE5QzgxOEZDQzU5RjAwMjhEQjQzIC8qIEJQbGF0Zm9ybS5oICovLAorCQkJCTBGNzRCOTNEMUY4
OTcxM0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uY3BwICovLAorCQkJCTBGNzRCOTNDMUY4OTcx
M0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uaCAqLywKIAkJCQkxNEQ5REI0NTE3RjI0NDcxMDBF
QUFCNzkgLyogRml4ZWRWZWN0b3IuaCAqLywKIAkJCQkwRkQ1NTczMjFGN0VEQjdCMDBCMUYwQTMg
LyogSGVhcEtpbmQuY3BwICovLAogCQkJCTBGNUJGMTQ2MUYyMkE4QjEwMDI5RDkxRCAvKiBIZWFw
S2luZC5oICovLApAQCAtMzQyLDYgKzM0OCw3IEBACiAJCQkJMTRDOTE5QzkxOEZDQzU5RjAwMjhE
QjQzIC8qIEJQbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQyNkUyODMxQzgzOTU0NzAw
OEVCMDQyIC8qIEJTb2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OUMxOEY0
OEQ0QTAwOTUwNzAyIC8qIEJ1bXBBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNzRC
OTNFMUY4OTcxM0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0MEZBMDAzMTlDRTQyOUMwMEZGRDNDOCAvKiBCdW1wUmFuZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0REQ3ODk5MThGNDhENEEwMDk1MDcwMiAvKiBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ3REM2RTMxQ0E1QjcwQjAwNzI0RThEIC8qIENodW5rLmggaW4gSGVhZGVycyAqLywKQEAg
LTQ2Nyw2ICs0NzQsNyBAQAogCQkJCTE0MkI0NDM2MUUyODM5RTcwMDFEQTZFOSAvKiBEZWJ1Z0hl
YXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4OTVEOTExQTNBMzE5QzAwMDYyMzVEIC8qIEVu
dmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RjI3MUM3MThFQTM5OTAwMDhDMTUy
RiAvKiBIZWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNzRCOTNGMUY4OTcxM0UwMEI5MzVE
MyAvKiBDcnlwdG9SYW5kb20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1QkYxNEYxRjIyREVB
RjAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NEMwN0Y0MUM3
QjcwMjYwMDUxQkI2QSAvKiBMYXJnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NDI2RTI4
MDFDODM4RUUwMDA4RUIwNDIgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFuZG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0b1JhbmRvbS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9SYW5kb20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgIkNyeXB0b1JhbmRvbS5oIgorCisjaW5jbHVkZSAiQkFzc2VydC5oIgorI2lu
Y2x1ZGUgIkJQbGF0Zm9ybS5oIgorI2luY2x1ZGUgPG11dGV4PgorCisjaWYgIUJPUyhEQVJXSU4p
CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHVuaXN0
ZC5oPgorI2VuZGlmCisKKyNpZiBCT1MoREFSV0lOKQordHlwZWRlZiBzdHJ1Y3QgX19DQ1JhbmRv
bSogQ0NSYW5kb21SZWY7CisKK2V4dGVybiAiQyIgeworZXh0ZXJuIGNvbnN0IENDUmFuZG9tUmVm
IGtDQ1JhbmRvbURlZmF1bHQ7CitpbnQgQ0NSYW5kb21Db3B5Qnl0ZXMoQ0NSYW5kb21SZWYgcm5k
LCB2b2lkICpieXRlcywgc2l6ZV90IGNvdW50KTsKK30KKyNlbmRpZgorCituYW1lc3BhY2UgYm1h
bGxvYyB7CisKK3ZvaWQgY3J5cHRvUmFuZG9tKHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6ZV90
IGxlbmd0aCkKK3sKKyNpZiBCT1MoREFSV0lOKQorICAgIFJFTEVBU0VfQkFTU0VSVCghQ0NSYW5k
b21Db3B5Qnl0ZXMoa0NDUmFuZG9tRGVmYXVsdCwgYnVmZmVyLCBsZW5ndGgpKTsKKyNlbHNlCisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0YXRpYyBpbnQgZmQ7Cisg
ICAgc3RkOjpjYWxsX29uY2UoCisgICAgICAgIG9uY2VGbGFnLAorICAgICAgICBbXSB7CisgICAg
ICAgICAgICBpbnQgcmV0ID0gMDsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBy
ZXQgPSBvcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSwgMCk7CisgICAgICAgICAgICB9IHdo
aWxlIChyZXQgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpOworICAgICAgICAgICAgUkVMRUFTRV9C
QVNTRVJUKHJldCA+PSAwKTsKKyAgICAgICAgICAgIGZkID0gcmV0OworICAgICAgICB9KTsKKyAg
ICBzc2l6ZV90IGFtb3VudFJlYWQgPSAwOworICAgIHdoaWxlIChzdGF0aWNfY2FzdDxzaXplX3Q+
KGFtb3VudFJlYWQpIDwgbGVuZ3RoKSB7CisgICAgICAgIHNzaXplX3QgY3VycmVudFJlYWQgPSBy
ZWFkKGZkLCBidWZmZXIgKyBhbW91bnRSZWFkLCBsZW5ndGggLSBhbW91bnRSZWFkKTsKKyAgICAg
ICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3IgYm90aCBFQUdBSU4gYW5kIEVJTlRSIHNpbmNlIG9u
IHNvbWUgc3lzdGVtcyAvZGV2L3VyYW5kb20KKyAgICAgICAgLy8gaXMgYmxvY2tpbmcgYW5kIG9u
IG90aGVycyBpdCBpcyBub24tYmxvY2tpbmcuCisgICAgICAgIGlmIChjdXJyZW50UmVhZCA9PSAt
MSkKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8g
PT0gRUlOVFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhbW91bnRSZWFkICs9IGN1cnJl
bnRSZWFkOworICAgIH0KKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBibWFsbG9jCisKSW5k
ZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFuZG9tLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9SYW5kb20uaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0b1JhbmRvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGludHR5cGVz
Lmg+CisKK25hbWVzcGFjZSBibWFsbG9jIHsKKwordm9pZCBjcnlwdG9SYW5kb20odW5zaWduZWQg
Y2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKTsKKworfQorCkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0dpZ2FjYWdlLmNwcAkocmV2aXNpb24gMjIzMDI3KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9HaWdhY2FnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgIkdpZ2FjYWdlLmgiCiAKKyNpbmNsdWRlICJDcnlwdG9SYW5kb20uaCIKICNpbmNsdWRl
ICJFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlBlclByb2Nlc3MuaCIKICNpbmNsdWRlICJWTUFs
bG9jYXRlLmgiCkBAIC0zNiwxOCArMzcsMTMgQEAKICNpZiBCQ1BVKEFSTTY0KQogLy8gRklYTUU6
IFRoZXJlIGlzIG5vIGdvb2QgcmVhc29uIGZvciBBUk02NCB0byBiZSBzcGVjaWFsLgogLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzYwNQotI2RlZmluZSBQUklN
SVRJVkVfR0lHQUNBR0VfUlVOV0FZIDAKKyNkZWZpbmUgR0lHQUNBR0VfUlVOV0FZIDAKICNlbHNl
CiAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgMzJHQiwgaW4gY2FzZSB1bnNpZ25lZCAz
Mi1iaXQgaW5kaWNlcyBmaW5kIHRoZWlyIHdheSBpbnRvIGluZGV4ZWQgYWNjZXNzZXMuCiAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDYyCi0jZGVmaW5lIFBS
SU1JVElWRV9HSUdBQ0FHRV9SVU5XQVkgKDE2bGx1ICogMTAyNCAqIDEwMjQgKiAxMDI0KQorI2Rl
ZmluZSBHSUdBQ0FHRV9SVU5XQVkgKDE2bGx1ICogMTAyNCAqIDEwMjQgKiAxMDI0KQogI2VuZGlm
CiAKLS8vIEZJWE1FOiBSZWNvbnNpZGVyIHRoaXMuCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1OTIxCi0jZGVmaW5lIEpTVkFMVUVfR0lHQUNBR0VfUlVOV0FZ
IDAKLSNkZWZpbmUgU1RSSU5HX0dJR0FDQUdFX1JVTldBWSAwCi0KIGNoYXIgZ19naWdhY2FnZUJh
c2VQdHJzW0dJR0FDQUdFX0JBU0VfUFRSU19TSVpFXSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKEdJ
R0FDQUdFX0JBU0VfUFRSU19TSVpFKSkpOwogCiB1c2luZyBuYW1lc3BhY2UgYm1hbGxvYzsKQEAg
LTExNywzOCArMTEzLDU3IEBAIHZvaWQgZW5zdXJlR2lnYWNhZ2UoKQogICAgICAgICAgICAgaWYg
KCFzaG91bGRCZUVuYWJsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICAgICAgICAgS2luZCBzaHVmZmxl
ZEtpbmRzW251bUtpbmRzXTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1LaW5kczsgKytpKQorICAgICAgICAgICAgICAgIHNodWZmbGVkS2luZHNbaV0gPSBzdGF0aWNf
Y2FzdDxLaW5kPihpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2UganVzdCBnbyBh
aGVhZCBhbmQgYXNzdW1lIHRoYXQgNjQgYml0cyBpcyBlbm91Z2ggcmFuZG9tbmVzcy4gVGhhdCdz
IHRyaXZpYWxseSB0cnVlIHJpZ2h0CisgICAgICAgICAgICAvLyBub3csIGJ1dCB3b3VsZCBzdG9w
IGJlaW5nIHRydWUgaWYgd2Ugd2VudCBjcmF6eSB3aXRoIGdpZ2FjYWdlcy4gQmFzZWQgb24gbXkg
bWF0aCwgMjEgaXMgdGhlCisgICAgICAgICAgICAvLyBsYXJnZXN0IHZhbHVlIG9mIG4gc28gdGhh
dCBuISA8PSAyXjY0LgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChudW1LaW5kcyA8PSAyMSwg
InRvbyBtYW55IGtpbmRzIik7CisgICAgICAgICAgICB1aW50NjRfdCByYW5kb207CisgICAgICAg
ICAgICBjcnlwdG9SYW5kb20ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJnJhbmRv
bSksIHNpemVvZihyYW5kb20pKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUtp
bmRzOyBpLS07KSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbGltaXQgPSBpICsgMTsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBqID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmRvbSAl
IGxpbWl0KTsKKyAgICAgICAgICAgICAgICByYW5kb20gLz0gbGltaXQ7CisgICAgICAgICAgICAg
ICAgc3RkOjpzd2FwKHNodWZmbGVkS2luZHNbaV0sIHNodWZmbGVkS2luZHNbal0pOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBhdXRvIGFsaWduVG8gPSBbXSAoS2luZCBraW5kLCBzaXpl
X3QgdG90YWxTaXplKSAtPiBzaXplX3QgeworICAgICAgICAgICAgICAgIHJldHVybiByb3VuZFVw
VG9NdWx0aXBsZU9mKGFsaWdubWVudChraW5kKSwgdG90YWxTaXplKTsKKyAgICAgICAgICAgIH07
CisgICAgICAgICAgICBhdXRvIGJ1bXAgPSBbXSAoS2luZCBraW5kLCBzaXplX3QgdG90YWxTaXpl
KSAtPiBzaXplX3QgeworICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgKyBzaXplKGtp
bmQpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2l6ZV90IHRv
dGFsU2l6ZSA9IDA7CisgICAgICAgICAgICBzaXplX3QgbWF4QWxpZ25tZW50ID0gMDsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZm9yIChLaW5kIGtpbmQgOiBzaHVmZmxlZEtpbmRzKSB7Cisg
ICAgICAgICAgICAgICAgdG90YWxTaXplID0gYnVtcChraW5kLCBhbGlnblRvKGtpbmQsIHRvdGFs
U2l6ZSkpOworICAgICAgICAgICAgICAgIG1heEFsaWdubWVudCA9IHN0ZDo6bWF4KG1heEFsaWdu
bWVudCwgYWxpZ25tZW50KGtpbmQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRvdGFs
U2l6ZSArPSBHSUdBQ0FHRV9SVU5XQVk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBSYW5kb21pemUgd2hlcmUgdGhpcyBnb2VzLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI0NQorICAgICAgICAgICAgdm9pZCog
YmFzZSA9IHRyeVZNQWxsb2NhdGUobWF4QWxpZ25tZW50LCB0b3RhbFNpemUpOworICAgICAgICAg
ICAgaWYgKCFiYXNlKSB7CisgICAgICAgICAgICAgICAgaWYgKEdJR0FDQUdFX0FMTE9DQVRJT05f
Q0FOX0ZBSUwpIHsKKyAgICAgICAgICAgICAgICAgICAgdm1EZWFsbG9jYXRlKGJhc2UsIHRvdGFs
U2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGQVRBTDogQ291bGQgbm90IGFsbG9jYXRl
IGdpZ2FjYWdlIG1lbW9yeSB3aXRoIG1heEFsaWdubWVudCA9ICVsdSwgdG90YWxTaXplID0gJWx1
LlxuIiwgbWF4QWxpZ25tZW50LCB0b3RhbFNpemUpOworICAgICAgICAgICAgICAgIEJDUkFTSCgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlcyhi
YXNlLCB0b3RhbFNpemUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3JFYWNoS2luZCgK
LSAgICAgICAgICAgICAgICBbJl0gKEtpbmQga2luZCkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoIW9rKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogUmFuZG9taXplIHdoZXJlIHRoaXMgZ29lcy4KLSAgICAgICAgICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI0NQot
ICAgICAgICAgICAgICAgICAgICBiYXNlUHRyKGtpbmQpID0gdHJ5Vk1BbGxvY2F0ZShhbGlnbm1l
bnQoa2luZCksIHRvdGFsU2l6ZShraW5kKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghYmFz
ZVB0cihraW5kKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEdJR0FDQUdFX0FMTE9D
QVRJT05fQ0FOX0ZBSUwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvayA9IGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRkFUQUw6
IENvdWxkIG5vdCBhbGxvY2F0ZSAlcyBnaWdhY2FnZS5cbiIsIG5hbWUoa2luZCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgQkNSQVNIKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2Fs
UGFnZXMoYmFzZVB0cihraW5kKSwgdG90YWxTaXplKGtpbmQpKTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFvaykgewotICAgICAgICAgICAgICAg
IGZvckVhY2hLaW5kKAotICAgICAgICAgICAgICAgICAgICBbJl0gKEtpbmQga2luZCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlUHRyKGtpbmQpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAgICAgdm1EZWFsbG9jYXRlKGJhc2VQdHIoa2luZCksIHRvdGFsU2l6ZShraW5k
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGJh
c2VQdHIoa2luZCkgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBzaXplX3QgbmV4dENhZ2UgPSAwOworICAgICAg
ICAgICAgZm9yIChLaW5kIGtpbmQgOiBzaHVmZmxlZEtpbmRzKSB7CisgICAgICAgICAgICAgICAg
bmV4dENhZ2UgPSBhbGlnblRvKGtpbmQsIG5leHRDYWdlKTsKKyAgICAgICAgICAgICAgICBiYXNl
UHRyKGtpbmQpID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmFzZSkgKyBuZXh0Q2FnZTsKKyAg
ICAgICAgICAgICAgICBuZXh0Q2FnZSA9IGJ1bXAoa2luZCwgbmV4dENhZ2UpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBwcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygp
OwpAQCAtMTU3LDI1ICsxNzIsNiBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICNlbmRpZiAvLyBH
SUdBQ0FHRV9FTkFCTEVECiB9CiAKLXNpemVfdCBydW53YXkoS2luZCBraW5kKQotewotICAgIHN3
aXRjaCAoa2luZCkgewotICAgIGNhc2UgUHJpbWl0aXZlOgotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihQUklNSVRJVkVfR0lHQUNBR0VfUlVOV0FZKTsKLSAgICBjYXNlIEpTVmFs
dWU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEpTVkFMVUVfR0lHQUNBR0Vf
UlVOV0FZKTsKLSAgICBjYXNlIFN0cmluZzoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4oU1RSSU5HX0dJR0FDQUdFX1JVTldBWSk7Ci0gICAgfQotICAgIEJDUkFTSCgpOwotICAg
IHJldHVybiAwOwotfQotCi1zaXplX3QgdG90YWxTaXplKEtpbmQga2luZCkKLXsKLSAgICByZXR1
cm4gc2l6ZShraW5kKSArIHJ1bndheShraW5kKTsKLX0KLQogdm9pZCBkaXNhYmxlUHJpbWl0aXZl
R2lnYWNhZ2UoKQogewogICAgIGVuc3VyZUdpZ2FjYWdlKCk7CkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0dpZ2FjYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9HaWdhY2FnZS5oCShyZXZpc2lvbiAyMjMwMjcpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0dpZ2FjYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDggQEAgZW51bSBLaW5kIHsK
ICAgICBTdHJpbmcKIH07CiAKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtS2luZHMgPSAz
OworCiBCRVhQT1JUIHZvaWQgZW5zdXJlR2lnYWNhZ2UoKTsKIAogQkVYUE9SVCB2b2lkIGRpc2Fi
bGVQcmltaXRpdmVHaWdhY2FnZSgpOwpAQCAtMTY0LDkgKzE2Niw2IEBAIEJJTkxJTkUgc2l6ZV90
IG1hc2soS2luZCBraW5kKQogICAgIHJldHVybiBHSUdBQ0FHRV9TSVpFX1RPX01BU0soc2l6ZShr
aW5kKSk7CiB9CiAKLXNpemVfdCBydW53YXkoS2luZCBraW5kKTsKLXNpemVfdCB0b3RhbFNpemUo
S2luZCBraW5kKTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KIHZvaWQgZm9yRWFjaEtpbmQo
Y29uc3QgRnVuYyYgZnVuYykKIHsK
</data>
<flag name="review"
          id="342908"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323280</attachid>
            <date>2017-10-09 20:43:12 -0700</date>
            <delta_ts>2017-10-09 20:43:12 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17278</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzExMykKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEwLTA3ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG9uZSB2aXJ0dWFsIGFsbG9j
YXRpb24gZm9yIGFsbCBnaWdhY2FnZXMgYW5kIHRoZWlyIHJ1bndheXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODA1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6Cisg
ICAgICAgIChHaWdhY2FnZTo6ZW5zdXJlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OnJ1
bndheSk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6dG90YWxTaXplKTogRGVsZXRlZC4K
KyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmg6CisKIDIwMTctMDktMjkgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgZ2lnYWNhZ2Ugb24gaU9TCklu
ZGV4OiBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIzMTEzKQorKysgU291cmNlL2JtYWxs
b2MvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBAIHNldChibWFs
bG9jX1NPVVJDRVMKICAgICBibWFsbG9jL0FsbG9jYXRvci5jcHAKICAgICBibWFsbG9jL0F2YWls
YWJsZU1lbW9yeS5jcHAKICAgICBibWFsbG9jL0NhY2hlLmNwcAorICAgIGJtYWxsb2MvQ3J5cHRv
UmFuZG9tLmNwcAogICAgIGJtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCiAgICAgYm1hbGxvYy9EZWJ1
Z0hlYXAuY3BwCiAgICAgYm1hbGxvYy9FbnZpcm9ubWVudC5jcHAKSW5kZXg6IFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIy
MzExMykKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsOCBAQAogCQkwRjVCRjE1MjFGMjJFMTU3MDAy
OUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNUJGMTUwMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3BwICov
OyB9OwogCQkwRjVCRjE1MzFGMjJFMTU3MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE1MTFGMjJFMTU3MDAy
OUQ5MUQgLyogU2NhdmVuZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY1QkYxNzMxRjIzQzU3MTAwMjlEOTFEIC8qIEJFeHBvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTcyMUYyM0M1
NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY3NEI5M0UxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRv
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NEI5
M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5oICovOyB9OworCQkwRjc0QjkzRjFG
ODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNEMUY4OTcxM0UwMEI5MzVEMyAvKiBDcnlw
dG9SYW5kb20uY3BwICovOyB9OwogCQkwRkQ1NTczMzFGN0VEQjdCMDBCMUYwQTMgLyogSGVhcEtp
bmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
NTU3MzIxRjdFREI3QjAwQjFGMEEzIC8qIEhlYXBLaW5kLmNwcCAqLzsgfTsKIAkJMTQwMDI3NDkx
OEY4OUMxMzAwMTE1Qzk3IC8qIEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0REEzMjBDMTg4NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDI3NEExOEY4
OUMyMzAwMTE1Qzk3IC8qIFZNSGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ0RjdCRkMxOEJGQzUxNzAwMzUzN0YzIC8qIFZNSGVhcC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MSw2ICs5Myw4
IEBACiAJCTBGNUJGMTUwMUYyMkUxNTcwMDI5RDkxRCAvKiBTY2F2ZW5nZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU2NhdmVuZ2VyLmNwcDsgcGF0aCA9IGJtYWxsb2MvU2NhdmVuZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNTExRjIyRTE1NzAwMjlEOTFEIC8q
IFNjYXZlbmdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY2F2ZW5nZXIuaDsgcGF0aCA9IGJtYWxsb2Mv
U2NhdmVuZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTcyMUYyM0M1
NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJFeHBvcnQuaDsgcGF0aCA9
IGJtYWxsb2MvQkV4cG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc0Qjkz
QzFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IENyeXB0b1JhbmRvbS5oOyBwYXRoID0gYm1hbGxvYy9DcnlwdG9SYW5kb20u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NEI5M0QxRjg5NzEzRTAwQjkzNUQz
IC8qIENyeXB0b1JhbmRvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBDcnlwdG9SYW5kb20uY3BwOyBwYXRoID0gYm1hbGxvYy9DcnlwdG9SYW5kb20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ1NTczMjFGN0VEQjdCMDBCMUYwQTMgLyogSGVh
cEtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGVhcEtpbmQu
Y3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0MEZBMDAyMTlDRTQyOUMwMEZGRDNDOCAvKiBCdW1wUmFuZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQnVtcFJhbmdlLmg7IHBhdGggPSBibWFsbG9jL0J1bXBS
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDBGQTAwNDE5Q0U0QjY4MDBG
RkQzQzggLyogTGluZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExpbmVNZXRhZGF0YS5oOyBwYXRoID0gYm1hbGxvYy9MaW5lTWV0YWRhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OCw2ICsyOTIsOCBAQAogCQkJCTBGNUJGMTcyMUYyM0M1
NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggKi8sCiAJCQkJMTQxM0U0NjAxODlEQ0UxRTAwNTQ2RDY4
IC8qIEJJbmxpbmUuaCAqLywKIAkJCQkxNEM5MTlDODE4RkNDNTlGMDAyOERCNDMgLyogQlBsYXRm
b3JtLmggKi8sCisJCQkJMEY3NEI5M0QxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5j
cHAgKi8sCisJCQkJMEY3NEI5M0MxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5oICov
LAogCQkJCTE0RDlEQjQ1MTdGMjQ0NzEwMEVBQUI3OSAvKiBGaXhlZFZlY3Rvci5oICovLAogCQkJ
CTBGRDU1NzMyMUY3RURCN0IwMEIxRjBBMyAvKiBIZWFwS2luZC5jcHAgKi8sCiAJCQkJMEY1QkYx
NDYxRjIyQThCMTAwMjlEOTFEIC8qIEhlYXBLaW5kLmggKi8sCkBAIC0zNDIsNiArMzQ4LDcgQEAK
IAkJCQkxNEM5MTlDOTE4RkNDNTlGMDAyOERCNDMgLyogQlBsYXRmb3JtLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NDI2RTI4MzFDODM5NTQ3MDA4RUIwNDIgLyogQlNvZnRMaW5raW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNERENzg5QzE4RjQ4RDRBMDA5NTA3MDIgLyogQnVtcEFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NEI5M0UxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1Jh
bmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRkEwMDMxOUNFNDI5QzAwRkZEM0M4IC8qIEJ1
bXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTkxOEY0OEQ0QTAwOTUwNzAyIC8q
IENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdEQzZFMzFDQTVCNzBCMDA3MjRFOEQgLyog
Q2h1bmsuaCBpbiBIZWFkZXJzICovLApAQCAtNDY3LDYgKzQ3NCw3IEBACiAJCQkJMTQyQjQ0MzYx
RTI4MzlFNzAwMURBNkU5IC8qIERlYnVnSGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDg5
NUQ5MTFBM0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTRGMjcxQzcxOEVBMzk5MDAwOEMxNTJGIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEY3NEI5M0YxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjVCRjE0RjFGMjJERUFGMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0QzA3RjQxQzdCNzAyNjAwNTFCQjZBIC8qIExhcmdlTWFwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQ0MjZFMjgwMUM4MzhFRTAwMDhFQjA0MiAvKiBMb2dnaW5nLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CQXNzZXJ0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CQXNzZXJ0LmgJKHJldmlzaW9u
IDIyMzExMykKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQkFzc2VydC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxNCArNTYsMTQgQEAKIAogI2RlZmluZSBCQ1JBU0goKSBkbyB7IFwKICAgICAq
KGludCopMHhiYmFkYmVlZiA9IDA7IFwKLX0gd2hpbGUgKDApOworfSB3aGlsZSAoMCkKIAogI2Vu
ZGlmIC8vIGRlZmluZWQoTkRFQlVHKSAmJiBCT1MoREFSV0lOKQogCiAjZGVmaW5lIEJBU1NFUlRf
SU1QTCh4KSBkbyB7IFwKICAgICBpZiAoISh4KSkgXAogICAgICAgICBCQ1JBU0goKTsgXAotfSB3
aGlsZSAoMCk7Cit9IHdoaWxlICgwKQogCiAjZGVmaW5lIFJFTEVBU0VfQkFTU0VSVCh4KSBCQVNT
RVJUX0lNUEwoeCkKIApAQCAtODIsNyArODIsNyBAQAogICAgICAgICBCTE9HX0VSUk9SKCJBU1NF
UlRJT04gRkFJTEVEOiAiICN4ICIgOjogIiBmb3JtYXQsICMjX19WQV9BUkdTX18pOyBcCiAgICAg
ICAgIEJDUkFTSCgpOyBcCiAgICAgfSBcCi19IHdoaWxlICgwKTsKK30gd2hpbGUgKDApCiAjZW5k
aWYKIAogI2RlZmluZSBVTlVTRUQoeCkgKCh2b2lkKXgpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0NyeXB0b1JhbmRvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9DcnlwdG9SYW5kb20uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvQ3J5cHRvUmFuZG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJD
cnlwdG9SYW5kb20uaCIKKworI2luY2x1ZGUgIkJBc3NlcnQuaCIKKyNpbmNsdWRlICJCUGxhdGZv
cm0uaCIKKyNpbmNsdWRlIDxtdXRleD4KKworI2lmICFCT1MoREFSV0lOKQorI2luY2x1ZGUgPGVy
cm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgor
CisjaWYgQk9TKERBUldJTikKK3R5cGVkZWYgc3RydWN0IF9fQ0NSYW5kb20qIENDUmFuZG9tUmVm
OworCitleHRlcm4gIkMiIHsKK2V4dGVybiBjb25zdCBDQ1JhbmRvbVJlZiBrQ0NSYW5kb21EZWZh
dWx0OworaW50IENDUmFuZG9tQ29weUJ5dGVzKENDUmFuZG9tUmVmIHJuZCwgdm9pZCAqYnl0ZXMs
IHNpemVfdCBjb3VudCk7Cit9CisjZW5kaWYKKworbmFtZXNwYWNlIGJtYWxsb2MgeworCit2b2lk
IGNyeXB0b1JhbmRvbSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCit7Cisj
aWYgQk9TKERBUldJTikKKyAgICBSRUxFQVNFX0JBU1NFUlQoIUNDUmFuZG9tQ29weUJ5dGVzKGtD
Q1JhbmRvbURlZmF1bHQsIGJ1ZmZlciwgbGVuZ3RoKSk7CisjZWxzZQorICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGF0aWMgaW50IGZkOworICAgIHN0ZDo6Y2FsbF9v
bmNlKAorICAgICAgICBvbmNlRmxhZywKKyAgICAgICAgW10geworICAgICAgICAgICAgaW50IHJl
dCA9IDA7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgcmV0ID0gb3BlbigiL2Rl
di91cmFuZG9tIiwgT19SRE9OTFksIDApOworICAgICAgICAgICAgfSB3aGlsZSAocmV0ID09IC0x
ICYmIGVycm5vID09IEVJTlRSKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChyZXQgPj0g
MCk7CisgICAgICAgICAgICBmZCA9IHJldDsKKyAgICAgICAgfSk7CisgICAgc3NpemVfdCBhbW91
bnRSZWFkID0gMDsKKyAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8c2l6ZV90PihhbW91bnRSZWFkKSA8
IGxlbmd0aCkgeworICAgICAgICBzc2l6ZV90IGN1cnJlbnRSZWFkID0gcmVhZChmZCwgYnVmZmVy
ICsgYW1vdW50UmVhZCwgbGVuZ3RoIC0gYW1vdW50UmVhZCk7CisgICAgICAgIC8vIFdlIG5lZWQg
dG8gY2hlY2sgZm9yIGJvdGggRUFHQUlOIGFuZCBFSU5UUiBzaW5jZSBvbiBzb21lIHN5c3RlbXMg
L2Rldi91cmFuZG9tCisgICAgICAgIC8vIGlzIGJsb2NraW5nIGFuZCBvbiBvdGhlcnMgaXQgaXMg
bm9uLWJsb2NraW5nLgorICAgICAgICBpZiAoY3VycmVudFJlYWQgPT0gLTEpCisgICAgICAgICAg
ICBSRUxFQVNFX0JBU1NFUlQoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYW1vdW50UmVhZCArPSBjdXJyZW50UmVhZDsKKyAgICB9
CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgYm1hbGxvYworCkluZGV4OiBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0NyeXB0b1JhbmRvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvQ3J5cHRvUmFuZG9tLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9DcnlwdG9SYW5kb20uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorCituYW1lc3Bh
Y2UgYm1hbGxvYyB7CisKK3ZvaWQgY3J5cHRvUmFuZG9tKHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwg
c2l6ZV90IGxlbmd0aCk7CisKK30KKwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdh
Y2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5j
cHAJKHJldmlzaW9uIDIyMzExMykKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJHaWdhY2Fn
ZS5oIgogCisjaW5jbHVkZSAiQ3J5cHRvUmFuZG9tLmgiCiAjaW5jbHVkZSAiRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJQZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiVk1BbGxvY2F0ZS5oIgpAQCAt
MzYsMTggKzM3LDEzIEBACiAjaWYgQkNQVShBUk02NCkKIC8vIEZJWE1FOiBUaGVyZSBpcyBubyBn
b29kIHJlYXNvbiBmb3IgQVJNNjQgdG8gYmUgc3BlY2lhbC4KIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc2MDUKLSNkZWZpbmUgUFJJTUlUSVZFX0dJR0FDQUdF
X1JVTldBWSAwCisjZGVmaW5lIEdJR0FDQUdFX1JVTldBWSAwCiAjZWxzZQogLy8gRklYTUU6IENv
bnNpZGVyIG1ha2luZyB0aGlzIDMyR0IsIGluIGNhc2UgdW5zaWduZWQgMzItYml0IGluZGljZXMg
ZmluZCB0aGVpciB3YXkgaW50byBpbmRleGVkIGFjY2Vzc2VzLgogLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTA2MgotI2RlZmluZSBQUklNSVRJVkVfR0lHQUNB
R0VfUlVOV0FZICgxNmxsdSAqIDEwMjQgKiAxMDI0ICogMTAyNCkKKyNkZWZpbmUgR0lHQUNBR0Vf
UlVOV0FZICgxNmxsdSAqIDEwMjQgKiAxMDI0ICogMTAyNCkKICNlbmRpZgogCi0vLyBGSVhNRTog
UmVjb25zaWRlciB0aGlzLgotLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTkyMQotI2RlZmluZSBKU1ZBTFVFX0dJR0FDQUdFX1JVTldBWSAwCi0jZGVmaW5lIFNU
UklOR19HSUdBQ0FHRV9SVU5XQVkgMAotCiBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FH
RV9CQVNFX1BUUlNfU0laRV0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZChHSUdBQ0FHRV9CQVNFX1BU
UlNfU0laRSkpKTsKIAogdXNpbmcgbmFtZXNwYWNlIGJtYWxsb2M7CkBAIC0xMTcsMzggKzExMyw1
NyBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICAgICAgICAgICAgIGlmICghc2hvdWxkQmVFbmFi
bGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBib29sIG9rID0gdHJ1ZTsKKyAgICAgICAgICAgIEtpbmQgc2h1ZmZsZWRLaW5kc1tudW1LaW5k
c107CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtS2luZHM7ICsraSkK
KyAgICAgICAgICAgICAgICBzaHVmZmxlZEtpbmRzW2ldID0gc3RhdGljX2Nhc3Q8S2luZD4oaSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlIGp1c3QgZ28gYWhlYWQgYW5kIGFzc3Vt
ZSB0aGF0IDY0IGJpdHMgaXMgZW5vdWdoIHJhbmRvbW5lc3MuIFRoYXQncyB0cml2aWFsbHkgdHJ1
ZSByaWdodAorICAgICAgICAgICAgLy8gbm93LCBidXQgd291bGQgc3RvcCBiZWluZyB0cnVlIGlm
IHdlIHdlbnQgY3Jhenkgd2l0aCBnaWdhY2FnZXMuIEJhc2VkIG9uIG15IG1hdGgsIDIxIGlzIHRo
ZQorICAgICAgICAgICAgLy8gbGFyZ2VzdCB2YWx1ZSBvZiBuIHNvIHRoYXQgbiEgPD0gMl42NC4K
KyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQobnVtS2luZHMgPD0gMjEsICJ0b28gbWFueSBraW5k
cyIpOworICAgICAgICAgICAgdWludDY0X3QgcmFuZG9tOworICAgICAgICAgICAgY3J5cHRvUmFu
ZG9tKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZyYW5kb20pLCBzaXplb2YocmFu
ZG9tKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1LaW5kczsgaS0tOykgewor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpbWl0ID0gaSArIDE7CisgICAgICAgICAgICAgICAg
dW5zaWduZWQgaiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5kb20gJSBsaW1pdCk7CisgICAg
ICAgICAgICAgICAgcmFuZG9tIC89IGxpbWl0OworICAgICAgICAgICAgICAgIHN0ZDo6c3dhcChz
aHVmZmxlZEtpbmRzW2ldLCBzaHVmZmxlZEtpbmRzW2pdKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgYXV0byBhbGlnblRvID0gW10gKEtpbmQga2luZCwgc2l6ZV90IHRvdGFsU2l6ZSkg
LT4gc2l6ZV90IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZihh
bGlnbm1lbnQoa2luZCksIHRvdGFsU2l6ZSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAg
YXV0byBidW1wID0gW10gKEtpbmQga2luZCwgc2l6ZV90IHRvdGFsU2l6ZSkgLT4gc2l6ZV90IHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxTaXplICsgc2l6ZShraW5kKTsKKyAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOwor
ICAgICAgICAgICAgc2l6ZV90IG1heEFsaWdubWVudCA9IDA7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGZvciAoS2luZCBraW5kIDogc2h1ZmZsZWRLaW5kcykgeworICAgICAgICAgICAgICAg
IHRvdGFsU2l6ZSA9IGJ1bXAoa2luZCwgYWxpZ25UbyhraW5kLCB0b3RhbFNpemUpKTsKKyAgICAg
ICAgICAgICAgICBtYXhBbGlnbm1lbnQgPSBzdGQ6Om1heChtYXhBbGlnbm1lbnQsIGFsaWdubWVu
dChraW5kKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0b3RhbFNpemUgKz0gR0lHQUNB
R0VfUlVOV0FZOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBGSVhNRTogUmFuZG9taXpl
IHdoZXJlIHRoaXMgZ29lcy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzUyNDUKKyAgICAgICAgICAgIHZvaWQqIGJhc2UgPSB0cnlWTUFs
bG9jYXRlKG1heEFsaWdubWVudCwgdG90YWxTaXplKTsKKyAgICAgICAgICAgIGlmICghYmFzZSkg
eworICAgICAgICAgICAgICAgIGlmIChHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHZtRGVhbGxvY2F0ZShiYXNlLCB0b3RhbFNpemUpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiRkFUQUw6IENvdWxkIG5vdCBhbGxvY2F0ZSBnaWdhY2FnZSBtZW1v
cnkgd2l0aCBtYXhBbGlnbm1lbnQgPSAlbHUsIHRvdGFsU2l6ZSA9ICVsdS5cbiIsIG1heEFsaWdu
bWVudCwgdG90YWxTaXplKTsKKyAgICAgICAgICAgICAgICBCQ1JBU0goKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXMoYmFzZSwgdG90YWxTaXpl
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yRWFjaEtpbmQoCi0gICAgICAgICAgICAg
ICAgWyZdIChLaW5kIGtpbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFvaykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFJhbmRvbWl6ZSB3aGVyZSB0aGlzIGdvZXMuCi0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUyNDUKLSAgICAgICAgICAgICAg
ICAgICAgYmFzZVB0cihraW5kKSA9IHRyeVZNQWxsb2NhdGUoYWxpZ25tZW50KGtpbmQpLCB0b3Rh
bFNpemUoa2luZCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWJhc2VQdHIoa2luZCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlM
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZBVEFMOiBDb3VsZCBub3QgYWxs
b2NhdGUgJXMgZ2lnYWNhZ2UuXG4iLCBuYW1lKGtpbmQpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEJDUkFTSCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKGJhc2VQdHIo
a2luZCksIHRvdGFsU2l6ZShraW5kKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGlmICghb2spIHsKLSAgICAgICAgICAgICAgICBmb3JFYWNoS2luZCgK
LSAgICAgICAgICAgICAgICAgICAgWyZdIChLaW5kIGtpbmQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghYmFzZVB0cihraW5kKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZtRGVhbGxvY2F0ZShiYXNlUHRyKGtpbmQpLCB0b3RhbFNpemUoa2luZCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBiYXNlUHRyKGtpbmQpID0g
bnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgc2l6ZV90IG5leHRDYWdlID0gMDsKKyAgICAgICAgICAgIGZvciAoS2lu
ZCBraW5kIDogc2h1ZmZsZWRLaW5kcykgeworICAgICAgICAgICAgICAgIG5leHRDYWdlID0gYWxp
Z25UbyhraW5kLCBuZXh0Q2FnZSk7CisgICAgICAgICAgICAgICAgYmFzZVB0cihraW5kKSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJhc2UpICsgbmV4dENhZ2U7CisgICAgICAgICAgICAgICAg
bmV4dENhZ2UgPSBidW1wKGtpbmQsIG5leHRDYWdlKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKTsKQEAgLTE1NywyNSAr
MTcyLDYgQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAjZW5kaWYgLy8gR0lHQUNBR0VfRU5BQkxF
RAogfQogCi1zaXplX3QgcnVud2F5KEtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsK
LSAgICBjYXNlIFByaW1pdGl2ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4o
UFJJTUlUSVZFX0dJR0FDQUdFX1JVTldBWSk7Ci0gICAgY2FzZSBKU1ZhbHVlOgotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihKU1ZBTFVFX0dJR0FDQUdFX1JVTldBWSk7Ci0gICAg
Y2FzZSBTdHJpbmc6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFNUUklOR19H
SUdBQ0FHRV9SVU5XQVkpOwotICAgIH0KLSAgICBCQ1JBU0goKTsKLSAgICByZXR1cm4gMDsKLX0K
LQotc2l6ZV90IHRvdGFsU2l6ZShLaW5kIGtpbmQpCi17Ci0gICAgcmV0dXJuIHNpemUoa2luZCkg
KyBydW53YXkoa2luZCk7Ci19Ci0KIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkKIHsK
ICAgICBlbnN1cmVHaWdhY2FnZSgpOwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdh
Y2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAko
cmV2aXNpb24gMjIzMTEzKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIGVudW0gS2luZCB7CiAgICAgU3RyaW5nCiB9
OwogCitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUtpbmRzID0gMzsKKwogQkVYUE9SVCB2
b2lkIGVuc3VyZUdpZ2FjYWdlKCk7CiAKIEJFWFBPUlQgdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2ln
YWNhZ2UoKTsKQEAgLTE2NCw5ICsxNjYsNiBAQCBCSU5MSU5FIHNpemVfdCBtYXNrKEtpbmQga2lu
ZCkKICAgICByZXR1cm4gR0lHQUNBR0VfU0laRV9UT19NQVNLKHNpemUoa2luZCkpOwogfQogCi1z
aXplX3QgcnVud2F5KEtpbmQga2luZCk7Ci1zaXplX3QgdG90YWxTaXplKEtpbmQga2luZCk7Ci0K
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiB2b2lkIGZvckVhY2hLaW5kKGNvbnN0IEZ1bmMmIGZ1
bmMpCiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>