<?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>151903</bug_id>
          
          <creation_ts>2015-12-04 18:50:32 -0800</creation_ts>
          <short_desc>[JSC] Add Float-Double conversion to B3, use it to implement fround()</short_desc>
          <delta_ts>2015-12-07 17:16:47 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>151974</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1146550</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-04 18:50:32 -0800</bug_when>
    <thetext>[JSC] Add Float-Double conversion to B3, use it to implement fround()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146551</commentid>
    <comment_count>1</comment_count>
      <attachid>266696</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-04 18:52:26 -0800</bug_when>
    <thetext>Created attachment 266696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146553</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-04 19:06:02 -0800</bug_when>
    <thetext>There were surprisingly few changes require to add Float :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146564</commentid>
    <comment_count>3</comment_count>
      <attachid>266696</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-04 19:39:19 -0800</bug_when>
    <thetext>Comment on attachment 266696
Patch

I like it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146566</commentid>
    <comment_count>4</comment_count>
      <attachid>266696</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-04 19:43:50 -0800</bug_when>
    <thetext>Comment on attachment 266696
Patch

Wait, part of what is going on here is that you&apos;re deferring implementing float opcodes in the macro assembler. This puts us in a weird state since it increases the amount of macro assembler work we will have to do in order to declare feature complete. Your patch is easy but you haven&apos;t established how much work the macro assembler will be. 

Its important for us to quickly get to the point where FTL and b3 are complete, and I fear like this could actually make it take longer to get there. One way to get around this is to have your patch implement some of the basic float operations to illustrate that it&apos;s not hard. 

Clearing r? while we consider this a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146569</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-04 20:06:23 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 266696 [details]
&gt; Patch
&gt; 
&gt; Wait, part of what is going on here is that you&apos;re deferring implementing
&gt; float opcodes in the macro assembler. This puts us in a weird state since it
&gt; increases the amount of macro assembler work we will have to do in order to
&gt; declare feature complete. Your patch is easy but you haven&apos;t established how
&gt; much work the macro assembler will be. 
&gt; 
&gt; Its important for us to quickly get to the point where FTL and b3 are
&gt; complete, and I fear like this could actually make it take longer to get
&gt; there. One way to get around this is to have your patch implement some of
&gt; the basic float operations to illustrate that it&apos;s not hard. 
&gt; 
&gt; Clearing r? while we consider this a bit.

I was not planning on adding float support on any other operation than those two right now.

Eventually we&apos;ll extend the MacroAssembler. Right now, the only opcode that can use the Float is FloatToDouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146576</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-04 20:47:14 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 266696 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Wait, part of what is going on here is that you&apos;re deferring implementing
&gt; &gt; float opcodes in the macro assembler. This puts us in a weird state since it
&gt; &gt; increases the amount of macro assembler work we will have to do in order to
&gt; &gt; declare feature complete. Your patch is easy but you haven&apos;t established how
&gt; &gt; much work the macro assembler will be. 
&gt; &gt; 
&gt; &gt; Its important for us to quickly get to the point where FTL and b3 are
&gt; &gt; complete, and I fear like this could actually make it take longer to get
&gt; &gt; there. One way to get around this is to have your patch implement some of
&gt; &gt; the basic float operations to illustrate that it&apos;s not hard. 
&gt; &gt; 
&gt; &gt; Clearing r? while we consider this a bit.
&gt; 
&gt; I was not planning on adding float support on any other operation than those
&gt; two right now.
&gt; 
&gt; Eventually we&apos;ll extend the MacroAssembler. Right now, the only opcode that
&gt; can use the Float is FloatToDouble.

Do you intend to add validation rules for that?  If not then we are increasing the number of things we will have to do before we finish B3. I don&apos;t like the idea of B3 being indefinitely incomplete, and so long as there are B3 constructs that pass validation but assert in lowering, we are in an incomplete state. 

I recommend either addibg lowering support for floats everywhere that we lower doubles, or just implementing Fround. Addibg float support will probably take some work - for exemple the compare operations will be super annoying - but it&apos;s better than making B3 appear to support something that we never actually use and can&apos;t really lower.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146585</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-04 21:18:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; Comment on attachment 266696 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Wait, part of what is going on here is that you&apos;re deferring implementing
&gt; &gt; &gt; float opcodes in the macro assembler. This puts us in a weird state since it
&gt; &gt; &gt; increases the amount of macro assembler work we will have to do in order to
&gt; &gt; &gt; declare feature complete. Your patch is easy but you haven&apos;t established how
&gt; &gt; &gt; much work the macro assembler will be. 
&gt; &gt; &gt; 
&gt; &gt; &gt; Its important for us to quickly get to the point where FTL and b3 are
&gt; &gt; &gt; complete, and I fear like this could actually make it take longer to get
&gt; &gt; &gt; there. One way to get around this is to have your patch implement some of
&gt; &gt; &gt; the basic float operations to illustrate that it&apos;s not hard. 
&gt; &gt; &gt; 
&gt; &gt; &gt; Clearing r? while we consider this a bit.
&gt; &gt; 
&gt; &gt; I was not planning on adding float support on any other operation than those
&gt; &gt; two right now.
&gt; &gt; 
&gt; &gt; Eventually we&apos;ll extend the MacroAssembler. Right now, the only opcode that
&gt; &gt; can use the Float is FloatToDouble.
&gt; 
&gt; Do you intend to add validation rules for that?  If not then we are
&gt; increasing the number of things we will have to do before we finish B3. I
&gt; don&apos;t like the idea of B3 being indefinitely incomplete, and so long as
&gt; there are B3 constructs that pass validation but assert in lowering, we are
&gt; in an incomplete state. 
&gt; 
&gt; I recommend either addibg lowering support for floats everywhere that we
&gt; lower doubles, or just implementing Fround. Addibg float support will
&gt; probably take some work - for exemple the compare operations will be super
&gt; annoying - but it&apos;s better than making B3 appear to support something that
&gt; we never actually use and can&apos;t really lower.

For now, the only opcode that should pass validation with a Float as input is &quot;FloatToDouble&quot;.

I should change the few isFloat() to &quot; == Double&quot;. It is an oversight, but I did not change isFloat() to return true for Float.

It is better to add Float early so that we can think about it when we make other constructs. It seems less painful than adding it later.
We don&apos;t have to add any support not required for FTL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146592</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-04 21:37:28 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; Comment on attachment 266696 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Wait, part of what is going on here is that you&apos;re deferring implementing
&gt; &gt; &gt; &gt; float opcodes in the macro assembler. This puts us in a weird state since it
&gt; &gt; &gt; &gt; increases the amount of macro assembler work we will have to do in order to
&gt; &gt; &gt; &gt; declare feature complete. Your patch is easy but you haven&apos;t established how
&gt; &gt; &gt; &gt; much work the macro assembler will be. 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Its important for us to quickly get to the point where FTL and b3 are
&gt; &gt; &gt; &gt; complete, and I fear like this could actually make it take longer to get
&gt; &gt; &gt; &gt; there. One way to get around this is to have your patch implement some of
&gt; &gt; &gt; &gt; the basic float operations to illustrate that it&apos;s not hard. 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Clearing r? while we consider this a bit.
&gt; &gt; &gt; 
&gt; &gt; &gt; I was not planning on adding float support on any other operation than those
&gt; &gt; &gt; two right now.
&gt; &gt; &gt; 
&gt; &gt; &gt; Eventually we&apos;ll extend the MacroAssembler. Right now, the only opcode that
&gt; &gt; &gt; can use the Float is FloatToDouble.
&gt; &gt; 
&gt; &gt; Do you intend to add validation rules for that?  If not then we are
&gt; &gt; increasing the number of things we will have to do before we finish B3. I
&gt; &gt; don&apos;t like the idea of B3 being indefinitely incomplete, and so long as
&gt; &gt; there are B3 constructs that pass validation but assert in lowering, we are
&gt; &gt; in an incomplete state. 
&gt; &gt; 
&gt; &gt; I recommend either addibg lowering support for floats everywhere that we
&gt; &gt; lower doubles, or just implementing Fround. Addibg float support will
&gt; &gt; probably take some work - for exemple the compare operations will be super
&gt; &gt; annoying - but it&apos;s better than making B3 appear to support something that
&gt; &gt; we never actually use and can&apos;t really lower.
&gt; 
&gt; For now, the only opcode that should pass validation with a Float as input
&gt; is &quot;FloatToDouble&quot;.

That&apos;s probably ok, but I don&apos;t see how that&apos;s better than implementing FRound and adding Float when we are ready. 

&gt; 
&gt; I should change the few isFloat() to &quot; == Double&quot;. It is an oversight, but I
&gt; did not change isFloat() to return true for Float.

That&apos;s a problem. I think that at a minimum the patch should be complete in this regard. 

&gt; 
&gt; It is better to add Float early so that we can think about it when we make
&gt; other constructs. It seems less painful than adding it later.
&gt; We don&apos;t have to add any support not required for FTL.

But we can always fix constructs later. I don&apos;t think it would be painful if we added them all later. 

I don&apos;t like the approach of having a type that is essentially unused except for FRound, since this feels like the sort of thing that we wouldn&apos;t want to make a habit of. In this case, either the MacroAssemlber support is easy in which case you can add it in this patch, or it&apos;s hard enough that it requires more thought in which case we should add it once we know how to. In particular I don&apos;t like having this Oops on each binop and unop since it&apos;s not actually enough to support floats (due to comparisons) and it is enough to be annoying when adding non-Float code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146604</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-04 22:25:11 -0800</bug_when>
    <thetext>Another thought: this patch doesn&apos;t get rid of the Float-specific opcodes that we have only because of the lack of the Float type.  This patch still leaves StoreFloat and LoadFloat.

I think that if we add Float to the compiler, we should do it in one go.  We could do this at any time, even after adding more optimizations and functionality to the compiler.  For now, what we need is FRound.  We could add FRound directly without putting the IR in an inconsistent state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146622</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-05 01:26:41 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Another thought: this patch doesn&apos;t get rid of the Float-specific opcodes
&gt; that we have only because of the lack of the Float type.  This patch still
&gt; leaves StoreFloat and LoadFloat.

This convinces me to extend this patch :)

We don&apos;t have LoadStore nor StoreFloat yet. This is gonna be so much easier with this. I&apos;ll add them too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146623</commentid>
    <comment_count>11</comment_count>
      <attachid>266696</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-05 01:47:26 -0800</bug_when>
    <thetext>Comment on attachment 266696
Patch

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

&gt; Source/JavaScriptCore/b3/B3Type.cpp:50
&gt; +        out.print(&quot;Double&quot;);

Should be &quot;Float&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146624</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-05 01:50:40 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 266696 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266696&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Type.cpp:50
&gt; &gt; +        out.print(&quot;Double&quot;);
&gt; 
&gt; Should be &quot;Float&quot;

Oops for some reason I thought this landed already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146631</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-05 06:55:20 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Another thought: this patch doesn&apos;t get rid of the Float-specific opcodes
&gt; &gt; that we have only because of the lack of the Float type.  This patch still
&gt; &gt; leaves StoreFloat and LoadFloat.
&gt; 
&gt; This convinces me to extend this patch :)
&gt; 
&gt; We don&apos;t have LoadStore nor StoreFloat yet. This is gonna be so much easier
&gt; with this. I&apos;ll add them too!

Please look at the situation we have with comparisons, branches, and conditional moves. I think that adding he floats is a significant chunk of work, and it is not something we have to do anytime soon. JavaScript definitely doesn&apos;t need floats and WebAssembly is not something we are committed to doing in the near future. I think it&apos;s a higher priority to add things that the FTL needs. I also think that to really declare victory on FTL B3, we should have a complete story for B3. I don&apos;t want to ship B3 in a state where it has some types that are half-usable - like you&apos;ll crash if you use them in the wrong kind of comparison or math op. Now that B3 is starting to look finished, I think it&apos;s best if we don&apos;t add incomplete features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146644</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-05 10:31:30 -0800</bug_when>
    <thetext>Thought about this more.  I think there are two good paths forward:

1) Elaborate on this patch and just add full Float support.  This might be the best path since you&apos;ve already done probably about half the work.  The MacroAssembler support for floats is annoying to add, but it shouldn&apos;t be that much code.

2) Just implement FRound and leave Float for later.

Adding a complete implementation of Float will cover all of my concerns.  I want B3 to get to a point where it is complete, in the sense that all types are usable with all of the things that people would expect - like, I would expect that if there is a Float type then I can add, subtract, compare, etc. on Floats.  Right now we are almost there for the types that we support in trunk.  Adding an incomplete Float feature means that we are further from the goal of being complete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147120</commentid>
    <comment_count>15</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-07 17:16:47 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 151974 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266696</attachid>
            <date>2015-12-04 18:52:26 -0800</date>
            <delta_ts>2015-12-04 19:43:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151903-20151204185200.patch</filename>
            <type>text/plain</type>
            <size>21941</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NWIxYTVlMzUwZjU3NTdjOTgxMTAxMDIxYzg3YjVhNGZkOGM5NWY0Li42NTI4MDgzYTFlNDllNzZj
NDdiODQ0ODQ5NmU5YTI1MjUwYTYyMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NiBAQAogMjAxNS0xMi0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KIAorICAgICAgICBbSlNDXSBBZGQgRmxvYXQtRG91YmxlIGNvbnZlcnNpb24gdG8gQjMs
IHVzZSBpdCB0byBpbXBsZW1lbnQgZnJvdW5kKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHdlJ2xsIG5lZWQgRmxvYXQgc3VwcG9ydCBmb3Ig
V2ViQVNNLCBJIGZpZ3VyZWQgaXQgd291bGQgYmUgZWFzaWVyCisgICAgICAgIHRvIGFkZCBEb3Vi
bGUtRmxvYXQgY29udmVyc2lvbiBkaXJlY3RseSBpbnN0ZWFkIG9mIGhpZGRpbmcgaXQgYmVoaW5k
CisgICAgICAgIHRoZSBGUm91bmQgb3Bjb2RlLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpjb252ZXJ0RG91YmxlVG9GbG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpjb252ZXJ0RmxvYXRUb0RvdWJsZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmN2dHNkMnNzX21yKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjdnRzczJzZF9tcik6CisgICAgICAgICogYjMv
QjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5
T3Bjb2RlRm9yVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om9wY29k
ZUZvclR5cGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRVbk9w
KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQmluT3ApOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTaGlmdCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlVW5PcCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlQmluT3ApOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dlcik6CisgICAgICAgICogYjMvQjNPcGNvZGUu
Y3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBiMy9CM09wY29k
ZS5oOgorICAgICAgICAqIGIzL0IzVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIGIzL0IzVHlwZS5oOgorICAgICAgICAoSlNDOjpCMzo6c2l6ZW9mVHlw
ZSk6CisgICAgICAgICogYjMvQjNWYWxpZGF0ZS5jcHA6CisgICAgICAgICogYjMvQjNWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6ZWZmZWN0cyk6CisgICAgICAgIChKU0M6OkIz
OjpWYWx1ZTo6a2V5KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjp0eXBlRm9yKToKKyAgICAg
ICAgKiBiMy9CM1ZhbHVlS2V5LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlS2V5OjptYXRl
cmlhbGl6ZSk6CisgICAgICAgICogYjMvYWlyL0FpckFyZy5oOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpBcmc6OnR5cGVGb3JCM1R5cGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Ondp
ZHRoRm9yQjNUeXBlKToKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAg
ICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGcm91bmRBcmcpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdEZyb3VuZE1lbSk6CisgICAgICAgIChKU0M6OkIzOjpydW4p
OgorICAgICAgICAqIGZ0bC9GVExCM091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6ZnJvdW5kKToKKworMjAxNS0xMi0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFw
cGxlLmNvbT4KKwogICAgICAgICBbSlNDXSBGaXggVmFsdWU6OnJldHVybnNCb29sKCkgYWZ0ZXIg
cjE5MzQzNgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxOTAyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCA2ODE0Mzg1OTc0MGNiZDU0OTFlMzg5ZjFm
YjE2MDEyMzZmZmRjZDhjLi5iMjMyMTI4MzUwYmMwYTZkYWM1OTk2OTQ1NTVjZjBkODUyOWI5NTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC04MTUsMTIgKzgxNSwyNCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmN2dHNkMnNzX3JyKHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lk
IGNvbnZlcnREb3VibGVUb0Zsb2F0KEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRzdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5jdnRzZDJzc19tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkc3QpOworICAg
IH0KKwogICAgIHZvaWQgY29udmVydEZsb2F0VG9Eb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5jdnRzczJzZF9ycihzcmMsIGRzdCk7CiAgICAgfQogCisgICAg
dm9pZCBjb252ZXJ0RmxvYXRUb0RvdWJsZShBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuY3Z0c3Myc2RfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZHN0KTsK
KyAgICB9CisKICAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggNWQyOWM1
OTJkOGM0OWQ5NzcxZjBhNDYzNWY5NzI2MjgyZTVlYjRkZS4uYTZkMWVkYjA1MTAzODEyMGNiODUw
MWFiOGJjMWY2ZjJlYTYzOTY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oCkBAIC0xOTg4LDEyICsxOTg4LDI0IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DVlRTRDJTU19Wc2RXc2QsIGRzdCwgKFJlZ2lz
dGVySUQpc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGN2dHNkMnNzX21yKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChP
UDJfQ1ZUU0QyU1NfVnNkV3NkLCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9p
ZCBjdnRzczJzZF9ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCiAgICAg
ewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7CiAgICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcChPUDJfQ1ZUU1MyU0RfVnNkV3NkLCBkc3QsIChSZWdpc3RlcklEKXNy
Yyk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjdnRzczJzZF9tcihpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1Ay
X0NWVFNTMlNEX1ZzZFdzZCwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKwogI2lmIENQVShY
ODZfNjQpCiAgICAgdm9pZCBjdnR0c2Qyc2lxX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRzdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CmluZGV4IDBmYWJlNDlhN2RjYmY2ZDg0ZmI5NGY3MjQwNjNjNWU0MDk5NDEwNDcuLmFmNzlhMzQz
ZDY1YWNiN2NmYjAzYjE4YzM4ZjNlMjQzNTY1YTYzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIEJ5IGNvbnZlbnRpb24sIHdlIHVzZSBPb3BzIHRvIG1lYW4gIkkgZG9uJ3Qga25vdyIuCiAg
ICAgQWlyOjpPcGNvZGUgdHJ5T3Bjb2RlRm9yVHlwZSgKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGUsIFR5
cGUgdHlwZSkKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29k
ZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGUsIEFpcjo6T3Bjb2RlIG9wY29kZUZsb2F0LCBU
eXBlIHR5cGUpCiAgICAgewogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGU7CiAgICAgICAgIHN3
aXRjaCAodHlwZSkgewpAQCAtNDg1LDYgKzQ4NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
SW50NjQ6CiAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGU2NDsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEZsb2F0OgorICAgICAgICAgICAgb3Bjb2RlID0gb3Bjb2RlRmxvYXQ7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEb3VibGU6CiAgICAgICAgICAgICBv
cGNvZGUgPSBvcGNvZGVEb3VibGU7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ5NywxNyArNTAw
LDE3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlRm9yVHlwZSgK
LSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6
Ok9wY29kZSBvcGNvZGVEb3VibGUsIFR5cGUgdHlwZSkKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGUsIEFp
cjo6T3Bjb2RlIG9wY29kZUZsb2F0LCBUeXBlIHR5cGUpCiAgICAgewotICAgICAgICBBaXI6Ok9w
Y29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgb3Bjb2Rl
RG91YmxlLCB0eXBlKTsKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9y
VHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIG9wY29kZURvdWJsZSwgb3Bjb2RlRmxvYXQsIHR5cGUp
OwogICAgICAgICBSRUxFQVNFX0FTU0VSVChvcGNvZGUgIT0gQWlyOjpPb3BzKTsKICAgICAgICAg
cmV0dXJuIG9wY29kZTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUz
MiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIEFpcjo6T3Bjb2RlIG9wY29kZURvdWJsZT4KKyAgICB0
ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIEFpcjo6
T3Bjb2RlIG9wY29kZURvdWJsZSAsIEFpcjo6T3Bjb2RlIG9wY29kZUZsb2F0ID0gQWlyOjpPb3Bz
PgogICAgIHZvaWQgYXBwZW5kVW5PcChWYWx1ZSogdmFsdWUpCiAgICAgewotICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgb3Bjb2Rl
RG91YmxlLCB2YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bj
b2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIG9wY29kZURvdWJsZSwgb3Bjb2RlRmxvYXQs
IHZhbHVlLT50eXBlKCkpOwogICAgICAgICAKICAgICAgICAgVG1wIHJlc3VsdCA9IHRtcChtX3Zh
bHVlKTsKIApAQCAtNTY3LDcgKzU3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIENvbW11dGF0aXZp
dHkgY29tbXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIHZvaWQgYXBwZW5kQmluT3Ao
VmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG9w
Y29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBvcGNvZGVEb3VibGUsIGxl
ZnQtPnR5cGUoKSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUo
b3Bjb2RlMzIsIG9wY29kZTY0LCBvcGNvZGVEb3VibGUsIEFpcjo6T29wcywgbGVmdC0+dHlwZSgp
KTsKICAgICAgICAgCiAgICAgICAgIFRtcCByZXN1bHQgPSB0bXAobV92YWx1ZSk7CiAgICAgICAg
IApAQCAtNjQ4LDcgKzY1MSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUg
b3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0PgogICAgIHZvaWQgYXBwZW5kU2hpZnQoVmFs
dWUqIHZhbHVlLCBWYWx1ZSogYW1vdW50KQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gb3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIEFpcjo6T29wcywgdmFsdWUt
PnR5cGUoKSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bj
b2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9vcHMsIEFpcjo6T29wcywgdmFsdWUtPnR5cGUoKSk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoaW1tKGFtb3VudCkpIHsKICAgICAgICAgICAgIGFwcGVuZChN
b3ZlLCB0bXAodmFsdWUpLCB0bXAobV92YWx1ZSkpOwpAQCAtNjY0LDcgKzY2Nyw3IEBAIHByaXZh
dGU6CiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29k
ZTY0PgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVVbk9wKFZhbHVlKiB2YWx1ZSkKICAgICB7Ci0g
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9w
Y29kZTY0LCBBaXI6Ok9vcHMsIHZhbHVlLT50eXBlKCkpOworICAgICAgICBBaXI6Ok9wY29kZSBv
cGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgQWlyOjpPb3BzLCBB
aXI6Ok9vcHMsIHZhbHVlLT50eXBlKCkpOwogICAgICAgICBpZiAob3Bjb2RlID09IEFpcjo6T29w
cykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC02ODcsNyArNjkwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9w
Y29kZTY0LCBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KICAg
ICBib29sIHRyeUFwcGVuZFN0b3JlQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKICAg
ICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2Rl
MzIsIG9wY29kZTY0LCBBaXI6Ok9vcHMsIGxlZnQtPnR5cGUoKSk7CisgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9v
cHMsIEFpcjo6T29wcywgbGVmdC0+dHlwZSgpKTsKICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6
Ok9vcHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMTQ0Niw3ICsx
NDQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyBUaGlzIG9wdGltaXphdGlvbiBt
YWtlcyBzZW5zZSBvbiBYODYuIEkgZG9uJ3Qga25vdyBpZiBpdCBtYWtlcyBzZW5zZSBhbnl3aGVy
ZSBlbHNlLgogICAgICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAobV92YWx1ZS0+Y2hpbGQo
MCkpLCB0bXAobV92YWx1ZSkpOwogICAgICAgICAgICAgICAgIGFwcGVuZCgKLSAgICAgICAgICAg
ICAgICAgICAgb3Bjb2RlRm9yVHlwZShBZGQzMiwgQWRkNjQsIEFpcjo6T29wcywgbV92YWx1ZS0+
Y2hpbGQoMCktPnR5cGUoKSksCisgICAgICAgICAgICAgICAgICAgIG9wY29kZUZvclR5cGUoQWRk
MzIsIEFkZDY0LCBBaXI6Ok9vcHMsIEFpcjo6T29wcywgbV92YWx1ZS0+Y2hpbGQoMCktPnR5cGUo
KSksCiAgICAgICAgICAgICAgICAgICAgIHRtcChtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xNTQyLDYgKzE1NDUsMTYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGNh
c2UgRmxvYXRUb0RvdWJsZTogeworICAgICAgICAgICAgYXBwZW5kVW5PcDxBaXI6Ok9vcHMsIEFp
cjo6T29wcywgQWlyOjpPb3BzLCBDb252ZXJ0RmxvYXRUb0RvdWJsZT4obV92YWx1ZS0+Y2hpbGQo
MCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBEb3Vi
bGVUb0Zsb2F0OiB7CisgICAgICAgICAgICBhcHBlbmRVbk9wPEFpcjo6T29wcywgQWlyOjpPb3Bz
LCBDb252ZXJ0RG91YmxlVG9GbG9hdD4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBBcmd1bWVudFJlZzogewogICAgICAg
ICAgICAgbV9wcm9sb2d1ZS5hcHBlbmQoSW5zdCgKICAgICAgICAgICAgICAgICBtb3ZlRm9yVHlw
ZShtX3ZhbHVlLT50eXBlKCkpLCBtX3ZhbHVlLApAQCAtMTY4Niw2ICsxNjk5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGNhc2UgSW50NjQ6CiAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUs
IFRtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiksIHRtcChjQ2FsbCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbG9hdDoKICAgICAgICAgICAgIGNhc2UgRG91
YmxlOgogICAgICAgICAgICAgICAgIGFwcGVuZChNb3ZlRG91YmxlLCBUbXAoRlBSSW5mbzo6cmV0
dXJuVmFsdWVGUFIpLCB0bXAoY0NhbGwpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE3
NTAsNyArMTc2NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIHRt
cChyaWdodCksIHJlc3VsdCk7CiAKICAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PQotICAgICAgICAgICAgICAgICAgICBvcGNvZGVGb3JUeXBlKEJyYW5jaE5lZzMyLCBCcmFuY2hO
ZWc2NCwgQWlyOjpPb3BzLCBjaGVja1ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAg
ICBvcGNvZGVGb3JUeXBlKEJyYW5jaE5lZzMyLCBCcmFuY2hOZWc2NCwgQWlyOjpPb3BzLCBBaXI6
Ok9vcHMsIGNoZWNrVmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgQ2hlY2tTcGVjaWFs
KiBzcGVjaWFsID0gZW5zdXJlQ2hlY2tTcGVjaWFsKG9wY29kZSwgMik7CiAKICAgICAgICAgICAg
ICAgICBJbnN0IGluc3QoUGF0Y2gsIGNoZWNrVmFsdWUsIEFyZzo6c3BlY2lhbChzcGVjaWFsKSk7
CkBAIC0xNzY4LDE0ICsxNzgyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBTdGFja21hcFNw
ZWNpYWw6OlJvbGVNb2RlIHN0YWNrbWFwUm9sZSA9IFN0YWNrbWFwU3BlY2lhbDo6U2FtZUFzUmVw
OwogICAgICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICAgICAg
Y2FzZSBDaGVja0FkZDoKLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEJy
YW5jaEFkZDMyLCBCcmFuY2hBZGQ2NCwgQWlyOjpPb3BzLCBtX3ZhbHVlLT50eXBlKCkpOworICAg
ICAgICAgICAgICAgIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQnJhbmNoQWRkMzIsIEJyYW5jaEFk
ZDY0LCBBaXI6Ok9vcHMsIEFpcjo6T29wcywgbV92YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAg
ICAgICBjb21tdXRhdGl2aXR5ID0gQ29tbXV0YXRpdmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENoZWNrU3ViOgotICAgICAgICAgICAgICAgIG9wY29kZSA9IG9w
Y29kZUZvclR5cGUoQnJhbmNoU3ViMzIsIEJyYW5jaFN1YjY0LCBBaXI6Ok9vcHMsIG1fdmFsdWUt
PnR5cGUoKSk7CisgICAgICAgICAgICAgICAgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShCcmFuY2hT
dWIzMiwgQnJhbmNoU3ViNjQsIEFpcjo6T29wcywgQWlyOjpPb3BzLCBtX3ZhbHVlLT50eXBlKCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDaGVja011bDoKLSAg
ICAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEJyYW5jaE11bDMyLCBCcmFuY2hN
dWw2NCwgQWlyOjpPb3BzLCBjaGVja1ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIG9w
Y29kZSA9IG9wY29kZUZvclR5cGUoQnJhbmNoTXVsMzIsIEJyYW5jaE11bDY0LCBBaXI6Ok9vcHMs
IEFpcjo6T29wcywgY2hlY2tWYWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgICAgICBzdGFja21h
cFJvbGUgPSBTdGFja21hcFNwZWNpYWw6OkZvcmNlTGF0ZVVzZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2Rl
LmNwcAppbmRleCBlMTViYjhhMTcxMGIyMjExNTA2NTc1NDNkZTI3YzI0NGFmMDAyYTFkLi44MWVl
Yzc3ODY4OGQ5NGNkYjc3YTdmZWQzMjY2NjE1ZDdmOGNlMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM09wY29kZS5jcHAKQEAgLTE2MSwxNSArMTYxLDE4IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNhc2UgVHJ1bmM6CiAgICAg
ICAgIG91dC5wcmludCgiVHJ1bmMiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRlJvdW5k
OgotICAgICAgICBvdXQucHJpbnQoIkZSb3VuZCIpOwotICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBJVG9EOgogICAgICAgICBvdXQucHJpbnQoIklUb0QiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgRFRvSTMyOgogICAgICAgICBvdXQucHJpbnQoIkRUb0kzMiIpOwogICAgICAgICByZXR1
cm47CisgICAgY2FzZSBGbG9hdFRvRG91YmxlOgorICAgICAgICBvdXQucHJpbnQoIkZsb2F0VG9E
b3VibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRG91YmxlVG9GbG9hdDoKKyAgICAg
ICAgb3V0LnByaW50KCJEb3VibGVUb0Zsb2F0Iik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEVxdWFsOgogICAgICAgICBvdXQucHJpbnQoIkVxdWFsIik7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKaW5kZXggZjBmM2FiOGJjMGM5ZWVkNTNiYjc3NTgz
OTI5MTlhZWNlODg4NTE3OS4uODdmOGZhZTE0MzhkZGYzMzQ3ZjhiZTQ1YTFmZDkzYWM1NGRmZjZk
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKQEAgLTk2LDEyICs5NiwxMyBAQCBl
bnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIFpFeHQzMiwKICAgICAvLyBUYWtlcyBJbnQ2NCBh
bmQgcmV0dXJucyBJbnQzMjoKICAgICBUcnVuYywKLSAgICAvLyBUYWtlcyBhbmQgcmV0dXJucyBE
b3VibGU6Ci0gICAgRlJvdW5kLAogICAgIC8vIFRha2VzIGludHMgYW5kIHJldHVybnMgRG91Ymxl
OgogICAgIElUb0QsCiAgICAgLy8gVGFrZXMgRG91YmxlIGFuZCByZXR1cm5zIEludDMyOgogICAg
IERUb0kzMiwKKyAgICAvLyBDb252ZXJ0IGJldHdlZW4gZG91YmxlIGFuZCBmbG9hdC4KKyAgICBG
bG9hdFRvRG91YmxlLAorICAgIERvdWJsZVRvRmxvYXQsCiAKICAgICAvLyBQb2x5bW9ycGhpYyBj
b21wYXJpc29ucywgdXNhYmxlIHdpdGggYW55IHZhbHVlIHR5cGUuIFJldHVybnMgaW50MzIgMCBv
ciAxLiBOb3RlIHRoYXQgIk5vdCIKICAgICAvLyBpcyBqdXN0IEVxdWFsKHgsIDApLCBhbmQgIlRv
Qm9vbGVhbiIgaXMganVzdCBOb3RFcXVhbCh4LCAwKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlw
ZS5jcHAKaW5kZXggMDIzNWFhNDcyMDQzYTk3MTdjNDU2ZDlhYzMwNTNjMzM0N2E3MDE5My4uNDA3
MjlkNjQzYWIxMGUzNzBlODAxNDVmNDg4N2Y4MzY5OGM2NTY4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVHlwZS5jcHAKQEAgLTQ2LDYgKzQ2LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIFR5cGUgdHlwZSkKICAgICBjYXNlIEludDY0OgogICAgICAgICBvdXQucHJp
bnQoIkludDY0Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZsb2F0OgorICAgICAgICBv
dXQucHJpbnQoIkRvdWJsZSIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBEb3VibGU6CiAg
ICAgICAgIG91dC5wcmludCgiRG91YmxlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGUuaAppbmRleCBmOWEzYWUwZmZkOGMwZGMzYjdlZTU1ZGIyNWVhYWEyY2VjZGUw
NmFjLi4wZTM3MTlmODY5NTBiZDUxZjAwMzBmZjU2MmIzM2JhMDQ0ZGU1NjI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVHlwZS5oCkBAIC0zNyw2ICszNyw3IEBAIGVudW0gVHlwZSA6IGludDhfdCB7
CiAgICAgVm9pZCwKICAgICBJbnQzMiwKICAgICBJbnQ2NCwKKyAgICBGbG9hdCwKICAgICBEb3Vi
bGUKIH07CiAKQEAgLTYzLDYgKzY0LDcgQEAgaW5saW5lIHNpemVfdCBzaXplb2ZUeXBlKFR5cGUg
dHlwZSkKICAgICBjYXNlIFZvaWQ6CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgSW50MzI6
CisgICAgY2FzZSBGbG9hdDoKICAgICAgICAgcmV0dXJuIDQ7CiAgICAgY2FzZSBJbnQ2NDoKICAg
ICBjYXNlIERvdWJsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAppbmRl
eCAxMDY0MWEwNjJmYWJhMDUxMGMzNzljOWNiZjQ0YzU4OWFmODNmMjNkLi5hMjA3ZDg5ZGI5OGVk
ZGRhZjNjMTJkMDliZDE4NmY4NmNmMzM3ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsaWRhdGUuY3BwCkBAIC0yMDMsNyArMjAzLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFNxcnQ6Ci0gICAgICAgICAgICBj
YXNlIEZSb3VuZDoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4o
KSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT5jaGlsZCgwKS0+dHlwZSgpID09IERvdWJsZSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IERvdWJsZSwgKCJBdCAiLCAqdmFsdWUp
KTsKQEAgLTIxOCw2ICsyMTcsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IERvdWJsZSwgKCJBdCAiLCAqdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2
YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbG9hdFRv
RG91YmxlOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09
IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNo
aWxkKDApLT50eXBlKCkgPT0gRmxvYXQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBEb3VibGUsICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERvdWJsZVRvRmxvYXQ6Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAi
LCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5
cGUoKSA9PSBEb3VibGUsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPnR5cGUoKSA9PSBGbG9hdCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRXF1YWw6CiAgICAgICAgICAgICBjYXNlIE5v
dEVxdWFsOgogICAgICAgICAgICAgY2FzZSBMZXNzVGhhbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcAppbmRleCA3NjY5M2Q2MjgyOTAxNWUzNzMxOTU3NGQ3NTA0NGMyZTE4YjA2OWZm
Li4wZGYzYWRiYjgxNmIyNmZlNjgyOTI2YWRkMjU4NjZkMGI2ZDRkZDI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0zMzQsOSArMzM0LDEwIEBAIEVmZmVjdHMgVmFsdWU6
OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgU0V4dDMyOgogICAgIGNhc2UgWkV4dDMyOgogICAg
IGNhc2UgVHJ1bmM6Ci0gICAgY2FzZSBGUm91bmQ6CiAgICAgY2FzZSBJVG9EOgogICAgIGNhc2Ug
RFRvSTMyOgorICAgIGNhc2UgRmxvYXRUb0RvdWJsZToKKyAgICBjYXNlIERvdWJsZVRvRmxvYXQ6
CiAgICAgY2FzZSBFcXVhbDoKICAgICBjYXNlIE5vdEVxdWFsOgogICAgIGNhc2UgTGVzc1RoYW46
CkBAIC00MTAsOSArNDExLDEwIEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNh
c2UgWkV4dDMyOgogICAgIGNhc2UgQ2x6OgogICAgIGNhc2UgVHJ1bmM6Ci0gICAgY2FzZSBGUm91
bmQ6CiAgICAgY2FzZSBJVG9EOgogICAgIGNhc2UgRFRvSTMyOgorICAgIGNhc2UgRmxvYXRUb0Rv
dWJsZToKKyAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CiAgICAgY2FzZSBDaGVjazoKICAgICAgICAg
cmV0dXJuIFZhbHVlS2V5KG9wY29kZSgpLCB0eXBlKCksIGNoaWxkKDApKTsKICAgICBjYXNlIEFk
ZDoKQEAgLTUyNyw5ICs1MjksMTEgQEAgVHlwZSBWYWx1ZTo6dHlwZUZvcihPcGNvZGUgb3Bjb2Rl
LCBWYWx1ZSogZmlyc3RDaGlsZCwgVmFsdWUqIHNlY29uZENoaWxkKQogICAgIGNhc2UgU0V4dDMy
OgogICAgIGNhc2UgWkV4dDMyOgogICAgICAgICByZXR1cm4gSW50NjQ7Ci0gICAgY2FzZSBGUm91
bmQ6CisgICAgY2FzZSBGbG9hdFRvRG91YmxlOgogICAgIGNhc2UgSVRvRDoKICAgICAgICAgcmV0
dXJuIERvdWJsZTsKKyAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CisgICAgICAgIHJldHVybiBGbG9h
dDsKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgICAgICBpZiAoZmlyc3RDaGlsZC0+dHlwZSgp
ID09IEludDY0KQogICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlS2V5LmNwcAppbmRleCAzYzgwNTg2MzUxZjJjNDBlNTc3YzZiOGQ2ZTQ3MDVk
MjU0Y2NiMGFmLi43YjY0MGMyMWNlOTAwM2RmMTdiZWIzMzIyZjc4YTZhMDUwN2FiZDlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuY3BwCkBAIC00NiwxNCArNDYsMTcgQEAg
VmFsdWUqIFZhbHVlS2V5OjptYXRlcmlhbGl6ZShQcm9jZWR1cmUmIHByb2MsIE9yaWdpbiBvcmln
aW4pIGNvbnN0CiAgICAgY2FzZSBGcmFtZVBvaW50ZXI6CiAgICAgICAgIHJldHVybiBwcm9jLmFk
ZDxWYWx1ZT4ob3Bjb2RlKCksIHR5cGUoKSwgb3JpZ2luKTsKICAgICBjYXNlIElkZW50aXR5Ogor
ICAgIGNhc2UgU3FydDoKICAgICBjYXNlIFNFeHQ4OgogICAgIGNhc2UgU0V4dDE2OgogICAgIGNh
c2UgU0V4dDMyOgogICAgIGNhc2UgWkV4dDMyOgorICAgIGNhc2UgQ2x6OgogICAgIGNhc2UgVHJ1
bmM6Ci0gICAgY2FzZSBGUm91bmQ6CiAgICAgY2FzZSBJVG9EOgogICAgIGNhc2UgRFRvSTMyOgor
ICAgIGNhc2UgRmxvYXRUb0RvdWJsZToKKyAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CiAgICAgY2Fz
ZSBDaGVjazoKICAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihvcGNvZGUoKSwgdHlwZSgp
LCBvcmlnaW4sIGNoaWxkKHByb2MsIDApKTsKICAgICBjYXNlIEFkZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5oCmluZGV4IGIzZmU1ZWM4ZDZhMmFiZGQ2MWM4ZWQ4ZmEyMDE1ZGYx
ZTIwYjllOTAuLjE0NjU2NzVhODNkMDQyNmY3NjE0MzQ4YThjNjQ5Y2RjMmFmZTBkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaApAQCAtMjExLDYgKzIxMSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBJbnQzMjoKICAgICAgICAgY2FzZSBJbnQ2NDoKICAgICAgICAgICAg
IHJldHVybiBHUDsKKyAgICAgICAgY2FzZSBGbG9hdDoKICAgICAgICAgY2FzZSBEb3VibGU6CiAg
ICAgICAgICAgICByZXR1cm4gRlA7CiAgICAgICAgIH0KQEAgLTIyNSw2ICsyMjYsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
biBXaWR0aDg7CiAgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgIGNhc2UgRmxvYXQ6CiAgICAg
ICAgICAgICByZXR1cm4gV2lkdGgzMjsKICAgICAgICAgY2FzZSBJbnQ2NDoKICAgICAgICAgY2Fz
ZSBEb3VibGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9w
Y29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bj
b2RlcwppbmRleCA2NzI2YTMxZmRiYjcxMTYwYzc4NjMyNGJiZDUwM2I2YWNkZDM4YzM4Li45OTU5
M2YyOWU2OTY5NGNkMWExYjllMzI0MmUwOTYxZjUzNjhiNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTIyMiw2ICsyMjIsMTQgQEAg
Q291bnRMZWFkaW5nWmVyb3M2NCBVOkcsIEQ6RwogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1w
CiAKK0NvbnZlcnREb3VibGVUb0Zsb2F0IFU6RiwgRDpGCisgICAgVG1wLCBUbXAKKyAgICBBZGRy
LCBUbXAKKworQ29udmVydEZsb2F0VG9Eb3VibGUgVTpGLCBEOkYKKyAgICBUbXAsIFRtcAorICAg
IEFkZHIsIFRtcAorCiAjIE5vdGUgdGhhdCBNb3ZlIG9wZXJhdGVzIG92ZXIgdGhlIGZ1bGwgcmVn
aXN0ZXIgc2l6ZSwgd2hpY2ggaXMgZWl0aGVyIDMyLWJpdCBvciA2NC1iaXQgZGVwZW5kaW5nIG9u
CiAjIHRoZSBwbGF0Zm9ybS4gSSdtIG5vdCBlbnRpcmVseSBzdXJlIHRoYXQgdGhpcyBpcyBhIGdv
b2QgdGhpbmc7IGl0IG1pZ2h0IGJlIGJldHRlciB0byBqdXN0IGhhdmUgYQogIyBNb3ZlNjQgaW5z
dHJ1Y3Rpb24uIE9UT0gsIG91ciBNYWNyb0Fzc2VtYmxlcnMgYWxyZWFkeSBoYXZlIHRoaXMgbm90
aW9uIG9mICJtb3ZlKCkiIHRoYXQgYmFzaWNhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMu
Y3BwCmluZGV4IGQ1ZWI1YmU2ZjZiYjdjMjJmNjU3OTliNjBlOGQ1NTgyMzc1YTBkN2UuLjllOTEw
MGE1YjY5MzMyZGEwODkxZWE0MDEyYTRmYTlmOWNhOTZjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuY3BwCkBAIC0yMTE4LDYgKzIxMTgsMzEgQEAgdm9pZCB0ZXN0Qml0d2lzZUNhc3RP
bkludDY0SW5NZW1vcnkoaW50NjRfdCB2YWx1ZSkKICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgJnZhbHVlKSwgYml0d2lzZV9jYXN0PGRvdWJsZT4odmFs
dWUpKSk7CiB9CiAKK3ZvaWQgdGVzdEZyb3VuZEFyZyhkb3VibGUgdmFsdWUpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUqIGFzRmxvYXQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBh
cmd1bWVudCk7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXNGbG9hdCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIHZhbHVlKSwg
c3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSkpOworfQorCit2
b2lkIHRlc3RGcm91bmRNZW0oZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJl
c3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRlZERvdWJsZSA9IHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBPcmlnaW4oKSwg
YWRkcmVzcyk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBsb2FkZWREb3VibGUpOworICAgIFZhbHVlKiBh
c0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3Jp
Z2luKCksIGFzRmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0
YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpKSk7Cit9CisKIHZvaWQgdGVzdFN0b3JlKGludCB2YWx1
ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTYwNDksNiArNjA3NCw5IEBAIHZvaWQgcnVu
KGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU5fVU5BUlkodGVzdFR3b0JpdHdpc2VDYXN0T25J
bnQ2NCwgaW50NjRPcGVyYW5kcygpKTsKICAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0T25J
bnQ2NEluTWVtb3J5LCBpbnQ2NE9wZXJhbmRzKCkpOwogCisgICAgUlVOX1VOQVJZKHRlc3RGcm91
bmRBcmcsIGRvdWJsZU9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0RnJvdW5kTWVtLCBk
b3VibGVPcGVyYW5kcygpKTsKKwogICAgIFJVTih0ZXN0U3RvcmUoNDQpKTsKICAgICBSVU4odGVz
dFN0b3JlQ29uc3RhbnQoNDkpKTsKICAgICBSVU4odGVzdFN0b3JlQ29uc3RhbnRQdHIoNDkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaAppbmRleCBlNDFiMjUwMDhiMTlk
NWM1YWIyNjc5Zjg3YzgyZDRkMWI0NGQxNjViLi5kNzAxZGI4MzY1MDQxNTBmMGRjYmNjMDBmNjMy
YWIwMzdkZmM0YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIz
T3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCkBA
IC0xOTMsOCArMTkzLDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBpbnRUb1B0cihMVmFsdWUgdmFs
dWUsIExUeXBlIHR5cGUpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBwdHJUb0ludChMVmFsdWUg
dmFsdWUsIExUeXBlIHR5cGUpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBiaXRDYXN0KExWYWx1
ZSwgTFR5cGUpOwotCi0gICAgTFZhbHVlIGZyb3VuZChMVmFsdWUgZG91YmxlVmFsdWUpIHsgQ1JB
U0goKTsgfQorICAgIExWYWx1ZSBmcm91bmQoTFZhbHVlIGRvdWJsZVZhbHVlKTsKIAogICAgIExW
YWx1ZSBsb2FkKFR5cGVkUG9pbnRlciwgTFR5cGUpOwogICAgIHZvaWQgc3RvcmUoTFZhbHVlLCBU
eXBlZFBvaW50ZXIpOwpAQCAtNDg3LDYgKzQ4NiwxMiBAQCBpbmxpbmUgTFZhbHVlIE91dHB1dDo6
Yml0Q2FzdChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpCiAgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdHdpc2VDYXN0LCBvcmlnaW4oKSwgdmFs
dWUpOwogfQogCitpbmxpbmUgTFZhbHVlIE91dHB1dDo6ZnJvdW5kKExWYWx1ZSBkb3VibGVWYWx1
ZSkKK3sKKyAgICBMVmFsdWUgYXNGbG9hdCA9IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkRvdWJsZVRvRmxvYXQsIG9yaWdpbigpLCBkb3VibGVWYWx1ZSk7CisgICAg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZsb2F0VG9E
b3VibGUsIG9yaWdpbigpLCBhc0Zsb2F0KTsKK30KKwogI2lmIENPTVBJTEVSKENMQU5HKQogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2VuZGlmIC8vIENPTVBJTEVSKENMQU5HKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>