<?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>170406</bug_id>
          
          <creation_ts>2017-04-03 10:50:54 -0700</creation_ts>
          <short_desc>Inst::forEachArg could compile to more compact code</short_desc>
          <delta_ts>2017-04-03 11:55:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1293678</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-03 10:50:54 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293684</commentid>
    <comment_count>1</comment_count>
      <attachid>306084</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-03 11:00:06 -0700</bug_when>
    <thetext>Created attachment 306084
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293693</commentid>
    <comment_count>2</comment_count>
      <attachid>306084</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-03 11:10:41 -0700</bug_when>
    <thetext>Comment on attachment 306084
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=306084&amp;action=review

lgtm

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        shrinks by 2.7 MB. This is a 15% reduction in JavaScriptCore binary size.

DAMN

&gt; Source/JavaScriptCore/b3/air/opcode_generator.rb:-1143
&gt; -# This is a hack for JSAir. It&apos;s a joke.

No more joke?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293705</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-03 11:32:27 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #2)
&gt; Comment on attachment 306084 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=306084&amp;action=review
&gt; 
&gt; lgtm
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:21
&gt; &gt; +        shrinks by 2.7 MB. This is a 15% reduction in JavaScriptCore binary size.
&gt; 
&gt; DAMN

Yeah!  We were ALWAYS_INLINE&apos;ing a ~1600 LoC autogenerated nested switch lambda monster in &gt;20 places.  Kudos to all C++ compilers that compiled this code without ICE&apos;ing.

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/opcode_generator.rb:-1143
&gt; &gt; -# This is a hack for JSAir. It&apos;s a joke.
&gt; 
&gt; No more joke?

We needed that code to generate the ARES-6 &quot;Air&quot; benchmark.  It&apos;s already been generated.  So we don&apos;t really need to have this code anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293724</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-03 11:54:31 -0700</bug_when>
    <thetext>It&apos;s possible, but unlikely, that this patch will show up as a perf regression or progression. We should roll it out if it regresses anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293725</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-03 11:55:56 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/214827/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306084</attachid>
            <date>2017-04-03 11:00:06 -0700</date>
            <delta_ts>2017-04-03 11:28:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19552</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0ODE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE3LTA0LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5zdDo6Zm9yRWFjaEFyZyBjb3VsZCBjb21waWxlIHRvIG1vcmUgY29tcGFjdCBjb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA0MDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFByaW9y
IHRvIHRoaXMgY2hhbmdlLCBJbnN0Ojpmb3JFYWNoQXJnIGNvbXBpbGVkIHRvIGEgZ2lub3Jtb3Vz
IEFMV0FZU19JTkxJTkUgc3dpdGNoIHN0YXRlbWVudC4KKyAgICAgICAgSXQgaGFkIG9uZSBjYXNl
IGZvciBlYWNoIG9wY29kZSwgYW5kIHRoZW4gZWFjaCBvZiB0aG9zZSBjYXNlcyB3b3VsZCBoYXZl
IGEgc3dpdGNoIHN0YXRlbWVudCBvdmVyCisgICAgICAgIHRoZSBudW1iZXIgb2Ygb3BlcmFuZHMu
IFRoZW4gdGhlIGNhc2VzIG9mIHRoYXQgc3dpdGNoIHN0YXRlbWVudCB3b3VsZCBoYXZlIGEgc2Vx
dWVuY2Ugb2YgY2FsbHMgdG8KKyAgICAgICAgdGhlIHBhc3NlZCBsYW1iZGEuIFRoaXMgbWVhbnQg
dGhhdCBldmVyeSB1c2VyIG9mIGZvckVhY2hBcmcgd291bGQgZ2VuZXJhdGUgYW4gaW5zYW5lIGFt
b3VudCBvZgorICAgICAgICBjb2RlLiBJdCBhbHNvIG1lYW50IHRoYXQgdGhlIGlubGluaW5nIGFj
aGlldmVkIG5vdGhpbmcsIHNpbmNlIHRoZSBsYW1iZGEgd291bGQgc3VyZWx5IHRoZW4gbm90Cisg
ICAgICAgIGJlIGlubGluZWQgLSBhbmQgaWYgaXQgd2FzLCB0aGVuIHRoZSBpY2FjaGUgcHJlc3N1
cmUgZHVlIHRvIGNvZGUgYmxvYXQgd291bGQgc3VyZWx5IG5lZ2F0ZSBhbnkKKyAgICAgICAgYmVu
ZWZpdHMuCisgICAgICAgIAorICAgICAgICBUaGlzIHJlcGxhY2VzIHRoYXQgY29kZSB3aXRoIGEg
bG9vcCBvdmVyIGEgY29tcGFjdCBsb29rLXVwIHRhYmxlLiBXZSB1c2UgdGhlIG9wY29kZSBhbmQg
bnVtYmVyIG9mCisgICAgICAgIG9wZXJhbmRzIGFzIGtleXMgaW50byB0aGF0IGxvb2stdXAgdGFi
bGUuIFRoZSB0YWJsZSBvbmx5IHRha2VzIGFib3V0IDIwS0IuIEl0IGhhcyBvbmUgYnl0ZSBmb3IK
KyAgICAgICAgZWFjaCBhcmd1bWVudCBpbiBlYWNoIG92ZXJsb2FkIG9mIGVhY2ggb3Bjb2RlLgor
ICAgICAgICAKKyAgICAgICAgSSBjYW4ndCBtZWFzdXJlIGFueSByZXByb2R1Y2libGUgY2hhbmdl
IGluIHBlcmZvcm1hbmNlLCBidXQgdGhlIEphdmFTY3JpcHRDb3JlIGZyYW1ld29yayBiaW5hcnkK
KyAgICAgICAgc2hyaW5rcyBieSAyLjcgTUIuIFRoaXMgaXMgYSAxNSUgcmVkdWN0aW9uIGluIEph
dmFTY3JpcHRDb3JlIGJpbmFyeSBzaXplLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9CM1dpZHRoLmg6CisgICAgICAg
ICogYjMvYWlyL0FpckN1c3RvbS5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpQYXRjaEN1c3Rv
bTo6Zm9yRWFjaEFyZyk6CisgICAgICAgICogYjMvYWlyL0FpckZvcm1UYWJsZS5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6ZGVjb2RlRm9ybVJvbGUpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpkZWNvZGVGb3JtQmFuayk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmRlY29kZUZv
cm1XaWR0aCk6CisgICAgICAgICogYjMvYWlyL0Fpckluc3QuaDoKKyAgICAgICAgKiBiMy9haXIv
b3Bjb2RlX2dlbmVyYXRvci5yYjoKKwogMjAxNy0wNC0wMyAgWmFuIERvYmVyc2VrICA8emRvYmVy
c2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2pzY10gQWRkIHBhdGNoYWJsZUp1bXBTaXplKCkg
Zm9yIE1JUFMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTQ2
MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSw3IEBACiAJCTBGMkFD
NTZCMUU4QTBCRDUwMDAxRUUzRiAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5TGluZWFyU2Nhbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQUM1Njkx
RThBMEJEMTAwMDFFRTNGIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQnlMaW5lYXJTY2FuLmggKi87
IH07CiAJCTBGMkFDNTZFMUU4RDdCMDAwMDAxRUUzRiAvKiBBaXJQaGFzZUluc2VydGlvblNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJBQzU2
QzFFOEQ3QUZGMDAwMUVFM0YgLyogQWlyUGhhc2VJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQkw
RjJBQzU2RjFFOEQ3QjAzMDAwMUVFM0YgLyogQWlyUGhhc2VJbnNlcnRpb25TZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkFDNTZEMUU4RDdBRkYw
MDAxRUUzRiAvKiBBaXJQaGFzZUluc2VydGlvblNldC5oICovOyB9OworCQkwRjJBQzU3MTFFOEVF
NDU0MDAwMUVFM0YgLyogQWlyRm9ybVRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJBQzU3MDFFOEVFNDUyMDAwMUVFM0YgLyogQWlyRm9ybVRh
YmxlLmggKi87IH07CiAJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVm
Q291bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyQjY2QTgxN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQjY2QUQxN0I2
QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QTkxN0I2QjUzRDAwQTdB
RTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkI2NkFFMTdCNkI1NDUwMEE3QUUzRiAv
KiBHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QUExN0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdS
ZWZDb3VudGVkU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI3MjEsNiArMjcyMiw3IEBACiAJCTBGMkFDNTY5MUU4QTBCRDEwMDAxRUUzRiAv
KiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5TGluZWFyU2Nhbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5TGluZWFyU2Nhbi5oOyBwYXRoID0g
YjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlMaW5lYXJTY2FuLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMkFDNTZDMUU4RDdBRkYwMDAxRUUzRiAvKiBBaXJQaGFzZUluc2Vy
dGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJQaGFz
ZUluc2VydGlvblNldC5jcHA7IHBhdGggPSBiMy9haXIvQWlyUGhhc2VJbnNlcnRpb25TZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJBQzU2RDFFOEQ3QUZGMDAwMUVFM0Yg
LyogQWlyUGhhc2VJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQWlyUGhhc2VJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGIzL2Fpci9BaXJQaGFzZUluc2VydGlv
blNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJBQzU3MDFFOEVFNDUyMDAw
MUVFM0YgLyogQWlyRm9ybVRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEFpckZvcm1UYWJsZS5oOyBwYXRoID0gYjMvYWlyL0FpckZvcm1UYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJCNjZBODE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWlu
Z1JlZkNvdW50ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NJbmNvbWluZ1JlZkNvdW50ZWQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQjY2QTkxN0I2QjUzRDAwQTdBRTNGIC8qIEdD
SW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0luY29taW5nUmVm
Q291bnRlZElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQjY2QUEx
N0I2QjUzRDAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdDSW5jb21pbmdSZWZDb3VudGVkU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01NTg4LDYgKzU1OTAsNyBAQAogCQkJCTI2MkQ4NUI1MUMwRDY1MEYwMDZBQ0I2MSAvKiBB
aXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCAqLywKIAkJCQkwRjJBQzU2NDFFOEEwQjc2MDAw
MUVFM0YgLyogQWlyRml4U3BpbGxzQWZ0ZXJUZXJtaW5hbHMuY3BwICovLAogCQkJCTBGMkFDNTY1
MUU4QTBCNzYwMDAxRUUzRiAvKiBBaXJGaXhTcGlsbHNBZnRlclRlcm1pbmFscy5oICovLAorCQkJ
CTBGMkFDNTcwMUU4RUU0NTIwMDAxRUUzRiAvKiBBaXJGb3JtVGFibGUuaCAqLywKIAkJCQkwRkVD
ODU1MjFCREFDREM3MDA4MEZGNzQgLyogQWlyRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZF
Qzg1NTMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckdlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODU1
NDFCREFDREM3MDA4MEZGNzQgLyogQWlyR2VuZXJhdGUuaCAqLywKQEAgLTkzMjksNiArOTMzMiw3
IEBACiAJCQkJMEYyQjY3MEIxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkI3RjM5RDE1RUQ4RTQ2MDBGMTY3QjIgLyogVHlwZUVycm9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJENERFQTE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJBQzU3MTFFOEVFNDU0MDAwMUVFM0YgLyogQWly
Rm9ybVRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIzMTEwMTE5NzVCNDY3MDA4MDg1N0Mg
LyogVHlwZUxvY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI2QzM5MUFGNDhE
REMwMERCMUJGNyAvKiBUeXBlb2ZUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkM5NTJCNzE5
QTI4OTg1MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkocmV2aXNpb24gMjE0NjM5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsMTMg
QEAgaW5saW5lIFdpZHRoIHBvaW50ZXJXaWR0aCgpCiAgICAgcmV0dXJuIFdpZHRoMzI7CiB9CiAK
Ky8vIERvbid0IHVzZSB0aGlzIHVubGVzcyB0aGUgY29tcGlsZXIgZm9yY2VzIHlvdSB0by4KKyNp
ZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisjZGVmaW5lIFBPSU5URVJfV0lEVEggV2lkdGg2
NAorI2Vsc2UKKyNkZWZpbmUgUE9JTlRFUl9XSURUSCBXaWR0aDMyCisjZW5kaWYKKwogaW5saW5l
IFdpZHRoIHdpZHRoRm9yVHlwZShUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgJKHJldmlzaW9uIDIx
NDYzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDE0ICs1NywxMyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsgbmFtZXNwYWNlCiAvLyBEZWZpbml0aW9uIG9mIFBhdGNoIGluc3RydWN0aW9uLiBQYXRjaCBp
cyB1c2VkIHRvIGRlbGVnYXRlIHRoZSBiZWhhdmlvciBvZiB0aGUgaW5zdHJ1Y3Rpb24gdG8gdGhl
CiAvLyBTcGVjaWFsIG9iamVjdCwgd2hpY2ggd2lsbCBiZSB0aGUgZmlyc3QgYXJndW1lbnQgdG8g
dGhlIGluc3RydWN0aW9uLgogc3RydWN0IFBhdGNoQ3VzdG9tIHsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgotICAgIHN0YXRpYyB2b2lkIGZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICBzdGF0aWMgdm9pZCBmb3JFYWNoQXJnKEluc3QmIGlu
c3QsIFNjb3BlZExhbWJkYTxJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+IGxhbWJkYSkKICAgICB7CiAg
ICAgICAgIC8vIFRoaXMgaXMgYmFzaWNhbGx5IGJvZ3VzLCBidXQgaXQgd29ya3MgZm9yIGFuYWx5
c2VzIHRoYXQgbW9kZWwgU3BlY2lhbCBhcyBhbgogICAgICAgICAvLyBpbW1lZGlhdGUuCi0gICAg
ICAgIGZ1bmN0b3IoaW5zdC5hcmdzWzBdLCBBcmc6OlVzZSwgR1AsIHBvaW50ZXJXaWR0aCgpKTsK
KyAgICAgICAgbGFtYmRhKGluc3QuYXJnc1swXSwgQXJnOjpVc2UsIEdQLCBwb2ludGVyV2lkdGgo
KSk7CiAgICAgICAgIAotICAgICAgICBpbnN0LmFyZ3NbMF0uc3BlY2lhbCgpLT5mb3JFYWNoQXJn
KGluc3QsIHNjb3BlZExhbWJkYTxJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+KGZ1bmN0b3IpKTsKKyAg
ICAgICAgaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+Zm9yRWFjaEFyZyhpbnN0LCBsYW1iZGEpOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRm9ybVRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGb3JtVGFibGUuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZvcm1UYWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVk
ZSAiQWlyQXJnLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2Ug
QWlyIHsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgZm9ybVJvbGVTaGlmdCA9IDA7CitzdGF0aWMg
Y29uc3QgdWludDhfdCBmb3JtUm9sZU1hc2sgPSAxNTsKK3N0YXRpYyBjb25zdCB1aW50OF90IGZv
cm1CYW5rU2hpZnQgPSA0Oworc3RhdGljIGNvbnN0IHVpbnQ4X3QgZm9ybUJhbmtNYXNrID0gMTsK
K3N0YXRpYyBjb25zdCB1aW50OF90IGZvcm1XaWR0aFNoaWZ0ID0gNTsKK3N0YXRpYyBjb25zdCB1
aW50OF90IGZvcm1XaWR0aE1hc2sgPSAzOworc3RhdGljIGNvbnN0IHVpbnQ4X3QgZm9ybUludmFs
aWRTaGlmdCA9IDc7CisKKyNkZWZpbmUgRU5DT0RFX0lOU1RfRk9STShyb2xlLCBiYW5rLCB3aWR0
aCkgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvbGUpIDw8IGZvcm1Sb2xlU2hpZnQgfCBzdGF0aWNf
Y2FzdDx1aW50OF90PihiYW5rKSA8PCBmb3JtQmFua1NoaWZ0IHwgc3RhdGljX2Nhc3Q8dWludDhf
dD4od2lkdGgpIDw8IGZvcm1XaWR0aFNoaWZ0KQorCisjZGVmaW5lIElOVkFMSURfSU5TVF9GT1JN
ICgxIDw8IGZvcm1JbnZhbGlkU2hpZnQpCisKK0pTX0VYUE9SVF9QUklWQVRFIGV4dGVybiB1aW50
OF90IGdfZm9ybVRhYmxlW107CisKK2lubGluZSBBcmc6OlJvbGUgZGVjb2RlRm9ybVJvbGUodWlu
dDhfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXJnOjpSb2xlPigodmFsdWUg
Pj4gZm9ybVJvbGVTaGlmdCkgJiBmb3JtUm9sZU1hc2spOworfQorCitpbmxpbmUgQmFuayBkZWNv
ZGVGb3JtQmFuayh1aW50OF90IHZhbHVlKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxCYW5r
PigodmFsdWUgPj4gZm9ybUJhbmtTaGlmdCkgJiBmb3JtQmFua01hc2spOworfQorCitpbmxpbmUg
V2lkdGggZGVjb2RlRm9ybVdpZHRoKHVpbnQ4X3QgdmFsdWUpCit7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdpZHRoPigodmFsdWUgPj4gZm9ybVdpZHRoU2hpZnQpICYgZm9ybVdpZHRoTWFzayk7
Cit9CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCShy
ZXZpc2lvbiAyMTQ2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQCBuYW1lc3BhY2UgQWlyIHsKIHN0cnVj
dCBHZW5lcmF0aW9uQ29udGV4dDsKIAogc3RydWN0IEluc3QgewotcHVibGljOgogICAgIHR5cGVk
ZWYgVmVjdG9yPEFyZywgMz4gQXJnTGlzdDsKIAogICAgIEluc3QoKQpAQCAtMjA3LDYgKzIwNiwx
MSBAQCBwdWJsaWM6CiAgICAgQXJnTGlzdCBhcmdzOwogICAgIFZhbHVlKiBvcmlnaW47IC8vIFRo
ZSBCMzo6VmFsdWUgdGhhdCB0aGlzIG9yaWdpbmF0ZWQgZnJvbS4KICAgICBLaW5kIGtpbmQ7CisK
K3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hB
cmdTaW1wbGUoY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9yRWFjaEFyZ0N1c3RvbShTY29wZWRM
YW1iZGE8RWFjaEFyZ0NhbGxiYWNrPik7CiB9OwogCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
Mzo6QWlyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0
b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiCShyZXZpc2lvbiAyMTQ2MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcg
QEAgY2xhc3MgQXJnCiAgICAgCiAgICAgZGVmIHNlbGYud2lkdGhDb2RlKHdpZHRoKQogICAgICAg
ICBpZiB3aWR0aCA9PSAiUHRyIgotICAgICAgICAgICAgInBvaW50ZXJXaWR0aCgpIgorICAgICAg
ICAgICAgIlBPSU5URVJfV0lEVEgiCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICJXaWR0aCN7
d2lkdGh9IgogICAgICAgICBlbmQKQEAgLTk0LDYgKzk0LDEwIEBAIGNsYXNzIEFyZwogICAgIGRl
ZiByb2xlQ29kZQogICAgICAgICBBcmcucm9sZUNvZGUocm9sZSkKICAgICBlbmQKKyAgICAKKyAg
ICBkZWYgdG9fcworICAgICAgICAiI3tyb2xlfToje2Jhbmt9OiN7d2lkdGh9IgorICAgIGVuZAog
ZW5kCiAKIGNsYXNzIE92ZXJsb2FkCkBAIC01MTQsNyArNTE4LDcgQEAgd3JpdGVIKCJPcGNvZGUi
KSB7CiAgICAgfCBvdXRwIHwKICAgICBvdXRwLnB1dHMgIm5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsiCiAgICAgb3V0cC5wdXRzICJlbnVtIE9wY29kZSA6IGlu
dDE2X3QgeyIKLSAgICAkb3Bjb2Rlcy5rZXlzLnNvcnQuZWFjaCB7CisgICAgJG9wY29kZXMua2V5
cy5lYWNoIHsKICAgICAgICAgfCBvcGNvZGUgfAogICAgICAgICBvdXRwLnB1dHMgIiAgICAje29w
Y29kZX0sIgogICAgIH0KQEAgLTY0NSwxMCArNjQ5LDIzIEBAIGRlZiBlbmRBcmNocyhvdXRwLCBh
cmNocykKICAgICBvdXRwLnB1dHMgIiNlbmRpZiIKIGVuZAogCittYXhOdW1PcGVyYW5kcyA9IDAK
KyRvcGNvZGVzLnZhbHVlcy5lYWNoIHsKKyAgICB8IG9wY29kZSB8CisgICAgbmV4dCBpZiBvcGNv
ZGUuY3VzdG9tCisgICAgb3Bjb2RlLm92ZXJsb2Fkcy5lYWNoIHsKKyAgICAgICAgfCBvdmVybG9h
ZCB8CisgICAgICAgIG1heE51bU9wZXJhbmRzID0gb3ZlcmxvYWQuc2lnbmF0dXJlLmxlbmd0aCBp
ZiBvdmVybG9hZC5zaWduYXR1cmUubGVuZ3RoID4gbWF4TnVtT3BlcmFuZHMKKyAgICB9Cit9CisK
K2Zvcm1UYWJsZVdpZHRoID0gKG1heE51bU9wZXJhbmRzICsgMSkgKiBtYXhOdW1PcGVyYW5kcyAv
IDIKKwogd3JpdGVIKCJPcGNvZGVVdGlscyIpIHsKICAgICB8IG91dHAgfAogICAgIG91dHAucHV0
cyAiI2luY2x1ZGUgXCJBaXJDdXN0b20uaFwiIgogICAgIG91dHAucHV0cyAiI2luY2x1ZGUgXCJB
aXJJbnN0LmhcIiIKKyAgICBvdXRwLnB1dHMgIiNpbmNsdWRlIFwiQWlyRm9ybVRhYmxlLmhcIiIK
ICAgICBvdXRwLnB1dHMgIm5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2Ug
QWlyIHsiCiAgICAgCiAgICAgb3V0cC5wdXRzICJpbmxpbmUgYm9vbCBvcGdlbkhpZGRlblRydXRo
KCkgeyByZXR1cm4gdHJ1ZTsgfSIKQEAgLTY2MCwxOSArNjc3LDM0IEBAIHdyaXRlSCgiT3Bjb2Rl
VXRpbHMiKSB7CiAgICAgb3V0cC5wdXRzICJ9IHdoaWxlIChmYWxzZSkiCiAKICAgICBvdXRwLnB1
dHMgInRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IgotICAgIG91dHAucHV0cyAidm9pZCBJbnN0
Ojpmb3JFYWNoQXJnKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIgorICAgIG91dHAucHV0cyAiQUxX
QVlTX0lOTElORSB2b2lkIEluc3Q6OmZvckVhY2hBcmcoY29uc3QgRnVuY3RvciYgZnVuY3Rvciki
CiAgICAgb3V0cC5wdXRzICJ7IgotICAgIG1hdGNoSW5zdE92ZXJsb2FkKG91dHAsIDpmYXN0LCAi
dGhpcyIpIHsKLSAgICAgICAgfCBvcGNvZGUsIG92ZXJsb2FkIHwKKyAgICBvdXRwLnB1dHMgInN3
aXRjaCAoa2luZC5vcGNvZGUpIHsiCisgICAgJG9wY29kZXMudmFsdWVzLmVhY2ggeworICAgICAg
ICB8IG9wY29kZSB8CiAgICAgICAgIGlmIG9wY29kZS5jdXN0b20KLSAgICAgICAgICAgIG91dHAu
cHV0cyAiI3tvcGNvZGUubmFtZX1DdXN0b206OmZvckVhY2hBcmcoKnRoaXMsIGZ1bmN0b3IpOyIK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3ZlcmxvYWQuc2lnbmF0dXJlLmVhY2hfd2l0aF9p
bmRleCB7Ci0gICAgICAgICAgICAgICAgfCBhcmcsIGluZGV4IHwKLSAgICAgICAgICAgICAgICBv
dXRwLnB1dHMgImZ1bmN0b3IoYXJnc1sje2luZGV4fV0sIEFyZzo6I3thcmcucm9sZUNvZGV9LCAj
e2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29kZX0pOyIKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG91dHAucHV0cyAiY2FzZSBPcGNvZGU6OiN7b3Bjb2RlLm5hbWV9OiIKICAgICAgICAgZW5k
CiAgICAgfQorICAgIG91dHAucHV0cyAiZm9yRWFjaEFyZ0N1c3RvbShzY29wZWRMYW1iZGFSZWY8
RWFjaEFyZ0NhbGxiYWNrPihmdW5jdG9yKSk7IgorICAgIG91dHAucHV0cyAicmV0dXJuOyIKKyAg
ICBvdXRwLnB1dHMgImRlZmF1bHQ6IgorICAgIG91dHAucHV0cyAiZm9yRWFjaEFyZ1NpbXBsZShm
dW5jdG9yKTsiCisgICAgb3V0cC5wdXRzICJyZXR1cm47IgorICAgIG91dHAucHV0cyAifSIKKyAg
ICBvdXRwLnB1dHMgIn0iCisgICAgCisgICAgb3V0cC5wdXRzICJ0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPiIKKyAgICBvdXRwLnB1dHMgIkFMV0FZU19JTkxJTkUgdm9pZCBJbnN0Ojpmb3JFYWNoQXJn
U2ltcGxlKGNvbnN0IEZ1bmMmIGZ1bmMpIgorICAgIG91dHAucHV0cyAieyIKKyAgICBvdXRwLnB1
dHMgIiAgICBzaXplX3QgbnVtT3BlcmFuZHMgPSBhcmdzLnNpemUoKTsiCisgICAgb3V0cC5wdXRz
ICIgICAgc2l6ZV90IGZvcm1PZmZzZXQgPSAobnVtT3BlcmFuZHMgLSAxKSAqIG51bU9wZXJhbmRz
IC8gMjsiCisgICAgb3V0cC5wdXRzICIgICAgdWludDhfdCogZm9ybUJhc2UgPSBnX2Zvcm1UYWJs
ZSArIGtpbmQub3Bjb2RlICogI3tmb3JtVGFibGVXaWR0aH0gKyBmb3JtT2Zmc2V0OyIKKyAgICBv
dXRwLnB1dHMgIiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU9wZXJhbmRzOyArK2kpIHsi
CisgICAgb3V0cC5wdXRzICIgICAgICAgIHVpbnQ4X3QgZm9ybSA9IGZvcm1CYXNlW2ldOyIKKyAg
ICBvdXRwLnB1dHMgIiAgICAgICAgQVNTRVJUKCEoZm9ybSAmICgxIDw8IGZvcm1JbnZhbGlkU2hp
ZnQpKSk7IgorICAgIG91dHAucHV0cyAiICAgICAgICBmdW5jKGFyZ3NbaV0sIGRlY29kZUZvcm1S
b2xlKGZvcm0pLCBkZWNvZGVGb3JtQmFuayhmb3JtKSwgZGVjb2RlRm9ybVdpZHRoKGZvcm0pKTsi
CisgICAgb3V0cC5wdXRzICIgICAgfSIKICAgICBvdXRwLnB1dHMgIn0iCiAKICAgICBvdXRwLnB1
dHMgInRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4iCkBAIC03ODksNiArODIxLDU2IEBA
IHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgIG91dHAucHV0cyAifSIKICAgICBvdXRw
LnB1dHMgIn0gLy8gbmFtZXNwYWNlIFdURiIKICAgICBvdXRwLnB1dHMgIm5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsiCisgICAgCisgICAgb3V0cC5wdXRzICJ1
aW50OF90IGdfZm9ybVRhYmxlWyN7JG9wY29kZXMuc2l6ZSAqIGZvcm1UYWJsZVdpZHRofV0gPSB7
IgorICAgICRvcGNvZGVzLnZhbHVlcy5lYWNoIHsKKyAgICAgICAgfCBvcGNvZGUgfAorICAgICAg
ICBvdmVybG9hZHMgPSBbbmlsXSAqIChtYXhOdW1PcGVyYW5kcyArIDEpCisgICAgICAgIHVubGVz
cyBvcGNvZGUuY3VzdG9tCisgICAgICAgICAgICBvcGNvZGUub3ZlcmxvYWRzLmVhY2ggeworICAg
ICAgICAgICAgICAgIHwgb3ZlcmxvYWQgfAorICAgICAgICAgICAgICAgIG92ZXJsb2Fkc1tvdmVy
bG9hZC5zaWduYXR1cmUubGVuZ3RoXSA9IG92ZXJsb2FkCisgICAgICAgICAgICB9CisgICAgICAg
IGVuZAorICAgICAgICAKKyAgICAgICAgKDAuLm1heE51bU9wZXJhbmRzKS5lYWNoIHsKKyAgICAg
ICAgICAgIHwgbnVtT3BlcmFuZHMgfAorICAgICAgICAgICAgb3ZlcmxvYWQgPSBvdmVybG9hZHNb
bnVtT3BlcmFuZHNdCisgICAgICAgICAgICBpZiBvdmVybG9hZAorICAgICAgICAgICAgICAgIG91
dHAucHV0cyAiLy8gI3tvcGNvZGUubmFtZX0gI3tvdmVybG9hZC5zaWduYXR1cmUuam9pbignLCAn
KX0iCisgICAgICAgICAgICAgICAgbnVtT3BlcmFuZHMudGltZXMgeworICAgICAgICAgICAgICAg
ICAgICB8IGluZGV4IHwKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gb3ZlcmxvYWQuc2lnbmF0
dXJlW2luZGV4XQorICAgICAgICAgICAgICAgICAgICBvdXRwLnByaW50ICJFTkNPREVfSU5TVF9G
T1JNKEFyZzo6I3thcmcucm9sZUNvZGV9LCAje2FyZy5iYW5rfVAsICN7YXJnLndpZHRoQ29kZX0p
LCAiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG91dHAucHV0cyAiLy8gSW52YWxpZDogI3tvcGNvZGUubmFtZX0gd2l0aCBudW1PcGVyYW5kcyA9
ICN7bnVtT3BlcmFuZHN9IgorICAgICAgICAgICAgICAgIG51bU9wZXJhbmRzLnRpbWVzIHsKKyAg
ICAgICAgICAgICAgICAgICAgb3V0cC5wcmludCAiSU5WQUxJRF9JTlNUX0ZPUk0sICIKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIG91dHAucHV0cworICAg
ICAgICB9CisgICAgfQorICAgIG91dHAucHV0cyAifTsiCisgICAgCisgICAgb3V0cC5wdXRzICJ2
b2lkIEluc3Q6OmZvckVhY2hBcmdDdXN0b20oU2NvcGVkTGFtYmRhPEVhY2hBcmdDYWxsYmFjaz4g
bGFtYmRhKSIKKyAgICBvdXRwLnB1dHMgInsiCisgICAgb3V0cC5wdXRzICJzd2l0Y2ggKGtpbmQu
b3Bjb2RlKSB7IgorICAgICRvcGNvZGVzLnZhbHVlcy5lYWNoIHsKKyAgICAgICAgfCBvcGNvZGUg
fAorICAgICAgICBpZiBvcGNvZGUuY3VzdG9tCisgICAgICAgICAgICBvdXRwLnB1dHMgImNhc2Ug
T3Bjb2RlOjoje29wY29kZS5uYW1lfToiCisgICAgICAgICAgICBvdXRwLnB1dHMgIiN7b3Bjb2Rl
Lm5hbWV9Q3VzdG9tOjpmb3JFYWNoQXJnKCp0aGlzLCBsYW1iZGEpOyIKKyAgICAgICAgICAgIG91
dHAucHV0cyAiYnJlYWs7IgorICAgICAgICBlbmQKKyAgICB9CisgICAgb3V0cC5wdXRzICJkZWZh
dWx0OiIKKyAgICBvdXRwLnB1dHMgImRhdGFMb2coXCJCYWQgY2FsbCB0byBmb3JFYWNoQXJnQ3Vz
dG9tLCBub3QgY3VzdG9tIG9wY29kZTogXCIsIGtpbmQsIFwiXFxuXCIpOyIKKyAgICBvdXRwLnB1
dHMgIlJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IgorICAgIG91dHAucHV0cyAifSIKKyAg
ICBvdXRwLnB1dHMgIn0iCisgICAgCiAgICAgb3V0cC5wdXRzICJib29sIEluc3Q6OmlzVmFsaWRG
b3JtKCkiCiAgICAgb3V0cC5wdXRzICJ7IgogICAgIG1hdGNoSW5zdE92ZXJsb2FkRm9ybShvdXRw
LCA6c2FmZSwgInRoaXMiKSB7CkBAIC0xMTQwLDg5ICsxMjIyLDMgQEAgd3JpdGVIKCJPcGNvZGVH
ZW5lcmF0ZWQiKSB7CiAgICAgb3V0cC5wdXRzICJ9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6
QWlyIgogfQogCi0jIFRoaXMgaXMgYSBoYWNrIGZvciBKU0Fpci4gSXQncyBhIGpva2UuCi1GaWxl
Lm9wZW4oIkpTQWlyX29wY29kZS5qcyIsICJ3IikgewotICAgIHwgb3V0cCB8Ci0gICAgb3V0cC5w
dXRzICJcInVzZSBzdHJpY3RcIjsiCi0gICAgb3V0cC5wdXRzICIvLyBHZW5lcmF0ZWQgYnkgb3Bj
b2RlX2dlbmVyYXRvci5yYiBmcm9tICN7JGZpbGVOYW1lfSAtLSBkbyBub3QgZWRpdCEiCi0gICAg
Ci0gICAgJG9wY29kZXMudmFsdWVzLmVhY2ggewotICAgICAgICB8IG9wY29kZSB8Ci0gICAgICAg
IG91dHAucHV0cyAiY29uc3QgI3tvcGNvZGUubmFtZX0gPSBTeW1ib2woI3tvcGNvZGUubmFtZS5p
bnNwZWN0fSk7IgotICAgIH0KLSAgICAKLSAgICBvdXRwLnB1dHMgImZ1bmN0aW9uIEluc3RfZm9y
RWFjaEFyZyhpbnN0LCBmdW5jKSIKLSAgICBvdXRwLnB1dHMgInsiCi0gICAgb3V0cC5wdXRzICJs
ZXQgcmVwbGFjZW1lbnQ7IgotICAgIG91dHAucHV0cyAic3dpdGNoIChpbnN0Lm9wY29kZSkgeyIK
LSAgICAkb3Bjb2Rlcy52YWx1ZXMuZWFjaCB7Ci0gICAgICAgIHwgb3Bjb2RlIHwKLSAgICAgICAg
b3V0cC5wdXRzICJjYXNlIE9wY29kZTo6I3tvcGNvZGUubmFtZX06IgotICAgICAgICBpZiBvcGNv
ZGUuY3VzdG9tCi0gICAgICAgICAgICBvdXRwLnB1dHMgIiN7b3Bjb2RlLm5hbWV9Q3VzdG9tLmZv
ckVhY2hBcmcoaW5zdCwgZnVuYyk7IgotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZWVkT3Zl
cmxvYWRTd2l0Y2ggPSBvcGNvZGUub3ZlcmxvYWRzLnNpemUgIT0gMQotICAgICAgICAgICAgb3V0
cC5wdXRzICJzd2l0Y2ggKGluc3QuYXJncy5sZW5ndGgpIHsiIGlmIG5lZWRPdmVybG9hZFN3aXRj
aAotICAgICAgICAgICAgb3Bjb2RlLm92ZXJsb2Fkcy5lYWNoIHsKLSAgICAgICAgICAgICAgICB8
IG92ZXJsb2FkIHwKLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvdmVybG9hZC5z
aWduYXR1cmUubGVuZ3RofToiIGlmIG5lZWRPdmVybG9hZFN3aXRjaAotICAgICAgICAgICAgICAg
IG92ZXJsb2FkLnNpZ25hdHVyZS5lYWNoX3dpdGhfaW5kZXggewotICAgICAgICAgICAgICAgICAg
ICB8IGFyZywgaW5kZXggfAotICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImluc3Qudmlz
aXRBcmcoI3tpbmRleH0sIGZ1bmMsIEFyZy4je2FyZy5yb2xlQ29kZX0sICN7YXJnLmJhbmt9UCwg
I3thcmcud2lkdGh9KTsiCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiYnJlYWs7IgotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgbmVlZE92ZXJsb2Fk
U3dpdGNoCi0gICAgICAgICAgICAgICAgb3V0cC5wdXRzICJkZWZhdWx0OiIKLSAgICAgICAgICAg
ICAgICBvdXRwLnB1dHMgInRocm93IG5ldyBFcnJvcihcIkJhZCBvdmVybG9hZFwiKTsiCi0gICAg
ICAgICAgICAgICAgb3V0cC5wdXRzICJicmVhazsiCi0gICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJ9IgotICAgICAgICAgICAgZW5kCi0gICAgICAgIGVuZAotICAgICAgICBvdXRwLnB1dHMgImJy
ZWFrOyIKLSAgICB9Ci0gICAgb3V0cC5wdXRzICJkZWZhdWx0OiIKLSAgICBvdXRwLnB1dHMgInRo
cm93IFwiQmFkIG9wY29kZVwiOyIKLSAgICBvdXRwLnB1dHMgIn0iCi0gICAgb3V0cC5wdXRzICJ9
IgotICAgIAotICAgIG91dHAucHV0cyAiZnVuY3Rpb24gSW5zdF9oYXNOb25BcmdFZmZlY3RzKGlu
c3QpIgotICAgIG91dHAucHV0cyAieyIKLSAgICBvdXRwLnB1dHMgInN3aXRjaCAoaW5zdC5vcGNv
ZGUpIHsiCi0gICAgZm91bmRUcnVlID0gZmFsc2UKLSAgICAkb3Bjb2Rlcy52YWx1ZXMuZWFjaCB7
Ci0gICAgICAgIHwgb3Bjb2RlIHwKLSAgICAgICAgaWYgb3Bjb2RlLmF0dHJpYnV0ZXNbOnRlcm1p
bmFsXSBvciBvcGNvZGUuYXR0cmlidXRlc1s6ZWZmZWN0c10KLSAgICAgICAgICAgIG91dHAucHV0
cyAiY2FzZSBPcGNvZGU6OiN7b3Bjb2RlLm5hbWV9OiIKLSAgICAgICAgICAgIGZvdW5kVHJ1ZSA9
IHRydWUKLSAgICAgICAgZW5kCi0gICAgfQotICAgIGlmIGZvdW5kVHJ1ZQotICAgICAgICBvdXRw
LnB1dHMgInJldHVybiB0cnVlOyIKLSAgICBlbmQKLSAgICAkb3Bjb2Rlcy52YWx1ZXMuZWFjaCB7
Ci0gICAgICAgIHwgb3Bjb2RlIHwKLSAgICAgICAgaWYgb3Bjb2RlLmN1c3RvbQotICAgICAgICAg
ICAgb3V0cC5wdXRzICJjYXNlIE9wY29kZTo6I3tvcGNvZGUubmFtZX06IgotICAgICAgICAgICAg
b3V0cC5wdXRzICJyZXR1cm4gI3tvcGNvZGUubmFtZX1DdXN0b20uaGFzTm9uQXJnTm9uQ29udHJv
bEVmZmVjdHMoaW5zdCk7IgotICAgICAgICBlbmQKLSAgICB9Ci0gICAgb3V0cC5wdXRzICJkZWZh
dWx0OiIKLSAgICBvdXRwLnB1dHMgInJldHVybiBmYWxzZTsiCi0gICAgb3V0cC5wdXRzICJ9Igot
ICAgIG91dHAucHV0cyAifSIKLSAgICAKLSAgICBvdXRwLnB1dHMgImZ1bmN0aW9uIG9wY29kZUNv
ZGUob3Bjb2RlKSIKLSAgICBvdXRwLnB1dHMgInsiCi0gICAgb3V0cC5wdXRzICJzd2l0Y2ggKG9w
Y29kZSkgeyIKLSAgICAkb3Bjb2Rlcy5rZXlzLnNvcnQuZWFjaF93aXRoX2luZGV4IHsKLSAgICAg
ICAgfCBvcGNvZGUsIGluZGV4IHwKLSAgICAgICAgb3V0cC5wdXRzICJjYXNlIE9wY29kZTo6I3tv
cGNvZGV9OiIKLSAgICAgICAgb3V0cC5wdXRzICJyZXR1cm4gI3tpbmRleH0iCi0gICAgfQotICAg
IG91dHAucHV0cyAiZGVmYXVsdDoiCi0gICAgb3V0cC5wdXRzICJ0aHJvdyBuZXcgRXJyb3IoXCJi
YWQgb3Bjb2RlXCIpOyIKLSAgICBvdXRwLnB1dHMgIn0iCi0gICAgb3V0cC5wdXRzICJ9IgotfQot
Cg==
</data>
<flag name="review"
          id="327454"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>