<?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>147063</bug_id>
          
          <creation_ts>2015-07-17 19:26:26 -0700</creation_ts>
          <short_desc>lexical scoping is broken with respect to &quot;break&quot; and &quot;continue&quot;</short_desc>
          <delta_ts>2015-07-18 17:38:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>147070</dependson>
          <blocked>31813</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1110302</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-17 19:26:26 -0700</bug_when>
    <thetext>There is some silliness in how byte code generator handles push/pop lexical scope and prepareScopeForNextForLoopIteration.
This should be skipped. There is a silly mistake to always assume that scopeRegister() will be the scope in which
we want to grab the parent scope of. This is fundamentally wrong. We want to grab the parent of the corresponding
lexical scope. scopeRegister() just refers to scope stack top which is not always what we want to pop from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110358</commentid>
    <comment_count>1</comment_count>
      <attachid>257027</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-18 02:02:11 -0700</bug_when>
    <thetext>Created attachment 257027
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110359</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-18 02:04:53 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; There is some silliness in how byte code generator handles push/pop lexical
&gt; scope and prepareScopeForNextForLoopIteration.
&gt; This should be skipped. There is a silly mistake to always assume that
&gt; scopeRegister() will be the scope in which
&gt; we want to grab the parent scope of. This is fundamentally wrong. We want to
&gt; grab the parent of the corresponding
&gt; lexical scope. scopeRegister() just refers to scope stack top which is not
&gt; always what we want to pop from.

This assessment is still correct. But it doesn&apos;t tell the whole story.
This was a symptom, rather than the leading cause, of the problem this patch fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110375</commentid>
    <comment_count>3</comment_count>
      <attachid>257027</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-18 13:13:31 -0700</bug_when>
    <thetext>Comment on attachment 257027
patch

Clearing flags on attachment: 257027

Committed r186996: &lt;http://trac.webkit.org/changeset/186996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110376</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-18 13:13:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110381</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-07-18 14:13:51 -0700</bug_when>
    <thetext>This broke 11 tests:
https://build.webkit.org/builders/Apple%20Mavericks%2032-bit%20JSC%20%28BuildAndTest%29/builds/11494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110383</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-18 14:17:21 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 147070</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110407</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-18 17:38:49 -0700</bug_when>
    <thetext>Fixed 32-bit tests. They were timing out. I made the test have fewer loop iterations.

landed in:
http://trac.webkit.org/changeset/187003</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257027</attachid>
            <date>2015-07-18 02:02:11 -0700</date>
            <delta_ts>2015-07-18 13:13:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>23497</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2OTg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBA
CisyMDE1LTA3LTE4ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBsZXhpY2FsIHNjb3BpbmcgaXMgYnJva2VuIHdpdGggcmVzcGVjdCB0byAiYnJlYWsiIGFu
ZCAiY29udGludWUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDcwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBCdWcgIzE0Mjk0NCB3aGljaCBpbnRyb2R1Y2VkICJsZXQiIGFuZCBsZXhpY2FsIHNjb3Bp
bmcKKyAgICAgICAgZGlkbid0IHByb3Blcmx5IGhvb2sgaW50byB0aGUgYnl0ZWNvZGUgZ2VuZXJh
dG9yJ3MgbWFjaGluZXJ5CisgICAgICAgIGZvciBjYWxjdWxhdGluZyBzY29wZSBkZXB0aCBkZWx0
YXMgZm9yICJicmVhayIgYW5kICJjb250aW51ZSIuIFRoaXMKKyAgICAgICAgcmVzdWx0ZWQgaW4g
dGhlIGJ5dGVjb2RlIGdlbmVyYXRvciBwb3BwaW5nIGFuIGluY29ycmVjdCBudW1iZXIKKyAgICAg
ICAgb2Ygc2NvcGVzIHdoZW4gbGV4aWNhbCBzY29wZXMgd2VyZSBpbnZvbHZlZC4KKworICAgICAg
ICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgcHJvYmxlbSBhbmQgZ2VuZXJhbGl6ZXMgdGhpcyBtYWNo
aW5lcnkgYSBiaXQuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyByZW5hbWVzIG9sZCBmdW5jdGlv
bnMgaW4gYSBzZW5zaWJsZSB3YXkgdGhhdCBpcyBtb3JlCisgICAgICAgIGNvaGVyZW50IGluIGEg
d29ybGQgd2l0aCBsZXhpY2FsIHNjb3BpbmcuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bmV3TGFi
ZWxTY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJvZmlsZVR5
cGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHVzaExleGljYWxTY29wZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BMZXhpY2FsU2NvcGUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHJlcGFyZUxleGljYWxTY29wZUZvck5leHRG
b3JMb29wSXRlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29s
dmVUeXBlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlU2Nv
cGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZyb21TY29wZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0VG9TY29wZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaFdpdGhTY29wZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UGFyZW50U2NvcGUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvcFNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BXaXRoT3JDYXRjaFNjb3BlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Y2FsY3VsYXRlVGFyZ2V0U2NvcGVEZXB0aEZvckV4Y2VwdGlvbkhhbmRsZXIp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bG9jYWxTY29wZURlcHRoKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmxhYmVsU2NvcGVEZXB0aCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hTY29wZWRDb250cm9sRmxvd0Nv
bnRleHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cG9wU2NvcGVkQ29udHJv
bEZsb3dDb250ZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNo
Q2F0Y2hTY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjdXJyZW50U2Nv
cGVEZXB0aCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpoYXNGaW5hbGlzZXIpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c2NvcGVEZXB0aCk6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNv
bnRpbnVlTm9kZTo6dHJpdmlhbFRhcmdldCk6CisgICAgICAgIChKU0M6OkJyZWFrTm9kZTo6dHJp
dmlhbFRhcmdldCk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OldpdGhOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUcnlO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9sZXhpY2FsLXNjb3Bp
bmctYnJlYWstY29udGludWUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAg
KC4pOgorCiAyMDE1LTA3LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgREZHIHNob3VsZCBoYXZlIHNvbWUgb2J2aW91cyBtaXRpZ2F0aW9ucyBhZ2FpbnN0IHdh
dGNoaW5nIHN0cnVjdHVyZXMgdGhhdCBhcmUgdW5wcm9maXRhYmxlIHRvIHdhdGNoCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTg2OTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
Miw2ICs1MjIsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICB9CiAKKyAgICBpZiAobV9sZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3RlcikKKyAgICAgICAgcHVzaFNjb3BlZENvbnRyb2xGbG93Q29u
dGV4dCgpOwogICAgIG1fc3ltYm9sVGFibGVTdGFjay5hcHBlbmQoU3ltYm9sVGFibGVTdGFja0Vu
dHJ5eyBTdHJvbmc8U3ltYm9sVGFibGU+KCptX3ZtLCBtX3N5bWJvbFRhYmxlKSwgbV9sZXhpY2Fs
RW52aXJvbm1lbnRSZWdpc3RlciwgZmFsc2UsIHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCB9KTsK
ICAgICBtX1REWlN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigqcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsIGZhbHNlKSk7CiB9CkBAIC02MjcsNyArNjI5LDcgQEAgTGFiZWxTY29wZVB0ciBCeXRl
Y29kZUdlbmVyYXRvcjo6bmV3TGFiZQogICAgICAgICBtX2xhYmVsU2NvcGVzLnJlbW92ZUxhc3Qo
KTsKIAogICAgIC8vIEFsbG9jYXRlIG5ldyBsYWJlbCBzY29wZS4KLSAgICBMYWJlbFNjb3BlIHNj
b3BlKHR5cGUsIG5hbWUsIHNjb3BlRGVwdGgoKSwgbmV3TGFiZWwoKSwgdHlwZSA9PSBMYWJlbFNj
b3BlOjpMb29wID8gbmV3TGFiZWwoKSA6IFBhc3NSZWZQdHI8TGFiZWw+KCkpOyAvLyBPbmx5IGxv
b3BzIGhhdmUgY29udGludWUgdGFyZ2V0cy4KKyAgICBMYWJlbFNjb3BlIHNjb3BlKHR5cGUsIG5h
bWUsIGxhYmVsU2NvcGVEZXB0aCgpLCBuZXdMYWJlbCgpLCB0eXBlID09IExhYmVsU2NvcGU6Okxv
b3AgPyBuZXdMYWJlbCgpIDogUGFzc1JlZlB0cjxMYWJlbD4oKSk7IC8vIE9ubHkgbG9vcHMgaGF2
ZSBjb250aW51ZSB0YXJnZXRzLgogICAgIG1fbGFiZWxTY29wZXMuYXBwZW5kKHNjb3BlKTsKICAg
ICByZXR1cm4gTGFiZWxTY29wZVB0cihtX2xhYmVsU2NvcGVzLCBtX2xhYmVsU2NvcGVzLnNpemUo
KSAtIDEpOwogfQpAQCAtMTIxMCw3ICsxMjEyLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFByb2ZpbGVUeXBlKAogICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhpcyBpbnN0cnVjdGlvbiBp
czogb3BfcHJvZmlsZV90eXBlIHJlZ1RvUHJvZmlsZSwgVHlwZUxvY2F0aW9uKiwgZmxhZywgaWRl
bnRpZmllcj8sIHJlc29sdmVUeXBlPwogICAgIGVtaXRPcGNvZGUob3BfcHJvZmlsZV90eXBlKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocmVnaXN0ZXJUb1Byb2ZpbGUtPmluZGV4KCkpOwot
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjdXJyZW50U2NvcGVEZXB0aCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobG9jYWxTY29wZURlcHRoKCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChmbGFnKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoaWRlbnRpZmllciA/IGFk
ZENvbnN0YW50KCppZGVudGlmaWVyKSA6IDApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChy
ZXNvbHZlVHlwZSgpKTsKQEAgLTEzMTgsNiArMTMyMCw4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnB1c2hMZXhpY2FsU2NvcGUKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENv
bnN0YW50VmFsdWUoanNURFpWYWx1ZSgpKS0+aW5kZXgoKSk7CiAKICAgICAgICAgZW1pdE1vdmUo
c2NvcGVSZWdpc3RlcigpLCBuZXdTY29wZSk7CisKKyAgICAgICAgcHVzaFNjb3BlZENvbnRyb2xG
bG93Q29udGV4dCgpOwogICAgIH0KIAogICAgIG1fc3ltYm9sVGFibGVTdGFjay5hcHBlbmQoU3lt
Ym9sVGFibGVTdGFja0VudHJ5eyBzeW1ib2xUYWJsZSwgbmV3U2NvcGUsIGZhbHNlLCBzeW1ib2xU
YWJsZUNvbnN0YW50SW5kZXggfSk7CkBAIC0xMzY1LDggKzEzNjksOCBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwb3BMZXhpY2FsU2NvcGUoCiAKICAgICBpZiAoaGFzQ2FwdHVyZWRWYXJpYWJs
ZXMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2tFbnRyeS5tX3Njb3BlKTsKLSAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHBhcmVudFNjb3BlID0gZW1pdEdldFBhcmVudFNjb3BlKG5l
d1RlbXBvcmFyeSgpLCBzY29wZVJlZ2lzdGVyKCkpOwotICAgICAgICBlbWl0TW92ZShzY29wZVJl
Z2lzdGVyKCksIHBhcmVudFNjb3BlLmdldCgpKTsKKyAgICAgICAgZW1pdFBvcFNjb3BlKHNjb3Bl
UmVnaXN0ZXIoKSwgc3RhY2tFbnRyeS5tX3Njb3BlKTsKKyAgICAgICAgcG9wU2NvcGVkQ29udHJv
bEZsb3dDb250ZXh0KCk7CiAgICAgICAgIHN0YWNrRW50cnkubV9zY29wZS0+ZGVyZWYoKTsKICAg
ICB9CiAKQEAgLTE0MjMsNyArMTQyNyw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXBh
cmVMZXhpY2FsU2MKICAgICAvLyBhcyB0aGUgcHJldmlvdXMgc2NvcGUgYmVjYXVzZSB0aGUgbG9v
cCBib2R5IGlzIGNvbXBpbGVkIHVuZGVyCiAgICAgLy8gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUg
c2NvcGUncyByZWdpc3RlciBpbmRleCBpcyBjb25zdGFudCBldmVuCiAgICAgLy8gdGhvdWdoIHRo
ZSB2YWx1ZSBpbiB0aGF0IHJlZ2lzdGVyIHdpbGwgY2hhbmdlIG9uIGVhY2ggbG9vcCBpdGVyYXRp
b24uCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHBhcmVudFNjb3BlID0gZW1pdEdldFBhcmVudFNj
b3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZVJlZ2lzdGVyKCkpOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwYXJlbnRTY29wZSA9IGVtaXRHZXRQYXJlbnRTY29wZShuZXdUZW1wb3JhcnkoKSwgbG9v
cFNjb3BlKTsKICAgICBlbWl0TW92ZShzY29wZVJlZ2lzdGVyKCksIHBhcmVudFNjb3BlLmdldCgp
KTsKIAogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwpAQCAt
MTU3Miw4ICsxNTc2LDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja0hhc0lu
c3QKIC8vIHdpbGwgc3RhcnQgd2l0aCB0aGlzIFJlc29sdmVUeXBlIGFuZCBjb21wdXRlIHRoZSBs
ZWFzdCB1cHBlciBib3VuZCBpbmNsdWRpbmcgaW50ZXJjZXB0aW5nIHNjb3Blcy4KIFJlc29sdmVU
eXBlIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlVHlwZSgpCiB7Ci0gICAgaWYgKG1fbG9jYWxT
Y29wZURlcHRoKQotICAgICAgICByZXR1cm4gRHluYW1pYzsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX3N5bWJvbFRhYmxlU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBpZiAobV9zeW1i
b2xUYWJsZVN0YWNrW2ldLm1faXNXaXRoT3JDYXRjaCkKKyAgICAgICAgICAgIHJldHVybiBEeW5h
bWljOworICAgIH0KKwogICAgIGlmIChtX3N5bWJvbFRhYmxlICYmIG1fc3ltYm9sVGFibGUtPnVz
ZXNOb25TdHJpY3RFdmFsKCkpCiAgICAgICAgIHJldHVybiBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3M7CiAgICAgcmV0dXJuIEdsb2JhbFByb3BlcnR5OwpAQCAtMTYzMiw3ICsx
NjM5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHZhcmlhYmxlLmlkZW50KCkpKTsK
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJlc29sdmVUeXBlKCkpOwotICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoY3VycmVudFNjb3BlRGVwdGgoKSk7CisgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChsb2NhbFNjb3BlRGVwdGgoKSk7CiAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKICAgICAgICAgcmV0dXJuIGRzdDsKICAgICB9CkBAIC0xNjY2LDcgKzE2
NzMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZyCiAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZS0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChhZGRDb25zdGFudCh2YXJpYWJsZS5pZGVudCgpKSk7CiAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChSZXNvbHZlTW9kZUFuZFR5cGUocmVzb2x2ZU1vZGUsIHZhcmlh
YmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IExvY2FsQ2xvc3VyZVZhciA6IHJlc29sdmVUeXBlKCkp
Lm9wZXJhbmQoKSk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjdXJyZW50U2NvcGVE
ZXB0aCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxvY2FsU2NvcGVEZXB0aCgp
KTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhcmlhYmxlLm9mZnNldCgpLmlzU2Nv
cGUoKSA/IHZhcmlhYmxlLm9mZnNldCgpLnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgOiAwKTsKICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb2ZpbGUpOwogICAgICAgICByZXR1cm4gZHN0
OwpAQCAtMTcwNiw3ICsxNzEzLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRUbwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlc29sdmVUeXBl
KCkgIT0gTG9jYWxDbG9zdXJlVmFyKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChSZXNvbHZlTW9kZUFuZFR5cGUocmVzb2x2ZU1vZGUsIHJlc29sdmVUeXBlKCkpLm9wZXJhbmQo
KSk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY3VycmVudFNjb3BlRGVwdGgo
KSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobG9jYWxTY29wZURlcHRoKCkp
OwogICAgICAgICB9CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCghIW9mZnNldCA/IG9m
ZnNldC5vZmZzZXQoKSA6IDApOwogICAgICAgICByZXR1cm4gdmFsdWU7CkBAIC0yNDc0LDEwICsy
NDgxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFNjb3BlKCkKIAogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc2NvcGUpCiB7Ci0gICAgQ29udHJvbEZsb3dDb250ZXh0IGNvbnRleHQ7
Ci0gICAgY29udGV4dC5pc0ZpbmFsbHlCbG9jayA9IGZhbHNlOwotICAgIG1fc2NvcGVDb250ZXh0
U3RhY2suYXBwZW5kKGNvbnRleHQpOwotICAgIG1fbG9jYWxTY29wZURlcHRoKys7CisgICAgcHVz
aFNjb3BlZENvbnRyb2xGbG93Q29udGV4dCgpOwogCiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0g
ZW1pdFVuYXJ5T3Aob3BfcHVzaF93aXRoX3Njb3BlLCBkc3QsIHNjb3BlKTsKICAgICBtX3N5bWJv
bFRhYmxlU3RhY2suYXBwZW5kKFN5bWJvbFRhYmxlU3RhY2tFbnRyeXsgU3Ryb25nPFN5bWJvbFRh
YmxlPigpLCBudWxscHRyLCB0cnVlLCAwIH0pOwpAQCAtMjQ5MiwxNiArMjQ5NiwxNiBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFBhCiAgICAgcmV0dXJuIGRzdDsKIH0K
IAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvcFNjb3BlKFJlZ2lzdGVySUQqIHNyY0Rz
dCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BTY29wZShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNjb3BlKQogewotICAgIEFTU0VSVChtX3Njb3BlQ29udGV4dFN0YWNrLnNp
emUoKSk7Ci0gICAgQVNTRVJUKCFtX3Njb3BlQ29udGV4dFN0YWNrLmxhc3QoKS5pc0ZpbmFsbHlC
bG9jayk7Ci0KLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcGFyZW50U2NvcGUgPSBlbWl0R2V0UGFy
ZW50U2NvcGUobmV3VGVtcG9yYXJ5KCksIHNyY0RzdCk7Ci0gICAgZW1pdE1vdmUoc3JjRHN0LCBw
YXJlbnRTY29wZS5nZXQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHBhcmVudFNjb3BlID0g
ZW1pdEdldFBhcmVudFNjb3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZSk7CisgICAgZW1pdE1vdmUo
ZHN0LCBwYXJlbnRTY29wZS5nZXQoKSk7Cit9CiAKLSAgICBtX3Njb3BlQ29udGV4dFN0YWNrLnJl
bW92ZUxhc3QoKTsKLSAgICBtX2xvY2FsU2NvcGVEZXB0aC0tOwordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFBvcFdpdGhPckNhdGNoU2NvcGUoUmVnaXN0ZXJJRCogc3JjRHN0KQoreworICAg
IGVtaXRQb3BTY29wZShzcmNEc3QsIHNyY0RzdCk7CisgICAgcG9wU2NvcGVkQ29udHJvbEZsb3dD
b250ZXh0KCk7CiAgICAgU3ltYm9sVGFibGVTdGFja0VudHJ5IHN0YWNrRW50cnkgPSBtX3N5bWJv
bFRhYmxlU3RhY2sudGFrZUxhc3QoKTsKICAgICBSRUxFQVNFX0FTU0VSVChzdGFja0VudHJ5Lm1f
aXNXaXRoT3JDYXRjaCk7CiB9CkBAIC0yODE1LDkgKzI4MTksOSBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
b3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIGludCB0YXJnZXRTY29wZURlcHRoKQogewotICAg
IEFTU0VSVChzY29wZURlcHRoKCkgLSB0YXJnZXRTY29wZURlcHRoID49IDApOworICAgIEFTU0VS
VChsYWJlbFNjb3BlRGVwdGgoKSAtIHRhcmdldFNjb3BlRGVwdGggPj0gMCk7CiAKLSAgICBzaXpl
X3Qgc2NvcGVEZWx0YSA9IHNjb3BlRGVwdGgoKSAtIHRhcmdldFNjb3BlRGVwdGg7CisgICAgc2l6
ZV90IHNjb3BlRGVsdGEgPSBsYWJlbFNjb3BlRGVwdGgoKSAtIHRhcmdldFNjb3BlRGVwdGg7CiAg
ICAgQVNTRVJUKHNjb3BlRGVsdGEgPD0gbV9zY29wZUNvbnRleHRTdGFjay5zaXplKCkpOwogICAg
IGlmICghc2NvcGVEZWx0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3NiwxNiArMjg4MCwxMCBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BUcnlBbmRFbWl0Q2F0CiAKIGludCBCeXRlY29k
ZUdlbmVyYXRvcjo6Y2FsY3VsYXRlVGFyZ2V0U2NvcGVEZXB0aEZvckV4Y2VwdGlvbkhhbmRsZXIo
KSBjb25zdAogewotICAgIGludCBkZXB0aCA9IG1fbG9jYWxTY29wZURlcHRoOwotCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9zeW1ib2xUYWJsZVN0YWNrLnNpemUoKTsgaS0tOyApIHsKLSAgICAg
ICAgUmVnaXN0ZXJJRCogc2NvcGUgPSBtX3N5bWJvbFRhYmxlU3RhY2tbaV0ubV9zY29wZTsKLSAg
ICAgICAgaWYgKHNjb3BlKQotICAgICAgICAgICAgZGVwdGgrKzsKLSAgICB9CisgICAgaW50IGRl
cHRoID0gbG9jYWxTY29wZURlcHRoKCk7CiAKICAgICAvLyBDdXJyZW50bHksIHdlJ3JlIG1haW50
YWluZyBjb21wYXRpYmlsaXR5IHdpdGggaG93IHRoaW5ncyBhcmUgZG9uZSBhbmQgbGV0dGluZyB0
aGUgZXhjZXB0aW9uIGhhbmRsaW5nCi0gICAgLy8gY29kZSB0YWtlIGludG8gY29uc2lkZXJhdGlv
biB0aGUgYmFzZSBhY3RpdmF0aW9uIG9mIHRoZSBmdW5jdGlvbi4gVGhlcmUgaXMgbm8gcmVhc29u
IHdlIHNob3VsZG4ndCAKKyAgICAvLyBjb2RlIHRha2UgaW50byBjb25zaWRlcmF0aW9uIHRoZSBi
YXNlIGFjdGl2YXRpb24gb2YgdGhlIGZ1bmN0aW9uLiBUaGVyZSBpcyBubyByZWFzb24gd2Ugc2hv
dWxkbid0CiAgICAgLy8gYmUgYWJsZSB0byBjYWxjdWxhdGUgdGhlIGV4YWN0IGRlcHRoIGhlcmUg
YW5kIGxldCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIgbm90IHdvcnJ5IGlmIHRoZXJlIGlzIGEgYmFz
ZQogICAgIC8vIGFjdGl2YXRpb24gb3Igbm90LgogICAgIGlmIChtX2xleGljYWxFbnZpcm9ubWVu
dFJlZ2lzdGVyKQpAQCAtMjg5NSwxNiArMjg5MywxNCBAQCBpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmNhbGN1bGF0ZVRhcmdldFNjCiAgICAgcmV0dXJuIGRlcHRoOwogfQogCi1pbnQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmN1cnJlbnRTY29wZURlcHRoKCkgY29uc3QKK2ludCBCeXRlY29kZUdlbmVyYXRv
cjo6bG9jYWxTY29wZURlcHRoKCkgY29uc3QKIHsKLSAgICAvLyBUaGlzIGlzIHRoZSBjdXJyZW50
IG51bWJlciBvZiBKU1Njb3BlIGRlc2NlbmRlbnRzIHRoYXQgd291bGQgYmUgYWxsb2NhdGVkCi0g
ICAgLy8gaW4gdGhpcyBmdW5jdGlvbi9wcm9ncmFtIGlmIHRoaXMgY29kZSB3ZXJlIHJ1bm5pbmcu
Ci0gICAgaW50IGRlcHRoID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3N5bWJvbFRhYmxl
U3RhY2suc2l6ZSgpOyBpLS07ICkgewotICAgICAgICBpZiAobV9zeW1ib2xUYWJsZVN0YWNrW2ld
Lm1fc2NvcGUgfHwgbV9zeW1ib2xUYWJsZVN0YWNrW2ldLm1faXNXaXRoT3JDYXRjaCkKLSAgICAg
ICAgICAgIGRlcHRoKys7Ci0gICAgfQotICAgIHJldHVybiBkZXB0aDsKKyAgICByZXR1cm4gbV9s
b2NhbFNjb3BlRGVwdGg7Cit9CisKK2ludCBCeXRlY29kZUdlbmVyYXRvcjo6bGFiZWxTY29wZURl
cHRoKCkgY29uc3QKK3sgCisgICAgcmV0dXJuIGxvY2FsU2NvcGVEZXB0aCgpICsgbV9maW5hbGx5
RGVwdGg7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVyZW5jZUVy
cm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTI5MzAsMTIgKzI5MjYsMjUgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbgogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChKU05hbWVTY29wZTo6RnVuY3Rpb25OYW1lU2NvcGUpOwogfQogCi12b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UHVzaENhdGNoU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoU2NvcGVkQ29udHJvbEZsb3dDb250ZXh0KCkK
IHsKICAgICBDb250cm9sRmxvd0NvbnRleHQgY29udGV4dDsKICAgICBjb250ZXh0LmlzRmluYWxs
eUJsb2NrID0gZmFsc2U7CiAgICAgbV9zY29wZUNvbnRleHRTdGFjay5hcHBlbmQoY29udGV4dCk7
CiAgICAgbV9sb2NhbFNjb3BlRGVwdGgrKzsKK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
cG9wU2NvcGVkQ29udHJvbEZsb3dDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQobV9zY29wZUNvbnRl
eHRTdGFjay5zaXplKCkpOworICAgIEFTU0VSVCghbV9zY29wZUNvbnRleHRTdGFjay5sYXN0KCku
aXNGaW5hbGx5QmxvY2spOworICAgIG1fc2NvcGVDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOwor
ICAgIG1fbG9jYWxTY29wZURlcHRoLS07Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXNoQ2F0Y2hTY29wZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBwdXNo
U2NvcGVkQ29udHJvbEZsb3dDb250ZXh0KCk7CiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1c2hfbmFt
ZV9zY29wZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxODY5ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4NSwx
MiArNTg1LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdEdldFNjb3Bl
KCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc2NvcGUpOwotICAgICAgICB2b2lkIGVtaXRQb3BTY29wZShSZWdpc3Rl
cklEKiBzcmNEc3QpOworICAgICAgICB2b2lkIGVtaXRQb3BTY29wZShSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNjb3BlKTsKKyAgICAgICAgdm9pZCBlbWl0UG9wV2l0aE9yQ2F0Y2hTY29w
ZShSZWdpc3RlcklEKiBzcmNEc3QpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UGFyZW50
U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAKICAgICAgICAgdm9p
ZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjaGFy
T2Zmc2V0LCB1bnNpZ25lZCBsaW5lU3RhcnQpOwogCi0gICAgICAgIGludCBzY29wZURlcHRoKCkg
eyByZXR1cm4gbV9sb2NhbFNjb3BlRGVwdGggKyBtX2ZpbmFsbHlEZXB0aDsgfQogICAgICAgICBi
b29sIGhhc0ZpbmFsaXNlcigpIHsgcmV0dXJuIG1fZmluYWxseURlcHRoICE9IDA7IH0KIAogICAg
ICAgICB2b2lkIHB1c2hGaW5hbGx5Q29udGV4dChTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2sp
OwpAQCAtNjI0LDYgKzYyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHB1c2hM
ZXhpY2FsU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqLCBib29sIGNhbk9wdGltaXplVERa
Q2hlY2tzLCBSZWdpc3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9IG51bGxwdHIp
OwogICAgICAgICB2b2lkIHBvcExleGljYWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9kZSop
OwogICAgICAgICB2b2lkIHByZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlv
bihWYXJpYWJsZUVudmlyb25tZW50Tm9kZSosIFJlZ2lzdGVySUQqIGxvb3BTeW1ib2xUYWJsZSk7
CisgICAgICAgIGludCBsYWJlbFNjb3BlRGVwdGgoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZvaWQgcmVjbGFpbUZyZWVSZWdpc3RlcnMoKTsKQEAgLTc2MSw3ICs3NjIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIAogICAg
ICAgICBpbnQgY2FsY3VsYXRlVGFyZ2V0U2NvcGVEZXB0aEZvckV4Y2VwdGlvbkhhbmRsZXIoKSBj
b25zdDsKLSAgICAgICAgaW50IGN1cnJlbnRTY29wZURlcHRoKCkgY29uc3Q7CisgICAgICAgIGlu
dCBsb2NhbFNjb3BlRGVwdGgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBwdXNoU2NvcGVkQ29udHJv
bEZsb3dDb250ZXh0KCk7CisgICAgICAgIHZvaWQgcG9wU2NvcGVkQ29udHJvbEZsb3dDb250ZXh0
KCk7CiAKICAgICAgICAgVmVjdG9yPENvbnRyb2xGbG93Q29udGV4dCwgMCwgVW5zYWZlVmVjdG9y
T3ZlcmZsb3c+IG1fc2NvcGVDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZv
PiBtX3N3aXRjaENvbnRleHRTdGFjazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4Njk4MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYyNyw3ICsyNjI3LDcgQEAgTGFiZWwqIENvbnRpbnVlTm9kZTo6dHJp
dmlhbFRhcmdldChCeXRlYwogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0b3IuY29u
dGludWVUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNjb3BlKTsKIAotICAgIGlmIChnZW5l
cmF0b3Iuc2NvcGVEZXB0aCgpICE9IHNjb3BlLT5zY29wZURlcHRoKCkpCisgICAgaWYgKGdlbmVy
YXRvci5sYWJlbFNjb3BlRGVwdGgoKSAhPSBzY29wZS0+c2NvcGVEZXB0aCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIHJldHVybiBzY29wZS0+Y29udGludWVUYXJnZXQoKTsKQEAgLTI2NTYs
NyArMjY1Niw3IEBAIExhYmVsKiBCcmVha05vZGU6OnRyaXZpYWxUYXJnZXQoQnl0ZWNvZGUKICAg
ICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRlbnQpOwog
ICAgIEFTU0VSVChzY29wZSk7CiAKLSAgICBpZiAoZ2VuZXJhdG9yLnNjb3BlRGVwdGgoKSAhPSBz
Y29wZS0+c2NvcGVEZXB0aCgpKQorICAgIGlmIChnZW5lcmF0b3IubGFiZWxTY29wZURlcHRoKCkg
IT0gc2NvcGUtPnNjb3BlRGVwdGgoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4g
c2NvcGUtPmJyZWFrVGFyZ2V0KCk7CkBAIC0yNjkwLDcgKzI2OTAsNyBAQCB2b2lkIFJldHVybk5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZVR5cGUocmV0dXJuUmVnaXN0ZXIuZ2V0KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJl
dHVyblN0YXRlbWVudCwgbnVsbHB0cik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2Zp
bGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAg
aWYgKGdlbmVyYXRvci5zY29wZURlcHRoKCkpIHsKKyAgICBpZiAoZ2VuZXJhdG9yLmxhYmVsU2Nv
cGVEZXB0aCgpKSB7CiAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3Zl
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdFBvcFNjb3BlcyhnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCAwKTsK
ICAgICB9CkBAIC0yNzE0LDcgKzI3MTQsNyBAQCB2b2lkIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX2Rpdm90LCBt
X2Rpdm90IC0gbV9leHByZXNzaW9uTGVuZ3RoLCBtX2Rpdm90KTsKICAgICBnZW5lcmF0b3IuZW1p
dFB1c2hXaXRoU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgc2NvcGUuZ2V0KCkpOwog
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKLSAgICBnZW5lcmF0b3Iu
ZW1pdFBvcFNjb3BlKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCkpOworICAgIGdlbmVyYXRvci5l
bWl0UG9wV2l0aE9yQ2F0Y2hTY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpKTsKIH0KIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhc2VDbGF1c2VOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yOTY3LDcgKzI5NjcsNyBAQCB2b2lkIFRyeU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHVz
aENhdGNoU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV90aHJvd25WYWx1ZUlkZW50
LCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBEb250RGVsZXRlKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV90cnlCbG9jay0+ZW5kT2Zmc2V0KCkgKyAxKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9jYXRjaEJsb2NrKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQb3BTY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQb3BXaXRoT3JDYXRjaFNjb3BlKGdlbmVyYXRvci5zY29wZVJlZ2lz
dGVyKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGNhdGNoRW5kTGFiZWwuZ2V0KCkp
OwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9sZXhp
Y2FsLXNjb3BpbmctYnJlYWstY29udGludWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9sZXhpY2FsLXNjb3BpbmctYnJlYWstY29udGludWUuanMJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2xleGlj
YWwtc2NvcGluZy1icmVhay1jb250aW51ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIx
NiBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYmFkIGFzc2VydGlvbiIpOworfQorbm9JbmxpbmUoYXNzZXJ0KTsKKworOyhmdW5j
dGlvbigpIHsKKyAgICBmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICAgICAgbGV0IHggPSAyMDsKKyAg
ICAgICAgZnVuY3Rpb24gZm9vKCkgeworICAgICAgICAgICAgbGFiZWw6IHsKKyAgICAgICAgICAg
ICAgICBsZXQgeSA9IDIxOworICAgICAgICAgICAgICAgIGxldCBjYXBZID0gZnVuY3Rpb24gKCkg
eyByZXR1cm4geTsgfQorICAgICAgICAgICAgICAgIGFzc2VydCh4ID09PSAyMCk7CisgICAgICAg
ICAgICAgICAgYnJlYWsgbGFiZWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnQo
eCA9PT0gMjApOworICAgICAgICB9CisgICAgICAgIGZvbygpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHRlc3QyKCkgeworICAgICAgICBsZXQgeCA9IDIwOworICAgICAgICBmdW5jdGlvbiBjYXBY
KCkgeyByZXR1cm4geDsgfQorICAgICAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgICAgICBs
YWJlbDE6IHsKKyAgICAgICAgICAgICAgICBsYWJlbDI6IHsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IHkgPSAyMTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGNhcFkgPSBmdW5jdGlvbiAoKSB7
IHJldHVybiB5OyB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrIGxhYmVsMjsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0KHggPT09IDIwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGFzc2VydCh4ID09PSAyMCk7CisKKyAgICAgICAgICAgIGxhYmVsMTog
eworICAgICAgICAgICAgICAgIGxhYmVsMjogeworICAgICAgICAgICAgICAgICAgICBsZXQgeSA9
IDIxOworICAgICAgICAgICAgICAgICAgICBsZXQgY2FwWSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IHk7IH0KKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHggPT09IDIwKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0KHkgPT09IDIxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsgbGFi
ZWwxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2Vy
dCh4ID09PSAyMCk7CisKKyAgICAgICAgICAgIGxhYmVsMTogeworICAgICAgICAgICAgICAgIGxl
dCB5ID0gMjE7CisgICAgICAgICAgICAgICAgbGV0IGNhcFkgPSBmdW5jdGlvbiAoKSB7IHJldHVy
biB5OyB9CisgICAgICAgICAgICAgICAgbGFiZWwyOiB7CisgICAgICAgICAgICAgICAgICAgIGxl
dCB5ID0gMjE7CisgICAgICAgICAgICAgICAgICAgIGxldCBjYXBZID0gZnVuY3Rpb24gKCkgeyBy
ZXR1cm4geTsgfQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQoeCA9PT0gMjApOworICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQoeSA9PT0gMjEpOworICAgICAgICAgICAgICAgICAgICBicmVh
ayBsYWJlbDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
YXNzZXJ0KHggPT09IDIwKTsKKyAgICAgICAgfQorICAgICAgICBmb28oKQorICAgIH0KKworICAg
IGZ1bmN0aW9uIHRlc3QzKCkgeworICAgICAgICBsZXQgeCA9IDIwOworICAgICAgICBmdW5jdGlv
biBjYXBYKCkgeyByZXR1cm4geDsgfQorICAgICAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAg
ICAgICBsb29wMTogZm9yICh2YXIgaSA9IDA7IGkrKyA8IDEwMDA7ICkgeworICAgICAgICAgICAg
ICAgIC8vYXNzZXJ0KHggPT09IDIwKTsKKyAgICAgICAgICAgICAgICBsb29wMjogZm9yICh2YXIg
aiA9IDA7IGorKyA8IDEwMDA7ICkgeworICAgICAgICAgICAgICAgICAgICBsZXQgeSA9IDIxOwor
ICAgICAgICAgICAgICAgICAgICBsZXQgY2FwWSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4geTsgfQor
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQoeCA9PT0gMjApOworICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQoeSA9PT0gMjEpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBsb29wMTsK
KyAgICAgICAgICAgICAgICAgICAgLy9icmVhayBsb29wMTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnQoeCA9PT0gMjApOworICAgICAgICB9Cisg
ICAgICAgIGZvbygpCisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdDQoKSB7CisgICAgICAgIGxl
dCB4ID0gMjA7CisgICAgICAgIGZ1bmN0aW9uIGNhcFgoKSB7IHJldHVybiB4OyB9CisgICAgICAg
IGZ1bmN0aW9uIGZvbygpIHsKKyAgICAgICAgICAgIGxvb3AxOiBmb3IgKHZhciBpID0gMDsgaSsr
IDwgMTAwMDsgKSB7CisgICAgICAgICAgICAgICAgbG9vcDI6IGZvciAodmFyIGogPSAwOyBqKysg
PCAxMDAwOyApIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHkgPSAyMTsKKyAgICAgICAgICAg
ICAgICAgICAgbGV0IGNhcFkgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHk7IH0KKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0KHggPT09IDIwKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHkg
PT09IDIxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsgbG9vcDE7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KHggPT09IDIwKTsKKyAgICAg
ICAgfQorICAgICAgICBmb28oKQorICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3Q1KCkgeworICAg
ICAgICBsZXQgeCA9IDIwOworICAgICAgICBmdW5jdGlvbiBjYXBYKCkgeyByZXR1cm4geDsgfQor
ICAgICAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgICAgICBsb29wMTogZm9yICh2YXIgaSA9
IDA7IGkrKyA8IDEwMDA7ICkgeworICAgICAgICAgICAgICAgIGxldCB5ID0gMjE7CisgICAgICAg
ICAgICAgICAgbGV0IGNhcFkgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHk7IH0KKyAgICAgICAgICAg
ICAgICBsb29wMjogZm9yICh2YXIgaiA9IDA7IGorKyA8IDEwMDA7ICkgeworICAgICAgICAgICAg
ICAgICAgICBsZXQgeSA9IDIxOworICAgICAgICAgICAgICAgICAgICBsZXQgY2FwWSA9IGZ1bmN0
aW9uKCkgeyByZXR1cm4geTsgfQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQoeCA9PT0gMjAp
OworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoeSA9PT0gMjEpOworICAgICAgICAgICAgICAg
ICAgICBicmVhayBsb29wMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBhc3NlcnQoeCA9PT0gMjApOworICAgICAgICB9CisgICAgICAgIGZvbygpCisgICAg
fQorCisgICAgZnVuY3Rpb24gdGVzdDYoKSB7CisgICAgICAgIGxldCB4ID0gMjA7CisgICAgICAg
IGZ1bmN0aW9uIGNhcFgoKSB7IHJldHVybiB4OyB9CisgICAgICAgIGZ1bmN0aW9uIGZvbygpIHsK
KyAgICAgICAgICAgIGxvb3AxOiBmb3IgKHZhciBpID0gMDsgaSsrIDwgMTAwMDsgKSB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0KHggPT09IDIwKTsKKyAgICAgICAgICAgICAgICBsZXQgeSA9IDIx
OworICAgICAgICAgICAgICAgIGxldCBjYXBZID0gZnVuY3Rpb24oKSB7IHJldHVybiB5OyB9Cisg
ICAgICAgICAgICAgICAgbG9vcDI6IGZvciAodmFyIGogPSAwOyBqKysgPCAxMDAwOyApIHsKKyAg
ICAgICAgICAgICAgICAgICAgbGV0IHkgPSAyMTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGNh
cFkgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHk7IH0KKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
KHggPT09IDIwKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHkgPT09IDIxKTsKKyAgICAg
ICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigpOyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFz
c2VydCh4ID09PSAyMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBsb29wMTsg
ICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBhc3NlcnQoeCA9PT0gMjApOworICAgICAgICB9CisgICAgICAgIGZv
bygpCisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdDcoKSB7CisgICAgICAgIGxldCB4ID0gMjA7
CisgICAgICAgIGZ1bmN0aW9uIGNhcFgoKSB7IHJldHVybiB4OyB9CisgICAgICAgIGZ1bmN0aW9u
IGZvbygpIHsKKyAgICAgICAgICAgIGxvb3AxOiBmb3IgKHZhciBpID0gMDsgaSsrIDwgMTAwMDsg
KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHggPT09IDIwKTsKKyAgICAgICAgICAgICAgICBs
ZXQgeSA9IDIxOworICAgICAgICAgICAgICAgIGxldCBjYXBZID0gZnVuY3Rpb24oKSB7IHJldHVy
biB5OyB9CisgICAgICAgICAgICAgICAgbG9vcDI6IGZvciAodmFyIGogPSAwOyBqKysgPCAxMDAw
OyApIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHkgPSAyMTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IGNhcFkgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHk7IH0KKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0KHggPT09IDIwKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHkgPT09IDIx
KTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigpOyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIGxvb3AxOworICAgICAgICAg
ICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSA0
MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjYXBYID0gZnVuY3Rpb24oKSB7IHJldHVy
biB4OyB9CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoeCA9PT0gNDApOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYXNzZXJ0KHggPT09IDIwKTsKKyAgICAgICAgfQorICAgICAgICBmb28oKQorICAgIH0K
KworICAgIGZ1bmN0aW9uIHRlc3Q4KCkgeworICAgICAgICBsZXQgeCA9IDIwOworICAgICAgICBm
dW5jdGlvbiBjYXBYKCkgeyByZXR1cm4geDsgfQorICAgICAgICBmdW5jdGlvbiBmb28oKSB7Cisg
ICAgICAgICAgICBsb29wMTogZm9yICh2YXIgaSA9IDA7IGkrKyA8IDEwMDA7ICkgeworICAgICAg
ICAgICAgICAgIGFzc2VydCh4ID09PSAyMCk7CisgICAgICAgICAgICAgICAgbGV0IHkgPSAyMTsK
KyAgICAgICAgICAgICAgICBsZXQgY2FwWSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4geTsgfQorICAg
ICAgICAgICAgICAgIGxvb3AyOiBmb3IgKHZhciBqID0gMDsgaisrIDwgMTAwMDsgKSB7CisgICAg
ICAgICAgICAgICAgICAgIGxldCB5ID0gMjE7CisgICAgICAgICAgICAgICAgICAgIGxldCBjYXBZ
ID0gZnVuY3Rpb24oKSB7IHJldHVybiB5OyB9CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCh4
ID09PSAyMCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCh5ID09PSAyMSk7CisgICAgICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoKTsgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhayBsb29wMTsKKyAgICAgICAgICAgICAgICAgICAgfSBm
aW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0gNDA7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsZXQgY2FwWCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4geDsgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0KHggPT09IDQwKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydCh4
ID09PSAyMCk7CisgICAgICAgIH0KKyAgICAgICAgZm9vKCkKKyAgICB9CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICB0ZXN0MSgpOworICAgICAgICB0ZXN0
MigpOworICAgICAgICB0ZXN0MygpOworICAgICAgICB0ZXN0NCgpOworICAgICAgICB0ZXN0NSgp
OworICAgICAgICB0ZXN0NigpOworICAgICAgICB0ZXN0NygpOworICAgICAgICB0ZXN0OCgpOwor
ICAgIH0KK30pKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>