<?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>183130</bug_id>
          
          <creation_ts>2018-02-26 08:18:16 -0800</creation_ts>
          <short_desc>[MIPS] Optimize generated JIT code for branches</short_desc>
          <delta_ts>2018-04-05 12:13:26 -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>Other</rep_platform>
          <op_sys>Linux</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stanislav Ocovaj">stanislav.ocovaj</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mips32r2</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>stanislav.ocovaj</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1402049</commentid>
    <comment_count>0</comment_count>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-02-26 08:18:16 -0800</bug_when>
    <thetext>There are a couple of places where a more efficient code can be generated for branches on a MIPS platform.
Firstly, the patch https://bugs.webkit.org/show_bug.cgi?id=101328 added two nop instructions to branchEqual() and branchNotEqual() in order to prevent the beq/bne instruction in a patchable branch from being overwritten by replaceWithJump() in case when we have to jump outside the 256MB-aligned block. However, this adds a significant overhead for all other types of branches. Since these nop&apos;s protect the code that comes after the code generated by moveWithPatch(), this function seems like a better place to add them.
Secondly, in branches with immediate operand, the immediate value is 0 in many cases, and in these cases we can use the zero register directly without generating a move (pseudo)instruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402051</commentid>
    <comment_count>1</comment_count>
      <attachid>334617</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-02-26 08:29:19 -0800</bug_when>
    <thetext>Created attachment 334617
MIPS branches

This patch implements the proposed optimizations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402052</commentid>
    <comment_count>2</comment_count>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-02-26 08:31:46 -0800</bug_when>
    <thetext>The uploaded patch also fixes a bug in revertJumpToMove() where an incorrect pointer is passed to cacheFlush().
The implemented optimizations improve the benchmark results by ~5%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403641</commentid>
    <comment_count>3</comment_count>
    <who name="Petar Jovanovic">mips32r2</who>
    <bug_when>2018-03-05 09:39:34 -0800</bug_when>
    <thetext>Can anyone take a look at this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404246</commentid>
    <comment_count>4</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-03-06 18:15:27 -0800</bug_when>
    <thetext>The patch should be flagged as &quot;r?&quot; to attract the attention of reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404264</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-03-06 21:14:49 -0800</bug_when>
    <thetext>(In reply to Guillaume Emont from comment #4)
&gt; The patch should be flagged as &quot;r?&quot; to attract the attention of reviewers.

Also, this patch is also all in MIPS code.  I think it is better for someone who knows MIPS to do the review.  Are there any reviewers with MIPS expertise?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404283</commentid>
    <comment_count>6</comment_count>
      <attachid>335174</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-07 00:17:49 -0800</bug_when>
    <thetext>Created attachment 335174
MIPS branches

Rebased and added details to ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407696</commentid>
    <comment_count>7</comment_count>
    <who name="Petar Jovanovic">mips32r2</who>
    <bug_when>2018-03-20 09:51:29 -0700</bug_when>
    <thetext>Anyone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407722</commentid>
    <comment_count>8</comment_count>
      <attachid>335174</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-20 10:54:18 -0700</bug_when>
    <thetext>Comment on attachment 335174
MIPS branches

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

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        on a MIPS platform. Firstly, the patch https://bugs.webkit.org/show_bug.cgi?id=101328
&gt; +        added two nop instructions to branchEqual() and branchNotEqual() in order to prevent
&gt; +        the beq/bne instruction in a patchable branch from being overwritten by replaceWithJump()
&gt; +        in case when we have to jump outside the 256MB-aligned block. However, this adds a significant
&gt; +        overhead for all other types of branches. Since these nop&apos;s protect the code that comes after
&gt; +        the code generated by moveWithPatch(), this function seems like a better place to add them.
&gt; +        Secondly, in branches with immediate operand, the immediate value is 0 in many cases, and in

What happens if we just use patchableBranch64 and repatch it?
I don&apos;t think this is safe if it becomes broken.
How about separating patchableBranchPtr, patchableBranchPtrWithPatch etc. from branchPtr implementation and emitting nops in patchable versions?

&gt; Source/JavaScriptCore/assembler/MIPSAssembler.h:1016
&gt; +        cacheFlush(insn - 2, codeSize);

Lol, nice. I think `cacheFlush(instructionStart, codeSize);` is nicer.
BTW, replaceWithLoad and replaceWithAddressComputation should be fixed at least. Could you review all the other replacing functions too?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:1834
&gt;              */

Let&apos;s change the comment.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:1887
&gt;              */

Ditto.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:1961
&gt;              if (imm.m_value &gt;= -32768 &amp;&amp; imm.m_value  &lt;= 32767 &amp;&amp; !m_fixedWidth) {

Ditto.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2025
&gt;              m_assembler.mfhi(dataTempRegister);

Ditto.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2070
&gt;              m_assembler.mfhi(dataTempRegister);

Ditto.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2120
&gt;              */

Ditto.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2179
&gt;              */

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407723</commentid>
    <comment_count>9</comment_count>
      <attachid>335174</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-20 10:55:09 -0700</bug_when>
    <thetext>Comment on attachment 335174
MIPS branches

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:15
&gt;&gt; +        Secondly, in branches with immediate operand, the immediate value is 0 in many cases, and in
&gt; 
&gt; What happens if we just use patchableBranch64 and repatch it?
&gt; I don&apos;t think this is safe if it becomes broken.
&gt; How about separating patchableBranchPtr, patchableBranchPtrWithPatch etc. from branchPtr implementation and emitting nops in patchable versions?

I mean, using replacing function with PatchableJump which does not come after moveWithPatch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407958</commentid>
    <comment_count>10</comment_count>
      <attachid>335174</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-21 02:41:48 -0700</bug_when>
    <thetext>Comment on attachment 335174
MIPS branches

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

&gt;&gt; Source/JavaScriptCore/assembler/MIPSAssembler.h:1016
&gt;&gt; +        cacheFlush(insn - 2, codeSize);
&gt; 
&gt; Lol, nice. I think `cacheFlush(instructionStart, codeSize);` is nicer.
&gt; BTW, replaceWithLoad and replaceWithAddressComputation should be fixed at least. Could you review all the other replacing functions too?

replaceWithLoad and replaceWithAddressComputation are OK because they only modify the last instruction. Other functions are also correct. It think repatchInt32 could be modified too, to use cacheFlush(from... instead of cacheFlush(insn... and remove the insn-- statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407966</commentid>
    <comment_count>11</comment_count>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-21 04:36:48 -0700</bug_when>
    <thetext>Sorry, I think my explanation was not clear enough. The patch https://bugs.webkit.org/show_bug.cgi?id=101328 added two nop&apos;s to branchEqual() and branchNotEqual() in order to fix the following issue.
Without the nop&apos;s, branchPtrWithPatch() generates a block of instructions like this:

  lui immTempRegister, initialRightValue &gt;&gt; 16
  ori immTempRegister, immTempRegister, initialRightValue &amp; 0xffff
  beq left, immTempRegister, label
  nop
  beq zero, zero, 1
  nop
  nop
  nop
1:

Then, at some point, this code may be changed by replaceWithJump() to

  lui t9, newLabel &gt;&gt; 16
  ori t9, newLabel &amp; 0xffff
  jr  t9
  nop
  beq zero, zero, 1
  nop
  nop
  nop
1:

which overwrites the original beq instruction. Later on, the JIT may want to revert the jump back to branchPtrWithPatch by calling revertJumpReplacementToBranchPtrWithPatch(), which results with the following block:

  lui immTempRegister, initialRightValue &gt;&gt; 16
  ori immTempRegister, immTempRegister, initialRightValue &amp; 0xffff
  nop
  nop
  beq zero, zero, 1
  nop
  nop
  nop
1:

Since the original beq instruction is lost, this code won&apos;t work anymore. So, the added nop&apos;s have nothing to do with patchable branches actually, they were added in orded to allow the code generated by branchPtrWithPatch() to be reverted back to branchPtrWithPatch after replacing it with a 4-instruction jump.
Repatching branches only modifies the last 6 instructions of the branch (see relinkJump() in MIPSAssembler.h), so that should not be affected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407992</commentid>
    <comment_count>12</comment_count>
      <attachid>336192</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-21 07:45:52 -0700</bug_when>
    <thetext>Created attachment 336192
Patch

I added the requested changes and rebased the patch. I removed the optimizations for branches with immediate operand as they are now included in another patch (https://bugs.webkit.org/show_bug.cgi?id=183740). I also moved the additional nop&apos;s from moveWithPatch to branchPtrWithPatch since that is the only place where they are really needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408384</commentid>
    <comment_count>13</comment_count>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-22 08:44:55 -0700</bug_when>
    <thetext>Just for the record, with this optimization I got the following results on a mips32r1 platform:
Benchmark  Original  Optimized  Improvement
Octane2    845       897        6.2%
Kraken     3306 ms   3133 ms    5.5%
JetStream  7.13      7.56       6.0%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410267</commentid>
    <comment_count>14</comment_count>
    <who name="Petar Jovanovic">mips32r2</who>
    <bug_when>2018-03-29 08:33:57 -0700</bug_when>
    <thetext>Ping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411715</commentid>
    <comment_count>15</comment_count>
      <attachid>337166</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-04-04 07:31:49 -0700</bug_when>
    <thetext>Created attachment 337166
Patch

Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412036</commentid>
    <comment_count>16</comment_count>
    <who name="Petar Jovanovic">mips32r2</who>
    <bug_when>2018-04-05 06:37:20 -0700</bug_when>
    <thetext>Yusuke Suzuki, are you OK with the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412118</commentid>
    <comment_count>17</comment_count>
      <attachid>337166</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-05 11:45:23 -0700</bug_when>
    <thetext>Comment on attachment 337166
Patch

OK, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412131</commentid>
    <comment_count>18</comment_count>
      <attachid>337166</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-05 12:12:05 -0700</bug_when>
    <thetext>Comment on attachment 337166
Patch

Clearing flags on attachment: 337166

Committed r230310: &lt;https://trac.webkit.org/changeset/230310&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412132</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-05 12:12:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412133</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-05 12:13:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/39215379&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334617</attachid>
            <date>2018-02-26 08:29:19 -0800</date>
            <delta_ts>2018-03-07 00:17:49 -0800</delta_ts>
            <desc>MIPS branches</desc>
            <filename>branches.patch</filename>
            <type>text/plain</type>
            <size>9361</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk5ZWQ4MGQuLmYwMTBmYTEKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMDItMjYgIFN0YW5pc2xhdiBPY292YWogIDxz
dGFuaXNsYXYub2NvdmFqQHJ0LXJrLmNvbT4KKworICAgICAgICBbTUlQU10gT3B0aW1pemUgZ2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBicmFuY2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oOgorICAgICAg
ICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6YnJhbmNoMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5j
aDMyV2l0aFVuYWxpZ25lZEhhbGZXb3Jkcyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJy
YW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hTdWIz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bW92ZVdpdGhQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKwogMjAxOC0wMi0yMyAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIE51bWJlci5p
c0ludGVnZXIgYW4gaW50cmluc2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTUlQU0Fzc2VtYmxlci5oCmluZGV4IDdhNzQ3YTkuLmQ0OTU5NWEKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKQEAgLTEwMTMsNyArMTAxMyw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICppbnNuID0gMHgwMDAwMDAwMDsKICAgICAgICAgICAgIGNv
ZGVTaXplICs9IHNpemVvZihNSVBTV29yZCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FjaGVGbHVz
aChpbnNuLCBjb2RlU2l6ZSk7CisgICAgICAgIGNhY2hlRmx1c2goaW5zbiAtIDIsIGNvZGVTaXpl
KTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1
Y3Rpb25TdGFydCwgdm9pZCogdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBmZmU1ZmJkLi4zNGVkMzZkCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApA
QCAtMTYyNSw2ICsxNjI1LDggQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQog
ICAgIHsKKyAgICAgICAgaWYgKCFtX2ZpeGVkV2lkdGggJiYgIXJpZ2h0Lm1fdmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7
CiAgICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBi
cmFuY2gzMihjb25kLCBsZWZ0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KQEAgLTE2NDQsNiAr
MTY0Niw4IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBs
b2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGlmICghbV9maXhlZFdpZHRo
ICYmICFyaWdodC5tX3ZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgICAgICBtb3ZlKHJpZ2h0
LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICB9CkBAIC0xNjUzLDYgKzE2NTcsOCBA
QCBwdWJsaWM6CiAgICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAg
ICAgLy8gQmUgY2FyZWZ1bCB0aGF0IHRoZSBwcmV2aW91cyBsb2FkMzIoKSB1c2VzIGltbVRlbXBS
ZWdpc3Rlci4KICAgICAgICAgLy8gU28sIHdlIG5lZWQgdG8gcHV0IG1vdmUoKSBhZnRlciBsb2Fk
MzIoKS4KKyAgICAgICAgaWYgKCFtX2ZpeGVkV2lkdGggJiYgIXJpZ2h0Lm1fdmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lz
dGVyczo6emVybyk7CiAgICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0
ZXIpOwogICAgIH0KQEAgLTE2NjMsNiArMTY2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gQmUg
Y2FyZWZ1bCB0aGF0IHRoZSBwcmV2aW91cyBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKCkK
ICAgICAgICAgLy8gdXNlcyBpbW1UZW1wUmVnaXN0ZXIuCiAgICAgICAgIC8vIFNvLCB3ZSBuZWVk
IHRvIHB1dCBtb3ZlKCkgYWZ0ZXIgbG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcygpLgorICAg
ICAgICBpZiAoIW1fZml4ZWRXaWR0aCAmJiAhcmlnaHQubV92YWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJv
KTsKICAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAg
fQpAQCAtMTY3Niw2ICsxNjg0LDggQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJp
Z2h0KQogICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICBpZiAoIW1fZml4ZWRXaWR0aCAmJiAhcmlnaHQubV92YWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJz
Ojp6ZXJvKTsKICAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7
CiAgICAgfQpAQCAtMTgyNCwxMCArMTgzNCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAqLwog
ICAgICAgICAgICAgbW92ZShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmMp
OwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEyKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIHNyYyk7CiAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3Rl
ciwgOSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7
CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgICAgIHJldHVybiBqdW1w
KCk7CiAgICAgICAgIH0KQEAgLTE4NzcsMTAgKzE4ODcsMTAgQEAgcHVibGljOgogICAgICAgICAg
ICAgKi8KICAgICAgICAgICAgIG1vdmUob3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCBvcDIpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEy
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7
CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwg
ZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBS
ZWdpc3RlciwgOSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3Rl
ciwgNyk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgICAgIHJldHVy
biBqdW1wKCk7CiAgICAgICAgIH0KQEAgLTE5NTEsMjEgKzE5NjEsMjEgQEAgcHVibGljOgogICAg
ICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSAgPD0gMzI3
NjcgJiYgIW1fZml4ZWRXaWR0aCkgewogICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRy
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNt
cFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOwotICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxNCk7CisgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEyKTsKICAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCBpbW0ubV92YWx1ZSk7CiAgICAgICAgICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVy
LCBkZXN0Lm1fcHRyKTsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOwotICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA5KTsKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CiAgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIubm9wKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxv
YWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBtb3Zl
KGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJ
bnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTQpOwor
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMik7CiAg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBzdG9yZTMyKGRh
dGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOwogICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIp
OwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA5KTsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CiAg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByZXR1cm4ganVtcCgpOwpAQCAtMjAxNSw3ICsyMDI1LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubWZoaShkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm1mbG8oZGVzdCk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zcmEoYWRkclRl
bXBSZWdpc3RlciwgZGVzdCwgMzEpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKGRhdGFU
ZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYmVxKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgICAgICByZXR1cm4ganVtcCgpOwogICAgICAg
ICB9CkBAIC0yMDYwLDcgKzIwNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5tZmhpKGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZsbyhk
ZXN0KTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNyYShhZGRyVGVtcFJlZ2lzdGVyLCBkZXN0
LCAzMSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRlbXBSZWdpc3RlciwgYWRk
clRlbXBSZWdpc3RlciwgOSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRlbXBS
ZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgNyk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKICAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CiAgICAgICAgIH0KQEAgLTIxMTAsMTAg
KzIxMjAsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG1vdmUoZGVz
dCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNt
cFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjKTsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCAxMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgMTApOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Vi
dShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmMpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm9wKCk7CiAgICAgICAgICAgICByZXR1cm4ganVtcCgpOwogICAgICAgICB9CkBAIC0y
MTY5LDEwICsyMTc5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICovCiAgICAgICAgICAgICBt
b3ZlKG9wMSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJ
bnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCAxMik7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgMTApOwogICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc3VidShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOwogICAgICAgICAgICAgbV9hc3Nl
bWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDkpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgICAgICByZXR1cm4ganVtcCgpOwogICAgICAgICB9
CkBAIC0yMzY0LDYgKzIzNzQsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IHRy
dWU7CiAgICAgICAgIERhdGFMYWJlbDMyIGxhYmVsKHRoaXMpOwogICAgICAgICBtb3ZlKGltbSwg
ZGVzdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKICAgICAgICAgbV9maXhlZFdpZHRoID0gZmFsc2U7CiAgICAgICAgIHJldHVybiBsYWJl
bDsKICAgICB9CkBAIC0yMzczLDYgKzIzODUsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZml4ZWRX
aWR0aCA9IHRydWU7CiAgICAgICAgIERhdGFMYWJlbFB0ciBsYWJlbCh0aGlzKTsKICAgICAgICAg
bW92ZShpbml0aWFsVmFsdWUsIGRlc3QpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZhbHNlOwog
ICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQpAQCAtMjg5MCw4ICsyOTA0LDYgQEAgcHVibGlj
OgogCiAgICAgSnVtcCBicmFuY2hFcXVhbChSZWdpc3RlcklEIHJzLCBSZWdpc3RlcklEIHJ0KQog
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5v
cCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5hcHBlbmRKdW1wKCk7CiAgICAgICAgIG1fYXNzZW1i
bGVyLmJlcShycywgcnQsIDApOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTI5MDEs
OCArMjkxMyw2IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoTm90RXF1YWwoUmVnaXN0ZXJJ
RCBycywgUmVnaXN0ZXJJRCBydCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYXBwZW5kSnVt
cCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5ibmUocnMsIHJ0LCAwKTsKICAgICAgICAgbV9hc3Nl
bWJsZXIubm9wKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335174</attachid>
            <date>2018-03-07 00:17:49 -0800</date>
            <delta_ts>2018-03-21 07:45:52 -0700</delta_ts>
            <desc>MIPS branches</desc>
            <filename>branches.patch</filename>
            <type>text/plain</type>
            <size>10363</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggMjBiNTk5NC4uZDNlNDgzOAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAor
MjAxOC0wMy0wNyAgU3RhbmlzbGF2IE9jb3ZhaiAgPHN0YW5pc2xhdi5vY292YWpAcnQtcmsuY29t
PgorCisgICAgICAgIFtNSVBTXSBPcHRpbWl6ZSBnZW5lcmF0ZWQgSklUIGNvZGUgZm9yIGJyYW5j
aGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMx
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVy
ZSBhcmUgYSBjb3VwbGUgb2YgcGxhY2VzIHdoZXJlIGEgbW9yZSBlZmZpY2llbnQgY29kZSBjYW4g
YmUgZ2VuZXJhdGVkIGZvciBicmFuY2hlcworICAgICAgICBvbiBhIE1JUFMgcGxhdGZvcm0uIEZp
cnN0bHksIHRoZSBwYXRjaCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAxMzI4CisgICAgICAgIGFkZGVkIHR3byBub3AgaW5zdHJ1Y3Rpb25zIHRvIGJyYW5jaEVxdWFs
KCkgYW5kIGJyYW5jaE5vdEVxdWFsKCkgaW4gb3JkZXIgdG8gcHJldmVudAorICAgICAgICB0aGUg
YmVxL2JuZSBpbnN0cnVjdGlvbiBpbiBhIHBhdGNoYWJsZSBicmFuY2ggZnJvbSBiZWluZyBvdmVy
d3JpdHRlbiBieSByZXBsYWNlV2l0aEp1bXAoKQorICAgICAgICBpbiBjYXNlIHdoZW4gd2UgaGF2
ZSB0byBqdW1wIG91dHNpZGUgdGhlIDI1Nk1CLWFsaWduZWQgYmxvY2suIEhvd2V2ZXIsIHRoaXMg
YWRkcyBhIHNpZ25pZmljYW50CisgICAgICAgIG92ZXJoZWFkIGZvciBhbGwgb3RoZXIgdHlwZXMg
b2YgYnJhbmNoZXMuIFNpbmNlIHRoZXNlIG5vcCdzIHByb3RlY3QgdGhlIGNvZGUgdGhhdCBjb21l
cyBhZnRlcgorICAgICAgICB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgbW92ZVdpdGhQYXRjaCgpLCB0
aGlzIGZ1bmN0aW9uIHNlZW1zIGxpa2UgYSBiZXR0ZXIgcGxhY2UgdG8gYWRkIHRoZW0uCisgICAg
ICAgIFNlY29uZGx5LCBpbiBicmFuY2hlcyB3aXRoIGltbWVkaWF0ZSBvcGVyYW5kLCB0aGUgaW1t
ZWRpYXRlIHZhbHVlIGlzIDAgaW4gbWFueSBjYXNlcywgYW5kIGluCisgICAgICAgIHRoZXNlIGNh
c2VzIHdlIGNhbiB1c2UgdGhlIHplcm8gcmVnaXN0ZXIgZGlyZWN0bHkgd2l0aG91dCBnZW5lcmF0
aW5nIGEgbW92ZSBpbnN0cnVjdGlvbi4KKworICAgICAgICAqIGFzc2VtYmxlci9NSVBTQXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnJldmVydEp1bXBUb01vdmUpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2gzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6YnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hBZGQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyTUlQUzo6YnJhbmNoTXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmJyYW5jaFN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjptb3Zl
V2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hFcXVh
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoTm90RXF1YWwpOgor
CiAyMDE4LTAzLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBQ
cmVwYXJlIExMSW50IGNvZGUgdG8gc3VwcG9ydCBwb2ludGVyIHByb2ZpbGluZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKb2xkIG1vZGUgMTAw
NjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3YTc0N2E5Li5kNDk1OTVhCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCkBAIC0xMDEzLDcgKzEwMTMsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAqaW5zbiA9IDB4MDAwMDAwMDA7CiAgICAgICAgICAgICBj
b2RlU2l6ZSArPSBzaXplb2YoTUlQU1dvcmQpOwogICAgICAgICB9Ci0gICAgICAgIGNhY2hlRmx1
c2goaW5zbiwgY29kZVNpemUpOworICAgICAgICBjYWNoZUZsdXNoKGluc24gLSAyLCBjb2RlU2l6
ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3Ry
dWN0aW9uU3RhcnQsIHZvaWQqIHRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEw
MDc1NQppbmRleCAzZjI3MGZlLi4yNmEzZmU5Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMTYyNSw2ICsxNjI1LDggQEAgcHVi
bGljOgogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKKyAgICAgICAgaWYgKCFtX2Zp
eGVkV2lkdGggJiYgIXJpZ2h0Lm1fdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gYnJhbmNoMzIo
Y29uZCwgbGVmdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAgICAgIG1vdmUocmlnaHQsIGlt
bVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBpbW1U
ZW1wUmVnaXN0ZXIpOwogICAgIH0KQEAgLTE2NDQsNiArMTY0Niw4IEBAIHB1YmxpYzoKICAgICBK
dW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVz
dGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdp
c3Rlcik7CisgICAgICAgIGlmICghbV9maXhlZFdpZHRoICYmICFyaWdodC5tX3ZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOwogICAgICAgICBtb3ZlKHJpZ2h0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lz
dGVyKTsKICAgICB9CkBAIC0xNjUzLDYgKzE2NTcsOCBAQCBwdWJsaWM6CiAgICAgICAgIGxvYWQz
MihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgLy8gQmUgY2FyZWZ1bCB0aGF0IHRo
ZSBwcmV2aW91cyBsb2FkMzIoKSB1c2VzIGltbVRlbXBSZWdpc3Rlci4KICAgICAgICAgLy8gU28s
IHdlIG5lZWQgdG8gcHV0IG1vdmUoKSBhZnRlciBsb2FkMzIoKS4KKyAgICAgICAgaWYgKCFtX2Zp
eGVkV2lkdGggJiYgIXJpZ2h0Lm1fdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gYnJhbmNoMzIo
Y29uZCwgZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAgICAgIG1v
dmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25k
LCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KQEAgLTE2NjMsNiAr
MTY2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gQmUgY2FyZWZ1bCB0aGF0IHRoZSBwcmV2aW91
cyBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKCkKICAgICAgICAgLy8gdXNlcyBpbW1UZW1w
UmVnaXN0ZXIuCiAgICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3ZlKCkgYWZ0ZXIgbG9h
ZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcygpLgorICAgICAgICBpZiAoIW1fZml4ZWRXaWR0aCAm
JiAhcmlnaHQubV92YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRh
VGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKICAgICAgICAgbW92ZShyaWdodCwg
aW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1w
UmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQpAQCAtMTY3Niw2ICsxNjg0LDggQEAg
cHVibGljOgogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNv
bHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9h
ZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBpZiAoIW1fZml4ZWRX
aWR0aCAmJiAhcmlnaHQubV92YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25k
LCBkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKICAgICAgICAgbW92ZShy
aWdodCwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQpAQCAtMTgyNCwxMCArMTgz
NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAqLwogICAgICAgICAgICAgbW92ZShkZXN0LCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVt
cFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmMpOwotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJs
dHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRl
c3QsIGRhdGFUZW1wUmVnaXN0ZXIsIHNyYyk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJ
bnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgOSk7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKICAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CiAgICAgICAgIH0KQEAgLTE4Nzcs
MTAgKzE4ODcsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG1vdmUo
b3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24o
Y21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOwotICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEyKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5h
ZGR1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgOSk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CiAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5ub3AoKTsKICAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CiAgICAgICAgIH0KQEAg
LTE5NTEsMjEgKzE5NjEsMjEgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVl
ID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSAgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgewog
ICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBS
ZWdpc3RlciwgaW1tLm1fdmFsdWUpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHoo
Y21wVGVtcFJlZ2lzdGVyLCAxNCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihj
bXBUZW1wUmVnaXN0ZXIsIDEyKTsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShk
YXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKICAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgaW1tLm1fdmFsdWUpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVt
cFJlZ2lzdGVyLCA5KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBS
ZWdpc3RlciwgNyk7CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0
YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTQpOworICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMik7CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lz
dGVyKTsKICAgICAgICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9w
dHIpOwogICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBk
YXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA5KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubm9wKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4ganVtcCgpOwpAQCAt
MjAxNSw3ICsyMDI1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZoaShk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1mbG8oZGVzdCk7CiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5zcmEoYWRkclRlbXBSZWdpc3RlciwgZGVzdCwgMzEpOwot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVn
aXN0ZXIsIDkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKGRhdGFUZW1wUmVnaXN0ZXIs
IGFkZHJUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAg
ICAgICAgICAgICByZXR1cm4ganVtcCgpOwogICAgICAgICB9CkBAIC0yMDYwLDcgKzIwNzAsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmhpKGRhdGFUZW1wUmVnaXN0ZXIp
OwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZsbyhkZXN0KTsKICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnNyYShhZGRyVGVtcFJlZ2lzdGVyLCBkZXN0LCAzMSk7Ci0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5iZXEoZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgOSk7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3Rl
ciwgNyk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgICAgIHJldHVy
biBqdW1wKCk7CiAgICAgICAgIH0KQEAgLTIxMTAsMTAgKzIxMjAsMTAgQEAgcHVibGljOgogICAg
ICAgICAgICAgKi8KICAgICAgICAgICAgIG1vdmUoZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBS
ZWdpc3Rlciwgc3JjKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lz
dGVyLCAxMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3Rlciwg
MTApOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVy
LCBzcmMpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIs
IGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihj
bXBUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1w
UmVnaXN0ZXIsIDcpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgICAg
ICByZXR1cm4ganVtcCgpOwogICAgICAgICB9CkBAIC0yMTY5LDEwICsyMTc5LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICovCiAgICAgICAgICAgICBtb3ZlKG9wMSwgZGF0YVRlbXBSZWdpc3Rl
cik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0
YVRlbXBSZWdpc3Rlciwgb3AyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVt
cFJlZ2lzdGVyLCAxMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdp
c3RlciwgMTApOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkYXRhVGVtcFJl
Z2lzdGVyLCBvcDIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVn
aXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YmdleihjbXBUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihj
bXBUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAg
ICAgICAgICByZXR1cm4ganVtcCgpOwogICAgICAgICB9CkBAIC0yMzY0LDYgKzIzNzQsOCBAQCBw
dWJsaWM6CiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CiAgICAgICAgIERhdGFMYWJlbDMy
IGxhYmVsKHRoaXMpOwogICAgICAgICBtb3ZlKGltbSwgZGVzdCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLm5vcCgpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgbV9maXhlZFdp
ZHRoID0gZmFsc2U7CiAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9CkBAIC0yMzczLDYgKzIz
ODUsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CiAgICAgICAgIERh
dGFMYWJlbFB0ciBsYWJlbCh0aGlzKTsKICAgICAgICAgbW92ZShpbml0aWFsVmFsdWUsIGRlc3Qp
OworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gbGFiZWw7CiAg
ICAgfQpAQCAtMjg5MCw4ICsyOTA0LDYgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hFcXVh
bChSZWdpc3RlcklEIHJzLCBSZWdpc3RlcklEIHJ0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJs
ZXIubm9wKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5hcHBlbmRKdW1wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJlcShycywgcnQsIDApOwogICAg
ICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTI5MDEsOCArMjkxMyw2IEBAIHB1YmxpYzoKIAog
ICAgIEp1bXAgYnJhbmNoTm90RXF1YWwoUmVnaXN0ZXJJRCBycywgUmVnaXN0ZXJJRCBydCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5ub3Ao
KTsKICAgICAgICAgbV9hc3NlbWJsZXIuYXBwZW5kSnVtcCgpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5ibmUocnMsIHJ0LCAwKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Cg==
</data>
<flag name="review"
          id="353847"
          type_id="1"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336192</attachid>
            <date>2018-03-21 07:45:52 -0700</date>
            <delta_ts>2018-04-04 07:31:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>nops.patch</filename>
            <type>text/plain</type>
            <size>9955</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGY1ZjVlYTEuLjc4M2FjODMKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMDMtMjEgIFN0YW5pc2xhdiBPY292YWogIDxz
dGFuaXNsYXYub2NvdmFqQHJ0LXJrLmNvbT4KKworICAgICAgICBbTUlQU10gT3B0aW1pemUgZ2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBicmFuY2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIHBhdGNoIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDEzMjggYWRkZWQgdHdvIG5vcCBpbnN0cnVjdGlvbnMgdG8KKyAgICAg
ICAgYnJhbmNoRXF1YWwoKSBhbmQgYnJhbmNoTm90RXF1YWwoKSBpbiBvcmRlciB0byBhbGxvdyB0
aGUgY29kZSBnZW5lcmF0ZWQgYnkgYnJhbmNoUHRyV2l0aFBhdGNoKCkKKyAgICAgICAgdG8gYmUg
cmV2ZXJ0ZWQgYmFjayB0byBicmFuY2hQdHJXaXRoUGF0Y2ggYWZ0ZXIgcmVwbGFjaW5nIGl0IHdp
dGggYSA0LWluc3RydWN0aW9uIGp1bXAuCisgICAgICAgIEhvd2V2ZXIsIHRoaXMgYWRkcyBhIHNp
Z25pZmljYW50IG92ZXJoZWFkIGZvciBhbGwgb3RoZXIgdHlwZXMgb2YgYnJhbmNoZXMuIFNpbmNl
IHRoZXNlIG5vcCdzCisgICAgICAgIHByb3RlY3QgdGhlIGNvZGUgdGhhdCBpcyBnZW5lcmF0ZWQg
YnkgYnJhbmNoUHRyV2l0aFBhdGNoLCB0aGlzIGZ1bmN0aW9uIHNlZW1zIGxpa2UgYSBiZXR0ZXIK
KyAgICAgICAgcGxhY2UgdG8gYWRkIHRoZW0uCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXBhdGNoSW50MzIpOgor
ICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9Nb3ZlKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFu
Y2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoUHRyV2l0
aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hFcXVhbCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoTm90RXF1YWwpOgorCiAy
MDE4LTAzLTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLiBGaXggR1RLIGFuZCBXUEUgZGVidWcgYnVpbGQgYWZ0ZXIgcjIy
OTc5OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVy
LmgKaW5kZXggN2E3NDdhOS4uYTMzODczZAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01JUFNBc3NlbWJsZXIuaApAQCAtOTM5LDggKzkzOSw3IEBAIHB1YmxpYzoKICAgICAgICAg
aW5zbisrOwogICAgICAgICBBU1NFUlQoKCppbnNuICYgMHhmYzAwMDAwMCkgPT0gMHgzNDAwMDAw
MCk7IC8vIG9yaQogICAgICAgICAqaW5zbiA9ICgqaW5zbiAmIDB4ZmZmZjAwMDApIHwgKHRvICYg
MHhmZmZmKTsKLSAgICAgICAgaW5zbi0tOwotICAgICAgICBjYWNoZUZsdXNoKGluc24sIDIgKiBz
aXplb2YoTUlQU1dvcmQpKTsKKyAgICAgICAgY2FjaGVGbHVzaChmcm9tLCAyICogc2l6ZW9mKE1J
UFNXb3JkKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGludDMyX3QgcmVhZEludDMyKHZvaWQqIGZy
b20pCkBAIC0xMDEzLDcgKzEwMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAqaW5zbiA9IDB4
MDAwMDAwMDA7CiAgICAgICAgICAgICBjb2RlU2l6ZSArPSBzaXplb2YoTUlQU1dvcmQpOwogICAg
ICAgICB9Ci0gICAgICAgIGNhY2hlRmx1c2goaW5zbiwgY29kZVNpemUpOworICAgICAgICBjYWNo
ZUZsdXNoKGluc3RydWN0aW9uU3RhcnQsIGNvZGVTaXplKTsKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
TUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaAppbmRleCBhOWNlNGIwLi5kN2QyNGUwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMTk2MCw3ICsxOTYwLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIG5vcAogICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZs
b3cKICAgICAgICAgICAgICAgICBub3AKLSAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
ICAgICBiICAgICAgIE5vX292ZXJmbG93CiAgICAgICAgICAgICAgICAgbm9wCiAgICAgICAgICAg
ICAgICAgbm9wCiAgICAgICAgICAgICAgICAgbm9wCkBAIC0xOTY4LDEwICsxOTY4LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgICAgICovCiAgICAgICAgICAgICBtb3ZlKGRlc3QsIGRhdGFUZW1wUmVn
aXN0ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIs
IGRhdGFUZW1wUmVnaXN0ZXIsIHNyYyk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNt
cFRlbXBSZWdpc3RlciwgMTIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1w
UmVnaXN0ZXIsIDEwKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwgZGF0YVRl
bXBSZWdpc3Rlciwgc3JjKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVt
cFJlZ2lzdGVyLCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA5KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJn
ZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwog
ICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKICAgICAgICAgfQpAQCAtMjAxMyw3ICsyMDEzLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIG5vcAogICAgICAgICAgICAgICAgIGIgICAgICAg
T3ZlcmZsb3cKICAgICAgICAgICAgICAgICBub3AKLSAgICAgICAgICAgICAgICBub3AKKyAgICAg
ICAgICAgICAgICBiICAgICAgIE5vX292ZXJmbG93CiAgICAgICAgICAgICAgICAgbm9wCiAgICAg
ICAgICAgICAgICAgbm9wCiAgICAgICAgICAgICAgICAgbm9wCkBAIC0yMDIxLDEwICsyMDIxLDEw
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICovCiAgICAgICAgICAgICBtb3ZlKG9wMSwgZGF0YVRl
bXBSZWdpc3Rlcik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJs
dHooY21wVGVtcFJlZ2lzdGVyLCAxMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNt
cFRlbXBSZWdpc3RlciwgMTApOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0LCBk
YXRhVGVtcFJlZ2lzdGVyLCBvcDIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihj
bXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9w
KCk7CiAgICAgICAgICAgICByZXR1cm4ganVtcCgpOwogICAgICAgICB9CkBAIC0yMDg2LDcgKzIw
ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbm9wCiAgICAgICAgICAgICAgICAgYiAg
ICAgICBPdmVyZmxvdwogICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAor
ICAgICAgICAgICAgICAgIGIgICAgICAgTm9fb3ZlcmZsb3cKICAgICAgICAgICAgICAgICBub3AK
ICAgICAgICAgICAgICAgICBub3AKICAgICAgICAgICAgICAgICBub3AKQEAgLTIwOTUsMjEgKzIw
OTUsMjEgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAm
JiBpbW0ubV92YWx1ZSAgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgewogICAgICAgICAgICAg
ICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1t
Lm1fdmFsdWUpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lz
dGVyLCAxNCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0
ZXIsIDEyKTsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJlZ2lz
dGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CiAgICAgICAgICAgICAgICAgc3Rv
cmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKICAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFs
dWUpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA5
KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7
CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNt
cFRlbXBSZWdpc3RlciwgMTQpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21w
VGVtcFJlZ2lzdGVyLCAxMik7CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0
YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAg
ICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOwogICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lz
dGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXoo
Y21wVGVtcFJlZ2lzdGVyLCA5KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNt
cFRlbXBSZWdpc3RlciwgNyk7CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4ganVtcCgpOwpAQCAtMjE1Nyw3ICsyMTU3
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG5vcAogICAgICAgICAgICAgICAgIGIgICAg
ICAgT3ZlcmZsb3cKICAgICAgICAgICAgICAgICBub3AKLSAgICAgICAgICAgICAgICBub3AKKyAg
ICAgICAgICAgICAgICBiICAgICAgIE5vX292ZXJmbG93CiAgICAgICAgICAgICAgICAgbm9wCiAg
ICAgICAgICAgICAgICAgbm9wCiAgICAgICAgICAgICAgICAgbm9wCkBAIC0yMTY3LDcgKzIxNjcs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmhpKGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZsbyhkZXN0KTsKICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnNyYShhZGRyVGVtcFJlZ2lzdGVyLCBkZXN0LCAzMSk7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5iZXEoZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgOSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdp
c3RlciwgNyk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgICAgIHJl
dHVybiBqdW1wKCk7CiAgICAgICAgIH0KQEAgLTIyMDIsNyArMjIwMiw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBub3AKICAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CiAgICAg
ICAgICAgICAgICAgbm9wCi0gICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAg
ICAgICBOb19vdmVyZmxvdwogICAgICAgICAgICAgICAgIG5vcAogICAgICAgICAgICAgICAgIG5v
cAogICAgICAgICAgICAgICAgIG5vcApAQCAtMjIxMiw3ICsyMjEyLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubWZoaShkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm1mbG8oZGVzdCk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zcmEoYWRk
clRlbXBSZWdpc3RlciwgZGVzdCwgMzEpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKGRh
dGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYmVxKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgICAgICByZXR1cm4ganVtcCgpOwogICAg
ICAgICB9CkBAIC0yMjU0LDcgKzIyNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbm9w
CiAgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdwogICAgICAgICAgICAgICAgIG5vcAot
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgTm9fb3ZlcmZsb3cK
ICAgICAgICAgICAgICAgICBub3AKICAgICAgICAgICAgICAgICBub3AKICAgICAgICAgICAgICAg
ICBub3AKQEAgLTIyNjIsMTAgKzIyNjIsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgKi8KICAg
ICAgICAgICAgIG1vdmUoZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgICBtX2Fz
c2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjKTsK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCAxMik7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgMTApOwogICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmMpOwogICAgICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1w
UmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIs
IDkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOwog
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgICAgICByZXR1cm4ganVtcCgp
OwogICAgICAgICB9CkBAIC0yMzEzLDcgKzIzMTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgbm9wCiAgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdwogICAgICAgICAgICAgICAg
IG5vcAotICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgTm9fb3Zl
cmZsb3cKICAgICAgICAgICAgICAgICBub3AKICAgICAgICAgICAgICAgICBub3AKICAgICAgICAg
ICAgICAgICBub3AKQEAgLTIzMjEsMTAgKzIzMjEsMTAgQEAgcHVibGljOgogICAgICAgICAgICAg
Ki8KICAgICAgICAgICAgIG1vdmUob3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBv
cDIpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDEyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CiAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0
YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdp
c3RlciwgOSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3Rlciwg
Nyk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgICAgIHJldHVybiBq
dW1wKCk7CiAgICAgICAgIH0KQEAgLTI1MzMsNiArMjUzMyw4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CiAgICAgICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRo
UGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5vcCgpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgSnVtcCB0
ZW1wID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbV9m
aXhlZFdpZHRoID0gZmFsc2U7CiAgICAgICAgIHJldHVybiB0ZW1wOwpAQCAtMjU0Myw2ICsyNTQ1
LDggQEAgcHVibGljOgogICAgICAgICBtX2ZpeGVkV2lkdGggPSB0cnVlOwogICAgICAgICBsb2Fk
MzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRo
UGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5vcCgpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgSnVtcCB0
ZW1wID0gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICAgbV9maXhlZFdpZHRoID0gZmFsc2U7CiAgICAgICAgIHJldHVybiB0ZW1wOwpAQCAt
MzA1OCw4ICszMDYyLDYgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hFcXVhbChSZWdpc3Rl
cklEIHJzLCBSZWdpc3RlcklEIHJ0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5hcHBlbmRK
dW1wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJlcShycywgcnQsIDApOwogICAgICAgICBtX2Fz
c2VtYmxlci5ub3AoKTsKQEAgLTMwNjksOCArMzA3MSw2IEBAIHB1YmxpYzoKIAogICAgIEp1bXAg
YnJhbmNoTm90RXF1YWwoUmVnaXN0ZXJJRCBycywgUmVnaXN0ZXJJRCBydCkKICAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm5vcCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAg
ICAgbV9hc3NlbWJsZXIuYXBwZW5kSnVtcCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5ibmUocnMs
IHJ0LCAwKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337166</attachid>
            <date>2018-04-04 07:31:49 -0700</date>
            <delta_ts>2018-04-05 12:12:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>nops.patch</filename>
            <type>text/plain</type>
            <size>12318</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGUwNWY1ZjAuLjcxOTdmNTgKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTgtMDQtMDQgIFN0YW5pc2xhdiBPY292YWogIDxz
dGFuaXNsYXYub2NvdmFqQHJ0LXJrLmNvbT4KKworICAgICAgICBbTUlQU10gT3B0aW1pemUgZ2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBicmFuY2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIHBhdGNoIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDEzMjggYWRkZWQgdHdvIG5vcCBpbnN0cnVjdGlvbnMgdG8KKyAgICAg
ICAgYnJhbmNoRXF1YWwoKSBhbmQgYnJhbmNoTm90RXF1YWwoKSBpbiBvcmRlciB0byBhbGxvdyB0
aGUgY29kZSBnZW5lcmF0ZWQgYnkgYnJhbmNoUHRyV2l0aFBhdGNoKCkKKyAgICAgICAgdG8gYmUg
cmV2ZXJ0ZWQgYmFjayB0byBicmFuY2hQdHJXaXRoUGF0Y2ggYWZ0ZXIgcmVwbGFjaW5nIGl0IHdp
dGggYSA0LWluc3RydWN0aW9uIGp1bXAuCisgICAgICAgIEhvd2V2ZXIsIHRoaXMgYWRkcyBhIHNp
Z25pZmljYW50IG92ZXJoZWFkIGZvciBhbGwgb3RoZXIgdHlwZXMgb2YgYnJhbmNoZXMuIFNpbmNl
IHRoZXNlIG5vcCdzCisgICAgICAgIHByb3RlY3QgdGhlIGNvZGUgdGhhdCBpcyBnZW5lcmF0ZWQg
YnkgYnJhbmNoUHRyV2l0aFBhdGNoLCB0aGlzIGZ1bmN0aW9uIHNlZW1zIGxpa2UgYSBiZXR0ZXIK
KyAgICAgICAgcGxhY2UgdG8gYWRkIHRoZW0uCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXBhdGNoSW50MzIpOgor
ICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9Nb3ZlKToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFu
Y2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoTmVnMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFB0cldpdGhQYXRjaCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKwogMjAxOC0wNC0w
MyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEdDIHNob3VsZG4n
dCBkbyBvYmplY3QgZGlzdGFuY2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01JUFNBc3NlbWJsZXIuaAppbmRleCAyMGY4N2NlLi5jZTBmNjliCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCkBAIC05NDQsOCArOTQ0LDcgQEAg
cHVibGljOgogICAgICAgICBpbnNuKys7CiAgICAgICAgIEFTU0VSVCgoKmluc24gJiAweGZjMDAw
MDAwKSA9PSAweDM0MDAwMDAwKTsgLy8gb3JpCiAgICAgICAgICppbnNuID0gKCppbnNuICYgMHhm
ZmZmMDAwMCkgfCAodG8gJiAweGZmZmYpOwotICAgICAgICBpbnNuLS07Ci0gICAgICAgIGNhY2hl
Rmx1c2goaW5zbiwgMiAqIHNpemVvZihNSVBTV29yZCkpOworICAgICAgICBjYWNoZUZsdXNoKGZy
b20sIDIgKiBzaXplb2YoTUlQU1dvcmQpKTsKICAgICB9CiAKICAgICBzdGF0aWMgaW50MzJfdCBy
ZWFkSW50MzIodm9pZCogZnJvbSkKQEAgLTEwMTgsNyArMTAxNyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICppbnNuID0gMHgwMDAwMDAwMDsKICAgICAgICAgICAgIGNvZGVTaXplICs9IHNpemVv
ZihNSVBTV29yZCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBjb2RlU2l6
ZSk7CisgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb25TdGFydCwgY29kZVNpemUpOwogICAg
IH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0
YXJ0LCB2b2lkKiB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IDhlNjY3NzcuLjNjOGU5YzQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0yMDAy
LDcgKzIwMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbm9wCiAgICAgICAgICAgICAg
ICAgYiAgICAgICBPdmVyZmxvdwogICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgTm9fb3ZlcmZsb3cKICAgICAgICAgICAgICAg
ICBub3AKICAgICAgICAgICAgICAgICBub3AKICAgICAgICAgICAgICAgICBub3AKQEAgLTIwMTAs
MTAgKzIwMTAsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG1vdmUo
ZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNu
KGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjKTsKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMik7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YWRkdShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmMpOwogICAgICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAgICAgICAgbV9h
c3NlbWJsZXIubm9wKCk7CiAgICAgICAgICAgICByZXR1cm4ganVtcCgpOwogICAgICAgICB9CkBA
IC0yMDU1LDcgKzIwNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbm9wCiAgICAgICAg
ICAgICAgICAgYiAgICAgICBPdmVyZmxvdwogICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAg
ICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgTm9fb3ZlcmZsb3cKICAgICAgICAg
ICAgICAgICBub3AKICAgICAgICAgICAgICAgICBub3AKICAgICAgICAgICAgICAgICBub3AKQEAg
LTIwNjMsMTAgKzIwNjMsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgKi8KICAgICAgICAgICAg
IG1vdmUob3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhv
ckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOwotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEyKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CiAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGR1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CiAgICAgICAgICAgICBtX2Fz
c2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgOSk7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CiAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CiAgICAgICAg
IH0KQEAgLTIxMTEsMTQgKzIxMTEsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKChj
b25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFBvc2l0aXZl
T3JaZXJvKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAg
ICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewogICAgICAgICAgICAgICAgIGlmIChpbW0ubV92
YWx1ZSA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooc3JjLCAx
MSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooc3JjLCA5KTsKICAgICAg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7
Ci0gICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooZGVzdCwgOSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooZGVzdCwgNyk7CiAgICAgICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooc3JjLCAxMSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmJnZXooc3JjLCA5KTsKICAgICAgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkaXUoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmJsdHooZGVzdCwgOSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJsdHooZGVzdCwgNyk7CiAgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4ganVtcCgpOwpAQCAt
MjE2Miw3ICsyMTYyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBub3AKICAgICAg
ICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdwogICAgICAgICAgICAgICAgICAgICBub3AK
LSAgICAgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgICAgIGIgICAgICAgTm9f
b3ZlcmZsb3cKICAgICAgICAgICAgICAgICAgICAgbm9wCiAgICAgICAgICAgICAgICAgICAgIG5v
cAogICAgICAgICAgICAgICAgICAgICBub3AKQEAgLTIxNzMsOSArMjE3Myw5IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0
YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGR1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdp
c3Rlcik7CiAgICAgICAgICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1f
cHRyKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3Rlciwg
MTEpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCA5
KTsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3Rlciwg
ZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgOSk7CisgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm5vcCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB1aW50cHRy
X3QgYWRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGRlc3QubV9wdHIpOwpAQCAtMjE4
NCwyNSArMjE4NCwyNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVl
ID49IDAgJiYgaW1tLm1fdmFsdWUgIDw9IDMyNzY3KSB7CiAgICAgICAgICAgICAgICAgICAgIG1v
dmUoZGF0YVRlbXBSZWdpc3RlciwgY21wVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
aW1tLm1fdmFsdWUpOwotICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRl
bXBSZWdpc3RlciwgMTEpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNt
cFRlbXBSZWdpc3RlciwgOSk7CiAgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KGRh
dGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooZGF0YVRlbXBSZWdpc3RlciwgOSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooZGF0YVRlbXBSZWdpc3RlciwgNyk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoaW1tLm1fdmFsdWUgPj0gLTMyNzY4ICYmIGltbS5tX3ZhbHVlIDwgMCkgewogICAg
ICAgICAgICAgICAgICAgICBtb3ZlKGRhdGFUZW1wUmVnaXN0ZXIsIGNtcFRlbXBSZWdpc3Rlcik7
CiAgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0ZXIs
IGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDExKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDkpOwogICAgICAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zdyhkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZHIg
JiAweGZmZmYpOwotICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBS
ZWdpc3RlciwgOSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVt
cFJlZ2lzdGVyLCA3KTsKICAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbW92ZShpbW0sIGlt
bVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24o
Y21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwogICAg
ICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMik7CisgICAgICAgICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CiAgICAgICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN3KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAm
IDB4ZmZmZik7CiAgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVt
cFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgOSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKICAgICAg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQpAQCAtMjI1MSw3ICsyMjUxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IG5vcAogICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKICAgICAgICAgICAgICAgICBu
b3AKLSAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE5vX292ZXJm
bG93CiAgICAgICAgICAgICAgICAgbm9wCiAgICAgICAgICAgICAgICAgbm9wCiAgICAgICAgICAg
ICAgICAgbm9wCkBAIC0yMjYxLDcgKzIyNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5tZmhpKGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bWZsbyhkZXN0KTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNyYShhZGRyVGVtcFJlZ2lzdGVy
LCBkZXN0LCAzMSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRlbXBSZWdpc3Rl
ciwgYWRkclRlbXBSZWdpc3RlciwgOSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0
YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgNyk7CiAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3AoKTsKICAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CiAgICAgICAgIH0KQEAgLTIy
OTYsNyArMjI5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBub3AKICAgICAgICAgICAg
ICAgICBiICAgICAgIE92ZXJmbG93CiAgICAgICAgICAgICAgICAgbm9wCi0gICAgICAgICAgICAg
ICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBOb19vdmVyZmxvdwogICAgICAgICAgICAg
ICAgIG5vcAogICAgICAgICAgICAgICAgIG5vcAogICAgICAgICAgICAgICAgIG5vcApAQCAtMjMw
Niw3ICsyMzA2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZoaShkYXRh
VGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1mbG8oZGVzdCk7CiAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zcmEoYWRkclRlbXBSZWdpc3RlciwgZGVzdCwgMzEpOwotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0
ZXIsIDkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKGRhdGFUZW1wUmVnaXN0ZXIsIGFk
ZHJUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAg
ICAgICAgICByZXR1cm4ganVtcCgpOwogICAgICAgICB9CkBAIC0yMzQ4LDcgKzIzNDgsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgbm9wCiAgICAgICAgICAgICAgICAgYiAgICAgICBPdmVy
ZmxvdwogICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgICAgIGIgICAgICAgTm9fb3ZlcmZsb3cKICAgICAgICAgICAgICAgICBub3AKICAgICAgICAg
ICAgICAgICBub3AKICAgICAgICAgICAgICAgICBub3AKQEAgLTIzNTYsMTAgKzIzNTYsMTAgQEAg
cHVibGljOgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG1vdmUoZGVzdCwgZGF0YVRlbXBS
ZWdpc3Rlcik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3Rl
ciwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXoo
Y21wVGVtcFJlZ2lzdGVyLCAxMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRl
bXBSZWdpc3RlciwgMTApOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkYXRh
VGVtcFJlZ2lzdGVyLCBzcmMpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBU
ZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CiAgICAgICAgICAgICByZXR1cm4ganVtcCgpOwogICAgICAgICB9CkBAIC0yNDA3LDcgKzI0MDcs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbm9wCiAgICAgICAgICAgICAgICAgYiAgICAg
ICBPdmVyZmxvdwogICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgIGIgICAgICAgTm9fb3ZlcmZsb3cKICAgICAgICAgICAgICAgICBub3AKICAg
ICAgICAgICAgICAgICBub3AKICAgICAgICAgICAgICAgICBub3AKQEAgLTI0MTUsMTAgKzI0MTUs
MTAgQEAgcHVibGljOgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG1vdmUob3AxLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YmdleihjbXBUZW1wUmVnaXN0ZXIsIDEyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXoo
Y21wVGVtcFJlZ2lzdGVyLCAxMCk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3Qs
IGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNu
KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgOSk7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKICAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CiAgICAgICAgIH0KQEAgLTI0NTEsNyAr
MjQ1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBub3AKICAgICAgICAgICAgICAgICBi
ICAgICAgIE92ZXJmbG93CiAgICAgICAgICAgICAgICAgbm9wCi0gICAgICAgICAgICAgICAgbm9w
CisgICAgICAgICAgICAgICAgYiAgICAgICBOb19vdmVyZmxvdwogICAgICAgICAgICAgICAgIG5v
cAogICAgICAgICAgICAgICAgIG5vcAogICAgICAgICAgICAgICAgIG5vcApAQCAtMjY3OCw2ICsy
Njc4LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKICAg
ICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLm5vcCgpOwogICAgICAgICBKdW1wIHRlbXAgPSBicmFuY2gzMihjb25kLCBsZWZ0LCBpbW1U
ZW1wUmVnaXN0ZXIpOwogICAgICAgICBtX2ZpeGVkV2lkdGggPSBmYWxzZTsKICAgICAgICAgcmV0
dXJuIHRlbXA7CkBAIC0yNjg4LDYgKzI2OTAsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZml4ZWRX
aWR0aCA9IHRydWU7CiAgICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAg
ICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLm5vcCgpOwogICAgICAgICBKdW1wIHRlbXAgPSBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJl
Z2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgICAgICBtX2ZpeGVkV2lkdGggPSBmYWxzZTsK
ICAgICAgICAgcmV0dXJuIHRlbXA7CkBAIC0zMjAzLDggKzMyMDcsNiBAQCBwdWJsaWM6CiAKICAg
ICBKdW1wIGJyYW5jaEVxdWFsKFJlZ2lzdGVySUQgcnMsIFJlZ2lzdGVySUQgcnQpCiAgICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmFwcGVuZEp1bXAoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYmVx
KHJzLCBydCwgMCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMzIxNCw4ICszMjE2
LDYgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hOb3RFcXVhbChSZWdpc3RlcklEIHJzLCBS
ZWdpc3RlcklEIHJ0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5hcHBlbmRKdW1wKCk7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmJuZShycywgcnQsIDApOwogICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>