<?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>152953</bug_id>
          
          <creation_ts>2016-01-09 19:58:25 -0800</creation_ts>
          <short_desc>Make it easier to introduce exotic instructions to Air</short_desc>
          <delta_ts>2016-01-11 09:25:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>152952</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1154186</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-09 19:58:25 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154188</commentid>
    <comment_count>1</comment_count>
      <attachid>268636</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-09 20:05:47 -0800</bug_when>
    <thetext>Created attachment 268636
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154189</commentid>
    <comment_count>2</comment_count>
      <attachid>268637</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-09 20:09:14 -0800</bug_when>
    <thetext>Created attachment 268637
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154353</commentid>
    <comment_count>3</comment_count>
      <attachid>268637</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-01-11 04:40:33 -0800</bug_when>
    <thetext>Comment on attachment 268637
the patch

That may have been better to integrate this with 152952 directly. r+ anyway, no time to waste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154389</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-11 09:25:53 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/194856</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268636</attachid>
            <date>2016-01-09 20:05:47 -0800</date>
            <delta_ts>2016-01-09 20:09:14 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24951</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0ODIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDE2LTAxLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TWFrZSBpdCBlYXNpZXIgdG8gaW50cm9kdWNlIGV4b3RpYyBpbnN0cnVjdGlvbnMgdG8gQWlyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI5NTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHlvdSBjYW4gZGVmaW5lIG5ldyAib3Bjb2RlcyIgaW4gQWlyIHVzaW5nIGVpdGhlcjoKKworICAg
ICAgICAxKSBOZXcgb3Bjb2RlIGRlY2xhcmVkIGluIEFpck9wY29kZS5vcGNvZGVzLgorICAgICAg
ICAyKSBQYXRjaCBvcGNvZGUgd2l0aCBhIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiBBaXI6OlNwZWNp
YWwuCisKKyAgICAgICAgV2l0aCAoMSksIHlvdSBhcmUgbGltaXRlZCB0byBmaXhlZC1hcmd1bWVu
dC1sZW5ndGggaW5zdHJ1Y3Rpb25zLiBUaGVyZSBhcmUgb3RoZXIKKyAgICAgICAgcmVzdHJpY3Rp
b25zIGFzIHdlbGwsIGxpa2UgdGhhdCB5b3UgY2FuIG9ubHkgdXNlIHRoZSByb2xlcyB0aGF0IHRo
ZSBBaXJPcGNvZGUgc3ludGF4CisgICAgICAgIHN1cHBvcnRzLgorCisgICAgICAgIFdpdGggKDIp
LCB5b3UgY2FuIGRvIGFueXRoaW5nIHlvdSBsaWtlLCBidXQgdGhlIGluc3RydWN0aW9uIHdpbGwg
YmUgaGFyZGVyIHRvIG1hdGNoCisgICAgICAgIHNpbmNlIGl0IHdpbGwgc2hhcmUgdGhlIHNhbWUg
b3Bjb2RlIGFzIGFueSBvdGhlciBQYXRjaC4gQWxzbywgdGhlIGluc3RydWN0aW9uIHdpbGwgaGF2
ZQorICAgICAgICB0aGUgU3BlY2lhbCBhcmd1bWVudCwgd2hpY2ggbWVhbnMgbW9yZSBidXN5LXdv
cmsgd2hlbiBjcmVhdGluZyB0aGUgaW5zdHJ1Y3Rpb24gYW5kCisgICAgICAgIHZhbGlkYXRpbmcg
aXQuCisKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VzIGFuIGluLWJldHdlZW4gZmFjaWxpdHkgY2Fs
bGVkICJjdXN0b20iLiBUaGlzIHJlcGxhY2VzIHdoYXQgQWlyT3Bjb2RlCisgICAgICAgIHByZXZp
b3VzbHkgY2FsbGVkICJzcGVjaWFsIi4gQSBjdXN0b20gaW5zdHJ1Y3Rpb24gaXMgb25lIHdob3Nl
IGJlaGF2aW9yIGlzIGRlZmluZWQgYnkgYQorICAgICAgICBGb29DdXN0b20gc3RydWN0IHdpdGgg
c29tZSBzdGF0aWMgbWV0aG9kcy4gQ2FsbHMgdG8gdGhvc2UgbWV0aG9kcyBhcmUgZW1pdHRlZCBi
eQorICAgICAgICBvcGNvZGVfZ2VuZXJhdG9yLnJiLgorCisgICAgICAgIFRoZSAiY3VzdG9tIiBm
YWNpbGl0eSBpcyBwb3dlcmZ1bCBlbm91Z2ggdG8gYmUgdXNlZCB0byBpbXBsZW1lbnQgUGF0Y2gs
IHdpdGggdGhlIGNhdmVhdAorICAgICAgICB0aGF0IHdlIG5vdyB0cmVhdCB0aGUgUGF0Y2ggaW5z
dHJ1Y3Rpb24gc3BlY2lhbGx5IGluIGEgZmV3IHBsYWNlcy4gVGhvc2UgcGxhY2VzIHdlcmUKKyAg
ICAgICAgYWxyZWFkeSBlZmZlY3RpdmVseSB0cmVhdGluZyBpdCBzcGVjaWFsbHkgYnkgYXNzdW1p
bmcgdGhhdCBvbmx5IFBhdGNoIGluc3RydWN0aW9ucyBoYXZlCisgICAgICAgIGEgU3BlY2lhbCBh
cyB0aGVpciBmaXJzdCBhcmd1bWVudC4KKworICAgICAgICBUaGlzIHdpbGwgbGV0IG1lIGltcGxl
bWVudCB0aGUgU2h1ZmZsZSBpbnN0cnVjdGlvbiAoYnVnIDE1Mjk1MiksIHdoaWNoIEkgdGhpbmsg
aXMgbmVlZGVkCisgICAgICAgIGZvciBwZXJmb3JtYW5jZSB3b3JrLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9haXIv
QWlyQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpQYXRjaEN1c3RvbTo6
Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlBhdGNoQ3VzdG9tOjppc1ZhbGlk
Rm9ybVN0YXRpYyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlBhdGNoQ3VzdG9tOjppc1ZhbGlk
Rm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlBhdGNoQ3VzdG9tOjphZG1pdHNTdGFjayk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlBhdGNoQ3VzdG9tOjpoYXNOb25BcmdOb25Db250cm9s
RWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlBhdGNoQ3VzdG9tOjpnZW5lcmF0ZSk6
CisgICAgICAgICogYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6aGFuZGxlQ2FsbGVlU2F2ZXMpOgorICAgICAgICAqIGIzL2Fpci9BaXJJbnN0
Lmg6CisgICAgICAgICogYjMvYWlyL0Fpckluc3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okluc3Q6OmZvckVhY2gpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0OjpleHRy
YUNsb2JiZXJlZFJlZ3MpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0OjpleHRyYUVhcmx5
Q2xvYmJlcmVkUmVncyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okluc3Q6OmZvckVhY2hEZWZX
aXRoRXh0cmFDbG9iYmVyZWRSZWdzKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6SW5zdDo6cmVw
b3J0VXNlZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okluc3Q6Omhhc1NwZWNp
YWwpOiBEZWxldGVkLgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAg
ICAgKiBiMy9haXIvQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OnJlcG9ydFVzZWRSZWdpc3RlcnMpOgorICAgICAgICAqIGIzL2Fpci9vcGNvZGVfZ2Vu
ZXJhdG9yLnJiOgorCiAyMDE2LTAxLTA5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBBbGxvdyBvdmVycmlkaW5nIHRoZSBmcmFtZXdvcmtzIGRpcmVj
dG9yeSBpbmRlcGVuZGVudGx5IG9mIHVzaW5nIGEgc3RhZ2luZyBpbnN0YWxsIHBhdGgKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTQ4MjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBACiAJCTBGMENENEMyMTVGMUE2MDcwMDMy
RjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENENEMwMTVGMUE2MDQwMDMyRjFDMCAvKiBQdXREaXJlY3RJ
bmRleE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjBDRDRDNDE1RjZCNkJCMDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDRDRDMzE1
RjZCNkI1MDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgKi87IH07CiAJCTBGMEZD
NDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0
IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxMEYxQTIx
QzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oICovOyB9OwogCQkwRjEyREUwRjE5NzlENUZE
MDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEyREUwRDE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9u
RnV6ei5jcHAgKi87IH07CiAJCTBGMTJERTEwMTk3OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25G
dXp6LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEy
REUwRTE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTM2RDREMTc0QUQ2OUUwMDc1QjM1
NCAvKiBEZWZlckdDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjEzNkQ0QjE3NEFENjlCMDA3NUIzNTQgLyogRGVmZXJHQy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjQyLDYgKzIyNDMsNyBAQAog
CQkwRjBDRDRDMDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dERpcmVjdEluZGV4TW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBDRDRDMzE1RjZCNkI1MDAzMkYxQzAgLyogU3BhcnNl
QXJyYXlWYWx1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
cGFyc2VBcnJheVZhbHVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
RkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMTBGMUEyMUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyQ3VzdG9tLmg7IHBhdGggPSBiMy9h
aXIvQWlyQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTJERTBEMTk3
OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbkZ1enouY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjEyREUwRTE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25GdXp6Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMTM2RDRCMTc0QUQ2OUIwMDc1QjM1NCAvKiBEZWZlckdDLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmVyR0MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3ODYsNiArNDc4OCw3IEBACiAJCQkJMEZFQzg1NEYxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5oICovLAogCQkJCTBGRUM4NTUwMUJEQUNEQzcw
MDgwRkY3NCAvKiBBaXJDb2RlLmNwcCAqLywKIAkJCQkwRkVDODU1MTFCREFDREM3MDA4MEZGNzQg
LyogQWlyQ29kZS5oICovLAorCQkJCTBGMTBGMUEyMUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0
b20uaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVh
ZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5h
dGVEZWFkQ29kZS5oICovLAogCQkJCTI2MkQ4NUI0MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwICovLApAQCAtNzQzMCw2ICs3NDMzLDcgQEAKIAkJCQkx
NDJFMzEzNjEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDJFMzEzODEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0NzgyOTdCMTM3OUU4QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMzJCRDExMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDdXN0b20uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBaXJDdXN0b21faAor
I2RlZmluZSBBaXJDdXN0b21faAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFp
ckluc3QuaCIKKyNpbmNsdWRlICJBaXJTcGVjaWFsLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworLy8gVGhpcyBkZWZpbmVzIHRoZSBiZWhhdmlv
ciBvZiBjdXN0b20gaW5zdHJ1Y3Rpb25zIC0gaS5lLiB0aG9zZSB3aG9zZSBiZWhhdmlvciBjYW5u
b3QgYmUKKy8vIGRlc2NyaWJlZCB1c2luZyBBaXJPcGNvZGUub3Bjb2Rlcy4gSWYgeW91IGRlZmlu
ZSBhbiBvcGNvZGUgYXMgImN1c3RvbSBGb28iIGluIHRoYXQgZmlsZSwgdGhlbgorLy8geW91IHdp
bGwgbmVlZCB0byBjcmVhdGUgYSAic3RydWN0IEZvb0N1c3RvbSIgaGVyZSB0aGF0IGltcGxlbWVu
dHMgdGhlIGN1c3RvbSBiZWhhdmlvcgorLy8gbWV0aG9kcy4KKy8vCisvLyBUaGUgY3VzdG9taXph
YmlsaXR5IGdyYW50ZWQgYnkgdGhlIGN1c3RvbSBpbnN0cnVjdGlvbiBtZWNoYW5pc20gaXMgc3Ry
aWN0bHkgbGVzcyB0aGFuIHdoYXQKKy8vIHlvdSBnZXQgdXNpbmcgdGhlIFBhdGNoIGluc3RydWN0
aW9uIGFuZCBpbXBsZW1lbnRpbmcgYSBTcGVjaWFsLiBIb3dldmVyLCB0aGF0IHBhdGggcmVxdWly
ZXMKKy8vIGFsbG9jYXRpbmcgYSBTcGVjaWFsIG9iamVjdCBhbmQgZW5zdXJpbmcgdGhhdCBpdCdz
IHRoZSBmaXJzdCBvcGVyYW5kLiBGb3IgbWFueSBpbnN0cnVjdGlvbnMsCisvLyB0aGF0IGlzIG5v
dCBhcyBjb252ZW5pZW50IGFzIHVzaW5nIEN1c3RvbSwgd2hpY2ggbWFrZXMgdGhlIGluc3RydWN0
aW9uIGxvb2sgbGlrZSBhbnkgb3RoZXIKKy8vIGluc3RydWN0aW9uLgorLy8KKy8vIFNwZWNpYWxz
IGFyZSBzdGlsbCBtb3JlIGZsZXhpYmxlIGlmIHlvdSBuZWVkIHRvIGxpc3QgZXh0cmEgY2xvYmJl
cmVkIHJlZ2lzdGVycyBhbmQgeW91J2QgbGlrZQorLy8gdGhhdCB0byBiZSBleHByZXNzZWQgYXMg
YSBiaXR2ZWN0b3IgcmF0aGVyIHRoYW4gYW4gYXJnbGlzdC4gVGhleSBhcmUgYWxzbyBtb3JlIGZs
ZXhpYmxlIGlmCisvLyB5b3UgbmVlZCB0byBjYXJyeSBleHRyYSBzdGF0ZSBhcm91bmQgd2l0aCB0
aGUgaW5zdHJ1Y3Rpb24uIEFsc28sIFNwZWNpYWxzIG1lYW4gdGhhdCB5b3UKKy8vIGFsd2F5cyBo
YXZlIGFjY2VzcyB0byBDb2RlJiBldmVuIGluIG1ldGhvZHMgdGhhdCBkb24ndCB0YWtlIGEgR2Vu
ZXJhdGlvbkNvbnRleHQuCisKK3N0cnVjdCBQYXRjaEN1c3RvbSB7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KKyAgICBzdGF0aWMgdm9pZCBmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICAvLyBUaGlzIGlzIGJhc2ljYWxs
eSBib2d1cywgYnV0IGl0IHdvcmtzIGZvciBhbmFseXNlcyB0aGF0IG1vZGVsIFNwZWNpYWwgYXMg
YW4KKyAgICAgICAgLy8gaW1tZWRpYXRlLgorICAgICAgICBmdW5jdG9yKGluc3QuYXJnc1swXSwg
QXJnOjpVc2UsIEFyZzo6R1AsIEFyZzo6cG9pbnRlcldpZHRoKCkpOworICAgICAgICAKKyAgICAg
ICAgaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+Zm9yRWFjaEFyZyhpbnN0LCBzY29wZWRMYW1iZGE8
SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPihmdW5jdG9yKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRpYyBib29sIGlzVmFsaWRGb3JtU3RhdGlj
KEFyZ3VtZW50cy4uLikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkRm9ybShJbnN0JiBpbnN0KQorICAgIHsKKyAgICAgICAgaWYg
KGluc3QuYXJncy5zaXplKCkgPCAxKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoIWluc3QuYXJnc1swXS5pc1NwZWNpYWwoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIGluc3QuYXJnc1swXS5zcGVjaWFsKCktPmlzVmFsaWQoaW5zdCk7
CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYWRtaXRzU3RhY2soSW5zdCYgaW5zdCwgdW5zaWdu
ZWQgYXJnSW5kZXgpCisgICAgeworICAgICAgICBpZiAoIWFyZ0luZGV4KQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+YWRt
aXRzU3RhY2soaW5zdCwgYXJnSW5kZXgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGhhc05v
bkFyZ05vbkNvbnRyb2xFZmZlY3RzKEluc3QmIGluc3QpCisgICAgeworICAgICAgICByZXR1cm4g
aW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+aGFzTm9uQXJnTm9uQ29udHJvbEVmZmVjdHMoKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgQ0NhbGxIZWxwZXJzOjpKdW1wIGdlbmVyYXRlKAorICAgICAgICBJ
bnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQp
CisgICAgeworICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+Z2VuZXJhdGUo
aW5zdCwgaml0LCBjb250ZXh0KTsKKyAgICB9Cit9OworCit9IH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCisjZW5kaWYgLy8gQWlyQ3Vz
dG9tX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxs
ZWVTYXZlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJIYW5kbGVDYWxsZWVTYXZlcy5jcHAJKHJldmlzaW9uIDE5NDgyMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlySGFuZGxlQ2FsbGVlU2F2ZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgaGFuZGxlQ2FsbGVlU2F2ZXMoQ29kZSYgY29kZSkKICAg
ICAgICAgICAgICAgICAgICAgdXNlZENhbGxlZVNhdmVzLnNldCh0bXAucmVnKCkpOwogICAgICAg
ICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBpZiAoaW5zdC5oYXNTcGVjaWFsKCkpCisgICAg
ICAgICAgICBpZiAoaW5zdC5vcGNvZGUgPT0gUGF0Y2gpCiAgICAgICAgICAgICAgICAgdXNlZENh
bGxlZVNhdmVzLm1lcmdlKGluc3QuZXh0cmFDbG9iYmVyZWRSZWdzKCkpOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgJKHJldmlzaW9u
IDE5NDgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTksMTEgKzExOSw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUaGluZywgdHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckVhY2goY29uc3QgRnVu
Y3RvciYpOwogCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaW5zdHJ1Y3Rpb24gaGFzIGEg
U3BlY2lhbCouIFRoaXMgdW5sb2NrcyBzb21lIGV4dHJhIGZ1bmN0aW9uYWxpdHkuCi0gICAgYm9v
bCBoYXNTcGVjaWFsKCkgY29uc3Q7Ci0KICAgICAvLyBSZXBvcnRzIGFueSBhZGRpdGlvbmFsIHJl
Z2lzdGVycyBjbG9iYmVyZWQgYnkgdGhpcyBvcGVyYXRpb24uIE5vdGUgdGhhdCBmb3IgZWZmaWNp
ZW5jeSwKLSAgICAvLyBleHRyYUNsb2JiZXJlZFJlZ3MoKSBvbmx5IHdvcmtzIGlmIGhhc1NwZWNp
YWwoKSByZXR1cm5zIHRydWUuCisgICAgLy8gZXh0cmFDbG9iYmVyZWRSZWdzKCkgb25seSB3b3Jr
cyBmb3IgdGhlIFBhdGNoIG9wY29kZS4KICAgICBjb25zdCBSZWdpc3RlclNldCYgZXh0cmFDbG9i
YmVyZWRSZWdzKCk7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhRWFybHlDbG9iYmVyZWRS
ZWdzKCk7CiAKQEAgLTE0MSw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZm9y
RWFjaERlZldpdGhFeHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCogcHJldkluc3QsIEluc3QqIG5leHRJ
bnN0LCBjb25zdCBGdW5jdG9yJik7CiAKICAgICAvLyBVc2UgdGhpcyB0byByZXBvcnQgd2hpY2gg
cmVnaXN0ZXJzIGFyZSBsaXZlLiBUaGlzIHNob3VsZCBiZSBkb25lIGp1c3QgYmVmb3JlIGNvZGVn
ZW4uIE5vdGUKLSAgICAvLyB0aGF0IGZvciBlZmZpY2llbmN5LCByZXBvcnRVc2VkUmVnaXN0ZXJz
KCkgb25seSB3b3JrcyBpZiBoYXNTcGVjaWFsKCkgcmV0dXJucyB0cnVlLgorICAgIC8vIHRoYXQg
Zm9yIGVmZmljaWVuY3ksIHJlcG9ydFVzZWRSZWdpc3RlcnMoKSBvbmx5IHdvcmtzIGZvciB0aGUg
UGF0Y2ggb3Bjb2RlLgogICAgIHZvaWQgcmVwb3J0VXNlZFJlZ2lzdGVycyhjb25zdCBSZWdpc3Rl
clNldCYpOwogCiAgICAgLy8gSXMgdGhpcyBpbnN0cnVjdGlvbiBpbiBvbmUgb2YgdGhlIHZhbGlk
IGZvcm1zIHJpZ2h0IG5vdz8gVGhpcyBmdW5jdGlvbiBpcyBhdXRvLWdlbmVyYXRlZCBieQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAkocmV2
aXNpb24gMTk0ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMCArNzgsMTUgQEAgdm9pZCBJbnN0Ojpmb3JF
YWNoKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0bwogICAgIEZvckVhY2g8VGhpbmc+Ojpmb3JFYWNoKCp0
aGlzLCBmdW5jdG9yKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zdDo6aGFzU3BlY2lhbCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGFyZ3Muc2l6ZSgpICYmIGFyZ3NbMF0uaXNTcGVjaWFsKCk7Ci19Ci0K
IGlubGluZSBjb25zdCBSZWdpc3RlclNldCYgSW5zdDo6ZXh0cmFDbG9iYmVyZWRSZWdzKCkKIHsK
LSAgICBBU1NFUlQoaGFzU3BlY2lhbCgpKTsKKyAgICBBU1NFUlQoYXJncy5vcGNvZGUgPT0gUGF0
Y2gpOwogICAgIHJldHVybiBhcmdzWzBdLnNwZWNpYWwoKS0+ZXh0cmFDbG9iYmVyZWRSZWdzKCp0
aGlzKTsKIH0KIAogaW5saW5lIGNvbnN0IFJlZ2lzdGVyU2V0JiBJbnN0OjpleHRyYUVhcmx5Q2xv
YmJlcmVkUmVncygpCiB7Ci0gICAgQVNTRVJUKGhhc1NwZWNpYWwoKSk7CisgICAgQVNTRVJUKGFy
Z3Mub3Bjb2RlID09IFBhdGNoKTsKICAgICByZXR1cm4gYXJnc1swXS5zcGVjaWFsKCktPmV4dHJh
RWFybHlDbG9iYmVyZWRSZWdzKCp0aGlzKTsKIH0KIApAQCAtMTI4LDEyICsxMjMsMTIgQEAgaW5s
aW5lIHZvaWQgSW5zdDo6Zm9yRWFjaERlZldpdGhFeHRyYUNsbwogICAgICAgICBmdW5jdG9yKFRo
aW5nKHJlZyksIHJlZ0RlZlJvbGUsIHR5cGUsIEFyZzo6Y29uc2VydmF0aXZlV2lkdGgodHlwZSkp
OwogICAgIH07CiAKLSAgICBpZiAocHJldkluc3QgJiYgcHJldkluc3QtPmhhc1NwZWNpYWwoKSkg
eworICAgIGlmIChwcmV2SW5zdCAmJiBwcmV2SW5zdC0+b3Bjb2RlID09IFBhdGNoKSB7CiAgICAg
ICAgIHJlZ0RlZlJvbGUgPSBBcmc6OkRlZjsKICAgICAgICAgcHJldkluc3QtPmV4dHJhQ2xvYmJl
cmVkUmVncygpLmZvckVhY2gocmVwb3J0UmVnKTsKICAgICB9CiAKLSAgICBpZiAobmV4dEluc3Qg
JiYgbmV4dEluc3QtPmhhc1NwZWNpYWwoKSkgeworICAgIGlmIChuZXh0SW5zdCAmJiBuZXh0SW5z
dC0+b3Bjb2RlID09IFBhdGNoKSB7CiAgICAgICAgIHJlZ0RlZlJvbGUgPSBBcmc6OkVhcmx5RGVm
OwogICAgICAgICBuZXh0SW5zdC0+ZXh0cmFFYXJseUNsb2JiZXJlZFJlZ3MoKS5mb3JFYWNoKHJl
cG9ydFJlZyk7CiAgICAgfQpAQCAtMTQxLDcgKzEzNiw3IEBAIGlubGluZSB2b2lkIEluc3Q6OmZv
ckVhY2hEZWZXaXRoRXh0cmFDbG8KIAogaW5saW5lIHZvaWQgSW5zdDo6cmVwb3J0VXNlZFJlZ2lz
dGVycyhjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycykKIHsKLSAgICBBU1NFUlQoaGFz
U3BlY2lhbCgpKTsKKyAgICBBU1NFUlQob3Bjb2RlID09IFBhdGNoKTsKICAgICBhcmdzWzBdLnNw
ZWNpYWwoKS0+cmVwb3J0VXNlZFJlZ2lzdGVycygqdGhpcywgdXNlZFJlZ2lzdGVycyk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
cwkocmV2aXNpb24gMTk0ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpAQCAtNjY1LDUgKzY2NSw1IEBAIE9vcHMgL3Rl
cm1pbmFsCiAKICMgQWlyIGFsbG93cyBmb3IgZXhvdGljIGJlaGF2aW9yLiBBIFBhdGNoJ3MgYmVo
YXZpb3IgaXMgZGV0ZXJtaW5lZCBlbnRpcmVseSBieSB0aGUgU3BlY2lhbCBvcGVyYW5kLAogIyB3
aGljaCBtdXN0IGJlIHRoZSBmaXJzdCBvcGVyYW5kLgotc3BlY2lhbCBQYXRjaAorY3VzdG9tIFBh
dGNoCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUmVwb3J0VXNlZFJl
Z2lzdGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcAkocmV2aXNpb24gMTk0ODIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCB2b2lkIHJlcG9ydFVzZWRSZWdpc3RlcnMoQ29kZSYgY29k
ZSkKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGluc3RJbmRleCA9IGJsb2NrLT5zaXplKCk7IGlu
c3RJbmRleC0tOykgewogICAgICAgICAgICAgSW5zdCYgaW5zdCA9IGJsb2NrLT5hdChpbnN0SW5k
ZXgpOwotICAgICAgICAgICAgaWYgKGluc3QuaGFzU3BlY2lhbCgpKSB7CisgICAgICAgICAgICBp
ZiAoaW5zdC5vcGNvZGUgPT0gUGF0Y2gpIHsKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBy
ZWdpc3RlclNldDsKICAgICAgICAgICAgICAgICBmb3IgKFRtcCB0bXAgOiBncExvY2FsQ2FsYy5s
aXZlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHRtcC5pc0dQKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgko
cmV2aXNpb24gMTk0ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTQgQEAKIHJlcXVpcmUg
InBhdGhuYW1lIgogCiBjbGFzcyBPcGNvZGUKLSAgICBhdHRyX3JlYWRlciA6bmFtZSwgOnNwZWNp
YWwsIDpvdmVybG9hZHMKKyAgICBhdHRyX3JlYWRlciA6bmFtZSwgOmN1c3RvbSwgOm92ZXJsb2Fk
cwogICAgIGF0dHJfcmVhZGVyIDphdHRyaWJ1dGVzCiAKLSAgICBkZWYgaW5pdGlhbGl6ZShuYW1l
LCBzcGVjaWFsKQorICAgIGRlZiBpbml0aWFsaXplKG5hbWUsIGN1c3RvbSkKICAgICAgICAgQG5h
bWUgPSBuYW1lCi0gICAgICAgIEBzcGVjaWFsID0gc3BlY2lhbAorICAgICAgICBAY3VzdG9tID0g
Y3VzdG9tCiAgICAgICAgIEBhdHRyaWJ1dGVzID0ge30KLSAgICAgICAgdW5sZXNzIHNwZWNpYWwK
KyAgICAgICAgdW5sZXNzIGN1c3RvbQogICAgICAgICAgICAgQG92ZXJsb2FkcyA9IFtdCiAgICAg
ICAgIGVuZAogICAgIGVuZApAQCAtNzIsMTggKzcyLDE4IEBAIGVuZAogCiBjbGFzcyBLaW5kCiAg
ICAgYXR0cl9yZWFkZXIgOm5hbWUKLSAgICBhdHRyX2FjY2Vzc29yIDpzcGVjaWFsCisgICAgYXR0
cl9hY2Nlc3NvciA6Y3VzdG9tCiAKICAgICBkZWYgaW5pdGlhbGl6ZShuYW1lKQogICAgICAgICBA
bmFtZSA9IG5hbWUKLSAgICAgICAgQHNwZWNpYWwgPSBmYWxzZQorICAgICAgICBAY3VzdG9tID0g
ZmFsc2UKICAgICBlbmQKIAogICAgIGRlZiA9PShvdGhlcikKICAgICAgICAgaWYgb3RoZXIuaXNf
YT8gU3RyaW5nCiAgICAgICAgICAgICBAbmFtZSA9PSBvdGhlcgogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBAbmFtZSA9PSBvdGhlci5uYW1lIGFuZCBAc3BlY2lhbCA9PSBvdGhlci5zcGVjaWFs
CisgICAgICAgICAgICBAbmFtZSA9PSBvdGhlci5uYW1lIGFuZCBAY3VzdG9tID09IG90aGVyLmN1
c3RvbQogICAgICAgICBlbmQKICAgICBlbmQKIApAQCAtMjAzLDcgKzIwMyw3IEBAIGVuZAogCiBk
ZWYgaXNLZXl3b3JkKHRva2VuKQogICAgIGlzVUQodG9rZW4pIG9yIGlzR0YodG9rZW4pIG9yIGlz
S2luZCh0b2tlbikgb3IgaXNBcmNoKHRva2VuKSBvciBpc1dpZHRoKHRva2VuKSBvcgotICAgICAg
ICB0b2tlbiA9PSAic3BlY2lhbCIgb3IgdG9rZW4gPT0gImFzIgorICAgICAgICB0b2tlbiA9PSAi
Y3VzdG9tIiBvciB0b2tlbiA9PSAiYXMiCiBlbmQKIAogZGVmIGlzSWRlbnRpZmllcih0b2tlbikK
QEAgLTM0MiwxMSArMzQyLDExIEBAIGNsYXNzIFBhcnNlcgogICAgICAgICBsb29wIHsKICAgICAg
ICAgICAgIGJyZWFrIGlmIEBpZHggPj0gQHRva2Vucy5sZW5ndGgKIAotICAgICAgICAgICAgaWYg
dG9rZW4gPT0gInNwZWNpYWwiCi0gICAgICAgICAgICAgICAgY29uc3VtZSgic3BlY2lhbCIpCisg
ICAgICAgICAgICBpZiB0b2tlbiA9PSAiY3VzdG9tIgorICAgICAgICAgICAgICAgIGNvbnN1bWUo
ImN1c3RvbSIpCiAgICAgICAgICAgICAgICAgb3Bjb2RlTmFtZSA9IGNvbnN1bWVJZGVudGlmaWVy
CiAKLSAgICAgICAgICAgICAgICBwYXJzZUVycm9yKCJDYW5ub3Qgb3ZlcmxvYWQgYSBzcGVjaWFs
IG9wY29kZSIpIGlmIHJlc3VsdFtvcGNvZGVOYW1lXQorICAgICAgICAgICAgICAgIHBhcnNlRXJy
b3IoIkNhbm5vdCBvdmVybG9hZCBhIGN1c3RvbSBvcGNvZGUiKSBpZiByZXN1bHRbb3Bjb2RlTmFt
ZV0KIAogICAgICAgICAgICAgICAgIHJlc3VsdFtvcGNvZGVOYW1lXSA9IE9wY29kZS5uZXcob3Bj
b2RlTmFtZSwgdHJ1ZSkKICAgICAgICAgICAgIGVsc2UKQEAgLTM1Niw3ICszNTYsNyBAQCBjbGFz
cyBQYXJzZXIKIAogICAgICAgICAgICAgICAgIGlmIHJlc3VsdFtvcGNvZGVOYW1lXQogICAgICAg
ICAgICAgICAgICAgICBvcGNvZGUgPSByZXN1bHRbb3Bjb2RlTmFtZV0KLSAgICAgICAgICAgICAg
ICAgICAgcGFyc2VFcnJvcigiQ2Fubm90IG92ZXJsb2FkIGEgc3BlY2lhbCBvcGNvZGUiKSBpZiBv
cGNvZGUuc3BlY2lhbAorICAgICAgICAgICAgICAgICAgICBwYXJzZUVycm9yKCJDYW5ub3Qgb3Zl
cmxvYWQgYSBjdXN0b20gb3Bjb2RlIikgaWYgb3Bjb2RlLmN1c3RvbQogICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gT3Bjb2RlLm5ldyhvcGNvZGVOYW1l
LCBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W29wY29kZU5hbWVdID0gb3Bjb2Rl
CkBAIC00MTAsNyArNDEwLDcgQEAgY2xhc3MgUGFyc2VyCiAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiB0b2tlbiA9PSAiKiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyc2VFcnJvcigiQ2FuIG9ubHkgYXBwbHkgKiB0byBUbXAiKSB1bmxlc3Mga2luZHNbLTFdLm5h
bWUgPT0gIlRtcCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZHNbLTFdLnNw
ZWNpYWwgPSB0cnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmRzWy0xXS5j
dXN0b20gPSB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoIioi
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAogCkBAIC01NDksNyArNTQ5LDcgQEAg
ZGVmIG1hdGNoSW5zdE92ZXJsb2FkKG91dHAsIHNwZWVkLCBpbnN0KQogICAgICRvcGNvZGVzLnZh
bHVlcy5lYWNoIHsKICAgICAgICAgfCBvcGNvZGUgfAogICAgICAgICBvdXRwLnB1dHMgImNhc2Ug
I3tvcGNvZGUubmFtZX06IgotICAgICAgICBpZiBvcGNvZGUuc3BlY2lhbAorICAgICAgICBpZiBv
cGNvZGUuY3VzdG9tCiAgICAgICAgICAgICB5aWVsZCBvcGNvZGUsIG5pbAogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBuZWVkT3ZlcmxvYWRTd2l0Y2ggPSAoKG9wY29kZS5vdmVybG9hZHMuc2l6
ZSAhPSAxKSBvciBzcGVlZCA9PSA6c2FmZSkKQEAgLTU3Niw3ICs1NzYsNyBAQCBlbmQKIGRlZiBt
YXRjaEluc3RPdmVybG9hZEZvcm0ob3V0cCwgc3BlZWQsIGluc3QpCiAgICAgbWF0Y2hJbnN0T3Zl
cmxvYWQob3V0cCwgc3BlZWQsIGluc3QpIHsKICAgICAgICAgfCBvcGNvZGUsIG92ZXJsb2FkIHwK
LSAgICAgICAgaWYgb3Bjb2RlLnNwZWNpYWwKKyAgICAgICAgaWYgb3Bjb2RlLmN1c3RvbQogICAg
ICAgICAgICAgeWllbGQgb3Bjb2RlLCBuaWwsIG5pbAogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjb2x1bW5HZXR0ZXIgPSBwcm9jIHsKQEAgLTYxMiw4ICs2MTIsOCBAQCBlbmQKIAogd3JpdGVI
KCJPcGNvZGVVdGlscyIpIHsKICAgICB8IG91dHAgfAorICAgIG91dHAucHV0cyAiI2luY2x1ZGUg
XCJBaXJDdXN0b20uaFwiIgogICAgIG91dHAucHV0cyAiI2luY2x1ZGUgXCJBaXJJbnN0LmhcIiIK
LSAgICBvdXRwLnB1dHMgIiNpbmNsdWRlIFwiQWlyU3BlY2lhbC5oXCIiCiAgICAgb3V0cC5wdXRz
ICJuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7IgogICAgIAog
ICAgIG91dHAucHV0cyAiaW5saW5lIGJvb2wgb3BnZW5IaWRkZW5UcnV0aCgpIHsgcmV0dXJuIHRy
dWU7IH0iCkBAIC02MjksOSArNjI5LDggQEAgd3JpdGVIKCJPcGNvZGVVdGlscyIpIHsKICAgICBv
dXRwLnB1dHMgInsiCiAgICAgbWF0Y2hJbnN0T3ZlcmxvYWQob3V0cCwgOmZhc3QsICJ0aGlzIikg
ewogICAgICAgICB8IG9wY29kZSwgb3ZlcmxvYWQgfAotICAgICAgICBpZiBvcGNvZGUuc3BlY2lh
bAotICAgICAgICAgICAgb3V0cC5wdXRzICJmdW5jdG9yKGFyZ3NbMF0sIEFyZzo6VXNlLCBBcmc6
OkdQLCBBcmc6OnBvaW50ZXJXaWR0aCgpKTsgLy8gVGhpcyBpcyBiYXNpY2FsbHkgYm9ndXMsIGJ1
dCBpdCB3b3JrcyBmb3IgYW5hbHlzZXMgdGhhdCBtb2RlbCBTcGVjaWFsIGFzIGFuIGltbWVkaWF0
ZS4iCi0gICAgICAgICAgICBvdXRwLnB1dHMgImFyZ3NbMF0uc3BlY2lhbCgpLT5mb3JFYWNoQXJn
KCp0aGlzLCBzY29wZWRMYW1iZGE8RWFjaEFyZ0NhbGxiYWNrPihmdW5jdG9yKSk7IgorICAgICAg
ICBpZiBvcGNvZGUuY3VzdG9tCisgICAgICAgICAgICBvdXRwLnB1dHMgIiN7b3Bjb2RlLm5hbWV9
Q3VzdG9tOjpmb3JFYWNoQXJnKCp0aGlzLCBmdW5jdG9yKTsiCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewogICAgICAgICAgICAg
ICAgIHwgYXJnLCBpbmRleCB8CkBAIC02NjgsOCArNjY3LDEwIEBAIHdyaXRlSCgiT3Bjb2RlVXRp
bHMiKSB7CiAgICAgJG9wY29kZXMudmFsdWVzLmVhY2ggewogICAgICAgICB8IG9wY29kZSB8CiAg
ICAgICAgIG91dHAucHV0cyAiY2FzZSAje29wY29kZS5uYW1lfToiCi0gICAgICAgIG91dHAucHV0
cyAic3dpdGNoIChzaXplb2YuLi4oQXJndW1lbnRzKSkgeyIKLSAgICAgICAgdW5sZXNzIG9wY29k
ZS5zcGVjaWFsCisgICAgICAgIGlmIG9wY29kZS5jdXN0b20KKyAgICAgICAgICAgIG91dHAucHV0
cyAiT1BHRU5fUkVUVVJOKCN7b3Bjb2RlLm5hbWV9Q3VzdG9tOjppc1ZhbGlkRm9ybVN0YXRpYyhh
cmd1bWVudHMuLi4pKTsiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dHAucHV0cyAic3dp
dGNoIChzaXplb2YuLi4oQXJndW1lbnRzKSkgeyIKICAgICAgICAgICAgIG9wY29kZS5vdmVybG9h
ZHMuZWFjaCB7CiAgICAgICAgICAgICAgICAgfCBvdmVybG9hZCB8CiAgICAgICAgICAgICAgICAg
b3V0cC5wdXRzICJjYXNlICN7b3ZlcmxvYWQuc2lnbmF0dXJlLmxlbmd0aH06IgpAQCAtNjc3LDgg
KzY3OCw4IEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAgICAgICAgICAgICAgICAgZmlsdGVy
ID0gcHJvYyB7IGZhbHNlIH0KICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IHByb2MgewogICAg
ICAgICAgICAgICAgICAgICB8IGZvcm0gfAotICAgICAgICAgICAgICAgICAgICBub3RTcGVjaWFs
ID0gKG5vdCBmb3JtLmtpbmRzLmRldGVjdCB7IHwga2luZCB8IGtpbmQuc3BlY2lhbCB9KQotICAg
ICAgICAgICAgICAgICAgICBpZiBub3RTcGVjaWFsCisgICAgICAgICAgICAgICAgICAgIG5vdEN1
c3RvbSA9IChub3QgZm9ybS5raW5kcy5kZXRlY3QgeyB8IGtpbmQgfCBraW5kLmN1c3RvbSB9KQor
ICAgICAgICAgICAgICAgICAgICBpZiBub3RDdXN0b20KICAgICAgICAgICAgICAgICAgICAgICAg
IGJlZ2luQXJjaHMob3V0cCwgZm9ybS5hcmNocykKICAgICAgICAgICAgICAgICAgICAgICAgIG91
dHAucHV0cyAiT1BHRU5fUkVUVVJOKHRydWUpOyIKICAgICAgICAgICAgICAgICAgICAgICAgIGVu
ZEFyY2hzKG91dHAsIGZvcm0uYXJjaHMpCkBAIC02ODcsMTAgKzY4OCwxMCBAQCB3cml0ZUgoIk9w
Y29kZVV0aWxzIikgewogICAgICAgICAgICAgICAgIG1hdGNoRm9ybXMob3V0cCwgOnNhZmUsIG92
ZXJsb2FkLmZvcm1zLCAwLCBjb2x1bW5HZXR0ZXIsIGZpbHRlciwgY2FsbGJhY2spCiAgICAgICAg
ICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCiAgICAgICAgICAgICB9CisgICAgICAgICAgICBv
dXRwLnB1dHMgImRlZmF1bHQ6IgorICAgICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCisgICAg
ICAgICAgICBvdXRwLnB1dHMgIn0iCiAgICAgICAgIGVuZAotICAgICAgICBvdXRwLnB1dHMgImRl
ZmF1bHQ6IgotICAgICAgICBvdXRwLnB1dHMgImJyZWFrOyIKLSAgICAgICAgb3V0cC5wdXRzICJ9
IgogICAgICAgICBvdXRwLnB1dHMgImJyZWFrOyIKICAgICB9CiAgICAgb3V0cC5wdXRzICJkZWZh
dWx0OiIKQEAgLTc2NCwxMiArNzY1LDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAg
ICAgb3V0cC5wdXRzICJ7IgogICAgIG1hdGNoSW5zdE92ZXJsb2FkRm9ybShvdXRwLCA6c2FmZSwg
InRoaXMiKSB7CiAgICAgICAgIHwgb3Bjb2RlLCBvdmVybG9hZCwgZm9ybSB8Ci0gICAgICAgIGlm
IG9wY29kZS5zcGVjaWFsCi0gICAgICAgICAgICBvdXRwLnB1dHMgImlmIChhcmdzLnNpemUoKSA8
IDEpIgotICAgICAgICAgICAgb3V0cC5wdXRzICJyZXR1cm4gZmFsc2U7IgotICAgICAgICAgICAg
b3V0cC5wdXRzICJpZiAoIWFyZ3NbMF0uaXNTcGVjaWFsKCkpIgotICAgICAgICAgICAgb3V0cC5w
dXRzICJyZXR1cm4gZmFsc2U7IgotICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4o
YXJnc1swXS5zcGVjaWFsKCktPmlzVmFsaWQoKnRoaXMpKTsiCisgICAgICAgIGlmIG9wY29kZS5j
dXN0b20KKyAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKCN7b3Bjb2RlLm5hbWV9
Q3VzdG9tOjppc1ZhbGlkRm9ybSgqdGhpcykpOyIKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
YmVnaW5BcmNocyhvdXRwLCBmb3JtLmFyY2hzKQogICAgICAgICAgICAgbmVlZHNNb3JlVmFsaWRh
dGlvbiA9IGZhbHNlCkBAIC03NzcsNyArNzc0LDcgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQi
KSB7CiAgICAgICAgICAgICAgICAgfCBpbmRleCB8CiAgICAgICAgICAgICAgICAgYXJnID0gb3Zl
cmxvYWQuc2lnbmF0dXJlW2luZGV4XQogICAgICAgICAgICAgICAgIGtpbmQgPSBmb3JtLmtpbmRz
W2luZGV4XQotICAgICAgICAgICAgICAgIG5lZWRzTW9yZVZhbGlkYXRpb24gfD0ga2luZC5zcGVj
aWFsCisgICAgICAgICAgICAgICAgbmVlZHNNb3JlVmFsaWRhdGlvbiB8PSBraW5kLmN1c3RvbQog
CiAgICAgICAgICAgICAgICAgIyBTb21lIGtpbmRzIG9mIEFyZ3MgcmVxaXJlIGFkZGl0aW9uYWwg
dmFsaWRhdGlvbi4KICAgICAgICAgICAgICAgICBjYXNlIGtpbmQubmFtZQpAQCAtODE5LDEwICs4
MTYsOCBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAgICAgfCBvcGNvZGUgfAog
ICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvcGNvZGUubmFtZX06IgogCi0gICAgICAgIGlmIG9w
Y29kZS5zcGVjaWFsCi0gICAgICAgICAgICBvdXRwLnB1dHMgImlmICghYXJnSW5kZXgpIgotICAg
ICAgICAgICAgb3V0cC5wdXRzICJyZXR1cm4gZmFsc2U7IgotICAgICAgICAgICAgb3V0cC5wdXRz
ICJPUEdFTl9SRVRVUk4oYXJnc1swXS5zcGVjaWFsKCktPmFkbWl0c1N0YWNrKCp0aGlzLCBhcmdJ
bmRleCkpOyIKKyAgICAgICAgaWYgb3Bjb2RlLmN1c3RvbQorICAgICAgICAgICAgb3V0cC5wdXRz
ICJPUEdFTl9SRVRVUk4oI3tvcGNvZGUubmFtZX1DdXN0b206OmFkbWl0c1N0YWNrKCp0aGlzLCBh
cmdJbmRleCkpOyIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgIyBTd2l0Y2ggb24gdGhlIGFy
Z0luZGV4LgogICAgICAgICAgICAgb3V0cC5wdXRzICJzd2l0Y2ggKGFyZ0luZGV4KSB7IgpAQCAt
OTY1LDE3ICs5NjAsMTMgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgaWYgZm91
bmRUcnVlCiAgICAgICAgIG91dHAucHV0cyAicmV0dXJuIHRydWU7IgogICAgIGVuZAotICAgIGZv
dW5kVHJ1ZSA9IGZhbHNlCiAgICAgJG9wY29kZXMudmFsdWVzLmVhY2ggewogICAgICAgICB8IG9w
Y29kZSB8Ci0gICAgICAgIGlmIG9wY29kZS5zcGVjaWFsCisgICAgICAgIGlmIG9wY29kZS5jdXN0
b20KICAgICAgICAgICAgIG91dHAucHV0cyAiY2FzZSAje29wY29kZS5uYW1lfToiCi0gICAgICAg
ICAgICBmb3VuZFRydWUgPSB0cnVlCisgICAgICAgICAgICBvdXRwLnB1dHMgInJldHVybiAje29w
Y29kZS5uYW1lfUN1c3RvbTo6aGFzTm9uQXJnTm9uQ29udHJvbEVmZmVjdHMoKnRoaXMpOyIKICAg
ICAgICAgZW5kCiAgICAgfQotICAgIGlmIGZvdW5kVHJ1ZQotICAgICAgICBvdXRwLnB1dHMgInJl
dHVybiBhcmdzWzBdLnNwZWNpYWwoKS0+aGFzTm9uQXJnTm9uQ29udHJvbEVmZmVjdHMoKTsiCi0g
ICAgZW5kCiAgICAgb3V0cC5wdXRzICJkZWZhdWx0OiIKICAgICBvdXRwLnB1dHMgInJldHVybiBm
YWxzZTsiCiAgICAgb3V0cC5wdXRzICJ9IgpAQCAtOTk1LDE3ICs5ODYsMTMgQEAgd3JpdGVIKCJP
cGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgaWYgZm91bmRUcnVlCiAgICAgICAgIG91dHAucHV0cyAi
cmV0dXJuIHRydWU7IgogICAgIGVuZAotICAgIGZvdW5kVHJ1ZSA9IGZhbHNlCiAgICAgJG9wY29k
ZXMudmFsdWVzLmVhY2ggewogICAgICAgICB8IG9wY29kZSB8Ci0gICAgICAgIGlmIG9wY29kZS5z
cGVjaWFsCisgICAgICAgIGlmIG9wY29kZS5jdXN0b20KICAgICAgICAgICAgIG91dHAucHV0cyAi
Y2FzZSAje29wY29kZS5uYW1lfToiCi0gICAgICAgICAgICBmb3VuZFRydWUgPSB0cnVlCisgICAg
ICAgICAgICBvdXRwLnB1dHMgInJldHVybiAje29wY29kZS5uYW1lfUN1c3RvbTo6aGFzTm9uQXJn
Tm9uQ29udHJvbEVmZmVjdHMoKnRoaXMpOyIKICAgICAgICAgZW5kCiAgICAgfQotICAgIGlmIGZv
dW5kVHJ1ZQotICAgICAgICBvdXRwLnB1dHMgInJldHVybiBhcmdzWzBdLnNwZWNpYWwoKS0+aGFz
Tm9uQXJnTm9uQ29udHJvbEVmZmVjdHMoKTsiCi0gICAgZW5kCiAgICAgb3V0cC5wdXRzICJkZWZh
dWx0OiIKICAgICBvdXRwLnB1dHMgInJldHVybiBmYWxzZTsiCiAgICAgb3V0cC5wdXRzICJ9IgpA
QCAtMTAxOCw4ICsxMDA1LDggQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgb3V0
cC5wdXRzICJDQ2FsbEhlbHBlcnM6Okp1bXAgcmVzdWx0OyIKICAgICBtYXRjaEluc3RPdmVybG9h
ZEZvcm0ob3V0cCwgOmZhc3QsICJ0aGlzIikgewogICAgICAgICB8IG9wY29kZSwgb3ZlcmxvYWQs
IGZvcm0gfAotICAgICAgICBpZiBvcGNvZGUuc3BlY2lhbAotICAgICAgICAgICAgb3V0cC5wdXRz
ICJPUEdFTl9SRVRVUk4oYXJnc1swXS5zcGVjaWFsKCktPmdlbmVyYXRlKCp0aGlzLCBqaXQsIGNv
bnRleHQpKTsiCisgICAgICAgIGlmIG9wY29kZS5jdXN0b20KKyAgICAgICAgICAgIG91dHAucHV0
cyAiT1BHRU5fUkVUVVJOKCN7b3Bjb2RlLm5hbWV9Q3VzdG9tOjpnZW5lcmF0ZSgqdGhpcywgaml0
LCBjb250ZXh0KSk7IgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBiZWdpbkFyY2hzKG91dHAs
IGZvcm0uYXJjaHMpCiAgICAgICAgICAgICBpZiBmb3JtLmFsdE5hbWUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268637</attachid>
            <date>2016-01-09 20:09:14 -0800</date>
            <delta_ts>2016-01-11 04:40:33 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25181</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0ODIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDE2LTAxLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TWFrZSBpdCBlYXNpZXIgdG8gaW50cm9kdWNlIGV4b3RpYyBpbnN0cnVjdGlvbnMgdG8gQWlyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI5NTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHks
IHlvdSBjYW4gZGVmaW5lIG5ldyAib3Bjb2RlcyIgaW4gQWlyIHVzaW5nIGVpdGhlcjoKKworICAg
ICAgICAxKSBOZXcgb3Bjb2RlIGRlY2xhcmVkIGluIEFpck9wY29kZS5vcGNvZGVzLgorICAgICAg
ICAyKSBQYXRjaCBvcGNvZGUgd2l0aCBhIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiBBaXI6OlNwZWNp
YWwuCisKKyAgICAgICAgV2l0aCAoMSksIHlvdSBhcmUgbGltaXRlZCB0byBmaXhlZC1hcmd1bWVu
dC1sZW5ndGggaW5zdHJ1Y3Rpb25zLiBUaGVyZSBhcmUgb3RoZXIKKyAgICAgICAgcmVzdHJpY3Rp
b25zIGFzIHdlbGwsIGxpa2UgdGhhdCB5b3UgY2FuIG9ubHkgdXNlIHRoZSByb2xlcyB0aGF0IHRo
ZSBBaXJPcGNvZGUgc3ludGF4CisgICAgICAgIHN1cHBvcnRzLgorCisgICAgICAgIFdpdGggKDIp
LCB5b3UgY2FuIGRvIGFueXRoaW5nIHlvdSBsaWtlLCBidXQgdGhlIGluc3RydWN0aW9uIHdpbGwg
YmUgaGFyZGVyIHRvIG1hdGNoCisgICAgICAgIHNpbmNlIGl0IHdpbGwgc2hhcmUgdGhlIHNhbWUg
b3Bjb2RlIGFzIGFueSBvdGhlciBQYXRjaC4gQWxzbywgdGhlIGluc3RydWN0aW9uIHdpbGwgaGF2
ZQorICAgICAgICB0aGUgU3BlY2lhbCBhcmd1bWVudCwgd2hpY2ggbWVhbnMgbW9yZSBidXN5LXdv
cmsgd2hlbiBjcmVhdGluZyB0aGUgaW5zdHJ1Y3Rpb24gYW5kCisgICAgICAgIHZhbGlkYXRpbmcg
aXQuCisKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VzIGFuIGluLWJldHdlZW4gZmFjaWxpdHkgY2Fs
bGVkICJjdXN0b20iLiBUaGlzIHJlcGxhY2VzIHdoYXQgQWlyT3Bjb2RlCisgICAgICAgIHByZXZp
b3VzbHkgY2FsbGVkICJzcGVjaWFsIi4gQSBjdXN0b20gaW5zdHJ1Y3Rpb24gaXMgb25lIHdob3Nl
IGJlaGF2aW9yIGlzIGRlZmluZWQgYnkgYQorICAgICAgICBGb29DdXN0b20gc3RydWN0IHdpdGgg
c29tZSBzdGF0aWMgbWV0aG9kcy4gQ2FsbHMgdG8gdGhvc2UgbWV0aG9kcyBhcmUgZW1pdHRlZCBi
eQorICAgICAgICBvcGNvZGVfZ2VuZXJhdG9yLnJiLgorCisgICAgICAgIFRoZSAiY3VzdG9tIiBm
YWNpbGl0eSBpcyBwb3dlcmZ1bCBlbm91Z2ggdG8gYmUgdXNlZCB0byBpbXBsZW1lbnQgUGF0Y2gs
IHdpdGggdGhlIGNhdmVhdAorICAgICAgICB0aGF0IHdlIG5vdyB0cmVhdCB0aGUgUGF0Y2ggaW5z
dHJ1Y3Rpb24gc3BlY2lhbGx5IGluIGEgZmV3IHBsYWNlcy4gVGhvc2UgcGxhY2VzIHdlcmUKKyAg
ICAgICAgYWxyZWFkeSBlZmZlY3RpdmVseSB0cmVhdGluZyBpdCBzcGVjaWFsbHkgYnkgYXNzdW1p
bmcgdGhhdCBvbmx5IFBhdGNoIGluc3RydWN0aW9ucyBoYXZlCisgICAgICAgIGEgU3BlY2lhbCBh
cyB0aGVpciBmaXJzdCBhcmd1bWVudC4KKworICAgICAgICBUaGlzIHdpbGwgbGV0IG1lIGltcGxl
bWVudCB0aGUgU2h1ZmZsZSBpbnN0cnVjdGlvbiAoYnVnIDE1Mjk1MiksIHdoaWNoIEkgdGhpbmsg
aXMgbmVlZGVkCisgICAgICAgIGZvciBwZXJmb3JtYW5jZSB3b3JrLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9haXIv
QWlyQ3VzdG9tLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpQYXRjaEN1c3RvbTo6
Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlBhdGNoQ3VzdG9tOjppc1ZhbGlk
Rm9ybVN0YXRpYyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlBhdGNoQ3VzdG9tOjppc1ZhbGlk
Rm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlBhdGNoQ3VzdG9tOjphZG1pdHNTdGFjayk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlBhdGNoQ3VzdG9tOjpoYXNOb25BcmdOb25Db250cm9s
RWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlBhdGNoQ3VzdG9tOjpnZW5lcmF0ZSk6
CisgICAgICAgICogYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6aGFuZGxlQ2FsbGVlU2F2ZXMpOgorICAgICAgICAqIGIzL2Fpci9BaXJJbnN0
Lmg6CisgICAgICAgICogYjMvYWlyL0Fpckluc3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okluc3Q6OmZvckVhY2gpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0OjpleHRy
YUNsb2JiZXJlZFJlZ3MpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJbnN0OjpleHRyYUVhcmx5
Q2xvYmJlcmVkUmVncyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okluc3Q6OmZvckVhY2hEZWZX
aXRoRXh0cmFDbG9iYmVyZWRSZWdzKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6SW5zdDo6cmVw
b3J0VXNlZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okluc3Q6Omhhc1NwZWNp
YWwpOiBEZWxldGVkLgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAg
ICAgKiBiMy9haXIvQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OnJlcG9ydFVzZWRSZWdpc3RlcnMpOgorICAgICAgICAqIGIzL2Fpci9vcGNvZGVfZ2Vu
ZXJhdG9yLnJiOgorCiAyMDE2LTAxLTA5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBBbGxvdyBvdmVycmlkaW5nIHRoZSBmcmFtZXdvcmtzIGRpcmVj
dG9yeSBpbmRlcGVuZGVudGx5IG9mIHVzaW5nIGEgc3RhZ2luZyBpbnN0YWxsIHBhdGgKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTQ4MjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBACiAJCTBGMENENEMyMTVGMUE2MDcwMDMy
RjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENENEMwMTVGMUE2MDQwMDMyRjFDMCAvKiBQdXREaXJlY3RJ
bmRleE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjBDRDRDNDE1RjZCNkJCMDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDRDRDMzE1
RjZCNkI1MDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgKi87IH07CiAJCTBGMEZD
NDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0
IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxMEYxQTIx
QzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oICovOyB9OwogCQkwRjEyREUwRjE5NzlENUZE
MDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEyREUwRDE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9u
RnV6ei5jcHAgKi87IH07CiAJCTBGMTJERTEwMTk3OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25G
dXp6LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEy
REUwRTE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTM2RDREMTc0QUQ2OUUwMDc1QjM1
NCAvKiBEZWZlckdDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjEzNkQ0QjE3NEFENjlCMDA3NUIzNTQgLyogRGVmZXJHQy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjQyLDYgKzIyNDMsNyBAQAog
CQkwRjBDRDRDMDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dERpcmVjdEluZGV4TW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBDRDRDMzE1RjZCNkI1MDAzMkYxQzAgLyogU3BhcnNl
QXJyYXlWYWx1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
cGFyc2VBcnJheVZhbHVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
RkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMTBGMUEyMUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyQ3VzdG9tLmg7IHBhdGggPSBiMy9h
aXIvQWlyQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTJERTBEMTk3
OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbkZ1enouY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjEyREUwRTE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25GdXp6Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMTM2RDRCMTc0QUQ2OUIwMDc1QjM1NCAvKiBEZWZlckdDLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmVyR0MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3ODYsNiArNDc4OCw3IEBACiAJCQkJMEZFQzg1NEYxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5oICovLAogCQkJCTBGRUM4NTUwMUJEQUNEQzcw
MDgwRkY3NCAvKiBBaXJDb2RlLmNwcCAqLywKIAkJCQkwRkVDODU1MTFCREFDREM3MDA4MEZGNzQg
LyogQWlyQ29kZS5oICovLAorCQkJCTBGMTBGMUEyMUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0
b20uaCAqLywKIAkJCQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVh
ZENvZGUuY3BwICovLAogCQkJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5h
dGVEZWFkQ29kZS5oICovLAogCQkJCTI2MkQ4NUI0MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwICovLApAQCAtNzQzMCw2ICs3NDMzLDcgQEAKIAkJCQkx
NDJFMzEzNjEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDJFMzEzODEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0NzgyOTdCMTM3OUU4QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYxMEYxQTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMzJCRDExMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDdXN0b20uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBaXJDdXN0b21faAor
I2RlZmluZSBBaXJDdXN0b21faAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFp
ckluc3QuaCIKKyNpbmNsdWRlICJBaXJTcGVjaWFsLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworLy8gVGhpcyBkZWZpbmVzIHRoZSBiZWhhdmlv
ciBvZiBjdXN0b20gaW5zdHJ1Y3Rpb25zIC0gaS5lLiB0aG9zZSB3aG9zZSBiZWhhdmlvciBjYW5u
b3QgYmUKKy8vIGRlc2NyaWJlZCB1c2luZyBBaXJPcGNvZGUub3Bjb2Rlcy4gSWYgeW91IGRlZmlu
ZSBhbiBvcGNvZGUgYXMgImN1c3RvbSBGb28iIGluIHRoYXQgZmlsZSwgdGhlbgorLy8geW91IHdp
bGwgbmVlZCB0byBjcmVhdGUgYSAic3RydWN0IEZvb0N1c3RvbSIgaGVyZSB0aGF0IGltcGxlbWVu
dHMgdGhlIGN1c3RvbSBiZWhhdmlvcgorLy8gbWV0aG9kcy4KKy8vCisvLyBUaGUgY3VzdG9taXph
YmlsaXR5IGdyYW50ZWQgYnkgdGhlIGN1c3RvbSBpbnN0cnVjdGlvbiBtZWNoYW5pc20gaXMgc3Ry
aWN0bHkgbGVzcyB0aGFuIHdoYXQKKy8vIHlvdSBnZXQgdXNpbmcgdGhlIFBhdGNoIGluc3RydWN0
aW9uIGFuZCBpbXBsZW1lbnRpbmcgYSBTcGVjaWFsLiBIb3dldmVyLCB0aGF0IHBhdGggcmVxdWly
ZXMKKy8vIGFsbG9jYXRpbmcgYSBTcGVjaWFsIG9iamVjdCBhbmQgZW5zdXJpbmcgdGhhdCBpdCdz
IHRoZSBmaXJzdCBvcGVyYW5kLiBGb3IgbWFueSBpbnN0cnVjdGlvbnMsCisvLyB0aGF0IGlzIG5v
dCBhcyBjb252ZW5pZW50IGFzIHVzaW5nIEN1c3RvbSwgd2hpY2ggbWFrZXMgdGhlIGluc3RydWN0
aW9uIGxvb2sgbGlrZSBhbnkgb3RoZXIKKy8vIGluc3RydWN0aW9uLiBOb3RlIHRoYXQgYm90aCBv
ZiB0aG9zZSBleHRyYSBwb3dlcnMgb2YgdGhlIFBhdGNoIGluc3RydWN0aW9uIGhhcHBlbiBiZWNh
dXNlIHdlCisvLyBzcGVjaWFsLWNhc2UgdGhhdCBpbnN0cnVjdGlvbiBpbiBtYW55IHBoYXNlcyBh
bmQgYW5hbHlzZXMuIE5vbi1zcGVjaWFsLWNhc2VkIGJlaGF2aW9ycyBvZgorLy8gUGF0Y2ggYXJl
IGltcGxlbWVudGVkIHVzaW5nIHRoZSBjdXN0b20gaW5zdHJ1Y3Rpb24gbWVjaGFuaXNtLgorLy8K
Ky8vIFNwZWNpYWxzIGFyZSBzdGlsbCBtb3JlIGZsZXhpYmxlIGlmIHlvdSBuZWVkIHRvIGxpc3Qg
ZXh0cmEgY2xvYmJlcmVkIHJlZ2lzdGVycyBhbmQgeW91J2QgbGlrZQorLy8gdGhhdCB0byBiZSBl
eHByZXNzZWQgYXMgYSBiaXR2ZWN0b3IgcmF0aGVyIHRoYW4gYW4gYXJnbGlzdC4gVGhleSBhcmUg
YWxzbyBtb3JlIGZsZXhpYmxlIGlmCisvLyB5b3UgbmVlZCB0byBjYXJyeSBleHRyYSBzdGF0ZSBh
cm91bmQgd2l0aCB0aGUgaW5zdHJ1Y3Rpb24uIEFsc28sIFNwZWNpYWxzIG1lYW4gdGhhdCB5b3UK
Ky8vIGFsd2F5cyBoYXZlIGFjY2VzcyB0byBDb2RlJiBldmVuIGluIG1ldGhvZHMgdGhhdCBkb24n
dCB0YWtlIGEgR2VuZXJhdGlvbkNvbnRleHQuCisKK3N0cnVjdCBQYXRjaEN1c3RvbSB7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICBzdGF0aWMgdm9pZCBmb3JFYWNoQXJnKElu
c3QmIGluc3QsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICAvLyBUaGlz
IGlzIGJhc2ljYWxseSBib2d1cywgYnV0IGl0IHdvcmtzIGZvciBhbmFseXNlcyB0aGF0IG1vZGVs
IFNwZWNpYWwgYXMgYW4KKyAgICAgICAgLy8gaW1tZWRpYXRlLgorICAgICAgICBmdW5jdG9yKGlu
c3QuYXJnc1swXSwgQXJnOjpVc2UsIEFyZzo6R1AsIEFyZzo6cG9pbnRlcldpZHRoKCkpOworICAg
ICAgICAKKyAgICAgICAgaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+Zm9yRWFjaEFyZyhpbnN0LCBz
Y29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPihmdW5jdG9yKSk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRpYyBib29sIGlzVmFs
aWRGb3JtU3RhdGljKEFyZ3VtZW50cy4uLikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRm9ybShJbnN0JiBpbnN0KQorICAgIHsK
KyAgICAgICAgaWYgKGluc3QuYXJncy5zaXplKCkgPCAxKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAoIWluc3QuYXJnc1swXS5pc1NwZWNpYWwoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGluc3QuYXJnc1swXS5zcGVjaWFsKCktPmlz
VmFsaWQoaW5zdCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYWRtaXRzU3RhY2soSW5zdCYg
aW5zdCwgdW5zaWduZWQgYXJnSW5kZXgpCisgICAgeworICAgICAgICBpZiAoIWFyZ0luZGV4KQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNw
ZWNpYWwoKS0+YWRtaXRzU3RhY2soaW5zdCwgYXJnSW5kZXgpOworICAgIH0KKworICAgIHN0YXRp
YyBib29sIGhhc05vbkFyZ05vbkNvbnRyb2xFZmZlY3RzKEluc3QmIGluc3QpCisgICAgeworICAg
ICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+aGFzTm9uQXJnTm9uQ29udHJvbEVm
ZmVjdHMoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgQ0NhbGxIZWxwZXJzOjpKdW1wIGdlbmVyYXRl
KAorICAgICAgICBJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNvbnRl
eHQmIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNwZWNpYWwo
KS0+Z2VuZXJhdGUoaW5zdCwgaml0LCBjb250ZXh0KTsKKyAgICB9Cit9OworCit9IH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCisjZW5k
aWYgLy8gQWlyQ3VzdG9tX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJIYW5kbGVDYWxsZWVTYXZlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxsZWVTYXZlcy5jcHAJKHJldmlzaW9uIDE5NDgyMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySGFuZGxlQ2FsbGVlU2F2ZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgaGFuZGxlQ2FsbGVlU2F2ZXMoQ29k
ZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgdXNlZENhbGxlZVNhdmVzLnNldCh0bXAucmVn
KCkpOwogICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBpZiAoaW5zdC5oYXNTcGVj
aWFsKCkpCisgICAgICAgICAgICBpZiAoaW5zdC5vcGNvZGUgPT0gUGF0Y2gpCiAgICAgICAgICAg
ICAgICAgdXNlZENhbGxlZVNhdmVzLm1lcmdlKGluc3QuZXh0cmFDbG9iYmVyZWRSZWdzKCkpOwog
ICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
bnN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0
LmgJKHJldmlzaW9uIDE5NDgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
SW5zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTEgKzExOSw4IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUaGluZywgdHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckVh
Y2goY29uc3QgRnVuY3RvciYpOwogCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaW5zdHJ1
Y3Rpb24gaGFzIGEgU3BlY2lhbCouIFRoaXMgdW5sb2NrcyBzb21lIGV4dHJhIGZ1bmN0aW9uYWxp
dHkuCi0gICAgYm9vbCBoYXNTcGVjaWFsKCkgY29uc3Q7Ci0KICAgICAvLyBSZXBvcnRzIGFueSBh
ZGRpdGlvbmFsIHJlZ2lzdGVycyBjbG9iYmVyZWQgYnkgdGhpcyBvcGVyYXRpb24uIE5vdGUgdGhh
dCBmb3IgZWZmaWNpZW5jeSwKLSAgICAvLyBleHRyYUNsb2JiZXJlZFJlZ3MoKSBvbmx5IHdvcmtz
IGlmIGhhc1NwZWNpYWwoKSByZXR1cm5zIHRydWUuCisgICAgLy8gZXh0cmFDbG9iYmVyZWRSZWdz
KCkgb25seSB3b3JrcyBmb3IgdGhlIFBhdGNoIG9wY29kZS4KICAgICBjb25zdCBSZWdpc3RlclNl
dCYgZXh0cmFDbG9iYmVyZWRSZWdzKCk7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhRWFy
bHlDbG9iYmVyZWRSZWdzKCk7CiAKQEAgLTE0MSw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgZm9yRWFjaERlZldpdGhFeHRyYUNsb2JiZXJlZFJlZ3MoSW5zdCogcHJldkluc3Qs
IEluc3QqIG5leHRJbnN0LCBjb25zdCBGdW5jdG9yJik7CiAKICAgICAvLyBVc2UgdGhpcyB0byBy
ZXBvcnQgd2hpY2ggcmVnaXN0ZXJzIGFyZSBsaXZlLiBUaGlzIHNob3VsZCBiZSBkb25lIGp1c3Qg
YmVmb3JlIGNvZGVnZW4uIE5vdGUKLSAgICAvLyB0aGF0IGZvciBlZmZpY2llbmN5LCByZXBvcnRV
c2VkUmVnaXN0ZXJzKCkgb25seSB3b3JrcyBpZiBoYXNTcGVjaWFsKCkgcmV0dXJucyB0cnVlLgor
ICAgIC8vIHRoYXQgZm9yIGVmZmljaWVuY3ksIHJlcG9ydFVzZWRSZWdpc3RlcnMoKSBvbmx5IHdv
cmtzIGZvciB0aGUgUGF0Y2ggb3Bjb2RlLgogICAgIHZvaWQgcmVwb3J0VXNlZFJlZ2lzdGVycyhj
b25zdCBSZWdpc3RlclNldCYpOwogCiAgICAgLy8gSXMgdGhpcyBpbnN0cnVjdGlvbiBpbiBvbmUg
b2YgdGhlIHZhbGlkIGZvcm1zIHJpZ2h0IG5vdz8gVGhpcyBmdW5jdGlvbiBpcyBhdXRvLWdlbmVy
YXRlZCBieQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElu
bGluZXMuaAkocmV2aXNpb24gMTk0ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJJbnN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMCArNzgsMTUgQEAgdm9p
ZCBJbnN0Ojpmb3JFYWNoKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0bwogICAgIEZvckVhY2g8VGhpbmc+
Ojpmb3JFYWNoKCp0aGlzLCBmdW5jdG9yKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zdDo6aGFzU3Bl
Y2lhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFyZ3Muc2l6ZSgpICYmIGFyZ3NbMF0uaXNTcGVj
aWFsKCk7Ci19Ci0KIGlubGluZSBjb25zdCBSZWdpc3RlclNldCYgSW5zdDo6ZXh0cmFDbG9iYmVy
ZWRSZWdzKCkKIHsKLSAgICBBU1NFUlQoaGFzU3BlY2lhbCgpKTsKKyAgICBBU1NFUlQob3Bjb2Rl
ID09IFBhdGNoKTsKICAgICByZXR1cm4gYXJnc1swXS5zcGVjaWFsKCktPmV4dHJhQ2xvYmJlcmVk
UmVncygqdGhpcyk7CiB9CiAKIGlubGluZSBjb25zdCBSZWdpc3RlclNldCYgSW5zdDo6ZXh0cmFF
YXJseUNsb2JiZXJlZFJlZ3MoKQogewotICAgIEFTU0VSVChoYXNTcGVjaWFsKCkpOworICAgIEFT
U0VSVChvcGNvZGUgPT0gUGF0Y2gpOwogICAgIHJldHVybiBhcmdzWzBdLnNwZWNpYWwoKS0+ZXh0
cmFFYXJseUNsb2JiZXJlZFJlZ3MoKnRoaXMpOwogfQogCkBAIC0xMjgsMTIgKzEyMywxMiBAQCBp
bmxpbmUgdm9pZCBJbnN0Ojpmb3JFYWNoRGVmV2l0aEV4dHJhQ2xvCiAgICAgICAgIGZ1bmN0b3Io
VGhpbmcocmVnKSwgcmVnRGVmUm9sZSwgdHlwZSwgQXJnOjpjb25zZXJ2YXRpdmVXaWR0aCh0eXBl
KSk7CiAgICAgfTsKIAotICAgIGlmIChwcmV2SW5zdCAmJiBwcmV2SW5zdC0+aGFzU3BlY2lhbCgp
KSB7CisgICAgaWYgKHByZXZJbnN0ICYmIHByZXZJbnN0LT5vcGNvZGUgPT0gUGF0Y2gpIHsKICAg
ICAgICAgcmVnRGVmUm9sZSA9IEFyZzo6RGVmOwogICAgICAgICBwcmV2SW5zdC0+ZXh0cmFDbG9i
YmVyZWRSZWdzKCkuZm9yRWFjaChyZXBvcnRSZWcpOwogICAgIH0KIAotICAgIGlmIChuZXh0SW5z
dCAmJiBuZXh0SW5zdC0+aGFzU3BlY2lhbCgpKSB7CisgICAgaWYgKG5leHRJbnN0ICYmIG5leHRJ
bnN0LT5vcGNvZGUgPT0gUGF0Y2gpIHsKICAgICAgICAgcmVnRGVmUm9sZSA9IEFyZzo6RWFybHlE
ZWY7CiAgICAgICAgIG5leHRJbnN0LT5leHRyYUVhcmx5Q2xvYmJlcmVkUmVncygpLmZvckVhY2go
cmVwb3J0UmVnKTsKICAgICB9CkBAIC0xNDEsNyArMTM2LDcgQEAgaW5saW5lIHZvaWQgSW5zdDo6
Zm9yRWFjaERlZldpdGhFeHRyYUNsbwogCiBpbmxpbmUgdm9pZCBJbnN0OjpyZXBvcnRVc2VkUmVn
aXN0ZXJzKGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQogewotICAgIEFTU0VSVCho
YXNTcGVjaWFsKCkpOworICAgIEFTU0VSVChvcGNvZGUgPT0gUGF0Y2gpOwogICAgIGFyZ3NbMF0u
c3BlY2lhbCgpLT5yZXBvcnRVc2VkUmVnaXN0ZXJzKCp0aGlzLCB1c2VkUmVnaXN0ZXJzKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCShyZXZpc2lvbiAxOTQ4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBAIC02NjUsNSArNjY1LDUgQEAgT29wcyAv
dGVybWluYWwKIAogIyBBaXIgYWxsb3dzIGZvciBleG90aWMgYmVoYXZpb3IuIEEgUGF0Y2gncyBi
ZWhhdmlvciBpcyBkZXRlcm1pbmVkIGVudGlyZWx5IGJ5IHRoZSBTcGVjaWFsIG9wZXJhbmQsCiAj
IHdoaWNoIG11c3QgYmUgdGhlIGZpcnN0IG9wZXJhbmQuCi1zcGVjaWFsIFBhdGNoCitjdXN0b20g
UGF0Y2gKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZXBvcnRVc2Vk
UmVnaXN0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwCShyZXZpc2lvbiAxOTQ4MjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgcmVwb3J0VXNlZFJlZ2lzdGVycyhDb2RlJiBj
b2RlKQogCiAgICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4ID0gYmxvY2stPnNpemUoKTsg
aW5zdEluZGV4LS07KSB7CiAgICAgICAgICAgICBJbnN0JiBpbnN0ID0gYmxvY2stPmF0KGluc3RJ
bmRleCk7Ci0gICAgICAgICAgICBpZiAoaW5zdC5oYXNTcGVjaWFsKCkpIHsKKyAgICAgICAgICAg
IGlmIChpbnN0Lm9wY29kZSA9PSBQYXRjaCkgewogICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0
IHJlZ2lzdGVyU2V0OwogICAgICAgICAgICAgICAgIGZvciAoVG1wIHRtcCA6IGdwTG9jYWxDYWxj
LmxpdmUoKSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQodG1wLmlzR1AoKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJi
CShyZXZpc2lvbiAxOTQ4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29k
ZV9nZW5lcmF0b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwxNCBAQAogcmVxdWly
ZSAicGF0aG5hbWUiCiAKIGNsYXNzIE9wY29kZQotICAgIGF0dHJfcmVhZGVyIDpuYW1lLCA6c3Bl
Y2lhbCwgOm92ZXJsb2FkcworICAgIGF0dHJfcmVhZGVyIDpuYW1lLCA6Y3VzdG9tLCA6b3Zlcmxv
YWRzCiAgICAgYXR0cl9yZWFkZXIgOmF0dHJpYnV0ZXMKIAotICAgIGRlZiBpbml0aWFsaXplKG5h
bWUsIHNwZWNpYWwpCisgICAgZGVmIGluaXRpYWxpemUobmFtZSwgY3VzdG9tKQogICAgICAgICBA
bmFtZSA9IG5hbWUKLSAgICAgICAgQHNwZWNpYWwgPSBzcGVjaWFsCisgICAgICAgIEBjdXN0b20g
PSBjdXN0b20KICAgICAgICAgQGF0dHJpYnV0ZXMgPSB7fQotICAgICAgICB1bmxlc3Mgc3BlY2lh
bAorICAgICAgICB1bmxlc3MgY3VzdG9tCiAgICAgICAgICAgICBAb3ZlcmxvYWRzID0gW10KICAg
ICAgICAgZW5kCiAgICAgZW5kCkBAIC03MiwxOCArNzIsMTggQEAgZW5kCiAKIGNsYXNzIEtpbmQK
ICAgICBhdHRyX3JlYWRlciA6bmFtZQotICAgIGF0dHJfYWNjZXNzb3IgOnNwZWNpYWwKKyAgICBh
dHRyX2FjY2Vzc29yIDpjdXN0b20KIAogICAgIGRlZiBpbml0aWFsaXplKG5hbWUpCiAgICAgICAg
IEBuYW1lID0gbmFtZQotICAgICAgICBAc3BlY2lhbCA9IGZhbHNlCisgICAgICAgIEBjdXN0b20g
PSBmYWxzZQogICAgIGVuZAogCiAgICAgZGVmID09KG90aGVyKQogICAgICAgICBpZiBvdGhlci5p
c19hPyBTdHJpbmcKICAgICAgICAgICAgIEBuYW1lID09IG90aGVyCiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIEBuYW1lID09IG90aGVyLm5hbWUgYW5kIEBzcGVjaWFsID09IG90aGVyLnNwZWNp
YWwKKyAgICAgICAgICAgIEBuYW1lID09IG90aGVyLm5hbWUgYW5kIEBjdXN0b20gPT0gb3RoZXIu
Y3VzdG9tCiAgICAgICAgIGVuZAogICAgIGVuZAogCkBAIC0yMDMsNyArMjAzLDcgQEAgZW5kCiAK
IGRlZiBpc0tleXdvcmQodG9rZW4pCiAgICAgaXNVRCh0b2tlbikgb3IgaXNHRih0b2tlbikgb3Ig
aXNLaW5kKHRva2VuKSBvciBpc0FyY2godG9rZW4pIG9yIGlzV2lkdGgodG9rZW4pIG9yCi0gICAg
ICAgIHRva2VuID09ICJzcGVjaWFsIiBvciB0b2tlbiA9PSAiYXMiCisgICAgICAgIHRva2VuID09
ICJjdXN0b20iIG9yIHRva2VuID09ICJhcyIKIGVuZAogCiBkZWYgaXNJZGVudGlmaWVyKHRva2Vu
KQpAQCAtMzQyLDExICszNDIsMTEgQEAgY2xhc3MgUGFyc2VyCiAgICAgICAgIGxvb3AgewogICAg
ICAgICAgICAgYnJlYWsgaWYgQGlkeCA+PSBAdG9rZW5zLmxlbmd0aAogCi0gICAgICAgICAgICBp
ZiB0b2tlbiA9PSAic3BlY2lhbCIKLSAgICAgICAgICAgICAgICBjb25zdW1lKCJzcGVjaWFsIikK
KyAgICAgICAgICAgIGlmIHRva2VuID09ICJjdXN0b20iCisgICAgICAgICAgICAgICAgY29uc3Vt
ZSgiY3VzdG9tIikKICAgICAgICAgICAgICAgICBvcGNvZGVOYW1lID0gY29uc3VtZUlkZW50aWZp
ZXIKIAotICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkNhbm5vdCBvdmVybG9hZCBhIHNwZWNp
YWwgb3Bjb2RlIikgaWYgcmVzdWx0W29wY29kZU5hbWVdCisgICAgICAgICAgICAgICAgcGFyc2VF
cnJvcigiQ2Fubm90IG92ZXJsb2FkIGEgY3VzdG9tIG9wY29kZSIpIGlmIHJlc3VsdFtvcGNvZGVO
YW1lXQogCiAgICAgICAgICAgICAgICAgcmVzdWx0W29wY29kZU5hbWVdID0gT3Bjb2RlLm5ldyhv
cGNvZGVOYW1lLCB0cnVlKQogICAgICAgICAgICAgZWxzZQpAQCAtMzU2LDcgKzM1Niw3IEBAIGNs
YXNzIFBhcnNlcgogCiAgICAgICAgICAgICAgICAgaWYgcmVzdWx0W29wY29kZU5hbWVdCiAgICAg
ICAgICAgICAgICAgICAgIG9wY29kZSA9IHJlc3VsdFtvcGNvZGVOYW1lXQotICAgICAgICAgICAg
ICAgICAgICBwYXJzZUVycm9yKCJDYW5ub3Qgb3ZlcmxvYWQgYSBzcGVjaWFsIG9wY29kZSIpIGlm
IG9wY29kZS5zcGVjaWFsCisgICAgICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkNhbm5vdCBv
dmVybG9hZCBhIGN1c3RvbSBvcGNvZGUiKSBpZiBvcGNvZGUuY3VzdG9tCiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBPcGNvZGUubmV3KG9wY29kZU5h
bWUsIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICByZXN1bHRbb3Bjb2RlTmFtZV0gPSBvcGNv
ZGUKQEAgLTQxMCw3ICs0MTAsNyBAQCBjbGFzcyBQYXJzZXIKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIHRva2VuID09ICIqIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJzZUVycm9yKCJDYW4gb25seSBhcHBseSAqIHRvIFRtcCIpIHVubGVzcyBraW5kc1stMV0u
bmFtZSA9PSAiVG1wIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kc1stMV0u
c3BlY2lhbCA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZHNbLTFd
LmN1c3RvbSA9IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZSgi
KiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kCiAKQEAgLTU0OSw3ICs1NDksNyBA
QCBkZWYgbWF0Y2hJbnN0T3ZlcmxvYWQob3V0cCwgc3BlZWQsIGluc3QpCiAgICAgJG9wY29kZXMu
dmFsdWVzLmVhY2ggewogICAgICAgICB8IG9wY29kZSB8CiAgICAgICAgIG91dHAucHV0cyAiY2Fz
ZSAje29wY29kZS5uYW1lfToiCi0gICAgICAgIGlmIG9wY29kZS5zcGVjaWFsCisgICAgICAgIGlm
IG9wY29kZS5jdXN0b20KICAgICAgICAgICAgIHlpZWxkIG9wY29kZSwgbmlsCiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIG5lZWRPdmVybG9hZFN3aXRjaCA9ICgob3Bjb2RlLm92ZXJsb2Fkcy5z
aXplICE9IDEpIG9yIHNwZWVkID09IDpzYWZlKQpAQCAtNTc2LDcgKzU3Niw3IEBAIGVuZAogZGVm
IG1hdGNoSW5zdE92ZXJsb2FkRm9ybShvdXRwLCBzcGVlZCwgaW5zdCkKICAgICBtYXRjaEluc3RP
dmVybG9hZChvdXRwLCBzcGVlZCwgaW5zdCkgewogICAgICAgICB8IG9wY29kZSwgb3ZlcmxvYWQg
fAotICAgICAgICBpZiBvcGNvZGUuc3BlY2lhbAorICAgICAgICBpZiBvcGNvZGUuY3VzdG9tCiAg
ICAgICAgICAgICB5aWVsZCBvcGNvZGUsIG5pbCwgbmlsCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbHVtbkdldHRlciA9IHByb2MgewpAQCAtNjEyLDggKzYxMiw4IEBAIGVuZAogCiB3cml0
ZUgoIk9wY29kZVV0aWxzIikgewogICAgIHwgb3V0cCB8CisgICAgb3V0cC5wdXRzICIjaW5jbHVk
ZSBcIkFpckN1c3RvbS5oXCIiCiAgICAgb3V0cC5wdXRzICIjaW5jbHVkZSBcIkFpckluc3QuaFwi
IgotICAgIG91dHAucHV0cyAiI2luY2x1ZGUgXCJBaXJTcGVjaWFsLmhcIiIKICAgICBvdXRwLnB1
dHMgIm5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsiCiAgICAg
CiAgICAgb3V0cC5wdXRzICJpbmxpbmUgYm9vbCBvcGdlbkhpZGRlblRydXRoKCkgeyByZXR1cm4g
dHJ1ZTsgfSIKQEAgLTYyOSw5ICs2MjksOCBAQCB3cml0ZUgoIk9wY29kZVV0aWxzIikgewogICAg
IG91dHAucHV0cyAieyIKICAgICBtYXRjaEluc3RPdmVybG9hZChvdXRwLCA6ZmFzdCwgInRoaXMi
KSB7CiAgICAgICAgIHwgb3Bjb2RlLCBvdmVybG9hZCB8Ci0gICAgICAgIGlmIG9wY29kZS5zcGVj
aWFsCi0gICAgICAgICAgICBvdXRwLnB1dHMgImZ1bmN0b3IoYXJnc1swXSwgQXJnOjpVc2UsIEFy
Zzo6R1AsIEFyZzo6cG9pbnRlcldpZHRoKCkpOyAvLyBUaGlzIGlzIGJhc2ljYWxseSBib2d1cywg
YnV0IGl0IHdvcmtzIGZvciBhbmFseXNlcyB0aGF0IG1vZGVsIFNwZWNpYWwgYXMgYW4gaW1tZWRp
YXRlLiIKLSAgICAgICAgICAgIG91dHAucHV0cyAiYXJnc1swXS5zcGVjaWFsKCktPmZvckVhY2hB
cmcoKnRoaXMsIHNjb3BlZExhbWJkYTxFYWNoQXJnQ2FsbGJhY2s+KGZ1bmN0b3IpKTsiCisgICAg
ICAgIGlmIG9wY29kZS5jdXN0b20KKyAgICAgICAgICAgIG91dHAucHV0cyAiI3tvcGNvZGUubmFt
ZX1DdXN0b206OmZvckVhY2hBcmcoKnRoaXMsIGZ1bmN0b3IpOyIKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0dXJlLmVhY2hfd2l0aF9pbmRleCB7CiAgICAgICAgICAg
ICAgICAgfCBhcmcsIGluZGV4IHwKQEAgLTY2OCw4ICs2NjcsMTAgQEAgd3JpdGVIKCJPcGNvZGVV
dGlscyIpIHsKICAgICAkb3Bjb2Rlcy52YWx1ZXMuZWFjaCB7CiAgICAgICAgIHwgb3Bjb2RlIHwK
ICAgICAgICAgb3V0cC5wdXRzICJjYXNlICN7b3Bjb2RlLm5hbWV9OiIKLSAgICAgICAgb3V0cC5w
dXRzICJzd2l0Y2ggKHNpemVvZi4uLihBcmd1bWVudHMpKSB7IgotICAgICAgICB1bmxlc3Mgb3Bj
b2RlLnNwZWNpYWwKKyAgICAgICAgaWYgb3Bjb2RlLmN1c3RvbQorICAgICAgICAgICAgb3V0cC5w
dXRzICJPUEdFTl9SRVRVUk4oI3tvcGNvZGUubmFtZX1DdXN0b206OmlzVmFsaWRGb3JtU3RhdGlj
KGFyZ3VtZW50cy4uLikpOyIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0cC5wdXRzICJz
d2l0Y2ggKHNpemVvZi4uLihBcmd1bWVudHMpKSB7IgogICAgICAgICAgICAgb3Bjb2RlLm92ZXJs
b2Fkcy5lYWNoIHsKICAgICAgICAgICAgICAgICB8IG92ZXJsb2FkIHwKICAgICAgICAgICAgICAg
ICBvdXRwLnB1dHMgImNhc2UgI3tvdmVybG9hZC5zaWduYXR1cmUubGVuZ3RofToiCkBAIC02Nzcs
OCArNjc4LDggQEAgd3JpdGVIKCJPcGNvZGVVdGlscyIpIHsKICAgICAgICAgICAgICAgICBmaWx0
ZXIgPSBwcm9jIHsgZmFsc2UgfQogICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gcHJvYyB7CiAg
ICAgICAgICAgICAgICAgICAgIHwgZm9ybSB8Ci0gICAgICAgICAgICAgICAgICAgIG5vdFNwZWNp
YWwgPSAobm90IGZvcm0ua2luZHMuZGV0ZWN0IHsgfCBraW5kIHwga2luZC5zcGVjaWFsIH0pCi0g
ICAgICAgICAgICAgICAgICAgIGlmIG5vdFNwZWNpYWwKKyAgICAgICAgICAgICAgICAgICAgbm90
Q3VzdG9tID0gKG5vdCBmb3JtLmtpbmRzLmRldGVjdCB7IHwga2luZCB8IGtpbmQuY3VzdG9tIH0p
CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdEN1c3RvbQogICAgICAgICAgICAgICAgICAgICAg
ICAgYmVnaW5BcmNocyhvdXRwLCBmb3JtLmFyY2hzKQogICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cC5wdXRzICJPUEdFTl9SRVRVUk4odHJ1ZSk7IgogICAgICAgICAgICAgICAgICAgICAgICAg
ZW5kQXJjaHMob3V0cCwgZm9ybS5hcmNocykKQEAgLTY4NywxMCArNjg4LDEwIEBAIHdyaXRlSCgi
T3Bjb2RlVXRpbHMiKSB7CiAgICAgICAgICAgICAgICAgbWF0Y2hGb3JtcyhvdXRwLCA6c2FmZSwg
b3ZlcmxvYWQuZm9ybXMsIDAsIGNvbHVtbkdldHRlciwgZmlsdGVyLCBjYWxsYmFjaykKICAgICAg
ICAgICAgICAgICBvdXRwLnB1dHMgImJyZWFrOyIKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG91dHAucHV0cyAiZGVmYXVsdDoiCisgICAgICAgICAgICBvdXRwLnB1dHMgImJyZWFrOyIKKyAg
ICAgICAgICAgIG91dHAucHV0cyAifSIKICAgICAgICAgZW5kCi0gICAgICAgIG91dHAucHV0cyAi
ZGVmYXVsdDoiCi0gICAgICAgIG91dHAucHV0cyAiYnJlYWs7IgotICAgICAgICBvdXRwLnB1dHMg
In0iCiAgICAgICAgIG91dHAucHV0cyAiYnJlYWs7IgogICAgIH0KICAgICBvdXRwLnB1dHMgImRl
ZmF1bHQ6IgpAQCAtNzY0LDEyICs3NjUsOCBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsK
ICAgICBvdXRwLnB1dHMgInsiCiAgICAgbWF0Y2hJbnN0T3ZlcmxvYWRGb3JtKG91dHAsIDpzYWZl
LCAidGhpcyIpIHsKICAgICAgICAgfCBvcGNvZGUsIG92ZXJsb2FkLCBmb3JtIHwKLSAgICAgICAg
aWYgb3Bjb2RlLnNwZWNpYWwKLSAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKGFyZ3Muc2l6ZSgp
IDwgMSkiCi0gICAgICAgICAgICBvdXRwLnB1dHMgInJldHVybiBmYWxzZTsiCi0gICAgICAgICAg
ICBvdXRwLnB1dHMgImlmICghYXJnc1swXS5pc1NwZWNpYWwoKSkiCi0gICAgICAgICAgICBvdXRw
LnB1dHMgInJldHVybiBmYWxzZTsiCi0gICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVS
TihhcmdzWzBdLnNwZWNpYWwoKS0+aXNWYWxpZCgqdGhpcykpOyIKKyAgICAgICAgaWYgb3Bjb2Rl
LmN1c3RvbQorICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4oI3tvcGNvZGUubmFt
ZX1DdXN0b206OmlzVmFsaWRGb3JtKCp0aGlzKSk7IgogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBiZWdpbkFyY2hzKG91dHAsIGZvcm0uYXJjaHMpCiAgICAgICAgICAgICBuZWVkc01vcmVWYWxp
ZGF0aW9uID0gZmFsc2UKQEAgLTc3Nyw3ICs3NzQsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRl
ZCIpIHsKICAgICAgICAgICAgICAgICB8IGluZGV4IHwKICAgICAgICAgICAgICAgICBhcmcgPSBv
dmVybG9hZC5zaWduYXR1cmVbaW5kZXhdCiAgICAgICAgICAgICAgICAga2luZCA9IGZvcm0ua2lu
ZHNbaW5kZXhdCi0gICAgICAgICAgICAgICAgbmVlZHNNb3JlVmFsaWRhdGlvbiB8PSBraW5kLnNw
ZWNpYWwKKyAgICAgICAgICAgICAgICBuZWVkc01vcmVWYWxpZGF0aW9uIHw9IGtpbmQuY3VzdG9t
CiAKICAgICAgICAgICAgICAgICAjIFNvbWUga2luZHMgb2YgQXJncyByZXFpcmUgYWRkaXRpb25h
bCB2YWxpZGF0aW9uLgogICAgICAgICAgICAgICAgIGNhc2Uga2luZC5uYW1lCkBAIC04MTksMTAg
KzgxNiw4IEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICB8IG9wY29kZSB8
CiAgICAgICAgIG91dHAucHV0cyAiY2FzZSAje29wY29kZS5uYW1lfToiCiAKLSAgICAgICAgaWYg
b3Bjb2RlLnNwZWNpYWwKLSAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFhcmdJbmRleCkiCi0g
ICAgICAgICAgICBvdXRwLnB1dHMgInJldHVybiBmYWxzZTsiCi0gICAgICAgICAgICBvdXRwLnB1
dHMgIk9QR0VOX1JFVFVSTihhcmdzWzBdLnNwZWNpYWwoKS0+YWRtaXRzU3RhY2soKnRoaXMsIGFy
Z0luZGV4KSk7IgorICAgICAgICBpZiBvcGNvZGUuY3VzdG9tCisgICAgICAgICAgICBvdXRwLnB1
dHMgIk9QR0VOX1JFVFVSTigje29wY29kZS5uYW1lfUN1c3RvbTo6YWRtaXRzU3RhY2soKnRoaXMs
IGFyZ0luZGV4KSk7IgogICAgICAgICBlbHNlCiAgICAgICAgICAgICAjIFN3aXRjaCBvbiB0aGUg
YXJnSW5kZXguCiAgICAgICAgICAgICBvdXRwLnB1dHMgInN3aXRjaCAoYXJnSW5kZXgpIHsiCkBA
IC05NjUsMTcgKzk2MCwxMyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICBpZiBm
b3VuZFRydWUKICAgICAgICAgb3V0cC5wdXRzICJyZXR1cm4gdHJ1ZTsiCiAgICAgZW5kCi0gICAg
Zm91bmRUcnVlID0gZmFsc2UKICAgICAkb3Bjb2Rlcy52YWx1ZXMuZWFjaCB7CiAgICAgICAgIHwg
b3Bjb2RlIHwKLSAgICAgICAgaWYgb3Bjb2RlLnNwZWNpYWwKKyAgICAgICAgaWYgb3Bjb2RlLmN1
c3RvbQogICAgICAgICAgICAgb3V0cC5wdXRzICJjYXNlICN7b3Bjb2RlLm5hbWV9OiIKLSAgICAg
ICAgICAgIGZvdW5kVHJ1ZSA9IHRydWUKKyAgICAgICAgICAgIG91dHAucHV0cyAicmV0dXJuICN7
b3Bjb2RlLm5hbWV9Q3VzdG9tOjpoYXNOb25BcmdOb25Db250cm9sRWZmZWN0cygqdGhpcyk7Igog
ICAgICAgICBlbmQKICAgICB9Ci0gICAgaWYgZm91bmRUcnVlCi0gICAgICAgIG91dHAucHV0cyAi
cmV0dXJuIGFyZ3NbMF0uc3BlY2lhbCgpLT5oYXNOb25BcmdOb25Db250cm9sRWZmZWN0cygpOyIK
LSAgICBlbmQKICAgICBvdXRwLnB1dHMgImRlZmF1bHQ6IgogICAgIG91dHAucHV0cyAicmV0dXJu
IGZhbHNlOyIKICAgICBvdXRwLnB1dHMgIn0iCkBAIC05OTUsMTcgKzk4NiwxMyBAQCB3cml0ZUgo
Ik9wY29kZUdlbmVyYXRlZCIpIHsKICAgICBpZiBmb3VuZFRydWUKICAgICAgICAgb3V0cC5wdXRz
ICJyZXR1cm4gdHJ1ZTsiCiAgICAgZW5kCi0gICAgZm91bmRUcnVlID0gZmFsc2UKICAgICAkb3Bj
b2Rlcy52YWx1ZXMuZWFjaCB7CiAgICAgICAgIHwgb3Bjb2RlIHwKLSAgICAgICAgaWYgb3Bjb2Rl
LnNwZWNpYWwKKyAgICAgICAgaWYgb3Bjb2RlLmN1c3RvbQogICAgICAgICAgICAgb3V0cC5wdXRz
ICJjYXNlICN7b3Bjb2RlLm5hbWV9OiIKLSAgICAgICAgICAgIGZvdW5kVHJ1ZSA9IHRydWUKKyAg
ICAgICAgICAgIG91dHAucHV0cyAicmV0dXJuICN7b3Bjb2RlLm5hbWV9Q3VzdG9tOjpoYXNOb25B
cmdOb25Db250cm9sRWZmZWN0cygqdGhpcyk7IgogICAgICAgICBlbmQKICAgICB9Ci0gICAgaWYg
Zm91bmRUcnVlCi0gICAgICAgIG91dHAucHV0cyAicmV0dXJuIGFyZ3NbMF0uc3BlY2lhbCgpLT5o
YXNOb25BcmdOb25Db250cm9sRWZmZWN0cygpOyIKLSAgICBlbmQKICAgICBvdXRwLnB1dHMgImRl
ZmF1bHQ6IgogICAgIG91dHAucHV0cyAicmV0dXJuIGZhbHNlOyIKICAgICBvdXRwLnB1dHMgIn0i
CkBAIC0xMDE4LDggKzEwMDUsOCBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICBv
dXRwLnB1dHMgIkNDYWxsSGVscGVyczo6SnVtcCByZXN1bHQ7IgogICAgIG1hdGNoSW5zdE92ZXJs
b2FkRm9ybShvdXRwLCA6ZmFzdCwgInRoaXMiKSB7CiAgICAgICAgIHwgb3Bjb2RlLCBvdmVybG9h
ZCwgZm9ybSB8Ci0gICAgICAgIGlmIG9wY29kZS5zcGVjaWFsCi0gICAgICAgICAgICBvdXRwLnB1
dHMgIk9QR0VOX1JFVFVSTihhcmdzWzBdLnNwZWNpYWwoKS0+Z2VuZXJhdGUoKnRoaXMsIGppdCwg
Y29udGV4dCkpOyIKKyAgICAgICAgaWYgb3Bjb2RlLmN1c3RvbQorICAgICAgICAgICAgb3V0cC5w
dXRzICJPUEdFTl9SRVRVUk4oI3tvcGNvZGUubmFtZX1DdXN0b206OmdlbmVyYXRlKCp0aGlzLCBq
aXQsIGNvbnRleHQpKTsiCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJlZ2luQXJjaHMob3V0
cCwgZm9ybS5hcmNocykKICAgICAgICAgICAgIGlmIGZvcm0uYWx0TmFtZQo=
</data>
<flag name="review"
          id="293614"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>