<?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>169596</bug_id>
          
          <creation_ts>2017-03-14 01:01:44 -0700</creation_ts>
          <short_desc>[JSC][FTL] FTL should support Arrayify</short_desc>
          <delta_ts>2017-04-20 19:08:34 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</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>1287550</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-14 01:01:44 -0700</bug_when>
    <thetext>https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=six-speed&amp;subtest=map-set-es5
Performance regression is shown due to FTL rejection for Arrayify node.
I guess some recent change makes Arrayify in the above benchmark marked-reachable, and then FTL rejects it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287552</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-14 01:06:08 -0700</bug_when>
    <thetext>But anyway, supporting Arrayify in FTL is nice because ArrayifyToStructure is already done in FTL.

Maybe, I think recent checkArray fixup for `in` operation allows us to emit Arrayify in the above benchmark. Then, FTL rejects it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299108</commentid>
    <comment_count>2</comment_count>
      <attachid>307591</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-20 06:29:38 -0700</bug_when>
    <thetext>Created attachment 307591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299109</commentid>
    <comment_count>3</comment_count>
      <attachid>307592</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-20 06:34:39 -0700</bug_when>
    <thetext>Created attachment 307592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299238</commentid>
    <comment_count>4</comment_count>
      <attachid>307592</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-20 12:58:40 -0700</bug_when>
    <thetext>Comment on attachment 307592
Patch

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

r=me

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2761
&gt; +        auto isUnexpectedArray = [&amp;](LValue cell) {

style: I think we put a space between &quot;]&quot; and &quot;(&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299445</commentid>
    <comment_count>5</comment_count>
      <attachid>307592</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-20 19:05:53 -0700</bug_when>
    <thetext>Comment on attachment 307592
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:2761
&gt;&gt; +        auto isUnexpectedArray = [&amp;](LValue cell) {
&gt; 
&gt; style: I think we put a space between &quot;]&quot; and &quot;(&quot;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299450</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-20 19:08:34 -0700</bug_when>
    <thetext>Committed r215600: &lt;http://trac.webkit.org/changeset/215600&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307591</attachid>
            <date>2017-04-20 06:29:38 -0700</date>
            <delta_ts>2017-04-20 06:34:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169596-20170420222937.patch</filename>
            <type>text/plain</type>
            <size>11833</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZDI5ODc3MzU4Njc2YWVhYzEzMTg2ZGI2Y2E2N2NmMmRiODVkNzA2Li5hOWY2Yzg5ZDMxZDhkODQ1
YjU3NTlhMTA2OWY5NmU2ZDlmNTFkYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNy0wNC0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtGVExdIEZUTCBzaG91bGQgc3VwcG9ydCBBcnJheWlmeQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NTk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBzaW1wbHkgZXhwYW5kcyB0aGUgY292ZXJhZ2Ugb2YgRlRMIGJ5IHN1cHBvcnRpbmcgQXJyYXlp
ZnkuCisgICAgICAgIFdoaWxlIEFycmF5aWZ5VG9TdHJ1Y3R1cmUgaXMgYWxyZWFkeSBzdXBwb3J0
ZWQsIEFycmF5aWZ5IGlzIG5vdCBzdXBwb3J0ZWQKKyAgICAgICAgaW4gRlRMLiBXaGlsZSBzdXBw
b3J0aW5nIEFycmF5aWZ5IGluIEZUTCBpdHNlbGYgZG9lcyBub3Qgb2ZmZXIgc28gbXVjaAorICAg
ICAgICBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGZyb20gREZHJ3Mgb25lLCBubyBGVEwgc3VwcG9y
dCBmb3IgQXJyYXlpZnkKKyAgICAgICAgcHJldmVudHMgdXMgYXBwbHlpbmcgRlRMIHRvIHRoZSBj
b2RlIGluY2x1ZGluZyBBcnJheWlmeS4KKworICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnRvSW5kZXhpbmdTaGFwZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
anVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUFycmF5aWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNoZWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojppc0FycmF5VHlwZUZvckFycmF5aWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6aXNBcnJheVR5cGVGb3JDaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0FycmF5VHlwZSk6IERlbGV0
ZWQuCisKIDIwMTctMDQtMTggIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRm9sbG93IHVwIHRvIGFkZHJlc3MgTWFyaydzIGNvbW1lbnRzIGFmdGVyIHIyMTU0NTMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAppbmRleCBhMjY1MzBl
ZDAzZTMwMDdkMmYxMTgyNTE3YTM5NTFlYzg5ZGZhNmVjLi40MzEwNjFkODMyYzMxZmM2MGRjOTI3
NmM3MjdiNTE1OTY4MDFmYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCkBAIC02MjMsNiArNjIzLDggQEAgSW5kZXhpbmdUeXBlIHRvSW5kZXhpbmdTaGFw
ZShBcnJheTo6VHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gRG91YmxlU2hhcGU7CiAgICAgY2Fz
ZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFwZTsKKyAg
ICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6CisgICAgICAgIHJldHVybiBVbmRlY2lkZWRTaGFwZTsK
ICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CiAgICAgICAgIHJldHVybiBBcnJheVN0b3Jh
Z2VTaGFwZTsKICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA1YzRlOTJm
ZmYxMmQyOGEyM2IyMmVjMDQ5YTUxNThiOTliYTU4NGJjLi4wZTI0M2YyOWMzZTlmYmJjOTVkYmVk
NDM3NTMxZmE2YjMxYjAyYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtNzYyLDE2ICs3NjIsMTAgQEAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IFNwZWN1bGF0aXZlSklUOjpqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKEdQUlJl
ZyB0ZW1wR1AKICAgICAKICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKICAgICBjYXNl
IEFycmF5OjpJbnQzMjoKLSAgICAgICAgcmV0dXJuIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1v
ZGUodGVtcEdQUiwgYXJyYXlNb2RlLCBJbnQzMlNoYXBlKTsKLQogICAgIGNhc2UgQXJyYXk6OkRv
dWJsZToKLSAgICAgICAgcmV0dXJuIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQ
UiwgYXJyYXlNb2RlLCBEb3VibGVTaGFwZSk7Ci0KICAgICBjYXNlIEFycmF5OjpDb250aWd1b3Vz
OgotICAgICAgICByZXR1cm4ganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBh
cnJheU1vZGUsIENvbnRpZ3VvdXNTaGFwZSk7Ci0KICAgICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6
Ci0gICAgICAgIHJldHVybiBqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIGFy
cmF5TW9kZSwgVW5kZWNpZGVkU2hhcGUpOworICAgICAgICByZXR1cm4ganVtcFNsb3dGb3JVbndh
bnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBhcnJheU1vZGUsIGFycmF5TW9kZS5zaGFwZU1hc2soKSk7
CiAKICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CiAgICAgY2FzZSBBcnJheTo6U2xvd1B1
dEFycmF5U3RvcmFnZTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCmluZGV4IGFkNTRjOTQyY2I4YmZkMGIyODRmYTFhNzExNjU3OWQ1YThkYTU0MTQu
Ljg4YTI3ZWNjYzE5MTQ0YTU5ZTZjYjcwMWM0OTZhYzZkODVjZGE1YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTI5NCw2ICsyOTQsMTYg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IC8vIGNhc2UgYmVjYXVzZSBpdCB3b3VsZCBwcmV2ZW50IHVzIGZyb20gY2F0Y2hpbmcgYnVncyB3
aGVyZSB0aGUgRlRMIGJhY2tlbmQKICAgICAgICAgLy8gcGlwZWxpbmUgZmFpbGVkIHRvIG9wdGlt
aXplIG91dCBhbiBJZGVudGl0eS4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBcnJheWlmeToK
KyAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBBcnJheTo6SW50MzI6CisgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgY2Fz
ZSBBcnJheTo6Q29udGlndW91czoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5
TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA2ZmFkZjE1ODc3YThj
NmNmNjU4OWNkY2JmNzk3NmQ2YmI0ZWViNzI0Li5iMWZlNTBkNmY3MmJmZmE4NDc3Y2U0ZTNhOTBj
YTNkYTQ3YmYyMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC02MjIsOCArNjIyLDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgICAgICAgICAgY29tcGlsZUdldEV4ZWN1dGFibGUo
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFycmF5aWZ5OgogICAgICAgICBj
YXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6Ci0gICAgICAgICAgICBjb21waWxlQXJyYXlpZnlUb1N0
cnVjdHVyZSgpOworICAgICAgICAgICAgY29tcGlsZUFycmF5aWZ5KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlUHV0
U3RydWN0dXJlKCk7CkBAIC0yNzQ4LDIzICsyNzQ5LDI3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOwogICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4
ZWN1dGFibGUpKTsKICAgICB9Ci0gICAgCi0gICAgdm9pZCBjb21waWxlQXJyYXlpZnlUb1N0cnVj
dHVyZSgpCisKKyAgICB2b2lkIGNvbXBpbGVBcnJheWlmeSgpCiAgICAgewogICAgICAgICBMVmFs
dWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBwcm9w
ZXJ0eSA9ICEhbV9ub2RlLT5jaGlsZDIoKSA/IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpIDog
MDsKLSAgICAgICAgCisKICAgICAgICAgTEJhc2ljQmxvY2sgdW5leHBlY3RlZFN0cnVjdHVyZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIAotICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQgPSBt
X291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwotICAgICAgICAK
LSAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0
dXJlSUQsIHdlYWtTdHJ1Y3R1cmVJRChtX25vZGUtPnN0cnVjdHVyZSgpKSksCi0gICAgICAgICAg
ICByYXJlbHkodW5leHBlY3RlZFN0cnVjdHVyZSksIHVzdWFsbHkoY29udGludWF0aW9uKSk7Ci0g
ICAgICAgIAorCisgICAgICAgIGF1dG8gaXNVbmV4cGVjdGVkQXJyYXkgPSBbJl0oTFZhbHVlIGNl
bGwpIHsKKyAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gQXJyYXlpZnkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1fb3V0LmxvZ2ljYWxOb3QoaXNBcnJheVR5cGVGb3JBcnJheWlmeShj
ZWxsLCBtX25vZGUtPmFycmF5TW9kZSgpKSk7CisKKyAgICAgICAgICAgIEFTU0VSVChtX25vZGUt
Pm9wKCkgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXQu
bm90RXF1YWwobV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwg
d2Vha1N0cnVjdHVyZUlEKG1fbm9kZS0+c3RydWN0dXJlKCkpKTsKKyAgICAgICAgfTsKKworICAg
ICAgICBtX291dC5icmFuY2goaXNVbmV4cGVjdGVkQXJyYXkoY2VsbCksIHJhcmVseSh1bmV4cGVj
dGVkU3RydWN0dXJlKSwgdXN1YWxseShjb250aW51YXRpb24pKTsKKwogICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHVuZXhwZWN0ZWRTdHJ1Y3R1cmUsIGNvbnRp
bnVhdGlvbik7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChwcm9wZXJ0eSkgewogICAgICAgICAg
ICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICAgICAgY2Fz
ZSBBcnJheTo6SW50MzI6CkBAIC0yNzc4LDcgKzI3ODMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUludDMyKSwgbV9jYWxsRnJhbWUsIGNlbGwpOwpAQCAt
Mjc5NywxNiArMjgwMiwxMyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgREZH
X0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBhcnJheSB0eXBlIik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3RydWN0dXJlSUQgPSBtX291dC5s
b2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwotICAgICAgICBzcGVjdWxh
dGUoCi0gICAgICAgICAgICBCYWRJbmRleGluZ1R5cGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwK
LSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZUlELCB3ZWFrU3RydWN0dXJlSUQo
bV9ub2RlLT5zdHJ1Y3R1cmUoKSkpKTsKKworICAgICAgICBzcGVjdWxhdGUoQmFkSW5kZXhpbmdU
eXBlLCBqc1ZhbHVlVmFsdWUoY2VsbCksIDAsIGlzVW5leHBlY3RlZEFycmF5KGNlbGwpKTsKICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwotICAgICAgICAKKwogICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9Ci0gICAgCisKICAgICB2
b2lkIGNvbXBpbGVQdXRTdHJ1Y3R1cmUoKQogICAgIHsKICAgICAgICAgbV9mdGxTdGF0ZS5qaXRD
b2RlLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbihtX2dyYXBoLm1f
cGxhbiwgY29kZUJsb2NrKCksIG1fbm9kZSk7CkBAIC0zMTI4LDcgKzMxMzAsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAogICAgICAgICAgICAg
QmFkSW5kZXhpbmdUeXBlLCBqc1ZhbHVlVmFsdWUoY2VsbCksIDAsCi0gICAgICAgICAgICBtX291
dC5sb2dpY2FsTm90KGlzQXJyYXlUeXBlKGNlbGwsIG1fbm9kZS0+YXJyYXlNb2RlKCkpKSk7Cisg
ICAgICAgICAgICBtX291dC5sb2dpY2FsTm90KGlzQXJyYXlUeXBlRm9yQ2hlY2tBcnJheShjZWxs
LCBtX25vZGUtPmFycmF5TW9kZSgpKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0KCkKQEAgLTEyODE2LDM4ICsxMjgxOCw1MiBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN5bWJvbFN0cnVj
dHVyZS0+aWQoKSkpOwogICAgIH0KIAotICAgIExWYWx1ZSBpc0FycmF5VHlwZShMVmFsdWUgY2Vs
bCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKKyAgICBMVmFsdWUgaXNBcnJheVR5cGVGb3JBcnJheWlm
eShMVmFsdWUgY2VsbCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoYXJyYXlNb2RlLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKICAgICAg
ICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOiB7
CisgICAgICAgICAgICBJbmRleGluZ1R5cGUgc2hhcGUgPSBhcnJheU1vZGUuc2hhcGVNYXNrKCk7
CiAgICAgICAgICAgICBMVmFsdWUgaW5kZXhpbmdUeXBlID0gbV9vdXQubG9hZDhaZXJvRXh0MzIo
Y2VsbCwgbV9oZWFwcy5KU0NlbGxfaW5kZXhpbmdUeXBlQW5kTWlzYyk7Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUuYXJyYXlDbGFzcygpKSB7CiAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpPcmlnaW5hbEFycmF5OgogICAgICAgICAgICAgICAgIERGR19DUkFT
SChtX2dyYXBoLCBtX25vZGUsICJVbmV4cGVjdGVkIG9yaWdpbmFsIGFycmF5Iik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OkFycmF5OgogICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKICAgICAg
ICAgICAgICAgICAgICAgbV9vdXQuYml0QW5kKGluZGV4aW5nVHlwZSwgbV9vdXQuY29uc3RJbnQz
MihJc0FycmF5IHwgSW5kZXhpbmdTaGFwZU1hc2spKSwKLSAgICAgICAgICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMihJc0FycmF5IHwgYXJyYXlNb2RlLnNoYXBlTWFzaygpKSk7Ci0gICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoSXNBcnJheSB8
IHNoYXBlKSk7CisKICAgICAgICAgICAgIGNhc2UgQXJyYXk6Ok5vbkFycmF5OgogICAgICAgICAg
ICAgY2FzZSBBcnJheTo6T3JpZ2luYWxOb25BcnJheToKICAgICAgICAgICAgICAgICByZXR1cm4g
bV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJpdEFuZChpbmRleGluZ1R5
cGUsIG1fb3V0LmNvbnN0SW50MzIoSXNBcnJheSB8IEluZGV4aW5nU2hhcGVNYXNrKSksCi0gICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoYXJyYXlNb2RlLnNoYXBlTWFzaygpKSk7
Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIo
c2hhcGUpKTsKKwogICAgICAgICAgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheToKICAgICAg
ICAgICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmJpdEFuZChpbmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoSW5kZXhpbmdTaGFwZU1hc2sp
KSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihhcnJheU1vZGUuc2hhcGVN
YXNrKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihzaGFwZSkpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbV9ub2RlLCAiQ29ycnVwdCBhcnJheSBjbGFzcyIpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkNvcnJ1cHQgYXJyYXkgY2xh
c3MiKTsKKyAgICB9CisKKyAgICBMVmFsdWUgaXNBcnJheVR5cGVGb3JDaGVja0FycmF5KExWYWx1
ZSBjZWxsLCBBcnJheU1vZGUgYXJyYXlNb2RlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChhcnJh
eU1vZGUudHlwZSgpKSB7CisgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICBjYXNl
IEFycmF5OjpEb3VibGU6CisgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAg
ICAgICByZXR1cm4gaXNBcnJheVR5cGVGb3JBcnJheWlmeShjZWxsLCBhcnJheU1vZGUpOwogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXk6OkRpcmVjdEFyZ3VtZW50czoKICAgICAgICAg
ICAgIHJldHVybiBtX291dC5lcXVhbCgKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjVkMzI1YzdiOTk5MWJhYWZhNjdkNDQ2YzU0NTZhYzQ3
OGJiNjJkYy4uYzBiNTkyNTIwZjZhZDM5YWNhYzA5NzYzMjMwODNiYjZkZGI3MmIxNyAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxNy0wNC0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBbSlNDXVtGVExdIEZUTCBzaG91bGQgc3VwcG9ydCBBcnJheWlmeQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NTk2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXJy
YXlpZnkuanM6IEFkZGVkLgorICAgICAgICAoYXJyYXlpZnlJbnQzMik6CisgICAgICAgIChhcnJh
eWlmeURvdWJsZSk6CisgICAgICAgIChhcnJheWlmeUNvbnRpZ3VvdXMpOgorCiAyMDE3LTA0LTE4
ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvdyB1cCB0
byBkZWJ1ZyBidWlsZCBzdGFjayBvdmVyZmxvdyBpbiB0ZXN0IGFmdGVyIHIyMTU0NTMKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXlp
ZnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGU4NTFkYmRjY2Q5MzY4OTNhOTc3ZjRkM2VhMGNkYTYxY2NhNWVh
YQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LmpzCkBAIC0wLDAg
KzEsNDEgQEAKK2Z1bmN0aW9uIGFycmF5aWZ5SW50MzIoYXJyYXkpCit7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTI7ICsraSkKKyAgICAgICAgYXJyYXlbaV0gPSA0MjsKK30KK25vSW5saW5l
KGFycmF5aWZ5SW50MzIpOworCitmdW5jdGlvbiBhcnJheWlmeURvdWJsZShhcnJheSkKK3sKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKQorICAgICAgICBhcnJheVtpXSA9IDQyLjE5
NTsKK30KK25vSW5saW5lKGFycmF5aWZ5RG91YmxlKTsKKworZnVuY3Rpb24gYXJyYXlpZnlDb250
aWd1b3VzKGFycmF5KQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpCisgICAg
ICAgIGFycmF5W2ldID0gdHJ1ZTsKK30KK25vSW5saW5lKGFycmF5aWZ5Q29udGlndW91cyk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBsZXQgY29jb2EgPSB7IG5hbWU6
ICdDb2NvYScgfTsKKyAgICBsZXQgY2FwcHVjY2lubyA9IHsgbmFtZTogJ0NhcHB1Y2Npbm8nIH07
CisgICAgYXJyYXlpZnlJbnQzMihjb2NvYSk7CisgICAgYXJyYXlpZnlJbnQzMihjYXBwdWNjaW5v
KTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIGxldCBjb2NvYSA9
IHsgbmFtZTogJ0NvY29hJyB9OworICAgIGxldCBjYXBwdWNjaW5vID0geyBuYW1lOiAnQ2FwcHVj
Y2lubycgfTsKKyAgICBhcnJheWlmeURvdWJsZShjb2NvYSk7CisgICAgYXJyYXlpZnlEb3VibGUo
Y2FwcHVjY2lubyk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBs
ZXQgY29jb2EgPSB7IG5hbWU6ICdDb2NvYScgfTsKKyAgICBsZXQgY2FwcHVjY2lubyA9IHsgbmFt
ZTogJ0NhcHB1Y2Npbm8nIH07CisgICAgYXJyYXlpZnlDb250aWd1b3VzKGNvY29hKTsKKyAgICBh
cnJheWlmeUNvbnRpZ3VvdXMoY2FwcHVjY2lubyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307592</attachid>
            <date>2017-04-20 06:34:39 -0700</date>
            <delta_ts>2017-04-20 12:58:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169596-20170420223438.patch</filename>
            <type>text/plain</type>
            <size>11231</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZDI5ODc3MzU4Njc2YWVhYzEzMTg2ZGI2Y2E2N2NmMmRiODVkNzA2Li5hOWY2Yzg5ZDMxZDhkODQ1
YjU3NTlhMTA2OWY5NmU2ZDlmNTFkYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNy0wNC0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtGVExdIEZUTCBzaG91bGQgc3VwcG9ydCBBcnJheWlmeQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NTk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBzaW1wbHkgZXhwYW5kcyB0aGUgY292ZXJhZ2Ugb2YgRlRMIGJ5IHN1cHBvcnRpbmcgQXJyYXlp
ZnkuCisgICAgICAgIFdoaWxlIEFycmF5aWZ5VG9TdHJ1Y3R1cmUgaXMgYWxyZWFkeSBzdXBwb3J0
ZWQsIEFycmF5aWZ5IGlzIG5vdCBzdXBwb3J0ZWQKKyAgICAgICAgaW4gRlRMLiBXaGlsZSBzdXBw
b3J0aW5nIEFycmF5aWZ5IGluIEZUTCBpdHNlbGYgZG9lcyBub3Qgb2ZmZXIgc28gbXVjaAorICAg
ICAgICBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGZyb20gREZHJ3Mgb25lLCBubyBGVEwgc3VwcG9y
dCBmb3IgQXJyYXlpZnkKKyAgICAgICAgcHJldmVudHMgdXMgYXBwbHlpbmcgRlRMIHRvIHRoZSBj
b2RlIGluY2x1ZGluZyBBcnJheWlmeS4KKworICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OnRvSW5kZXhpbmdTaGFwZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
anVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUFycmF5aWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNoZWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojppc0FycmF5VHlwZUZvckFycmF5aWZ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6aXNBcnJheVR5cGVGb3JDaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0FycmF5VHlwZSk6IERlbGV0
ZWQuCisKIDIwMTctMDQtMTggIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRm9sbG93IHVwIHRvIGFkZHJlc3MgTWFyaydzIGNvbW1lbnRzIGFmdGVyIHIyMTU0NTMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAppbmRleCBhMjY1MzBl
ZDAzZTMwMDdkMmYxMTgyNTE3YTM5NTFlYzg5ZGZhNmVjLi40MzEwNjFkODMyYzMxZmM2MGRjOTI3
NmM3MjdiNTE1OTY4MDFmYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCkBAIC02MjMsNiArNjIzLDggQEAgSW5kZXhpbmdUeXBlIHRvSW5kZXhpbmdTaGFw
ZShBcnJheTo6VHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gRG91YmxlU2hhcGU7CiAgICAgY2Fz
ZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFwZTsKKyAg
ICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6CisgICAgICAgIHJldHVybiBVbmRlY2lkZWRTaGFwZTsK
ICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CiAgICAgICAgIHJldHVybiBBcnJheVN0b3Jh
Z2VTaGFwZTsKICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA1YzRlOTJm
ZmYxMmQyOGEyM2IyMmVjMDQ5YTUxNThiOTliYTU4NGJjLi4wZTI0M2YyOWMzZTlmYmJjOTVkYmVk
NDM3NTMxZmE2YjMxYjAyYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtNzYyLDE2ICs3NjIsMTAgQEAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IFNwZWN1bGF0aXZlSklUOjpqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKEdQUlJl
ZyB0ZW1wR1AKICAgICAKICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKICAgICBjYXNl
IEFycmF5OjpJbnQzMjoKLSAgICAgICAgcmV0dXJuIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1v
ZGUodGVtcEdQUiwgYXJyYXlNb2RlLCBJbnQzMlNoYXBlKTsKLQogICAgIGNhc2UgQXJyYXk6OkRv
dWJsZToKLSAgICAgICAgcmV0dXJuIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQ
UiwgYXJyYXlNb2RlLCBEb3VibGVTaGFwZSk7Ci0KICAgICBjYXNlIEFycmF5OjpDb250aWd1b3Vz
OgotICAgICAgICByZXR1cm4ganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBh
cnJheU1vZGUsIENvbnRpZ3VvdXNTaGFwZSk7Ci0KICAgICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6
Ci0gICAgICAgIHJldHVybiBqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIGFy
cmF5TW9kZSwgVW5kZWNpZGVkU2hhcGUpOworICAgICAgICByZXR1cm4ganVtcFNsb3dGb3JVbndh
bnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBhcnJheU1vZGUsIGFycmF5TW9kZS5zaGFwZU1hc2soKSk7
CiAKICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CiAgICAgY2FzZSBBcnJheTo6U2xvd1B1
dEFycmF5U3RvcmFnZTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCmluZGV4IGFkNTRjOTQyY2I4YmZkMGIyODRmYTFhNzExNjU3OWQ1YThkYTU0MTQu
Ljg4YTI3ZWNjYzE5MTQ0YTU5ZTZjYjcwMWM0OTZhYzZkODVjZGE1YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTI5NCw2ICsyOTQsMTYg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IC8vIGNhc2UgYmVjYXVzZSBpdCB3b3VsZCBwcmV2ZW50IHVzIGZyb20gY2F0Y2hpbmcgYnVncyB3
aGVyZSB0aGUgRlRMIGJhY2tlbmQKICAgICAgICAgLy8gcGlwZWxpbmUgZmFpbGVkIHRvIG9wdGlt
aXplIG91dCBhbiBJZGVudGl0eS4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBcnJheWlmeToK
KyAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBBcnJheTo6SW50MzI6CisgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICAgICAgY2Fz
ZSBBcnJheTo6Q29udGlndW91czoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5
TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA2ZmFkZjE1ODc3YThj
NmNmNjU4OWNkY2JmNzk3NmQ2YmI0ZWViNzI0Li40MThkZjBkMDM4YzE5YjY2NTQ0YTFlNTIwYzdk
ZGE4ZThlNjc4MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCkBAIC02MjIsOCArNjIyLDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAgICAgICAgICAgY29tcGlsZUdldEV4ZWN1dGFibGUo
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFycmF5aWZ5OgogICAgICAgICBj
YXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6Ci0gICAgICAgICAgICBjb21waWxlQXJyYXlpZnlUb1N0
cnVjdHVyZSgpOworICAgICAgICAgICAgY29tcGlsZUFycmF5aWZ5KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlUHV0
U3RydWN0dXJlKCk7CkBAIC0yNzQ5LDcgKzI3NTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9u
X2V4ZWN1dGFibGUpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlQXJyYXlpZnlUb1N0
cnVjdHVyZSgpCisgICAgdm9pZCBjb21waWxlQXJyYXlpZnkoKQogICAgIHsKICAgICAgICAgTFZh
bHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgcHJv
cGVydHkgPSAhIW1fbm9kZS0+Y2hpbGQyKCkgPyBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSA6
IDA7CkBAIC0yNzU3LDEyICsyNzU4LDE2IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IExCYXNpY0Jsb2NrIHVuZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBtX291dC5uZXdCbG9jaygpOwogICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIHN0cnVjdHVyZUlEID0gbV9vdXQubG9hZDMyKGNlbGwsIG1faGVh
cHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKLSAgICAgICAgCi0gICAgICAgIG1fb3V0LmJyYW5jaCgK
LSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZUlELCB3ZWFrU3RydWN0dXJlSUQo
bV9ub2RlLT5zdHJ1Y3R1cmUoKSkpLAotICAgICAgICAgICAgcmFyZWx5KHVuZXhwZWN0ZWRTdHJ1
Y3R1cmUpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbikpOwotICAgICAgICAKKyAgICAgICAgYXV0byBp
c1VuZXhwZWN0ZWRBcnJheSA9IFsmXShMVmFsdWUgY2VsbCkgeworICAgICAgICAgICAgaWYgKG1f
bm9kZS0+b3AoKSA9PSBBcnJheWlmeSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQubG9n
aWNhbE5vdChpc0FycmF5VHlwZUZvckFycmF5aWZ5KGNlbGwsIG1fbm9kZS0+YXJyYXlNb2RlKCkp
KTsKKworICAgICAgICAgICAgQVNTRVJUKG1fbm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0
dXJlKTsKKyAgICAgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbChtX291dC5sb2FkMzIoY2Vs
bCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLCB3ZWFrU3RydWN0dXJlSUQobV9ub2RlLT5z
dHJ1Y3R1cmUoKSkpOworICAgICAgICB9OworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc1VuZXhw
ZWN0ZWRBcnJheShjZWxsKSwgcmFyZWx5KHVuZXhwZWN0ZWRTdHJ1Y3R1cmUpLCB1c3VhbGx5KGNv
bnRpbnVhdGlvbikpOworCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8odW5leHBlY3RlZFN0cnVjdHVyZSwgY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChwcm9wZXJ0eSkgewpAQCAtMjc5OCwxMCArMjgwMyw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
c3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJl
SUQpOwotICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICBCYWRJbmRleGluZ1R5cGUsIGpz
VmFsdWVWYWx1ZShjZWxsKSwgMCwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVy
ZUlELCB3ZWFrU3RydWN0dXJlSUQobV9ub2RlLT5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgc3Bl
Y3VsYXRlKEJhZEluZGV4aW5nVHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCAwLCBpc1VuZXhwZWN0
ZWRBcnJheShjZWxsKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAg
ICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAt
MzEyOCw3ICszMTMwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAg
IHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZEluZGV4aW5nVHlwZSwganNWYWx1ZVZhbHVlKGNl
bGwpLCAwLAotICAgICAgICAgICAgbV9vdXQubG9naWNhbE5vdChpc0FycmF5VHlwZShjZWxsLCBt
X25vZGUtPmFycmF5TW9kZSgpKSkpOworICAgICAgICAgICAgbV9vdXQubG9naWNhbE5vdChpc0Fy
cmF5VHlwZUZvckNoZWNrQXJyYXkoY2VsbCwgbV9ub2RlLT5hcnJheU1vZGUoKSkpKTsKICAgICB9
CiAKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpCkBAIC0xMjgxNiwz
OCArMTI4MTgsNTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50MzIodm0oKS5zeW1ib2xTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAKLSAgICBMVmFs
dWUgaXNBcnJheVR5cGUoTFZhbHVlIGNlbGwsIEFycmF5TW9kZSBhcnJheU1vZGUpCisgICAgTFZh
bHVlIGlzQXJyYXlUeXBlRm9yQXJyYXlpZnkoTFZhbHVlIGNlbGwsIEFycmF5TW9kZSBhcnJheU1v
ZGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKICAgICAgICAg
Y2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAg
Y2FzZSBBcnJheTo6Q29udGlndW91czogeworICAgICAgICAgICAgSW5kZXhpbmdUeXBlIHNoYXBl
ID0gYXJyYXlNb2RlLnNoYXBlTWFzaygpOwogICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlw
ZSA9IG1fb3V0LmxvYWQ4WmVyb0V4dDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX2luZGV4aW5nVHlw
ZUFuZE1pc2MpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2Rl
LmFycmF5Q2xhc3MoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJheTo6T3JpZ2luYWxBcnJheToK
ICAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiVW5leHBlY3RlZCBv
cmlnaW5hbCBhcnJheSIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICBjYXNlIEFycmF5OjpBcnJheToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJpdEFuZChpbmRl
eGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoSXNBcnJheSB8IEluZGV4aW5nU2hhcGVNYXNrKSks
Ci0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoSXNBcnJheSB8IGFycmF5TW9k
ZS5zaGFwZU1hc2soKSkpOwotICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBt
X291dC5jb25zdEludDMyKElzQXJyYXkgfCBzaGFwZSkpOworCiAgICAgICAgICAgICBjYXNlIEFy
cmF5OjpOb25BcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6Ok9yaWdpbmFsTm9uQXJyYXk6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgICAg
ICBtX291dC5iaXRBbmQoaW5kZXhpbmdUeXBlLCBtX291dC5jb25zdEludDMyKElzQXJyYXkgfCBJ
bmRleGluZ1NoYXBlTWFzaykpLAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMy
KGFycmF5TW9kZS5zaGFwZU1hc2soKSkpOwotICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludDMyKHNoYXBlKSk7CisKICAgICAgICAgICAgIGNhc2UgQXJy
YXk6OlBvc3NpYmx5QXJyYXk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAog
ICAgICAgICAgICAgICAgICAgICBtX291dC5iaXRBbmQoaW5kZXhpbmdUeXBlLCBtX291dC5jb25z
dEludDMyKEluZGV4aW5nU2hhcGVNYXNrKSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50MzIoYXJyYXlNb2RlLnNoYXBlTWFzaygpKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50MzIoc2hhcGUpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkNvcnJ1cHQgYXJyYXkgY2xhc3Mi
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBt
X25vZGUsICJDb3JydXB0IGFycmF5IGNsYXNzIik7CisgICAgfQorCisgICAgTFZhbHVlIGlzQXJy
YXlUeXBlRm9yQ2hlY2tBcnJheShMVmFsdWUgY2VsbCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICBjYXNlIEFy
cmF5OjpJbnQzMjoKKyAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAgICBjYXNlIEFy
cmF5OjpDb250aWd1b3VzOgorICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXlUeXBlRm9yQXJyYXlp
ZnkoY2VsbCwgYXJyYXlNb2RlKTsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFycmF5OjpE
aXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY1ZDMyNWM3
Yjk5OTFiYWFmYTY3ZDQ0NmM1NDU2YWM0NzhiYjYyZGMuLmMwYjU5MjUyMGY2YWQzOWFjYWMwOTc2
MzIzMDgzYmI2ZGRiNzJiMTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDQtMjAgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ11bRlRMXSBGVEwgc2hv
dWxkIHN1cHBvcnQgQXJyYXlpZnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL2FycmF5aWZ5LmpzOiBBZGRlZC4KKyAgICAgICAgKGFycmF5
aWZ5SW50MzIpOgorICAgICAgICAoYXJyYXlpZnlEb3VibGUpOgorICAgICAgICAoYXJyYXlpZnlD
b250aWd1b3VzKToKKwogMjAxNy0wNC0xOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBGb2xsb3cgdXAgdG8gZGVidWcgYnVpbGQgc3RhY2sgb3ZlcmZsb3cgaW4g
dGVzdCBhZnRlciByMjE1NDUzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheWlmeS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlODUxZGJkY2NkOTM2
ODkzYTk3N2Y0ZDNlYTBjZGE2MWNjYTVlYWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9hcnJheWlmeS5qcwpAQCAtMCwwICsxLDQxIEBACitmdW5jdGlvbiBhcnJheWlmeUludDMy
KGFycmF5KQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpCisgICAgICAgIGFy
cmF5W2ldID0gNDI7Cit9Citub0lubGluZShhcnJheWlmeUludDMyKTsKKworZnVuY3Rpb24gYXJy
YXlpZnlEb3VibGUoYXJyYXkpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkK
KyAgICAgICAgYXJyYXlbaV0gPSA0Mi4xOTU7Cit9Citub0lubGluZShhcnJheWlmeURvdWJsZSk7
CisKK2Z1bmN0aW9uIGFycmF5aWZ5Q29udGlndW91cyhhcnJheSkKK3sKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDFlMjsgKytpKQorICAgICAgICBhcnJheVtpXSA9IHRydWU7Cit9Citub0lubGlu
ZShhcnJheWlmeUNvbnRpZ3VvdXMpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7
CisgICAgbGV0IGNvY29hID0geyBuYW1lOiAnQ29jb2EnIH07CisgICAgbGV0IGNhcHB1Y2Npbm8g
PSB7IG5hbWU6ICdDYXBwdWNjaW5vJyB9OworICAgIGFycmF5aWZ5SW50MzIoY29jb2EpOworICAg
IGFycmF5aWZ5SW50MzIoY2FwcHVjY2lubyk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0
OyArK2kpIHsKKyAgICBsZXQgY29jb2EgPSB7IG5hbWU6ICdDb2NvYScgfTsKKyAgICBsZXQgY2Fw
cHVjY2lubyA9IHsgbmFtZTogJ0NhcHB1Y2Npbm8nIH07CisgICAgYXJyYXlpZnlEb3VibGUoY29j
b2EpOworICAgIGFycmF5aWZ5RG91YmxlKGNhcHB1Y2Npbm8pOworfQorCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlNDsgKytpKSB7CisgICAgbGV0IGNvY29hID0geyBuYW1lOiAnQ29jb2EnIH07Cisg
ICAgbGV0IGNhcHB1Y2Npbm8gPSB7IG5hbWU6ICdDYXBwdWNjaW5vJyB9OworICAgIGFycmF5aWZ5
Q29udGlndW91cyhjb2NvYSk7CisgICAgYXJyYXlpZnlDb250aWd1b3VzKGNhcHB1Y2Npbm8pOwor
fQo=
</data>
<flag name="review"
          id="328853"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>