<?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>181739</bug_id>
          
          <creation_ts>2018-01-17 06:25:54 -0800</creation_ts>
          <short_desc>Update the argument count in DFGByteCodeParser::handleRecursiveCall</short_desc>
          <delta_ts>2018-01-23 06:28:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1389987</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-01-17 06:25:54 -0800</bug_when>
    <thetext>handleRecursiveCall can optimize tail calls with less arguments than the original caller, if we are not in an inlined call frame.
In such a situation, we need to update the argument count, so that accesses to &apos;arguments.length&apos; return the right value.

It is a bit tricky, as the argument count is in a 32-bit slot on the stack, sharing its 64-bit slot with the code origin.
So I am considering either adding a new SetArgumentCountIncludingThis node, and supporting it in both DFG and FTL; or supporting PutStack in DFG (it is currently only supported in FTL) and using MovHint+PutStack, since PutStack seems to be able to store a single int32.

&lt;rdar://problem/36120501&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390003</commentid>
    <comment_count>1</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-01-17 07:46:08 -0800</bug_when>
    <thetext>After a second look, it appears that SetLocal can also do a 32-bit store, provided its input is marked as FlushedInt32. I will test it to see if I can avoid messing with either a new node or PutStack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390023</commentid>
    <comment_count>2</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-01-17 08:59:58 -0800</bug_when>
    <thetext>Phil remarked that while SetLocal and PutStack would have worked as they are currently implemented, semantically they only support 64-bit stores and so it would not be sound to use them for this purpose. So I will add a new SetArgumentCountIncludingThis node as originally suggested by Saam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390152</commentid>
    <comment_count>3</comment_count>
      <attachid>331530</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-01-17 12:14:53 -0800</bug_when>
    <thetext>Created attachment 331530
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390158</commentid>
    <comment_count>4</comment_count>
      <attachid>331530</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-17 12:25:37 -0800</bug_when>
    <thetext>Comment on attachment 331530
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1400
&gt; +            }

This is wrong. Please add a test. The machine argument count is not known at compile time. We must always update it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390465</commentid>
    <comment_count>5</comment_count>
      <attachid>331609</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-01-18 03:41:08 -0800</bug_when>
    <thetext>Created attachment 331609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390466</commentid>
    <comment_count>6</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-01-18 03:42:25 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #4)
&gt; Comment on attachment 331530 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=331530&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1400
&gt; &gt; +            }
&gt; 
&gt; This is wrong. Please add a test. The machine argument count is not known at
&gt; compile time. We must always update it.

Thanks for the catch, I had misunderstood the role of m_codeBlock-&gt;numParameters().

I&apos;ve fixed it, and added a second test for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390493</commentid>
    <comment_count>7</comment_count>
      <attachid>331609</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-01-18 07:09:19 -0800</bug_when>
    <thetext>Comment on attachment 331609
Patch

Attachment 331609 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/6120464

New failing tests:
stress/inline-call-to-recursive-tail-call.js.ftl-no-cjit-no-inline-validate
stress/v8-earley-boyer-strict.js.ftl-eager-no-cjit
stress/tail-call-no-stack-overflow.js.no-cjit-validate-phases
stress/inline-call-to-recursive-tail-call.js.ftl-no-cjit-no-put-stack-validate
stress/inline-call-to-recursive-tail-call.js.dfg-maximal-flush-validate-no-cjit
stress/v8-earley-boyer-strict.js.dfg-eager-no-cjit-validate
stress/dfg-tail-calls.js.dfg-maximal-flush-validate-no-cjit
stress/async-iteration-basic.js.dfg-eager-no-cjit-validate
stress/recursive-tail-call-with-different-argument-count.js.ftl-eager-no-cjit
stress/dfg-tail-calls.js.no-cjit-validate-phases
stress/dfg-tail-calls.js.ftl-no-cjit-no-inline-validate
stress/inline-call-to-recursive-tail-call.js.ftl-eager-no-cjit
stress/inline-call-to-recursive-tail-call.js.ftl-no-cjit-validate-sampling-profiler
stress/dfg-tail-calls.js.dfg-eager-no-cjit-validate
stress/v8-earley-boyer-strict.js.no-cjit-validate-phases
stress/async-iteration-basic.js.no-cjit-validate-phases
stress/tail-call-no-stack-overflow.js.ftl-no-cjit-no-put-stack-validate
stress/recursive-tail-call-with-different-argument-count.js.ftl-eager-no-cjit-b3o1
stress/recursive-tail-call-with-different-argument-count.js.ftl-eager
stress/inline-call-to-recursive-tail-call.js.ftl-eager-no-cjit-b3o1
stress/async-iteration-async-from-sync.js.ftl-eager-no-cjit-b3o1
stress/recursive-tail-call-with-different-argument-count.js.ftl-no-cjit-no-inline-validate
stress/async-iteration-yield-star.js.ftl-no-cjit-no-put-stack-validate
stress/inline-call-to-recursive-tail-call.js.dfg-eager-no-cjit-validate
stress/tail-call-no-stack-overflow.js.ftl-eager-no-cjit-b3o1
stress/async-iteration-basic.js.ftl-eager-no-cjit
stress/v8-earley-boyer-strict.js.dfg-maximal-flush-validate-no-cjit
stress/tail-call-no-stack-overflow.js.ftl-no-cjit-validate-sampling-profiler
stress/async-iteration-yield-promise.js.ftl-eager-no-cjit-b3o1
stress/tail-call-no-stack-overflow.js.dfg-eager-no-cjit-validate
stress/async-iteration-basic.js.dfg-maximal-flush-validate-no-cjit
stress/v8-earley-boyer-strict.js.ftl-no-cjit-no-inline-validate
stress/async-iteration-yield-star.js.ftl-eager-no-cjit-b3o1
stress/async-iteration-yield-star-interface.js.ftl-eager-no-cjit-b3o1
stress/dfg-tail-calls.js.ftl-no-cjit-no-put-stack-validate
stress/async-iteration-yield-star.js.no-cjit-validate-phases
stress/v8-earley-boyer-strict.js.ftl-no-cjit-no-put-stack-validate
stress/recursive-tail-call-with-different-argument-count.js.dfg-maximal-flush-validate-no-cjit
stress/dfg-tail-calls.js.ftl-no-cjit-validate-sampling-profiler
stress/async-iteration-async-from-sync.js.dfg-eager-no-cjit-validate
stress/tail-call-no-stack-overflow.js.ftl-no-cjit-no-inline-validate
stress/dfg-tail-calls.js.ftl-eager-no-cjit-b3o1
stress/async-iteration-yield-star.js.dfg-eager-no-cjit-validate
stress/async-iteration-async-from-sync.js.ftl-eager-no-cjit
stress/recursive-tail-call-with-different-argument-count.js.no-cjit-validate-phases
stress/recursive-tail-call-with-different-argument-count.js.ftl-no-cjit-no-put-stack-validate
stress/dfg-tail-calls.js.ftl-eager-no-cjit
stress/async-iteration-basic.js.ftl-no-cjit-no-put-stack-validate
stress/inline-call-to-recursive-tail-call.js.ftl-eager
stress/v8-earley-boyer-strict.js.ftl-no-cjit-validate-sampling-profiler
stress/tail-call-no-stack-overflow.js.ftl-eager-no-cjit
stress/recursive-tail-call-with-different-argument-count.js.dfg-eager-no-cjit-validate
stress/async-iteration-basic.js.ftl-no-cjit-validate-sampling-profiler
stress/v8-earley-boyer-strict.js.ftl-eager-no-cjit-b3o1
stress/recursive-tail-call-with-different-argument-count.js.ftl-no-cjit-validate-sampling-profiler
stress/inline-call-to-recursive-tail-call.js.no-cjit-validate-phases
stress/async-iteration-yield-star.js.ftl-no-cjit-validate-sampling-profiler
stress/tail-call-no-stack-overflow.js.dfg-maximal-flush-validate-no-cjit
stress/v8-earley-boyer-strict.js.default
stress/recursive-tail-call-with-different-argument-count.js.ftl-no-cjit-b3o1
stress/async-iteration-yield-star.js.dfg-maximal-flush-validate-no-cjit
stress/async-iteration-yield-star.js.ftl-eager
stress/async-iteration-basic.js.ftl-eager-no-cjit-b3o1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390574</commentid>
    <comment_count>8</comment_count>
      <attachid>331641</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-01-18 10:48:04 -0800</bug_when>
    <thetext>Created attachment 331641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390588</commentid>
    <comment_count>9</comment_count>
      <attachid>331641</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-18 11:31:07 -0800</bug_when>
    <thetext>Comment on attachment 331641
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        It required adding a new DFG node: &apos;SetArgumentCountIncludingThis&apos;, that takes an unsigned int
&gt; +        as its first OpInfo field, and stores it to the stack at the right place.

Please also add a description of the bug here. This just states what your solution is. It doesn&apos;t go into enough detail about what was wrong with the initial implementation.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1405
&gt; +        // We must update the argument count on the stack with &apos;SetArgumentCountIncludingThis&apos; instead of SetLocal,
&gt; +        // because it is a 32-bit slot on the stack, and not a normal (64 bit) js value.

This comment does not add any real info IMO. I think it falls out just from reading the code.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:11303
&gt; +    m_jit.store32(TrustedImm32(node-&gt;argumentCountIncludingThis()), JITCompiler::payloadFor(CallFrameSlot::argumentCount));

You need to add
noResult(node)
here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390589</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-18 11:32:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/36627662&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1390590</commentid>
    <comment_count>11</comment_count>
      <attachid>331641</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-01-18 11:34:12 -0800</bug_when>
    <thetext>Comment on attachment 331641
Patch

Attachment 331641 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/6123503

New failing tests:
stress/v8-earley-boyer-strict.js.ftl-eager-no-cjit
stress/recursive-tail-call-with-different-argument-count.js.ftl-eager-no-cjit
stress/inline-call-to-recursive-tail-call.js.ftl-eager-no-cjit
stress/recursive-tail-call-with-different-argument-count.js.ftl-eager-no-cjit-b3o1
stress/recursive-tail-call-with-different-argument-count.js.ftl-eager
stress/inline-call-to-recursive-tail-call.js.ftl-eager-no-cjit-b3o1
stress/recursive-tail-call-with-different-argument-count.js.ftl-no-cjit-no-inline-validate
stress/async-iteration-basic.js.ftl-eager-no-cjit
stress/v8-earley-boyer-strict.js.ftl-no-cjit-validate-sampling-profiler
stress/async-iteration-yield-star.js.ftl-eager-no-cjit
stress/v8-earley-boyer-strict.js.ftl-no-cjit-no-inline-validate
stress/async-iteration-yield-star.js.ftl-eager-no-cjit-b3o1
stress/v8-earley-boyer-strict.js.default
stress/async-iteration-async-from-sync.js.ftl-eager-no-cjit
stress/recursive-tail-call-with-different-argument-count.js.ftl-no-cjit-no-put-stack-validate
stress/async-iteration-yield-promise.js.ftl-eager-no-cjit-b3o1
stress/v8-earley-boyer-strict.js.ftl-eager
stress/recursive-tail-call-with-different-argument-count.js.ftl-no-cjit-validate-sampling-profiler
stress/inline-call-to-recursive-tail-call.js.ftl-eager
stress/v8-earley-boyer-strict.js.ftl-eager-no-cjit-b3o1
stress/async-iteration-yield-star-interface.js.ftl-eager-no-cjit-b3o1
stress/recursive-tail-call-with-different-argument-count.js.ftl-no-cjit-b3o1
stress/inline-call-to-recursive-tail-call.js.ftl-no-cjit-no-inline-validate
stress/async-iteration-yield-star.js.ftl-eager
stress/async-iteration-basic.js.ftl-eager-no-cjit-b3o1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391734</commentid>
    <comment_count>12</comment_count>
      <attachid>331947</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-01-22 12:07:47 -0800</bug_when>
    <thetext>Created attachment 331947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391800</commentid>
    <comment_count>13</comment_count>
      <attachid>331947</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-22 13:51:30 -0800</bug_when>
    <thetext>Comment on attachment 331947
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392038</commentid>
    <comment_count>14</comment_count>
      <attachid>331947</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-23 06:28:15 -0800</bug_when>
    <thetext>Comment on attachment 331947
Patch

Clearing flags on attachment: 331947

Committed r227410: &lt;https://trac.webkit.org/changeset/227410&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392039</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-23 06:28:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331530</attachid>
            <date>2018-01-17 12:14:53 -0800</date>
            <delta_ts>2018-01-18 03:41:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181739-20180117211451.patch</filename>
            <type>text/plain</type>
            <size>13313</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjcwNzcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTAxLTE3ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHRoZSBhcmd1bWVudCBjb3VudCBpbiBERkdCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlQ2FsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmVjdXJzaXZlLXRhaWwtY2FsbC13aXRo
LWRpZmZlcmVudC1hcmd1bWVudC1jb3VudC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorCiAy
MDE4LTAxLTE3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIERG
Rzo6Tm9kZTo6Y29udmVydFRvQ29uc3RhbnQgbmVlZHMgdG8gY2xlYXIgdGhlIHZhcmFyZ3MgZmxh
Z3MKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3JlY3Vyc2l2ZS10YWlsLWNhbGwtd2l0aC1kaWZmZXJl
bnQtYXJndW1lbnQtY291bnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcmVjdXJz
aXZlLXRhaWwtY2FsbC13aXRoLWRpZmZlcmVudC1hcmd1bWVudC1jb3VudC5qcwkobm9uZXhpc3Rl
bnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9yZWN1cnNpdmUtdGFpbC1jYWxsLXdpdGgtZGlmZmVyZW50
LWFyZ3VtZW50LWNvdW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKyJ1c2Ug
c3RyaWN0IjsKK2Z1bmN0aW9uIGZvbyh4LCB5KSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg
Pj0gMikKKyAgICAgICAgcmV0dXJuIGZvbyh4K3kpCisgICAgcmV0dXJuIHg7Cit9Citub0lubGlu
ZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVz
dWx0ID0gZm9vICg0MCwgMik7CisgICAgaWYgKHJlc3VsdCAhPT0gNDIpCisgICAgICAgIHRocm93
ICJXcm9uZyByZXN1bHQsIGV4cGVjdGVkIDQyLCBnb3QgIiArIHJlc3VsdDsgCit9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAxOC0w
MS0xNyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFVw
ZGF0ZSB0aGUgYXJndW1lbnQgY291bnQgaW4gREZHQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vy
c2l2ZUNhbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MTczOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEl0IHJlcXVpcmVkIGFkZGluZyBhIG5ldyBERkcgbm9kZTogJ1NldEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzJywgdGhhdCB0YWtlcyBhbiB1bnNpZ25lZCBpbnQKKyAgICAgICAgYXMgaXRzIGZp
cnN0IE9wSW5mbyBmaWVsZCwgYW5kIHN0b3JlcyBpdCB0byB0aGUgc3RhY2sgYXQgdGhlIHJpZ2h0
IHBsYWNlLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWls
Q2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdN
YXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2Fu
Q29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKToKKwogMjAxOC0wMS0xNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbnN0YW50IG5lZWRzIHRvIGNsZWFyIHRoZSB2
YXJhcmdzIGZsYWdzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjcwNjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMzIsNiArMjMzMiw5IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoK
KyAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIy
NzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzkzLDYgKzEzOTMsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUmVjdXJzaXZlVGFpbAogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBtb3JlIGFy
Z3VtZW50cyB0aGFuIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyB0byB0aGUgZnVuY3Rpb24sIGl0
IGlzIG5vdCBjbGVhciB3aGVyZSB3ZSBjb3VsZCBwdXQgdGhlbSBvbiB0aGUgc3RhY2suCiAgICAg
ICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiBtX2NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbV9jb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgdXBkYXRlIHRoZSBhcmd1
bWVudCBjb3VudCBvbiB0aGUgc3RhY2ssIHNvIHRoYXQgYWNjZXNzZXMgdG8gdGhlICdhcmd1bWVu
dHMnIG9iamVjdCBrbm93IHRoZSBjb3JyZWN0IGJvdW5kLgorICAgICAgICAgICAgICAgIC8vIFdl
IG11c3QgZG8gc28gd2l0aCAnU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMnIGluc3RlYWQg
b2YgU2V0TG9jYWwsIGJlY2F1c2UgaXQgaXMgYSAzMi1iaXQgc2xvdCBvbiB0aGUgc3RhY2ssIGFu
ZCBub3QgYSBub3JtYWwgKDY0IGJpdCkganMgdmFsdWUuCisgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgT3BJbmZvKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBX
ZSBtdXN0IGFkZCBzb21lIGNoZWNrIHRoYXQgdGhlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiB3YXMg
Y29ycmVjdCBhbmQgdGhlIHRhcmdldCBvZiB0aGlzIGNhbGwgaXMgd2hhdCB3ZSB0aG91Z2h0LgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9u
IDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MDYsNiArNzA2LDEwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihTdGFja1BheWxvYWRM
b2MsIEFic3RyYWN0SGVhcChTdGFjaywgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpLCBM
YXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgU2V0QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM6CisgICAgICAgIHdyaXRlKEFic3RyYWN0SGVhcChTdGFjaywgQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNl
IEdldFJlc3RMZW5ndGg6CiAgICAgICAgIHJlYWQoU3RhY2spOwogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMjcw
NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDYgKzUyLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZToKICAgICBjYXNlIEdldENhbGxlZToK
ICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgorICAgIGNhc2UgU2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNh
c2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2NhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjI3MDY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA5Nyw2ICsyMDk3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAg
ICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM6CisgICAgICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAg
ICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICAg
ICAgY2FzZSBGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcAkocmV2aXNpb24gMjI3MDY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBFeGl0TW9kZSBtYXlF
eGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBHZXRTdGFjazoKICAgICBjYXNl
IEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgorICAg
IGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBHZXRSZXN0TGVu
Z3RoOgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjI3MDY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2MCw2ICs5
NjAsMTIgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaGFzU3RhY2tBY2Nlc3NEYXRhKCkpOwog
ICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3RhY2tBY2Nlc3NEYXRhKj4oKTsKICAgICB9CisK
KyAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpCisgICAgeworICAgICAg
ICBBU1NFUlQob3AoKSA9PSBTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAg
IHJldHVybiBtX29wSW5mby5hczx1bnNpZ25lZD4oKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBo
YXNQaGkoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9kZVJlc3VsdEpTKSAvKiBO
b3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSByZXR1cm5pbmcgaXQgYW55
d2F5LiAqLyBcCiAgICAgbWFjcm8oR2V0Q2FsbGVlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgTm9kZVJlc3VsdEludDMyKSBcCisgICAg
bWFjcm8oU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGxvY2FsIHZhcmlhYmxlIGFjY2Vzcy4gVGhlc2Ugbm9k
ZXMgYXJlIGxpbmtlZCB0b2dldGhlciB1c2luZyBQaGkgbm9kZXMuICovXAogICAgIC8qIEFueSB0
d28gbm9kZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgc2FtZSBQaGkgZ3JhcGggd2lsbCBzaGFyZSB0
aGUgc2FtZSAqL1wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjcwNjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY3LDYgKzc2Nyw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgU2V0QXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM6CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIE1hcEhh
c2g6CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAkocmV2aXNpb24gMjI3MDY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsNyBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBDcmVhdGVUaGlz
OgogICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM6CisgICAgY2FzZSBTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAgICBjYXNl
IEdldFJlc3RMZW5ndGg6CiAgICAgY2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExvY2FsOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODAzLDYg
KzM4MDMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBjb21waWxlR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6
CisgICAgICAgIGNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhub2RlKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNvbXBp
bGVHZXRTY29wZShub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjI3MDY1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAxMSw2ICs0MDExLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBTZXRBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpczoKKyAgICAgICAgY29tcGlsZVNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgR2V0UmVzdExlbmd0aDogewog
ICAgICAgICBjb21waWxlR2V0UmVzdExlbmd0aChub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
cmV2aXNpb24gMjI3MDY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMjk4LDYgKzExMjk4LDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcmd1bWVudEMKICAgICBpbnQzMlJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoTm9kZSogbm9kZSkKK3sKKyAgICBtX2ppdC5zdG9yZTMy
KFRydXN0ZWRJbW0zMihub2RlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKSwgSklUQ29t
cGlsZXI6OnBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyQ2F0KE5vZGUqIG5vZGUpCiB7CiAgICAgSlNW
YWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkocmV2aXNpb24gMjI3MDY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTA0LDYgKzMxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0U2V0dGVyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVHZXRDYWxsZWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU3RyQ2F0KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVOZXdBcnJheVdpdGhTaXplKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdUeXBl
ZEFycmF5KE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCw3
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEdl
dFNjb3BlOgogICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM6CisgICAgY2FzZSBTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAg
ICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9TdHJpbmc6CiAgICAgY2FzZSBUb09iamVjdDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgICAgICAgICBj
b21waWxlR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgorICAgICAgICAg
ICAgY29tcGlsZVNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBHZXRTY29wZToKICAgICAgICAgICAgIGNvbXBpbGVHZXRTY29w
ZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02MzM5LDYgKzYzNDIsMTEgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlU2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKQorICAgIHsKKyAgICAgICAgbV9vdXQuc3RvcmUzMiht
X291dC5jb25zdEludDMyKG1fbm9kZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSksIHBh
eWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAgIH0KICAgICAKICAg
ICB2b2lkIGNvbXBpbGVHZXRTY29wZSgpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331609</attachid>
            <date>2018-01-18 03:41:08 -0800</date>
            <delta_ts>2018-01-18 10:48:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181739-20180118124107.patch</filename>
            <type>text/plain</type>
            <size>13482</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjcwNzcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE4LTAxLTE3ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHRoZSBhcmd1bWVudCBjb3VudCBpbiBERkdCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlQ2FsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmVjdXJzaXZlLXRhaWwtY2FsbC13aXRo
LWRpZmZlcmVudC1hcmd1bWVudC1jb3VudC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAoYmFyKToKKwogMjAxOC0wMS0xNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbnN0YW50IG5lZWRzIHRvIGNsZWFy
IHRoZSB2YXJhcmdzIGZsYWdzCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9yZWN1cnNpdmUtdGFpbC1j
YWxsLXdpdGgtZGlmZmVyZW50LWFyZ3VtZW50LWNvdW50LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvc3RyZXNzL3JlY3Vyc2l2ZS10YWlsLWNhbGwtd2l0aC1kaWZmZXJlbnQtYXJndW1lbnQtY291
bnQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcmVjdXJzaXZlLXRhaWwtY2Fs
bC13aXRoLWRpZmZlcmVudC1hcmd1bWVudC1jb3VudC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDI1IEBACisidXNlIHN0cmljdCI7CitmdW5jdGlvbiBmb28oeCwgeSkKK3sKKyAgICBpZiAo
YXJndW1lbnRzLmxlbmd0aCA+PSAyKQorICAgICAgICByZXR1cm4gZm9vKHgreSkKKyAgICByZXR1
cm4geDsKK30KK25vSW5saW5lKGZvbyk7CisKK2Z1bmN0aW9uIGJhcih4KQoreworICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID49IDIpCisgICAgICAgIHJldHVybiBiYXIoYXJndW1lbnRzWzBdICsg
YXJndW1lbnRzWzFdKQorICAgIHJldHVybiB4OworfQorbm9JbmxpbmUoYmFyKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyg0MCwgMik7
CisgICAgaWYgKHJlc3VsdCAhPT0gNDIpCisgICAgICAgIHRocm93ICJXcm9uZyByZXN1bHQgZm9y
IGZvbywgZXhwZWN0ZWQgNDIsIGdvdCAiICsgcmVzdWx0OworICAgIHJlc3VsdCA9IGJhcig0MCwg
Mik7CisgICAgaWYgKHJlc3VsdCAhPT0gNDIpCisgICAgICAgIHRocm93ICJXcm9uZyByZXN1bHQg
Zm9yIGJhciwgZXhwZWN0ZWQgNDIsIGdvdCAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTgtMDEtMTcgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgdGhl
IGFyZ3VtZW50IGNvdW50IGluIERGR0J5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVDYWxs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3MzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCByZXF1
aXJlZCBhZGRpbmcgYSBuZXcgREZHIG5vZGU6ICdTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cycsIHRoYXQgdGFrZXMgYW4gdW5zaWduZWQgaW50CisgICAgICAgIGFzIGl0cyBmaXJzdCBPcElu
Zm8gZmllbGQsIGFuZCBzdG9yZXMgaXQgdG8gdGhlIHN0YWNrIGF0IHRoZSByaWdodCBwbGFjZS4K
KworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlVGFpbENhbGwpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJl
cml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5j
cHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6
CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4
ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUp
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisK
IDIwMTgtMDEtMTcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
REZHOjpOb2RlOjpjb252ZXJ0VG9Db25zdGFudCBuZWVkcyB0byBjbGVhciB0aGUgdmFyYXJncyBm
bGFncwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjI3MDY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzMyLDYgKzIzMzIsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoK
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CisgICAgICAg
IGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMjcwNjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5Myw2ICsxMzkzLDEwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVJlY3Vyc2l2ZVRhaWwKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgbW9yZSBhcmd1bWVudHMg
dGhhbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdG8gdGhlIGZ1bmN0aW9uLCBpdCBpcyBub3Qg
Y2xlYXIgd2hlcmUgd2UgY291bGQgcHV0IHRoZW0gb24gdGhlIHN0YWNrLgogICAgICAgICAgICAg
aWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gbV9jb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIFdl
IG11c3QgdXBkYXRlIHRoZSBhcmd1bWVudCBjb3VudCBvbiB0aGUgc3RhY2ssIHNvIHRoYXQgYWNj
ZXNzZXMgdG8gdGhlICdhcmd1bWVudHMnIG9iamVjdCBrbm93IHRoZSBjb3JyZWN0IGJvdW5kLgor
ICAgICAgICAgICAgLy8gV2UgbXVzdCBkbyBzbyB3aXRoICdTZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcycgaW5zdGVhZCBvZiBTZXRMb2NhbCwgYmVjYXVzZSBpdCBpcyBhIDMyLWJpdCBzbG90
IG9uIHRoZSBzdGFjaywgYW5kIG5vdCBhIG5vcm1hbCAoNjQgYml0KSBqcyB2YWx1ZS4KKyAgICAg
ICAgICAgIGFkZFRvR3JhcGgoU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE9wSW5mbyhh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gV2Ug
bXVzdCBhZGQgc29tZSBjaGVjayB0aGF0IHRoZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gd2FzIGNv
cnJlY3QgYW5kIHRoZSB0YXJnZXQgb2YgdGhpcyBjYWxsIGlzIHdoYXQgd2UgdGhvdWdodC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAy
MjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29y
a2luZyBjb3B5KQpAQCAtNzA2LDYgKzcwNiwxMCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oU3RhY2tQYXlsb2FkTG9j
LCBBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSwgTGF6
eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAKKyAgICBjYXNlIFNldEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOgorICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBH
ZXRSZXN0TGVuZ3RoOgogICAgICAgICByZWFkKFN0YWNrKTsKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjI3MDY1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw2ICs1Miw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6CiAgICAgY2FzZSBHZXRDYWxsZWU6CiAg
ICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNlIFNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICBjYXNl
IEdldExvY2FsOgogICAgIGNhc2UgU2V0TG9jYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
OTcsNiArMjA5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgICAg
IGNhc2UgR2V0Q2FsbGVlOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzOgorICAgICAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgICAg
ICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgICAg
IGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgRXhpdE1vZGUgbWF5RXhp
dEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAgY2FzZSBH
ZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICBj
YXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgIGNhc2UgR2V0UmVzdExlbmd0
aDoKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NjAsNiArOTYw
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc1N0YWNrQWNjZXNzRGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN0YWNrQWNjZXNzRGF0YSo+KCk7CiAgICAgfQorCisg
ICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG9wKCkgPT0gU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8dW5zaWduZWQ+KCk7CisgICAgfQogICAgIAogICAgIGJvb2wgaGFz
UGhpKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAyMjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKENyZWF0ZVRoaXMsIE5vZGVSZXN1bHRKUykgLyogTm90
ZSB0aGlzIGlzIG5vdCBNdXN0R2VuZXJhdGUgc2luY2Ugd2UncmUgcmV0dXJuaW5nIGl0IGFueXdh
eS4gKi8gXAogICAgIG1hY3JvKEdldENhbGxlZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
R2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIG1h
Y3JvKFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgXAogICAgIC8qIE5vZGVzIGZvciBsb2NhbCB2YXJpYWJsZSBhY2Nlc3MuIFRoZXNlIG5vZGVz
IGFyZSBsaW5rZWQgdG9nZXRoZXIgdXNpbmcgUGhpIG5vZGVzLiAqL1wKICAgICAvKiBBbnkgdHdv
IG5vZGVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHNhbWUgUGhpIGdyYXBoIHdpbGwgc2hhcmUgdGhl
IHNhbWUgKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjI3MDY1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2Nyw2ICs3NjcsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzOgorICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBNYXBIYXNo
OgogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAgYm9vbCBz
YWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ3JlYXRlVGhpczoK
ICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzOgorICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBH
ZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2NhbDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkocmV2aXNpb24gMjI3MDY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgwMyw2ICsz
ODAzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgor
ICAgICAgICBjb21waWxlU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMobm9kZSk7CisgICAg
ICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBjb21waWxl
R2V0U2NvcGUobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwMTEsNiArNDAxMSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM6CisgICAgICAgIGNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyhub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6IHsKICAg
ICAgICAgY29tcGlsZUdldFJlc3RMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI5OCw2ICsxMTI5OCwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJndW1lbnRDCiAgICAgaW50MzJSZXN1bHQocmVzdWx0
LmdwcigpLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKE5vZGUqIG5vZGUpCit7CisgICAgbV9qaXQuc3RvcmUzMihU
cnVzdGVkSW1tMzIobm9kZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSksIEpJVENvbXBp
bGVyOjpwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKK30KKwogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0ckNhdChOb2RlKiBub2RlKQogewogICAgIEpTVmFs
dWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwNCw2ICszMTA0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tcGlsZUdldFNldHRlcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
R2V0Q2FsbGVlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyhOb2RlKik7CisgICAgdm9pZCBjb21waWxlU2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVN0ckNhdChOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlTmV3QXJyYXlXaXRoU2l6ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRB
cnJheShOb2RlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsxODAsNyBA
QCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBHZXRT
Y29wZToKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOgorICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAg
Y2FzZSBUb051bWJlcjoKICAgICBjYXNlIFRvU3RyaW5nOgogICAgIGNhc2UgVG9PYmplY3Q6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShy
ZXZpc2lvbiAyMjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxOCw2ICs5MTgsOSBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgICAgICAgICAgY29t
cGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICAgICAgICAg
IGNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAgICAgICBjb21waWxlR2V0U2NvcGUo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjMzOSw2ICs2MzQyLDExIEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkMzIocGF5bG9hZEZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKCkKKyAgICB7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9v
dXQuY29uc3RJbnQzMihtX25vZGUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpLCBwYXls
b2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlR2V0U2NvcGUoKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331641</attachid>
            <date>2018-01-18 10:48:04 -0800</date>
            <delta_ts>2018-01-22 12:07:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181739-20180118194802.patch</filename>
            <type>text/plain</type>
            <size>13317</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjcwNzcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE4LTAxLTE3ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHRoZSBhcmd1bWVudCBjb3VudCBpbiBERkdCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlQ2FsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmVjdXJzaXZlLXRhaWwtY2FsbC13aXRo
LWRpZmZlcmVudC1hcmd1bWVudC1jb3VudC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAoYmFyKToKKwogMjAxOC0wMS0xNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbnN0YW50IG5lZWRzIHRvIGNsZWFy
IHRoZSB2YXJhcmdzIGZsYWdzCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9yZWN1cnNpdmUtdGFpbC1j
YWxsLXdpdGgtZGlmZmVyZW50LWFyZ3VtZW50LWNvdW50LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvc3RyZXNzL3JlY3Vyc2l2ZS10YWlsLWNhbGwtd2l0aC1kaWZmZXJlbnQtYXJndW1lbnQtY291
bnQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcmVjdXJzaXZlLXRhaWwtY2Fs
bC13aXRoLWRpZmZlcmVudC1hcmd1bWVudC1jb3VudC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDI1IEBACisidXNlIHN0cmljdCI7CitmdW5jdGlvbiBmb28oeCwgeSkKK3sKKyAgICBpZiAo
YXJndW1lbnRzLmxlbmd0aCA+PSAyKQorICAgICAgICByZXR1cm4gZm9vKHgreSkKKyAgICByZXR1
cm4geDsKK30KK25vSW5saW5lKGZvbyk7CisKK2Z1bmN0aW9uIGJhcih4KQoreworICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID49IDIpCisgICAgICAgIHJldHVybiBiYXIoYXJndW1lbnRzWzBdICsg
YXJndW1lbnRzWzFdKQorICAgIHJldHVybiB4OworfQorbm9JbmxpbmUoYmFyKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyg0MCwgMik7
CisgICAgaWYgKHJlc3VsdCAhPT0gNDIpCisgICAgICAgIHRocm93ICJXcm9uZyByZXN1bHQgZm9y
IGZvbywgZXhwZWN0ZWQgNDIsIGdvdCAiICsgcmVzdWx0OworICAgIHJlc3VsdCA9IGJhcig0MCwg
Mik7CisgICAgaWYgKHJlc3VsdCAhPT0gNDIpCisgICAgICAgIHRocm93ICJXcm9uZyByZXN1bHQg
Zm9yIGJhciwgZXhwZWN0ZWQgNDIsIGdvdCAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTgtMDEtMTcgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgdGhl
IGFyZ3VtZW50IGNvdW50IGluIERGR0J5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVDYWxs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3MzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCByZXF1
aXJlZCBhZGRpbmcgYSBuZXcgREZHIG5vZGU6ICdTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cycsIHRoYXQgdGFrZXMgYW4gdW5zaWduZWQgaW50CisgICAgICAgIGFzIGl0cyBmaXJzdCBPcElu
Zm8gZmllbGQsIGFuZCBzdG9yZXMgaXQgdG8gdGhlIHN0YWNrIGF0IHRoZSByaWdodCBwbGFjZS4K
KworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlVGFpbENhbGwpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJl
cml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5j
cHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6
CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4
ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUp
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisK
IDIwMTgtMDEtMTcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
REZHOjpOb2RlOjpjb252ZXJ0VG9Db25zdGFudCBuZWVkcyB0byBjbGVhciB0aGUgdmFyYXJncyBm
bGFncwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjI3MDY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzMyLDYgKzIzMzIsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoK
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CisgICAgICAg
IGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMjcwNjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQwMSw2ICsxNDAxLDEwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVJlY3Vyc2l2ZVRhaWwKICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogCiAgICAgICAgIC8v
IFdlIG11c3Qgc2V0IHRoZSBhcmd1bWVudHMgdG8gdGhlIHJpZ2h0IHZhbHVlcworICAgICAgICAv
LyBXZSBtdXN0IHVwZGF0ZSB0aGUgYXJndW1lbnQgY291bnQgb24gdGhlIHN0YWNrIHdpdGggJ1Nl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzJyBpbnN0ZWFkIG9mIFNldExvY2FsLAorICAgICAg
ICAvLyBiZWNhdXNlIGl0IGlzIGEgMzItYml0IHNsb3Qgb24gdGhlIHN0YWNrLCBhbmQgbm90IGEg
bm9ybWFsICg2NCBiaXQpIGpzIHZhbHVlLgorICAgICAgICBpZiAoIXN0YWNrRW50cnktPm1faW5s
aW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgYWRkVG9HcmFwaChTZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgT3BJbmZvKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgICAg
IGludCBhcmdJbmRleCA9IDA7CiAgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOyArK2FyZ0luZGV4KSB7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmdJbmRleCwgcmVnaXN0ZXJPZmZzZXQp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZp
c2lvbiAyMjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkod29ya2luZyBjb3B5KQpAQCAtNzA2LDYgKzcwNiwxMCBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oU3RhY2tQYXls
b2FkTG9jLCBBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
KSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAKKyAgICBjYXNlIFNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOgorICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoU3RhY2ss
IENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAg
Y2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgICAgICByZWFkKFN0YWNrKTsKICAgICAgICAgcmV0dXJu
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24g
MjI3MDY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6CiAgICAgY2FzZSBHZXRDYWxs
ZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNlIFNl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAg
ICBjYXNlIEdldExvY2FsOgogICAgIGNhc2UgU2V0TG9jYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwOTcsNiArMjA5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0TG9jYWw6CiAg
ICAgICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOgorICAgICAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgog
ICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAg
ICAgICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgRXhpdE1vZGUg
bWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgR2V0U3RhY2s6CiAgICAg
Y2FzZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoK
KyAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgIGNhc2UgR2V0UmVz
dExlbmd0aDoKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NjAs
NiArOTYwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc1N0YWNrQWNjZXNzRGF0YSgp
KTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN0YWNrQWNjZXNzRGF0YSo+KCk7CiAgICAg
fQorCisgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG9wKCkgPT0gU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAg
ICAgICByZXR1cm4gbV9vcEluZm8uYXM8dW5zaWduZWQ+KCk7CisgICAgfQogICAgIAogICAgIGJv
b2wgaGFzUGhpKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCShyZXZpc2lvbiAyMjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKENyZWF0ZVRoaXMsIE5vZGVSZXN1bHRKUykg
LyogTm90ZSB0aGlzIGlzIG5vdCBNdXN0R2VuZXJhdGUgc2luY2Ugd2UncmUgcmV0dXJuaW5nIGl0
IGFueXdheS4gKi8gXAogICAgIG1hY3JvKEdldENhbGxlZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJbnQzMikgXAor
ICAgIG1hY3JvKFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBsb2NhbCB2YXJpYWJsZSBhY2Nlc3MuIFRoZXNl
IG5vZGVzIGFyZSBsaW5rZWQgdG9nZXRoZXIgdXNpbmcgUGhpIG5vZGVzLiAqL1wKICAgICAvKiBB
bnkgdHdvIG5vZGVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHNhbWUgUGhpIGdyYXBoIHdpbGwgc2hh
cmUgdGhlIHNhbWUgKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjI3
MDY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2Nyw2ICs3NjcsOSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOgorICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBN
YXBIYXNoOgogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ3JlYXRl
VGhpczoKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOgorICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAg
Y2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2Nh
bDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjI3MDY1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgw
Myw2ICszODAzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgY29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKG5vZGUpOwogICAg
ICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzOgorICAgICAgICBjb21waWxlU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMobm9kZSk7
CisgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBj
b21waWxlR2V0U2NvcGUobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwMTEsNiArNDAxMSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgU2V0QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM6CisgICAgICAgIGNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyhub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6
IHsKICAgICAgICAgY29tcGlsZUdldFJlc3RMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI5OCw2ICsxMTI5OCwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJndW1lbnRDCiAgICAgaW50MzJSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKE5vZGUqIG5vZGUpCit7CisgICAgbV9qaXQuc3Rv
cmUzMihUcnVzdGVkSW1tMzIobm9kZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSksIEpJ
VENvbXBpbGVyOjpwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKK30K
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0ckNhdChOb2RlKiBub2RlKQogewogICAg
IEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHJldmlzaW9uIDIyNzA2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwNCw2ICszMTA0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldFNldHRlcihOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlR2V0Q2FsbGVlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyhOb2RlKik7CisgICAgdm9pZCBjb21waWxlU2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVN0ckNhdChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlTmV3QXJyYXlXaXRoU2l6ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3
VHlwZWRBcnJheShOb2RlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsx
ODAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2Fz
ZSBHZXRTY29wZToKICAgICBjYXNlIEdldENhbGxlZToKICAgICBjYXNlIEdldEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOgorICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6
CiAgICAgY2FzZSBUb051bWJlcjoKICAgICBjYXNlIFRvU3RyaW5nOgogICAgIGNhc2UgVG9PYmpl
Y3Q6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCShyZXZpc2lvbiAyMjcwNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxOCw2ICs5MTgsOSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgICAgICAg
ICAgY29tcGlsZUdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICAg
ICAgICAgIGNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAgICAgICBjb21waWxlR2V0
U2NvcGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjMzOSw2ICs2MzQyLDExIEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkMzIocGF5bG9hZEZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVNl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkKKyAgICB7CisgICAgICAgIG1fb3V0LnN0b3Jl
MzIobV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkp
LCBwYXlsb2FkRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICB9CiAgICAg
CiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331947</attachid>
            <date>2018-01-22 12:07:47 -0800</date>
            <delta_ts>2018-01-23 06:28:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181739-20180122210746.patch</filename>
            <type>text/plain</type>
            <size>16417</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjczNDUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE4LTAxLTIyICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBh
cHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHRoZSBhcmd1bWVudCBjb3VudCBpbiBERkdCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlQ2FsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNzM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NjYyNzY2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVzcy9yZWN1cnNpdmUtdGFpbC1jYWxsLXdpdGgtZGlmZmVyZW50LWFyZ3VtZW50LWNv
dW50LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChiYXIpOgorCiAyMDE4LTAx
LTIyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBh
YnN0cmFjdCBpbnRlcnByZXRlciBuZWVkcyB0byBwcm9wZXJseSBtb2RlbCBlZmZlY3RzIG9mIHNv
bWUgTWF0aCBvcHMKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3JlY3Vyc2l2ZS10YWlsLWNhbGwtd2l0
aC1kaWZmZXJlbnQtYXJndW1lbnQtY291bnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJl
c3MvcmVjdXJzaXZlLXRhaWwtY2FsbC13aXRoLWRpZmZlcmVudC1hcmd1bWVudC1jb3VudC5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9yZWN1cnNpdmUtdGFpbC1jYWxsLXdpdGgt
ZGlmZmVyZW50LWFyZ3VtZW50LWNvdW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUg
QEAKKyJ1c2Ugc3RyaWN0IjsKK2Z1bmN0aW9uIGZvbyh4LCB5KQoreworICAgIGlmIChhcmd1bWVu
dHMubGVuZ3RoID49IDIpCisgICAgICAgIHJldHVybiBmb28oeCt5KQorICAgIHJldHVybiB4Owor
fQorbm9JbmxpbmUoZm9vKTsKKworZnVuY3Rpb24gYmFyKHgpCit7CisgICAgaWYgKGFyZ3VtZW50
cy5sZW5ndGggPj0gMikKKyAgICAgICAgcmV0dXJuIGJhcihhcmd1bWVudHNbMF0gKyBhcmd1bWVu
dHNbMV0pCisgICAgcmV0dXJuIHg7Cit9Citub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKDQwLCAyKTsKKyAgICBp
ZiAocmVzdWx0ICE9PSA0MikKKyAgICAgICAgdGhyb3cgIldyb25nIHJlc3VsdCBmb3IgZm9vLCBl
eHBlY3RlZCA0MiwgZ290ICIgKyByZXN1bHQ7CisgICAgcmVzdWx0ID0gYmFyKDQwLCAyKTsKKyAg
ICBpZiAocmVzdWx0ICE9PSA0MikKKyAgICAgICAgdGhyb3cgIldyb25nIHJlc3VsdCBmb3IgYmFy
LCBleHBlY3RlZCA0MiwgZ290ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIyNzM0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAxOC0wMS0yMiAgUm9iaW4gTW9y
aXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB0aGUgYXJndW1l
bnQgY291bnQgaW4gREZHQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2ZUNhbGwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTczOQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzY2Mjc2NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIGEgZnVuY3Rpb24sIGl0cyBudW1iZXIg
b2YgYXJndW1lbnRzIGlzIHNldCBvbiB0aGUgc3RhY2suIFdoZW4gd2UgdHVybiBhIHJlY3Vyc2l2
ZSB0YWlsIGNhbGwKKyAgICAgICAgaW50byBhIGp1bXAsIHdlIHNob3VsZCB1cGRhdGUgdGhhdCBz
dGFjayBzbG90IGFzIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBmdW5jdGlvbiB3YXMg
b3JpZ2luYWxseQorICAgICAgICBjYWxsZWQgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgYXJndW1l
bnRzLiBGb3JnZXR0aW5nIHRvIGRvIHRoaXMgaXMgb2JzZXJ2YWJsZSB0aHJvdWdoICdhcmd1bWVu
dHMubGVuZ3RoJy4KKworICAgICAgICBJdCByZXF1aXJlZCBhZGRpbmcgYSBuZXcgREZHIG5vZGU6
ICdTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcycsIHRoYXQgdGFrZXMgYW4gdW5zaWduZWQg
aW50CisgICAgICAgIGFzIGl0cyBmaXJzdCBPcEluZm8gZmllbGQsIGFuZCBzdG9yZXMgaXQgdG8g
dGhlIHN0YWNrIGF0IHRoZSByaWdodCBwbGFjZS4KKworICAgICAgICBXZSBtdXN0IGJlIGEgYml0
IGNhcmVmdWwgaW4gd2hlcmUgd2UgcHV0IHRoaXMgbmV3IG5vZGUsIGFzIGl0IENsb2JiZXJzRXhp
dC4KKyAgICAgICAgV2UgbXVzdCBhbHNvIGZpeCBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
IGFuZCBERkdQdXRTdGFja1NpbmtpbmdQaGFzZSBhcyB0aGV5IGFzc3VtZWQgdGhhdCBhbnkgbm9k
ZSB0aGF0IHdyaXRlcyB0byB0aGUgc3RhY2sgbXVzdCB3cml0ZSB0byBlaXRoZXIgYW4gYXJndW1l
bnQgb3IgYSBsb2NhbC4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2ZVRhaWxD
YWxsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR01h
eUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
VHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk6CisKIDIwMTgt
MDEtMjIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgREZH
IGFic3RyYWN0IGludGVycHJldGVyIG5lZWRzIHRvIHByb3Blcmx5IG1vZGVsIGVmZmVjdHMgb2Yg
c29tZSBNYXRoIG9wcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjI3MzQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQ1LDYgKzIzNDUsOSBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpczoKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwog
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6
CisgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMjI3MzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg0
LDcgKzQ4NCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIWhlYXAucGF5bG9hZCgpLmlzVG9wKCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyhoZWFwLnBheWxvYWQoKS52YWx1
ZTMyKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2xvYmJlcmVkQnlUaGlzQmxvY2sub3Bl
cmFuZChyZWcpID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSByZWdpc3Rl
ciBtYXkgbm90IHBvaW50IHRvIGFuIGFyZ3VtZW50IG9yIGxvY2FsLCBmb3IgZXhhbXBsZSBpZiB3
ZSBhcmUgbG9va2luZyBhdCBTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcy4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghcmVnLmlzSGVhZGVyKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xvYmJlcmVkQnlUaGlzQmxvY2sub3BlcmFuZChyZWcpID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgTm9PcENsb2JiZXJpemUoKSk7
CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjI3MzQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MDMs
NiArMTQwMyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2ZVRhaWwKICAg
ICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogCiAgICAgICAgIC8vIFdlIG11c3Qgc2V0IHRoZSBh
cmd1bWVudHMgdG8gdGhlIHJpZ2h0IHZhbHVlcworICAgICAgICBpZiAoIXN0YWNrRW50cnktPm1f
aW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgYWRkVG9HcmFwaChTZXRBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgT3BJbmZvKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAg
ICAgIGludCBhcmdJbmRleCA9IDA7CiAgICAgICAgIGZvciAoOyBhcmdJbmRleCA8IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOyArK2FyZ0luZGV4KSB7CiAgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmdJbmRleCwgcmVnaXN0ZXJPZmZz
ZXQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyMjczNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtNzA2LDYgKzcwNiwxMCBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oU3RhY2tQ
YXlsb2FkTG9jLCBBYnN0cmFjdEhlYXAoU3RhY2ssIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAKKyAgICBjYXNlIFNldEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgorICAgICAgICB3cml0ZShBYnN0cmFjdEhlYXAoU3Rh
Y2ssIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgICAgICByZWFkKFN0YWNrKTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNp
b24gMjI3MzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6CiAgICAgY2FzZSBHZXRD
YWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNl
IFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoK
ICAgICBjYXNlIEdldExvY2FsOgogICAgIGNhc2UgU2V0TG9jYWw6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyNzM0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwOTksNiArMjA5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0TG9jYWw6
CiAgICAgICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzOgorICAgICAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OgogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6
CiAgICAgICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAJKHJldmlzaW9uIDIyNzM0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgRXhpdE1v
ZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgR2V0U3RhY2s6CiAg
ICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
czoKKyAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgIGNhc2UgR2V0
UmVzdExlbmd0aDoKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyNzM0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
NzEsNiArOTcxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc1N0YWNrQWNjZXNzRGF0
YSgpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN0YWNrQWNjZXNzRGF0YSo+KCk7CiAg
ICAgfQorCisgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG9wKCkgPT0gU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwor
ICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dW5zaWduZWQ+KCk7CisgICAgfQogICAgIAogICAg
IGJvb2wgaGFzUGhpKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCShyZXZpc2lvbiAyMjczNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKENyZWF0ZVRoaXMsIE5vZGVSZXN1bHRK
UykgLyogTm90ZSB0aGlzIGlzIG5vdCBNdXN0R2VuZXJhdGUgc2luY2Ugd2UncmUgcmV0dXJuaW5n
IGl0IGFueXdheS4gKi8gXAogICAgIG1hY3JvKEdldENhbGxlZSwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIE5vZGVSZXN1bHRJbnQzMikg
XAorICAgIG1hY3JvKFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZvciBsb2NhbCB2YXJpYWJsZSBhY2Nlc3MuIFRo
ZXNlIG5vZGVzIGFyZSBsaW5rZWQgdG9nZXRoZXIgdXNpbmcgUGhpIG5vZGVzLiAqL1wKICAgICAv
KiBBbnkgdHdvIG5vZGVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHNhbWUgUGhpIGdyYXBoIHdpbGwg
c2hhcmUgdGhlIHNhbWUgKi9cCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjI3MzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2OCw2ICs3NjgsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOgorICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2Fz
ZSBNYXBIYXNoOgogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAg
ICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRT
dGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyNzM0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICB9OwogCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gd3JpdGVIYW5kbGVyID0gWyZdIChWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJh
bmQuaXNIZWFkZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5vcCgpID09IFB1dFN0YWNr
IHx8IG5vZGUtPm9wKCkgPT0gTG9hZFZhcmFyZ3MgfHwgbm9kZS0+b3AoKSA9PSBGb3J3YXJkVmFy
YXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXMuYXBwZW5kKG9wZXJhbmQpOwog
ICAgICAgICAgICAgICAgICAgICB9OwpAQCAtMjg4LDYgKzI5MCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgICAgICAgICBhdXRvIHdyaXRlSGFuZGxl
ciA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChvcGVyYW5kLmlzSGVhZGVyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+b3Ao
KSA9PSBMb2FkVmFyYXJncyB8fCBub2RlLT5vcCgpID09IEZvcndhcmRWYXJhcmdzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLm9wZXJhbmQob3BlcmFuZCkgPSBEZWFkRmx1c2g7
CiAgICAgICAgICAgICAgICAgICAgIH07CkBAIC01MDEsNiArNTA1LDggQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gd3JpdGVIYW5k
bGVyID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG9wZXJhbmQuaXNIZWFkZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMb2FkVmFyYXJncyBhbmQgRm9y
d2FyZFZhcmFyZ3MgYXJlIHVuY29uZGl0aW9uYWwgd3JpdGVzIHRvIHRoZSBzdGFjawogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb25zIHRoZXkgY2xhaW0gdG8gd3JpdGUgdG8uIFRo
ZXkgZG8gbm90IHJlYWQgZnJvbSB0aGUgc3RhY2sgCiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBsb2NhdGlvbnMgdGhleSB3cml0ZSB0by4gVGhpcyBtYWtlcyB0aG9zZSBzdGFjayBsb2NhdGlv
bnMgZGVhZCByaWdodCAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMjczNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENyZWF0
ZVRoaXM6CiAgICAgY2FzZSBHZXRDYWxsZWU6CiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpczoKKyAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAg
IGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICBjYXNlIEdldExvY2FsOgogICAgIGNhc2UgU2V0TG9j
YWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIyNzM0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
MDgsNiArMzgwOCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBTZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpczoKKyAgICAgICAgY29tcGlsZVNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKG5vZGUp
OworICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRTY29wZToKICAgICAgICAg
Y29tcGlsZUdldFNjb3BlKG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjczNDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MDE2LDYgKzQwMTYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOgorICAgICAgICBjb21waWxlU2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBHZXRSZXN0TGVuZ3Ro
OiB7CiAgICAgICAgIGNvbXBpbGVHZXRSZXN0TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiAyMjczNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzMjQsNiArMTEzMjQsMTIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFyZ3VtZW50QwogICAgIGludDMyUmVzdWx0
KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
ZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhOb2RlKiBub2RlKQoreworICAgIG1faml0LnN0
b3JlMzIoVHJ1c3RlZEltbTMyKG5vZGUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpLCBK
SVRDb21waWxlcjo6cGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7Cisg
ICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJD
YXQoTm9kZSogbm9kZSkKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hp
bGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMjczNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxMjUsNiArMzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRTZXR0
ZXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldENhbGxlZShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoTm9kZSopOworICAgIHZvaWQgY29t
cGlsZVNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVTdHJDYXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5V2l0aFNpemUoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjI3MzQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIAogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBHZXRDYWxsZWU6CiAg
ICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKKyAgICBjYXNlIFNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOgogICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgY2FzZSBUb1N0
cmluZzoKICAgICBjYXNlIFRvT2JqZWN0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjI3MzQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MTgsNiArOTE4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2V0QXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM6CisgICAgICAgICAgICBjb21waWxlU2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFNjb3BlOgog
ICAgICAgICAgICAgY29tcGlsZUdldFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTYz
NDMsNiArNjM0NiwxMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc2V0SW50MzIobV9vdXQu
bG9hZDMyKHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKICAgICB9
CisKKyAgICB2b2lkIGNvbXBpbGVTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpCisgICAg
eworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpKSwgcGF5bG9hZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKCkKICAgICB7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>