<?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>182731</bug_id>
          
          <creation_ts>2018-02-13 09:31:22 -0800</creation_ts>
          <short_desc>[FTL] Add Arrayify for ArrayStorage and SlowPutArrayStorage</short_desc>
          <delta_ts>2018-02-19 20:50:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>182625</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1398673</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-13 09:31:22 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398697</commentid>
    <comment_count>1</comment_count>
      <attachid>333702</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-13 10:38:54 -0800</bug_when>
    <thetext>Created attachment 333702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398726</commentid>
    <comment_count>2</comment_count>
      <attachid>333713</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-13 12:45:06 -0800</bug_when>
    <thetext>Created attachment 333713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398730</commentid>
    <comment_count>3</comment_count>
      <attachid>333713</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-13 12:48:41 -0800</bug_when>
    <thetext>Comment on attachment 333713
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:-791
&gt; -        m_jit.and32(TrustedImm32(IndexingShapeMask), tempGPR);

Old DFG implementation does not check Array::NonArray/Array::OriginalNonArray well (it does not look into IsArray).
This patch also fixes it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398798</commentid>
    <comment_count>4</comment_count>
      <attachid>333713</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-13 14:52:38 -0800</bug_when>
    <thetext>Comment on attachment 333713
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:780
&gt; +                    TrustedImm32(SlowPutArrayStorageShape - ArrayStorageShape)));

This math doesn&apos;t look right to me:
input indexing type = i = 0x0c (NonArrayWithSlowPutArrayStorage)
i - (0x0A | 1) = 1
1 is not above (0x0c - 0x0a) = 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399000</commentid>
    <comment_count>5</comment_count>
      <attachid>333713</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-14 01:25:06 -0800</bug_when>
    <thetext>Comment on attachment 333713
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:780
&gt;&gt; +                    TrustedImm32(SlowPutArrayStorageShape - ArrayStorageShape)));
&gt; 
&gt; This math doesn&apos;t look right to me:
&gt; input indexing type = i = 0x0c (NonArrayWithSlowPutArrayStorage)
&gt; i - (0x0A | 1) = 1
&gt; 1 is not above (0x0c - 0x0a) = 2

Oops, I thought IsArray is higher than SlowPutArrayStorageShape. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399001</commentid>
    <comment_count>6</comment_count>
      <attachid>333775</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-14 01:25:52 -0800</bug_when>
    <thetext>Created attachment 333775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400197</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-17 22:16:26 -0800</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400612</commentid>
    <comment_count>8</comment_count>
      <attachid>333775</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-19 18:36:23 -0800</bug_when>
    <thetext>Comment on attachment 333775
Patch

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

r=me with some FTL comments

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14590
&gt; +            LValue shapeResult = m_out.belowOrEqual(

nit: I&apos;d maybe call this something like &quot;isExpectedShape&quot; or &quot;isAnArrayStorageShape&quot; or something similar.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14595
&gt; +            m_out.branch(shapeResult, usually(checkCase), usually(falseCase));

these are both usually, that&apos;s wrong. The &quot;falseCase&quot; should be &quot;unlikely&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400613</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-19 18:37:15 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #8)
&gt; Comment on attachment 333775 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=333775&amp;action=review
&gt; 
&gt; r=me with some FTL comments
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14590
&gt; &gt; +            LValue shapeResult = m_out.belowOrEqual(
&gt; 
&gt; nit: I&apos;d maybe call this something like &quot;isExpectedShape&quot; or
&gt; &quot;isAnArrayStorageShape&quot; or something similar.
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14595
&gt; &gt; +            m_out.branch(shapeResult, usually(checkCase), usually(falseCase));
&gt; 
&gt; these are both usually, that&apos;s wrong. The &quot;falseCase&quot; should be &quot;unlikely&quot;

Oops, I has two reviews going in two different windows. Going to comment more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400614</commentid>
    <comment_count>10</comment_count>
      <attachid>333775</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-19 18:38:42 -0800</bug_when>
    <thetext>Comment on attachment 333775
Patch

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

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14595
&gt;&gt; +            m_out.branch(shapeResult, usually(checkCase), usually(falseCase));
&gt; 
&gt; these are both usually, that&apos;s wrong. The &quot;falseCase&quot; should be &quot;unlikely&quot;

Ignore be saying which one should be likely/unlikely. I&apos;ll let you decide that.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14606
&gt; +                    usually(trueCase), usually(falseCase));

You use usually twice here again.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14613
&gt; +                    usually(trueCase), usually(falseCase));

and here.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14627
&gt; +            m_out.appendTo(falseCase, continuation);
&gt; +            ValueFromBlock falseValue = m_out.anchor(m_out.booleanFalse);
&gt; +            m_out.jump(continuation);

You don&apos;t need a basic block to do this. You can just anchor this in the initial basic block and remove this. (Or you can remove the true block and do something similar there).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400640</commentid>
    <comment_count>11</comment_count>
      <attachid>333775</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-19 19:58:15 -0800</bug_when>
    <thetext>Comment on attachment 333775
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14590
&gt;&gt;&gt; +            LValue shapeResult = m_out.belowOrEqual(
&gt;&gt; 
&gt;&gt; nit: I&apos;d maybe call this something like &quot;isExpectedShape&quot; or &quot;isAnArrayStorageShape&quot; or something similar.
&gt; 
&gt; Oops, I has two reviews going in two different windows. Going to comment more.

OK, I&apos;ll use `isAnArrayStorageShape`.

&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14595
&gt;&gt;&gt; +            m_out.branch(shapeResult, usually(checkCase), usually(falseCase));
&gt;&gt; 
&gt;&gt; these are both usually, that&apos;s wrong. The &quot;falseCase&quot; should be &quot;unlikely&quot;
&gt; 
&gt; Ignore be saying which one should be likely/unlikely. I&apos;ll let you decide that.

I think using `usually` is ok here since the condition produced by this function would be used for both cases.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14627
&gt;&gt; +            m_out.jump(continuation);
&gt; 
&gt; You don&apos;t need a basic block to do this. You can just anchor this in the initial basic block and remove this. (Or you can remove the true block and do something similar there).

Nice, I&apos;ve moved falseValue anchor to the initial basic block, and remove this `falseCase` BB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400641</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-19 20:00:22 -0800</bug_when>
    <thetext>Committed r228726: &lt;https://trac.webkit.org/changeset/228726&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400642</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-19 20:01:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/37695589&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400654</commentid>
    <comment_count>14</comment_count>
      <attachid>333775</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-19 20:50:32 -0800</bug_when>
    <thetext>Comment on attachment 333775
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14595
&gt;&gt;&gt;&gt; +            m_out.branch(shapeResult, usually(checkCase), usually(falseCase));
&gt;&gt;&gt; 
&gt;&gt;&gt; these are both usually, that&apos;s wrong. The &quot;falseCase&quot; should be &quot;unlikely&quot;
&gt;&gt; 
&gt;&gt; Ignore be saying which one should be likely/unlikely. I&apos;ll let you decide that.
&gt; 
&gt; I think using `usually` is ok here since the condition produced by this function would be used for both cases.

Oops, I misunderstood your comment. I&apos;ll change them to `unsure()`.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333702</attachid>
            <date>2018-02-13 10:38:54 -0800</date>
            <delta_ts>2018-02-13 12:45:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182731-20180214033853.patch</filename>
            <type>text/plain</type>
            <size>4962</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MTU2ODZjYTFmZWM1MWIwMTcxZjgyNjI3OTA2OTQxOTYxOTU0MWI4Li5lNTYwZjJkNTM4MmEzNzgw
NzQ3NDdhZDA4Y2Y5N2NjNDA1NTRhMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMCBAQAogMjAxOC0wMi0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRlRMXSBBZGQgQXJyYXlpZnkgZm9yIEFycmF5U3RvcmFnZSBhbmQg
U2xvd1B1dEFycmF5U3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgyNzMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEFycmF5aWZ5KEFycmF5U3Rv
cmFnZS9TbG93UHV0QXJyYXlTdG9yYWdlKSB0byBGVEwuCisgICAgICAgIER1ZSB0byBBcnJheWlm
eVRvU3RydWN0dXJlIGFuZCBDaGVja0FycmF5IGNoYW5nZXMsIG5lY2Vzc2FyeSBjaGFuZ2VzIGZv
cgorICAgICAgICBzdXBwb3J0aW5nIEFycmF5aWZ5IGluIEZUTCBhcmUgYWxyZWFkeSBkb25lLiBK
dXN0IGFsbG93aW5nIGl0IGluIEZUTENhcGFiaWxpdGllcy5jcHAKKyAgICAgICAgaXMgZW5vdWdo
LgorCisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6Y2FuQ29tcGlsZSk6CisKKzIwMTgtMDItMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKICAgICAgICAgU3VwcG9ydCBHZXRBcnJheUxlbmd0aCBvbiBBcnJheVN0
b3JhZ2UgaW4gdGhlIEZUTAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgyNjI1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAppbmRleCA0OTk1ZTNkMjViNzU2M2VhZTM5N2M3MzIyODA5Yjc2ZTgxNWEwZThk
Li41NzQ1MGQ4NzMxNDNiOTNiYzUyNDYzNGM5ZDA0MjY4MmVhYTcwOGVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC02Nyw2ICs2Nyw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
Q2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZU9yRW1wdHk6CiAgICAgY2Fz
ZSBEb3VibGVBc0ludDMyOgorICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRv
U3RydWN0dXJlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5
OgpAQCAtMzQwLDE2ICszNDEsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgLy8gY2FzZSBiZWNhdXNlIGl0IHdvdWxkIHByZXZlbnQgdXMg
ZnJvbSBjYXRjaGluZyBidWdzIHdoZXJlIHRoZSBGVEwgYmFja2VuZAogICAgICAgICAvLyBwaXBl
bGluZSBmYWlsZWQgdG8gb3B0aW1pemUgb3V0IGFuIElkZW50aXR5LgogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFycmF5aWZ5OgotICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5
cGUoKSkgewotICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKLSAgICAgICAgY2FzZSBBcnJheTo6
RG91YmxlOgotICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsK
LSAgICAgICAgfQotICAgICAgICBicmVhazsKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAg
IHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6
OkludDMyOgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZWYxZTI3MTcwMDZlN2QyOGY0YmVlOWYzMTA3NjI3NTgzNzE2MDkxLi41ZjhmMTRh
Y2QxODE4MTU1MDExY2RiNjhiYzU0ZTJjNGIxN2VmNmNiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDE4LTAy
LTEzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFtG
VExdIEFkZCBBcnJheWlmeSBmb3IgQXJyYXlTdG9yYWdlIGFuZCBTbG93UHV0QXJyYXlTdG9yYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3MzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVz
cy9hcnJheWlmeS1hcnJheS1zdG9yYWdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHRlc3RBcnJheVN0b3JhZ2UpOgorICAgICAgICAqIHN0cmVzcy9hcnJheWlmeS1z
bG93LXB1dC1hcnJheS1zdG9yYWdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRlc3RBcnJheVN0b3JhZ2UpOgorCisyMDE4LTAyLTEzICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFN1cHBvcnQgR2V0QXJyYXlMZW5ndGgg
b24gQXJyYXlTdG9yYWdlIGluIHRoZSBGVEwKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MjYyNQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9h
cnJheWlmeS1hcnJheS1zdG9yYWdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXlpZnktYXJyYXkt
c3RvcmFnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTFiZmEyYzM0NWU0YmM4MDU3YWZjZmI4NTQzYWM2MmI3
N2M1MWYzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXlpZnktYXJyYXkt
c3RvcmFnZS5qcwpAQCAtMCwwICsxLDI1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGFycmF5ID0gWzEsIDIs
IDMsIDQsIDVdOwordmFyIGFycmF5MiA9IFsxLCAiSEVMTE8iLCAzLCA0LCA1XTsKK3ZhciBhcnJh
eTMgPSBbMC4xLCAiT0siLCAwLjMsIDAuNCwgMC41XTsKK2Vuc3VyZUFycmF5U3RvcmFnZShhcnJh
eTIpOworYXJyYXkub2sgPSA0MjsKK2FycmF5Mi5vayA9IDQyOworYXJyYXkzLm9rID0gNDI7CisK
Ky8vIEFycmF5aWZ5KEFycmF5U3RvcmFnZSkgd29ya3Mgd2l0aCBmdGwtZWFnZXIKK2Z1bmN0aW9u
IHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkpCit7CisgICAgcmV0dXJuIGFycmF5Lmxlbmd0aDsKK30K
K25vSW5saW5lKHRlc3RBcnJheVN0b3JhZ2UpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsg
KytpKSB7CisgICAgc2hvdWxkQmUodGVzdEFycmF5U3RvcmFnZShhcnJheSksIDUpOworICAgIHNo
b3VsZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkyKSwgNSk7CisgICAgc2hvdWxkQmUodGVzdEFy
cmF5U3RvcmFnZShhcnJheTMpLCA1KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Fy
cmF5aWZ5LXNsb3ctcHV0LWFycmF5LXN0b3JhZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheWlm
eS1zbG93LXB1dC1hcnJheS1zdG9yYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NzkwODM0MmMyZWM1MjM0
NDhmNDRiMWFlMTkzNTA0YzQ0NWQ1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9hcnJheWlmeS1zbG93LXB1dC1hcnJheS1zdG9yYWdlLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCit2YXIgb2JqZWN0ID0geyBhOiAxMCB9OworT2JqZWN0LmRlZmluZVByb3BlcnRpZXMo
b2JqZWN0LCB7CisgICAgIjAiOiB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiB0
aGlzLmE7IH0sCisgICAgICAgIHNldDogZnVuY3Rpb24oeCkgeyB0aGlzLmEgPSB4OyB9LAorICAg
IH0sCit9KTsKKwordmFyIGFycmF5MSA9IFswLjEsICJPSyIsIDAuMywgMC40LCAwLjVdOwordmFy
IGFycmF5MiA9IFsxLCAiSEVMTE8iLCAzLCA0LCA1XTsKK2Vuc3VyZUFycmF5U3RvcmFnZShhcnJh
eTIpOworYXJyYXkxLm9rID0gNDI7CithcnJheTIub2sgPSA0MjsKK2FycmF5Mi5fX3Byb3RvX18g
PSBvYmplY3Q7CisKKy8vIEFycmF5aWZ5KFNsb3dQdXRBcnJheVN0b3JhZ2UpIHdvcmtzIHdpdGgg
ZnRsLWVhZ2VyCitmdW5jdGlvbiB0ZXN0QXJyYXlTdG9yYWdlKGFycmF5KQoreworICAgIHJldHVy
biBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZSh0ZXN0QXJyYXlTdG9yYWdlKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3RBcnJheVN0b3JhZ2Uo
YXJyYXkxKSwgNSk7CisgICAgc2hvdWxkQmUodGVzdEFycmF5U3RvcmFnZShhcnJheTIpLCA1KTsK
K30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333713</attachid>
            <date>2018-02-13 12:45:06 -0800</date>
            <delta_ts>2018-02-14 01:25:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182731-20180214054505.patch</filename>
            <type>text/plain</type>
            <size>18246</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NjAxZjBmZjk4NzliNzFjODZkNTA5ODM1NGFjZDc3YzRlNjkwN2Y3Li45NDFiNDFjODg2Y2ZmYmU3
NmY2Y2Y3NWMzNDk3NWNhNWM4M2Y5ZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxOC0wMi0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRlRMXSBBZGQgQXJyYXlpZnkgZm9yIEFycmF5U3RvcmFnZSBhbmQg
U2xvd1B1dEFycmF5U3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgyNzMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEFycmF5aWZ5KEFycmF5U3Rv
cmFnZS9TbG93UHV0QXJyYXlTdG9yYWdlKSB0byBGVEwuCisgICAgICAgIER1ZSB0byBBcnJheWlm
eVRvU3RydWN0dXJlIGFuZCBDaGVja0FycmF5IGNoYW5nZXMsIG5lY2Vzc2FyeSBjaGFuZ2VzIGZv
cgorICAgICAgICBzdXBwb3J0aW5nIEFycmF5aWZ5IGluIEZUTCBhcmUgYWxyZWFkeSBkb25lLiBK
dXN0IGFsbG93aW5nIGl0IGluIEZUTENhcGFiaWxpdGllcy5jcHAKKyAgICAgICAgaXMgZW5vdWdo
LgorCisgICAgICAgIFdlIGZpeCBGVEwncyBDaGVja0FycmF5IGxvZ2ljLiBQcmV2aW91c2x5LCBD
aGVja0FycmF5KFNsb3dQdXRBcnJheVN0b3JhZ2UpIGRvZXMgbm90IHBhc3MKKyAgICAgICAgQXJy
YXlTdG9yYWdlIGluIEZUTC4gQnV0IG5vdyBpdCBwYXNzZXMgdGhpcyBhcyBERkcgZG9lcy4gTW9y
ZW92ZXIsIHdlIGZpeCBERkcncyBDaGVja0FycmF5CisgICAgICAgIHdoZXJlIENoZWNrQXJyYXko
QXJyYXlTdG9yYWdlK05vbkFycmF5KSBjYW4gcGFzcyBBcnJheVN0b3JhZ2UrQXJyYXkuCisKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6anVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzQXJyYXlUeXBl
Rm9yQXJyYXlpZnkpOgorCiAyMDE4LTAyLTEzICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0pTQ10gY2FjaGUgVGFnZ2VkVGVtcGxhdGUgYXJyYXlzIGJ5IGNh
bGxzaXRlIHJhdGhlciB0aGFuIGJ5IGNvbnRlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDZkYjk0OWNlZGQ0YTFmZTk3NGMyZGQy
ZDUwYjk4NjAwYmExNjdlMDQuLjNlZGQwNjJhNzM3NTBhOGJhNjJjODcxZjE5ODBmNjFjNTVlMDQ2
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC03MjMsMzcgKzcyMyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwo
Y29uc3QgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiYgcGxhbikKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9Ci0gICAgCi1KSVRDb21waWxlcjo6SnVtcCBTcGVj
dWxhdGl2ZUpJVDo6anVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZShHUFJSZWcgdGVtcEdQUiwg
QXJyYXlNb2RlIGFycmF5TW9kZSwgSW5kZXhpbmdUeXBlIHNoYXBlKQotewotICAgIHN3aXRjaCAo
YXJyYXlNb2RlLmFycmF5Q2xhc3MoKSkgewotICAgIGNhc2UgQXJyYXk6Ok9yaWdpbmFsQXJyYXk6
IHsKLSAgICAgICAgQ1JBU0goKTsKLSNpZiBDT01QSUxFUl9RVUlSSyhDT05TSURFUlNfVU5SRUFD
SEFCTEVfQ09ERSkKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmVzdWx0OyAvLyBJIGFscmVh
ZHkga25vdyB0aGF0IFZDKysgdGFrZXMgdW5raW5kbHkgdG8gdGhlIGV4cHJlc3Npb24gInJldHVy
biBKdW1wKCkiLCBzbyBJJ20gZG9pbmcgaXQgdGhpcyB3YXkgaW4gYW50aWNpcGF0aW9uIG9mIHNv
bWVvbmUgZXZlbnR1YWxseSB1c2luZyBWQysrIHRvIGNvbXBpbGUgdGhlIERGRy4KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSNlbmRpZgotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBBcnJheTo6
QXJyYXk6Ci0gICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMihJc0FycmF5IHwgSW5kZXhp
bmdTaGFwZU1hc2spLCB0ZW1wR1BSKTsKLSAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1t
MzIoSXNBcnJheSB8IHNoYXBlKSk7Ci0gICAgICAgIAotICAgIGNhc2UgQXJyYXk6Ok5vbkFycmF5
OgotICAgIGNhc2UgQXJyYXk6Ok9yaWdpbmFsTm9uQXJyYXk6Ci0gICAgICAgIG1faml0LmFuZDMy
KFRydXN0ZWRJbW0zMihJc0FycmF5IHwgSW5kZXhpbmdTaGFwZU1hc2spLCB0ZW1wR1BSKTsKLSAg
ICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoc2hhcGUpKTsKLSAgICAgICAgCi0gICAg
Y2FzZSBBcnJheTo6UG9zc2libHlBcnJheToKLSAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZElt
bTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcEdQUik7Ci0gICAgICAgIHJldHVybiBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihz
aGFwZSkpOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOwotfQogCiBKSVRDb21waWxlcjo6SnVtcExp
c3QgU3BlY3VsYXRpdmVKSVQ6Omp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUoR1BSUmVnIHRl
bXBHUFIsIEFycmF5TW9kZSBhcnJheU1vZGUpCiB7CkBAIC03NjQsNDIgKzczMyw3NSBAQCBKSVRD
b21waWxlcjo6SnVtcExpc3QgU3BlY3VsYXRpdmVKSVQ6Omp1bXBTbG93Rm9yVW53YW50ZWRBcnJh
eU1vZGUoR1BSUmVnIHRlbXBHUAogICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICBjYXNlIEFy
cmF5OjpDb250aWd1b3VzOgogICAgIGNhc2UgQXJyYXk6OlVuZGVjaWRlZDoKLSAgICAgICAgcmV0
dXJuIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgYXJyYXlNb2RlLCBhcnJh
eU1vZGUuc2hhcGVNYXNrKCkpOworICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZTogeworICAg
ICAgICBJbmRleGluZ1R5cGUgc2hhcGUgPSBhcnJheU1vZGUuc2hhcGVNYXNrKCk7CisgICAgICAg
IHN3aXRjaCAoYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSkgeworICAgICAgICBjYXNlIEFycmF5OjpP
cmlnaW5hbEFycmF5OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgY2FzZSBBcnJheTo6QXJyYXk6
CisgICAgICAgICAgICBtX2ppdC5hbmQzMihUcnVzdGVkSW1tMzIoSXNBcnJheSB8IEluZGV4aW5n
U2hhcGVNYXNrKSwgdGVtcEdQUik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1faml0LmJy
YW5jaDMyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcEdQ
UiwgVHJ1c3RlZEltbTMyKElzQXJyYXkgfCBzaGFwZSkpKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisKKyAgICAgICAgY2FzZSBBcnJheTo6Tm9uQXJyYXk6CisgICAgICAgIGNhc2UgQXJy
YXk6Ok9yaWdpbmFsTm9uQXJyYXk6CisgICAgICAgICAgICBtX2ppdC5hbmQzMihUcnVzdGVkSW1t
MzIoSXNBcnJheSB8IEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcEdQUik7CisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKHNoYXBlKSkpOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5Ogor
ICAgICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwg
dGVtcEdQUik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKHNoYXBlKSkpOworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCi0gICAg
Y2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0
b3JhZ2U6IHsKICAgICAgICAgQVNTRVJUKCFhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFs
U3RydWN0dXJlKCkpOwotICAgICAgICAKLSAgICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJyYXko
KSkgewotICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc1Nsb3dQdXQoKSkgewotICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3QzMigKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1w
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKElzQXJyYXkpKSk7Ci0gICAgICAgICAg
ICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcEdQ
Uik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFn
ZVNoYXBlKSwgdGVtcEdQUik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgKLSAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHRlbXBHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICBU
cnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUp
KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgc3dp
dGNoIChhcnJheU1vZGUuYXJyYXlDbGFzcygpKSB7CisgICAgICAgIGNhc2UgQXJyYXk6Ok9yaWdp
bmFsQXJyYXk6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICBjYXNlIEFycmF5OjpBcnJheToKICAg
ICAgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMihJc0FycmF5IHwgSW5kZXhpbmdTaGFw
ZU1hc2spLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMihJ
c0FycmF5IHwgQXJyYXlTdG9yYWdlU2hhcGUpLCB0ZW1wR1BSKTsKICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSXNBcnJheSB8IEFycmF5U3RvcmFnZVNo
YXBlKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgbV9qaXQuYW5k
MzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcEdQUik7Ci0gICAgICAgIGlm
IChhcnJheU1vZGUuaXNTbG93UHV0KCkpIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gz
MigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCB0ZW1wR1BSLAor
ICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBl
IC0gQXJyYXlTdG9yYWdlU2hhcGUpKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisg
ICAgICAgIGNhc2UgQXJyYXk6Ok5vbkFycmF5OgorICAgICAgICBjYXNlIEFycmF5OjpPcmlnaW5h
bE5vbkFycmF5OgorICAgICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKElzQXJyYXkg
fCBJbmRleGluZ1NoYXBlTWFzayksIHRlbXBHUFIpOwogICAgICAgICAgICAgbV9qaXQuc3ViMzIo
VHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSwgdGVtcEdQUik7CiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHRlbXBHUFIsCiAgICAgICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3Jh
Z2VTaGFwZSkpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKworICAgICAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5OgorICAgICAgICAgICAgbV9q
aXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcEdQUik7CisgICAg
ICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpLCB0ZW1w
R1BSKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoCisgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoMzIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgdGVt
cEdQUiwKKyAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3Jh
Z2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQotICAgICAgICByZXN1bHQuYXBwZW5kKAotICAgICAgICAgICAgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIo
QXJyYXlTdG9yYWdlU2hhcGUpKSk7Ci0gICAgICAgIGJyZWFrOworCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZDBjMWQ4NTgxNTQwMjJhNzViMzUxZWE2NDZiYTli
ZGE1Y2E2ZTFlMS4uMWJmYmFjN2UwODQ3NzMwMWYzNzgxZjU5ZTk3MWE1ODM5ZTFmOTQwNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMzMw
Niw3ICszMzA2LDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgc3BlY3VsYXRl
TWlzYyhFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZShOb2RlKiwgRWRnZSk7CiAgICAgCi0gICAg
SklUQ29tcGlsZXI6Okp1bXAganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZShHUFJSZWcgdGVt
cFdpdGhJbmRleGluZ1R5cGVSZWcsIEFycmF5TW9kZSwgSW5kZXhpbmdUeXBlKTsKICAgICBKSVRD
b21waWxlcjo6SnVtcExpc3QganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZShHUFJSZWcgdGVt
cFdpdGhJbmRleGluZ1R5cGVSZWcsIEFycmF5TW9kZSk7CiAgICAgdm9pZCBjaGVja0FycmF5KE5v
ZGUqKTsKICAgICB2b2lkIGFycmF5aWZ5KE5vZGUqLCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHBy
b3BlcnR5UmVnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAppbmRleCA0OTk1ZTNkMjViNzU2M2VhZTM5N2M3MzIyODA5Yjc2ZTgxNWEwZThkLi41NzQ1
MGQ4NzMxNDNiOTNiYzUyNDYzNGM5ZDA0MjY4MmVhYTcwOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmU6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZU9yRW1wdHk6CiAgICAgY2FzZSBEb3Vi
bGVBc0ludDMyOgorICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0
dXJlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgpAQCAt
MzQwLDE2ICszNDEsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgLy8gY2FzZSBiZWNhdXNlIGl0IHdvdWxkIHByZXZlbnQgdXMgZnJvbSBj
YXRjaGluZyBidWdzIHdoZXJlIHRoZSBGVEwgYmFja2VuZAogICAgICAgICAvLyBwaXBlbGluZSBm
YWlsZWQgdG8gb3B0aW1pemUgb3V0IGFuIElkZW50aXR5LgogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEFycmF5aWZ5OgotICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkg
ewotICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKLSAgICAgICAgY2FzZSBBcnJheTo6RG91Ymxl
OgotICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKLSAgICAg
ICAgfQotICAgICAgICBicmVhazsKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgIHN3aXRj
aCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMy
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4
IGQwZjI1Yzc3M2NmNDg5N2IyN2QwNTYxOWVmZmJlMDZjN2QyOTU4MTkuLjkwOTg2NThjNThiZTBk
ZTEzNWQxN2Y0MGM2Mzk1MzdiNTM2ODIzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE0NTUwLDggKzE0NTUwLDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICBjYXNlIEFy
cmF5OjpDb250aWd1b3VzOgogICAgICAgICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6Ci0gICAgICAg
IGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKLSAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFy
cmF5U3RvcmFnZTogeworICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6IHsKICAgICAg
ICAgICAgIEluZGV4aW5nVHlwZSBzaGFwZSA9IGFycmF5TW9kZS5zaGFwZU1hc2soKTsKICAgICAg
ICAgICAgIExWYWx1ZSBpbmRleGluZ1R5cGUgPSBtX291dC5sb2FkOFplcm9FeHQzMihjZWxsLCBt
X2hlYXBzLkpTQ2VsbF9pbmRleGluZ1R5cGVBbmRNaXNjKTsKIApAQCAtMTQ1NzksNiArMTQ1Nzgs
NDAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZTogeworICAgICAgICAg
ICAgQVNTRVJUKCFhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFsU3RydWN0dXJlKCkpOwor
ICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9IG1fb3V0LmxvYWQ4WmVyb0V4dDMyKGNl
bGwsIG1faGVhcHMuSlNDZWxsX2luZGV4aW5nVHlwZUFuZE1pc2MpOworCisgICAgICAgICAgICBz
d2l0Y2ggKGFycmF5TW9kZS5hcnJheUNsYXNzKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6
Ok9yaWdpbmFsQXJyYXk6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9k
ZSwgIlVuZXhwZWN0ZWQgb3JpZ2luYWwgYXJyYXkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
MDsKKworICAgICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXk6CisgICAgICAgICAgICAgICAgcmV0
dXJuIG1fb3V0LmJlbG93T3JFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3ViKAor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYml0QW5kKGluZGV4aW5nVHlwZSwgbV9vdXQu
Y29uc3RJbnQzMihJc0FycmF5IHwgSW5kZXhpbmdTaGFwZU1hc2spKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoSXNBcnJheSB8IEFycmF5U3RvcmFnZVNoYXBlKSks
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU2xvd1B1dEFycmF5U3RvcmFn
ZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKworICAgICAgICAgICAgY2FzZSBBcnJheTo6
Tm9uQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpPcmlnaW5hbE5vbkFycmF5OgorICAg
ICAgICAgICAgICAgIHJldHVybiBtX291dC5iZWxvd09yRXF1YWwoCisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LnN1YigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJpdEFuZChpbmRl
eGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoSXNBcnJheSB8IEluZGV4aW5nU2hhcGVNYXNrKSks
CisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKEFycmF5U3RvcmFnZVNo
YXBlKSksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU2xvd1B1dEFycmF5
U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKworICAgICAgICAgICAgY2FzZSBB
cnJheTo6UG9zc2libHlBcnJheToKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQuYmVsb3dP
ckVxdWFsKAorICAgICAgICAgICAgICAgICAgICBtX291dC5zdWIoCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX291dC5iaXRBbmQoaW5kZXhpbmdUeXBlLCBtX291dC5jb25zdEludDMyKEluZGV4
aW5nU2hhcGVNYXNrKSksCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMy
KEFycmF5U3RvcmFnZVNoYXBlKSksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50
MzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0No
YW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUxMzI3NjYzNTQ4NjNkMzE1MzYyMTU5
NDMzMjI5NGNhOWIyNDAxYzMuLjljMjkwZTQ1MDA2ODkwNTkwNTFlZTA0OTQ3ZWE5NDViZjFiM2Vl
OTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMDItMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW0ZUTF0gQWRkIEFycmF5aWZ5IGZvciBBcnJheVN0b3Jh
Z2UgYW5kIFNsb3dQdXRBcnJheVN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MjczMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0b3JhZ2UtYXJyYXku
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdEFycmF5U3RvcmFn
ZSk6CisgICAgICAgICogc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0b3JhZ2Utbm9uLWFycmF5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3RBcnJheVN0b3JhZ2Up
OgorICAgICAgICAqIHN0cmVzcy9hcnJheWlmeS1hcnJheS1zdG9yYWdlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3RBcnJheVN0b3JhZ2UpOgorICAgICAgICAq
IHN0cmVzcy9hcnJheWlmeS1zbG93LXB1dC1hcnJheS1zdG9yYWdlLXBhc3MtYXJyYXktc3RvcmFn
ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0QXJyYXlTdG9y
YWdlKToKKyAgICAgICAgKiBzdHJlc3MvYXJyYXlpZnktc2xvdy1wdXQtYXJyYXktc3RvcmFnZS5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0QXJyYXlTdG9yYWdl
KToKKwogMjAxOC0wMi0xMyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtKU0NdIGNhY2hlIFRhZ2dlZFRlbXBsYXRlIGFycmF5cyBieSBjYWxsc2l0ZSByYXRo
ZXIgdGhhbiBieSBjb250ZW50cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXlpZnkt
YXJyYXktc3RvcmFnZS1hcnJheS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0
b3JhZ2UtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzViYTViYmViZTZiN2U2YWFlNjE5MTQ2Mjk2YTYx
ZGExNmJjNzczZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LWFy
cmF5LXN0b3JhZ2UtYXJyYXkuanMKQEAgLTAsMCArMSwyOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBhcnJh
eSA9IFsxLCAyLCAzLCA0LCA1XTsKK3ZhciBhcnJheTIgPSBbMSwgIkhFTExPIiwgMywgNCwgNV07
Cit2YXIgYXJyYXkzID0gWzAuMSwgIk9LIiwgMC4zLCAwLjQsIDAuNV07CitlbnN1cmVBcnJheVN0
b3JhZ2UoYXJyYXkyKTsKK2FycmF5Lm9rID0gNDI7CithcnJheTIub2sgPSA0MjsKK2FycmF5My5v
ayA9IDQyOworCisvLyBBcnJheWlmeShBcnJheVN0b3JhZ2UpIHdvcmtzIHdpdGggZnRsLWVhZ2Vy
CitmdW5jdGlvbiB0ZXN0QXJyYXlTdG9yYWdlKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5s
ZW5ndGg7Cit9Citub0lubGluZSh0ZXN0QXJyYXlTdG9yYWdlKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTY7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkpLCA1
KTsKKyAgICBzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdlKGFycmF5MiksIDUpOworICAgIHNob3Vs
ZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkzKSwgNSk7Cit9CisKK3ZhciBhcnJheTQgPSB7MDox
LCAxOiJIRUxMTyIsIDI6MywgMzo0LCA0OjV9OworZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5NCk7
CitzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdlKGFycmF5NCksIHVuZGVmaW5lZCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheWlmeS1hcnJheS1zdG9yYWdlLW5vbi1hcnJheS5qcyBi
L0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0b3JhZ2Utbm9uLWFycmF5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM2ZjYyYmIyN2ZiN2I1OGEzMDYzOTg4YTViZmM1ZjJiY2NiZjhiMGEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheWlmeS1hcnJheS1zdG9yYWdlLW5vbi1hcnJh
eS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGFycmF5ID0gezA6MSwgMToyLCAy
OjMsIDM6NCwgNDo1fTsKK3ZhciBhcnJheTIgPSB7MDoxLCAxOiJIRUxMTyIsIDI6MywgMzo0LCA0
OjV9OwordmFyIGFycmF5MyA9IHswOjAuMSwgMToiT0siLCAyOjAuMywgMzowLjQsIDQ6MC41fTsK
K2Vuc3VyZUFycmF5U3RvcmFnZShhcnJheTIpOworYXJyYXkub2sgPSA0MjsKK2FycmF5Mi5vayA9
IDQyOworYXJyYXkzLm9rID0gNDI7CisKKy8vIEFycmF5aWZ5KEFycmF5U3RvcmFnZSkgd29ya3Mg
d2l0aCBmdGwtZWFnZXIKK2Z1bmN0aW9uIHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkpCit7CisgICAg
cmV0dXJuIGFycmF5WzRdOworfQorbm9JbmxpbmUodGVzdEFycmF5U3RvcmFnZSk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICBzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdl
KGFycmF5KSwgNSk7CisgICAgc2hvdWxkQmUodGVzdEFycmF5U3RvcmFnZShhcnJheTIpLCA1KTsK
KyAgICBzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdlKGFycmF5MyksIDAuNSk7Cit9CisKK3ZhciBh
cnJheTQgPSBbMCwgMSwgMiwgMywgNF07CitzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdlKGFycmF5
NCksIDQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXlpZnktYXJyYXktc3RvcmFn
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0b3JhZ2UuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGUxYmZhMmMzNDVlNGJjODA1N2FmY2ZiODU0M2FjNjJiNzdjNTFmMwotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0b3JhZ2UuanMKQEAgLTAsMCAr
MSwyNSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK3ZhciBhcnJheSA9IFsxLCAyLCAzLCA0LCA1XTsKK3ZhciBhcnJh
eTIgPSBbMSwgIkhFTExPIiwgMywgNCwgNV07Cit2YXIgYXJyYXkzID0gWzAuMSwgIk9LIiwgMC4z
LCAwLjQsIDAuNV07CitlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkyKTsKK2FycmF5Lm9rID0gNDI7
CithcnJheTIub2sgPSA0MjsKK2FycmF5My5vayA9IDQyOworCisvLyBBcnJheWlmeShBcnJheVN0
b3JhZ2UpIHdvcmtzIHdpdGggZnRsLWVhZ2VyCitmdW5jdGlvbiB0ZXN0QXJyYXlTdG9yYWdlKGFy
cmF5KQoreworICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZSh0ZXN0QXJyYXlT
dG9yYWdlKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHNob3VsZEJl
KHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkpLCA1KTsKKyAgICBzaG91bGRCZSh0ZXN0QXJyYXlTdG9y
YWdlKGFycmF5MiksIDUpOworICAgIHNob3VsZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkzKSwg
NSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheWlmeS1zbG93LXB1dC1hcnJh
eS1zdG9yYWdlLXBhc3MtYXJyYXktc3RvcmFnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5
LXNsb3ctcHV0LWFycmF5LXN0b3JhZ2UtcGFzcy1hcnJheS1zdG9yYWdlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc4NjRhMmU2MzNiMjM4ZWJkMmM3OTI0ZWVmM2YxM2NjODY4OGMwM2QKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheWlmeS1zbG93LXB1dC1hcnJheS1zdG9yYWdlLXBhc3Mt
YXJyYXktc3RvcmFnZS5qcwpAQCAtMCwwICsxLDM3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIG9iamVjdCA9
IHsgYTogMTAgfTsKK09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG9iamVjdCwgeworICAgICIwIjog
eworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5hOyB9LAorICAgICAgICBz
ZXQ6IGZ1bmN0aW9uKHgpIHsgdGhpcy5hID0geDsgfSwKKyAgICB9LAorfSk7CisKK3ZhciBhcnJh
eTEgPSBbMC4xLCAiT0siLCAwLjMsIDAuNCwgMC41XTsKK3ZhciBhcnJheTIgPSBbMSwgIkhFTExP
IiwgMywgNCwgNV07CitlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkyKTsKK2FycmF5MS5vayA9IDQy
OworYXJyYXkyLm9rID0gNDI7CithcnJheTIuX19wcm90b19fID0gb2JqZWN0OworCisvLyBBcnJh
eWlmeShTbG93UHV0QXJyYXlTdG9yYWdlKSB3b3JrcyB3aXRoIGZ0bC1lYWdlcgorZnVuY3Rpb24g
dGVzdEFycmF5U3RvcmFnZShhcnJheSkKK3sKKyAgICByZXR1cm4gYXJyYXkubGVuZ3RoOworfQor
bm9JbmxpbmUodGVzdEFycmF5U3RvcmFnZSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyAr
K2kpIHsKKyAgICBzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdlKGFycmF5MSksIDUpOworICAgIHNo
b3VsZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkyKSwgNSk7Cit9CisKK3ZhciBhcnJheTMgPSBb
MSwgMiwgM107CitlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkzKTsKK3Nob3VsZEJlKHRlc3RBcnJh
eVN0b3JhZ2UoYXJyYXkzKSwgMyk7Cit2YXIgYXJyYXk0ID0gWzEsIDIsIDNdOworc2hvdWxkQmUo
dGVzdEFycmF5U3RvcmFnZShhcnJheTQpLCAzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2FycmF5aWZ5LXNsb3ctcHV0LWFycmF5LXN0b3JhZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcnJh
eWlmeS1zbG93LXB1dC1hcnJheS1zdG9yYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NzkwODM0MmMyZWM1
MjM0NDhmNDRiMWFlMTkzNTA0YzQ0NWQ1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9hcnJheWlmeS1zbG93LXB1dC1hcnJheS1zdG9yYWdlLmpzCkBAIC0wLDAgKzEsMzEgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCit2YXIgb2JqZWN0ID0geyBhOiAxMCB9OworT2JqZWN0LmRlZmluZVByb3BlcnRp
ZXMob2JqZWN0LCB7CisgICAgIjAiOiB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7IHJldHVy
biB0aGlzLmE7IH0sCisgICAgICAgIHNldDogZnVuY3Rpb24oeCkgeyB0aGlzLmEgPSB4OyB9LAor
ICAgIH0sCit9KTsKKwordmFyIGFycmF5MSA9IFswLjEsICJPSyIsIDAuMywgMC40LCAwLjVdOwor
dmFyIGFycmF5MiA9IFsxLCAiSEVMTE8iLCAzLCA0LCA1XTsKK2Vuc3VyZUFycmF5U3RvcmFnZShh
cnJheTIpOworYXJyYXkxLm9rID0gNDI7CithcnJheTIub2sgPSA0MjsKK2FycmF5Mi5fX3Byb3Rv
X18gPSBvYmplY3Q7CisKKy8vIEFycmF5aWZ5KFNsb3dQdXRBcnJheVN0b3JhZ2UpIHdvcmtzIHdp
dGggZnRsLWVhZ2VyCitmdW5jdGlvbiB0ZXN0QXJyYXlTdG9yYWdlKGFycmF5KQoreworICAgIHJl
dHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZSh0ZXN0QXJyYXlTdG9yYWdlKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3RBcnJheVN0b3Jh
Z2UoYXJyYXkxKSwgNSk7CisgICAgc2hvdWxkQmUodGVzdEFycmF5U3RvcmFnZShhcnJheTIpLCA1
KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333775</attachid>
            <date>2018-02-14 01:25:52 -0800</date>
            <delta_ts>2018-02-19 18:36:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182731-20180214182551.patch</filename>
            <type>text/plain</type>
            <size>19039</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NjAxZjBmZjk4NzliNzFjODZkNTA5ODM1NGFjZDc3YzRlNjkwN2Y3Li5jOTQ5Y2U0MTlhMmY2NDYz
YWNkY2MwZWM1YWQxYzNjMTFlOTcyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxOC0wMi0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRlRMXSBBZGQgQXJyYXlpZnkgZm9yIEFycmF5U3RvcmFnZSBhbmQg
U2xvd1B1dEFycmF5U3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgyNzMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEFycmF5aWZ5KEFycmF5U3Rv
cmFnZS9TbG93UHV0QXJyYXlTdG9yYWdlKSB0byBGVEwuCisgICAgICAgIER1ZSB0byBBcnJheWlm
eVRvU3RydWN0dXJlIGFuZCBDaGVja0FycmF5IGNoYW5nZXMsIG5lY2Vzc2FyeSBjaGFuZ2VzIGZv
cgorICAgICAgICBzdXBwb3J0aW5nIEFycmF5aWZ5IGluIEZUTCBhcmUgYWxyZWFkeSBkb25lLiBK
dXN0IGFsbG93aW5nIGl0IGluIEZUTENhcGFiaWxpdGllcy5jcHAKKyAgICAgICAgaXMgZW5vdWdo
LgorCisgICAgICAgIFdlIGZpeCBGVEwncyBDaGVja0FycmF5IGxvZ2ljLiBQcmV2aW91c2x5LCBD
aGVja0FycmF5KFNsb3dQdXRBcnJheVN0b3JhZ2UpIGRvZXMgbm90IHBhc3MKKyAgICAgICAgQXJy
YXlTdG9yYWdlIGluIEZUTC4gQnV0IG5vdyBpdCBwYXNzZXMgdGhpcyBhcyBERkcgZG9lcy4gTW9y
ZW92ZXIsIHdlIGZpeCBERkcncyBDaGVja0FycmF5CisgICAgICAgIHdoZXJlIENoZWNrQXJyYXko
QXJyYXlTdG9yYWdlK05vbkFycmF5KSBjYW4gcGFzcyBBcnJheVN0b3JhZ2UrQXJyYXkuCisKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6anVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzQXJyYXlUeXBl
Rm9yQXJyYXlpZnkpOgorCiAyMDE4LTAyLTEzICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0pTQ10gY2FjaGUgVGFnZ2VkVGVtcGxhdGUgYXJyYXlzIGJ5IGNh
bGxzaXRlIHJhdGhlciB0aGFuIGJ5IGNvbnRlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDZkYjk0OWNlZGQ0YTFmZTk3NGMyZGQy
ZDUwYjk4NjAwYmExNjdlMDQuLmE5YTc2MGE2NzU0ODFhNmQ1Y2I2NzRjM2E3Yzc3MmVkNTMzNGZj
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC03MjMsMzcgKzcyMyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwo
Y29uc3QgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiYgcGxhbikKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9Ci0gICAgCi1KSVRDb21waWxlcjo6SnVtcCBTcGVj
dWxhdGl2ZUpJVDo6anVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZShHUFJSZWcgdGVtcEdQUiwg
QXJyYXlNb2RlIGFycmF5TW9kZSwgSW5kZXhpbmdUeXBlIHNoYXBlKQotewotICAgIHN3aXRjaCAo
YXJyYXlNb2RlLmFycmF5Q2xhc3MoKSkgewotICAgIGNhc2UgQXJyYXk6Ok9yaWdpbmFsQXJyYXk6
IHsKLSAgICAgICAgQ1JBU0goKTsKLSNpZiBDT01QSUxFUl9RVUlSSyhDT05TSURFUlNfVU5SRUFD
SEFCTEVfQ09ERSkKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcmVzdWx0OyAvLyBJIGFscmVh
ZHkga25vdyB0aGF0IFZDKysgdGFrZXMgdW5raW5kbHkgdG8gdGhlIGV4cHJlc3Npb24gInJldHVy
biBKdW1wKCkiLCBzbyBJJ20gZG9pbmcgaXQgdGhpcyB3YXkgaW4gYW50aWNpcGF0aW9uIG9mIHNv
bWVvbmUgZXZlbnR1YWxseSB1c2luZyBWQysrIHRvIGNvbXBpbGUgdGhlIERGRy4KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSNlbmRpZgotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBBcnJheTo6
QXJyYXk6Ci0gICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMihJc0FycmF5IHwgSW5kZXhp
bmdTaGFwZU1hc2spLCB0ZW1wR1BSKTsKLSAgICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1t
MzIoSXNBcnJheSB8IHNoYXBlKSk7Ci0gICAgICAgIAotICAgIGNhc2UgQXJyYXk6Ok5vbkFycmF5
OgotICAgIGNhc2UgQXJyYXk6Ok9yaWdpbmFsTm9uQXJyYXk6Ci0gICAgICAgIG1faml0LmFuZDMy
KFRydXN0ZWRJbW0zMihJc0FycmF5IHwgSW5kZXhpbmdTaGFwZU1hc2spLCB0ZW1wR1BSKTsKLSAg
ICAgICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoc2hhcGUpKTsKLSAgICAgICAgCi0gICAg
Y2FzZSBBcnJheTo6UG9zc2libHlBcnJheToKLSAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZElt
bTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcEdQUik7Ci0gICAgICAgIHJldHVybiBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihz
aGFwZSkpOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBKSVRDb21waWxlcjo6SnVtcCgpOwotfQogCiBKSVRDb21waWxlcjo6SnVtcExp
c3QgU3BlY3VsYXRpdmVKSVQ6Omp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUoR1BSUmVnIHRl
bXBHUFIsIEFycmF5TW9kZSBhcnJheU1vZGUpCiB7CkBAIC03NjQsNDIgKzczMyw2OCBAQCBKSVRD
b21waWxlcjo6SnVtcExpc3QgU3BlY3VsYXRpdmVKSVQ6Omp1bXBTbG93Rm9yVW53YW50ZWRBcnJh
eU1vZGUoR1BSUmVnIHRlbXBHUAogICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICBjYXNlIEFy
cmF5OjpDb250aWd1b3VzOgogICAgIGNhc2UgQXJyYXk6OlVuZGVjaWRlZDoKLSAgICAgICAgcmV0
dXJuIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgYXJyYXlNb2RlLCBhcnJh
eU1vZGUuc2hhcGVNYXNrKCkpOworICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZTogeworICAg
ICAgICBJbmRleGluZ1R5cGUgc2hhcGUgPSBhcnJheU1vZGUuc2hhcGVNYXNrKCk7CisgICAgICAg
IHN3aXRjaCAoYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSkgeworICAgICAgICBjYXNlIEFycmF5OjpP
cmlnaW5hbEFycmF5OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgY2FzZSBBcnJheTo6QXJyYXk6
CisgICAgICAgICAgICBtX2ppdC5hbmQzMihUcnVzdGVkSW1tMzIoSXNBcnJheSB8IEluZGV4aW5n
U2hhcGVNYXNrKSwgdGVtcEdQUik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1faml0LmJy
YW5jaDMyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcEdQ
UiwgVHJ1c3RlZEltbTMyKElzQXJyYXkgfCBzaGFwZSkpKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisKKyAgICAgICAgY2FzZSBBcnJheTo6Tm9uQXJyYXk6CisgICAgICAgIGNhc2UgQXJy
YXk6Ok9yaWdpbmFsTm9uQXJyYXk6CisgICAgICAgICAgICBtX2ppdC5hbmQzMihUcnVzdGVkSW1t
MzIoSXNBcnJheSB8IEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcEdQUik7CisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKHNoYXBlKSkpOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5Ogor
ICAgICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwg
dGVtcEdQUik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKHNoYXBlKSkpOworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCi0gICAg
Y2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0
b3JhZ2U6IHsKICAgICAgICAgQVNTRVJUKCFhcnJheU1vZGUuaXNKU0FycmF5V2l0aE9yaWdpbmFs
U3RydWN0dXJlKCkpOwotICAgICAgICAKLSAgICAgICAgaWYgKGFycmF5TW9kZS5pc0pTQXJyYXko
KSkgewotICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc1Nsb3dQdXQoKSkgewotICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3QzMigKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1w
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKElzQXJyYXkpKSk7Ci0gICAgICAgICAg
ICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcEdQ
Uik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFn
ZVNoYXBlKSwgdGVtcEdQUik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgKLSAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHRlbXBHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICBU
cnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUp
KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBt
X2ppdC5hbmQzMihUcnVzdGVkSW1tMzIoSXNBcnJheSB8IEluZGV4aW5nU2hhcGVNYXNrKSwgdGVt
cEdQUik7CisKKyAgICAgICAgc3dpdGNoIChhcnJheU1vZGUuYXJyYXlDbGFzcygpKSB7CisgICAg
ICAgIGNhc2UgQXJyYXk6Ok9yaWdpbmFsQXJyYXk6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICBj
YXNlIEFycmF5OjpBcnJheToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoCi0gICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wR1BSLCBU
cnVzdGVkSW1tMzIoSXNBcnJheSB8IEFycmF5U3RvcmFnZVNoYXBlKSkpOworICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3QzMigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIHRlbXBHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSXNBcnJheSkp
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIG1faml0LmFuZDMyKFRy
dXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHRlbXBHUFIpOwotICAgICAgICBpZiAoYXJy
YXlNb2RlLmlzU2xvd1B1dCgpKSB7Ci0gICAgICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1t
MzIoQXJyYXlTdG9yYWdlU2hhcGUpLCB0ZW1wR1BSKTsKKworICAgICAgICBjYXNlIEFycmF5OjpO
b25BcnJheToKKyAgICAgICAgY2FzZSBBcnJheTo6T3JpZ2luYWxOb25BcnJheToKICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCi0gICAg
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgdGVtcEdQUiwKLSAgICAgICAg
ICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5
U3RvcmFnZVNoYXBlKSkpOworICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3QzMigKKyAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXBHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSXNBcnJheSkpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXk6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorCisgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1No
YXBlTWFzayksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoQXJy
YXlTdG9yYWdlU2hhcGUpLCB0ZW1wR1BSKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgKLSAgICAg
ICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwg
VHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSkpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZSwgdGVtcEdQUiwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5
U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKSk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZDBjMWQ4NTgxNTQwMjJh
NzViMzUxZWE2NDZiYTliZGE1Y2E2ZTFlMS4uMWJmYmFjN2UwODQ3NzMwMWYzNzgxZjU5ZTk3MWE1
ODM5ZTFmOTQwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMzMwNiw3ICszMzA2LDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAg
IHZvaWQgc3BlY3VsYXRlTWlzYyhFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZShOb2RlKiwgRWRn
ZSk7CiAgICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAganVtcFNsb3dGb3JVbndhbnRlZEFycmF5
TW9kZShHUFJSZWcgdGVtcFdpdGhJbmRleGluZ1R5cGVSZWcsIEFycmF5TW9kZSwgSW5kZXhpbmdU
eXBlKTsKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QganVtcFNsb3dGb3JVbndhbnRlZEFycmF5
TW9kZShHUFJSZWcgdGVtcFdpdGhJbmRleGluZ1R5cGVSZWcsIEFycmF5TW9kZSk7CiAgICAgdm9p
ZCBjaGVja0FycmF5KE5vZGUqKTsKICAgICB2b2lkIGFycmF5aWZ5KE5vZGUqLCBHUFJSZWcgYmFz
ZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA0OTk1ZTNkMjViNzU2M2VhZTM5N2M3MzIyODA5Yjc2
ZTgxNWEwZThkLi41NzQ1MGQ4NzMxNDNiOTNiYzUyNDYzNGM5ZDA0MjY4MmVhYTcwOGVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC02Nyw2
ICs2Nyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZU9yRW1wdHk6
CiAgICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBB
cnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgIGNhc2UgR2V0
QnV0dGVyZmx5OgpAQCAtMzQwLDE2ICszNDEsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgLy8gY2FzZSBiZWNhdXNlIGl0IHdvdWxkIHBy
ZXZlbnQgdXMgZnJvbSBjYXRjaGluZyBidWdzIHdoZXJlIHRoZSBGVEwgYmFja2VuZAogICAgICAg
ICAvLyBwaXBlbGluZSBmYWlsZWQgdG8gb3B0aW1pemUgb3V0IGFuIElkZW50aXR5LgogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFycmF5aWZ5OgotICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5
TW9kZSgpLnR5cGUoKSkgewotICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKLSAgICAgICAgY2Fz
ZSBBcnJheTo6RG91YmxlOgotICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gQ2Fubm90
Q29tcGlsZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKICAgICBjYXNlIENoZWNrQXJyYXk6
CiAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNh
c2UgQXJyYXk6OkludDMyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IGQwZjI1Yzc3M2NmNDg5N2IyN2QwNTYxOWVmZmJlMDZjN2QyOTU4MTku
LjQyMGFhZGU5ZjRhZDYyNDc1ODBhNzg2MWYxODljMmU3NDU4ZDZhZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE0NTUwLDE1ICsxNDU1
MCwxNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6
CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgIGNhc2UgQXJyYXk6OlVu
ZGVjaWRlZDoKLSAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgotICAgICAgICBjYXNl
IEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOiB7CisgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5
U3RvcmFnZTogewogICAgICAgICAgICAgSW5kZXhpbmdUeXBlIHNoYXBlID0gYXJyYXlNb2RlLnNo
YXBlTWFzaygpOwogICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9IG1fb3V0LmxvYWQ4
WmVyb0V4dDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX2luZGV4aW5nVHlwZUFuZE1pc2MpOwogCiAg
ICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS5hcnJheUNsYXNzKCkpIHsKICAgICAgICAgICAg
IGNhc2UgQXJyYXk6Ok9yaWdpbmFsQXJyYXk6CiAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1f
Z3JhcGgsIG1fbm9kZSwgIlVuZXhwZWN0ZWQgb3JpZ2luYWwgYXJyYXkiKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAg
ICAgICAgY2FzZSBBcnJheTo6QXJyYXk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmVx
dWFsKApAQCAtMTQ1NzksNiArMTQ1NzgsNTggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFy
cmF5U3RvcmFnZTogeworICAgICAgICAgICAgQVNTRVJUKCFhcnJheU1vZGUuaXNKU0FycmF5V2l0
aE9yaWdpbmFsU3RydWN0dXJlKCkpOworICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9
IG1fb3V0LmxvYWQ4WmVyb0V4dDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX2luZGV4aW5nVHlwZUFu
ZE1pc2MpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayB0cnVlQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBmYWxzZUNhc2UgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2hlY2tDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisKKyAgICAgICAgICAgIExWYWx1ZSBzaGFwZVJlc3VsdCA9IG1fb3V0LmJlbG93T3JFcXVh
bCgKKyAgICAgICAgICAgICAgICBtX291dC5zdWIoCisgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmJpdEFuZChpbmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoSW5kZXhpbmdTaGFwZU1hc2sp
KSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihBcnJheVN0b3JhZ2VTaGFw
ZSkpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoU2xvd1B1dEFycmF5U3RvcmFn
ZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChz
aGFwZVJlc3VsdCwgdXN1YWxseShjaGVja0Nhc2UpLCB1c3VhbGx5KGZhbHNlQ2FzZSkpOworCisg
ICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGNoZWNrQ2Fz
ZSwgdHJ1ZUNhc2UpOworICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUuYXJyYXlDbGFzcygp
KSB7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpPcmlnaW5hbEFycmF5OgorICAgICAgICAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJVbmV4cGVjdGVkIG9yaWdpbmFsIGFycmF5
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OkFycmF5OgorICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQudGVzdE5vblplcm8zMihpbmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50
MzIoSXNBcnJheSkpLAorICAgICAgICAgICAgICAgICAgICB1c3VhbGx5KHRydWVDYXNlKSwgdXN1
YWxseShmYWxzZUNhc2UpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
Y2FzZSBBcnJheTo6Tm9uQXJyYXk6CisgICAgICAgICAgICBjYXNlIEFycmF5OjpPcmlnaW5hbE5v
bkFycmF5OgorICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAgICAg
ICAgbV9vdXQudGVzdElzWmVybzMyKGluZGV4aW5nVHlwZSwgbV9vdXQuY29uc3RJbnQzMihJc0Fy
cmF5KSksCisgICAgICAgICAgICAgICAgICAgIHVzdWFsbHkodHJ1ZUNhc2UpLCB1c3VhbGx5KGZh
bHNlQ2FzZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEFy
cmF5OjpQb3NzaWJseUFycmF5OgorICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAodHJ1ZUNhc2Up
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyh0cnVlQ2FzZSwgZmFsc2VDYXNlKTsKKyAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHRydWVWYWx1ZSA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CisgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGZhbHNlQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGZhbHNlVmFsdWUgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKKyAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXQu
cGhpKEludDMyLCBmYWxzZVZhbHVlLCB0cnVlVmFsdWUpOworICAgICAgICB9CisKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUxMzI3NjYzNTQ4NjNkMzE1
MzYyMTU5NDMzMjI5NGNhOWIyNDAxYzMuLmZkMGIzMTUxZDViMmRmMTcxMjM1NmE0OGIxMzcyY2Uw
ZGU2YWEyZGIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0ZUTF0gQWRkIEFycmF5aWZ5IGZvciBBcnJh
eVN0b3JhZ2UgYW5kIFNsb3dQdXRBcnJheVN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjczMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0b3JhZ2Ut
YXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdEFycmF5
U3RvcmFnZSk6CisgICAgICAgICogc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0b3JhZ2Utbm9uLWFy
cmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3RBcnJheVN0
b3JhZ2UpOgorICAgICAgICAqIHN0cmVzcy9hcnJheWlmeS1hcnJheS1zdG9yYWdlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3RBcnJheVN0b3JhZ2UpOgorICAg
ICAgICAqIHN0cmVzcy9hcnJheWlmeS1zbG93LXB1dC1hcnJheS1zdG9yYWdlLXBhc3MtYXJyYXkt
c3RvcmFnZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0QXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKiBzdHJlc3MvYXJyYXlpZnktc2xvdy1wdXQtYXJyYXktc3Rv
cmFnZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0QXJyYXlT
dG9yYWdlKToKKwogMjAxOC0wMi0xMyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtKU0NdIGNhY2hlIFRhZ2dlZFRlbXBsYXRlIGFycmF5cyBieSBjYWxsc2l0
ZSByYXRoZXIgdGhhbiBieSBjb250ZW50cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJy
YXlpZnktYXJyYXktc3RvcmFnZS1hcnJheS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LWFy
cmF5LXN0b3JhZ2UtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzViYTViYmViZTZiN2U2YWFlNjE5MTQ2
Mjk2YTYxZGExNmJjNzczZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5
aWZ5LWFycmF5LXN0b3JhZ2UtYXJyYXkuanMKQEAgLTAsMCArMSwyOSBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3Zh
ciBhcnJheSA9IFsxLCAyLCAzLCA0LCA1XTsKK3ZhciBhcnJheTIgPSBbMSwgIkhFTExPIiwgMywg
NCwgNV07Cit2YXIgYXJyYXkzID0gWzAuMSwgIk9LIiwgMC4zLCAwLjQsIDAuNV07CitlbnN1cmVB
cnJheVN0b3JhZ2UoYXJyYXkyKTsKK2FycmF5Lm9rID0gNDI7CithcnJheTIub2sgPSA0MjsKK2Fy
cmF5My5vayA9IDQyOworCisvLyBBcnJheWlmeShBcnJheVN0b3JhZ2UpIHdvcmtzIHdpdGggZnRs
LWVhZ2VyCitmdW5jdGlvbiB0ZXN0QXJyYXlTdG9yYWdlKGFycmF5KQoreworICAgIHJldHVybiBh
cnJheS5sZW5ndGg7Cit9Citub0lubGluZSh0ZXN0QXJyYXlTdG9yYWdlKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJy
YXkpLCA1KTsKKyAgICBzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdlKGFycmF5MiksIDUpOworICAg
IHNob3VsZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkzKSwgNSk7Cit9CisKK3ZhciBhcnJheTQg
PSB7MDoxLCAxOiJIRUxMTyIsIDI6MywgMzo0LCA0OjV9OworZW5zdXJlQXJyYXlTdG9yYWdlKGFy
cmF5NCk7CitzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdlKGFycmF5NCksIHVuZGVmaW5lZCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheWlmeS1hcnJheS1zdG9yYWdlLW5vbi1hcnJh
eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0b3JhZ2Utbm9uLWFycmF5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM2ZjYyYmIyN2ZiN2I1OGEzMDYzOTg4YTViZmM1ZjJiY2NiZjhiMGEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheWlmeS1hcnJheS1zdG9yYWdlLW5v
bi1hcnJheS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGFycmF5ID0gezA6MSwg
MToyLCAyOjMsIDM6NCwgNDo1fTsKK3ZhciBhcnJheTIgPSB7MDoxLCAxOiJIRUxMTyIsIDI6Mywg
Mzo0LCA0OjV9OwordmFyIGFycmF5MyA9IHswOjAuMSwgMToiT0siLCAyOjAuMywgMzowLjQsIDQ6
MC41fTsKK2Vuc3VyZUFycmF5U3RvcmFnZShhcnJheTIpOworYXJyYXkub2sgPSA0MjsKK2FycmF5
Mi5vayA9IDQyOworYXJyYXkzLm9rID0gNDI7CisKKy8vIEFycmF5aWZ5KEFycmF5U3RvcmFnZSkg
d29ya3Mgd2l0aCBmdGwtZWFnZXIKK2Z1bmN0aW9uIHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkpCit7
CisgICAgcmV0dXJuIGFycmF5WzRdOworfQorbm9JbmxpbmUodGVzdEFycmF5U3RvcmFnZSk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICBzaG91bGRCZSh0ZXN0QXJyYXlT
dG9yYWdlKGFycmF5KSwgNSk7CisgICAgc2hvdWxkQmUodGVzdEFycmF5U3RvcmFnZShhcnJheTIp
LCA1KTsKKyAgICBzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdlKGFycmF5MyksIDAuNSk7Cit9CisK
K3ZhciBhcnJheTQgPSBbMCwgMSwgMiwgMywgNF07CitzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdl
KGFycmF5NCksIDQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXlpZnktYXJyYXkt
c3RvcmFnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0b3JhZ2UuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGUxYmZhMmMzNDVlNGJjODA1N2FmY2ZiODU0M2FjNjJiNzdjNTFmMwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5aWZ5LWFycmF5LXN0b3JhZ2UuanMKQEAg
LTAsMCArMSwyNSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBhcnJheSA9IFsxLCAyLCAzLCA0LCA1XTsKK3Zh
ciBhcnJheTIgPSBbMSwgIkhFTExPIiwgMywgNCwgNV07Cit2YXIgYXJyYXkzID0gWzAuMSwgIk9L
IiwgMC4zLCAwLjQsIDAuNV07CitlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkyKTsKK2FycmF5Lm9r
ID0gNDI7CithcnJheTIub2sgPSA0MjsKK2FycmF5My5vayA9IDQyOworCisvLyBBcnJheWlmeShB
cnJheVN0b3JhZ2UpIHdvcmtzIHdpdGggZnRsLWVhZ2VyCitmdW5jdGlvbiB0ZXN0QXJyYXlTdG9y
YWdlKGFycmF5KQoreworICAgIHJldHVybiBhcnJheS5sZW5ndGg7Cit9Citub0lubGluZSh0ZXN0
QXJyYXlTdG9yYWdlKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHNo
b3VsZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkpLCA1KTsKKyAgICBzaG91bGRCZSh0ZXN0QXJy
YXlTdG9yYWdlKGFycmF5MiksIDUpOworICAgIHNob3VsZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJy
YXkzKSwgNSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheWlmeS1zbG93LXB1
dC1hcnJheS1zdG9yYWdlLXBhc3MtYXJyYXktc3RvcmFnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Fy
cmF5aWZ5LXNsb3ctcHV0LWFycmF5LXN0b3JhZ2UtcGFzcy1hcnJheS1zdG9yYWdlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRkNmFiNjVhZjNhYjRiZjAzN2Y4NTFmY2QyN2VmZDZkOWEyMmIzOTEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheWlmeS1zbG93LXB1dC1hcnJheS1zdG9yYWdl
LXBhc3MtYXJyYXktc3RvcmFnZS5qcwpAQCAtMCwwICsxLDQwIEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIG9i
amVjdCA9IHsgYTogMTAgfTsKK09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG9iamVjdCwgeworICAg
ICIwIjogeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5hOyB9LAorICAg
ICAgICBzZXQ6IGZ1bmN0aW9uKHgpIHsgdGhpcy5hID0geDsgfSwKKyAgICB9LAorfSk7CisKK3Zh
ciBhcnJheTEgPSBbMC4xLCAiT0siLCAwLjMsIDAuNCwgMC41XTsKK3ZhciBhcnJheTIgPSBbMSwg
IkhFTExPIiwgMywgNCwgNV07CitlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkyKTsKK2FycmF5MS5v
ayA9IDQyOworYXJyYXkyLm9rID0gNDI7CithcnJheTIuX19wcm90b19fID0gb2JqZWN0OworCisv
LyBBcnJheWlmeShTbG93UHV0QXJyYXlTdG9yYWdlKSB3b3JrcyB3aXRoIGZ0bC1lYWdlcgorZnVu
Y3Rpb24gdGVzdEFycmF5U3RvcmFnZShhcnJheSkKK3sKKyAgICByZXR1cm4gYXJyYXkubGVuZ3Ro
OworfQorbm9JbmxpbmUodGVzdEFycmF5U3RvcmFnZSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU2OyArK2kpIHsKKyAgICBzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdlKGFycmF5MSksIDUpOwor
ICAgIHNob3VsZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkyKSwgNSk7Cit9CisKK3ZhciBhcnJh
eTMgPSBbMSwgMiwgM107CitlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXkzKTsKK3Nob3VsZEJlKHRl
c3RBcnJheVN0b3JhZ2UoYXJyYXkzKSwgMyk7Cit2YXIgYXJyYXk0ID0gWzEsIDIsIDNdOworc2hv
dWxkQmUodGVzdEFycmF5U3RvcmFnZShhcnJheTQpLCAzKTsKK3ZhciBhcnJheTUgPSB7MDoxLCAx
OjJ9OworZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5NSk7CitzaG91bGRCZSh0ZXN0QXJyYXlTdG9y
YWdlKGFycmF5NSksIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJh
eWlmeS1zbG93LXB1dC1hcnJheS1zdG9yYWdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXlpZnkt
c2xvdy1wdXQtYXJyYXktc3RvcmFnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDc5MDgzNDJjMmVjNTIzNDQ4
ZjQ0YjFhZTE5MzUwNGM0NDVkNWU1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
YXJyYXlpZnktc2xvdy1wdXQtYXJyYXktc3RvcmFnZS5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKwordmFyIG9iamVjdCA9IHsgYTogMTAgfTsKK09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG9i
amVjdCwgeworICAgICIwIjogeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhp
cy5hOyB9LAorICAgICAgICBzZXQ6IGZ1bmN0aW9uKHgpIHsgdGhpcy5hID0geDsgfSwKKyAgICB9
LAorfSk7CisKK3ZhciBhcnJheTEgPSBbMC4xLCAiT0siLCAwLjMsIDAuNCwgMC41XTsKK3ZhciBh
cnJheTIgPSBbMSwgIkhFTExPIiwgMywgNCwgNV07CitlbnN1cmVBcnJheVN0b3JhZ2UoYXJyYXky
KTsKK2FycmF5MS5vayA9IDQyOworYXJyYXkyLm9rID0gNDI7CithcnJheTIuX19wcm90b19fID0g
b2JqZWN0OworCisvLyBBcnJheWlmeShTbG93UHV0QXJyYXlTdG9yYWdlKSB3b3JrcyB3aXRoIGZ0
bC1lYWdlcgorZnVuY3Rpb24gdGVzdEFycmF5U3RvcmFnZShhcnJheSkKK3sKKyAgICByZXR1cm4g
YXJyYXkubGVuZ3RoOworfQorbm9JbmxpbmUodGVzdEFycmF5U3RvcmFnZSk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICBzaG91bGRCZSh0ZXN0QXJyYXlTdG9yYWdlKGFy
cmF5MSksIDUpOworICAgIHNob3VsZEJlKHRlc3RBcnJheVN0b3JhZ2UoYXJyYXkyKSwgNSk7Cit9
Cg==
</data>
<flag name="review"
          id="352636"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>