<?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>162095</bug_id>
          
          <creation_ts>2016-09-16 15:32:33 -0700</creation_ts>
          <short_desc>Speed up Heap::isMarkedConcurrently</short_desc>
          <delta_ts>2016-09-27 16:44:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1230639</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-16 15:32:33 -0700</bug_when>
    <thetext>Heap::isMarkedConcurrently has a fairly expensive load-load fence.

This fence is there because:
 1. If the read of m_version in MarkedBlock::needsFlip isn&apos;t what&apos;s expected then;
 2. The read of m_marks in MarkedBlock::isMarked needs to observe the value that was stored *before* m_version was stored.

This ordering isn&apos;t guaranteed on ARM, which has a weak memory model.

There are 3 ways to guarantee this ordering:
 A. Use a barrier instruction.
 B. Use a load-acquire (new in ARMv8).
 C. use ARM&apos;s address dependency rule, which C++ calls memory_order_consume.

In general:
 A. is slow but orders all of memory in an intuitive manner.
 B. is faster-ish and has the same property-ish.
 C. should be faster still, but *only orders dependent loads*. This last part is critical! Consume isn&apos;t an all-out replacement for acquire (acquire is rather a superset of consume).


ARM explains the address dependency rule in their document &quot;barrier litmus tests and cookbook&quot;:

&gt; *Resolving by the use of barriers and address dependency*
&gt;
&gt; There is a rule within the ARM architecture that:
&gt;
&gt; Where the value returned by a read is used to compute the virtual address of a subsequent read or write (this is known as an address dependency), then these two memory accesses will be observed in program order. An address dependency exists even if the value read by the first read has no effect in changing the virtual address (as might be the case if the value returned is masked off before it is used, or if it had no effect on changing a predicted address value).
&gt; 
&gt; This restriction applies only when the data value returned from one read is used as a data value to calculate the address of a subsequent read or write. This does not apply if the data value returned from
one read is used to determine the condition code flags, and the values of the flags are used for condition code evaluation to determine the address of a subsequent reads, either through conditional execution or
the evaluation of a branch. This is known as a control dependency.
&gt;
&gt; Where both a control and address dependency exist, the ordering behaviour is consistent with the address dependency. 


C++&apos;s memory_order_consume is unfortunately unimplemented by C++ compilers, and maybe unimplementable as spec&apos;d. I&apos;m working with interested folks in the committee to fix this situation: http://wg21.link/p0190r2

You&apos;ll note that this paper has a bunch of proposed solutions, no C++ implementation of any of them, and that Linux uses consume ordering in RCU successfully. I therefore intend to:
 1. implement our own special-purpose dependency + consume in WebKit&apos;s Atomics.h;
 2. Benchmark and use it in this location;
 3. If that works out, commit and slowly start using it in other locations (which may require improving the hacky API I have in mind).
 4. Feed this information back to the C++ standards committee so that C++Next has a proper way to use consume ordering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230640</commentid>
    <comment_count>1</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-16 15:38:32 -0700</bug_when>
    <thetext>So far I&apos;ve:
 - Compiled the code for A64 with barrier, and with dependency ordering;
 - Changed Heap.cpp:measurePhaseTiming to return true;
 - Ran jsc a few times on-device with a self-contained splay.js (from Octane);
 - grep &quot;Heap::markRoots convergence took&quot; | tail -n2

This gives the last GC:Eden and GC:Full entries for each run, which I then averaged to get the following numbers:
  GC:Eden is 93% average runtime with consume ordering than it is with the barrier.
  GC:Full is 76% average runtime with consume ordering than it is with the barrier.
These measurements are fairly noisy, though!

I ran Octane and Kraken, it reports:
  31.0664+-0.2420 30.9790+-0.1619 might be 1.0028x faster

I&apos;m running them for longer, and added JSBench.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230754</commentid>
    <comment_count>2</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-16 20:58:38 -0700</bug_when>
    <thetext>Results from running octane+kraken with --outer 50 are neutral-ish. This is OK: the GC&apos;s own self measurements say it got better, but overall it&apos;s hard to notice (even splay seems slightly *slower* in these measurements).

                                                 original                 dependency                                    
Octane:
   encrypt                                   0.26637+-0.00281    ?     0.26663+-0.00314       ?
   decrypt                                   4.59402+-0.05826    ?     4.62301+-0.04497       ?
   deltablue                        x2       0.22070+-0.00171          0.22006+-0.00331       
   earley                                    0.50421+-0.00415          0.50098+-0.00498       
   boyer                                    10.51093+-0.08624         10.41645+-0.06887       
   navier-stokes                    x2       9.95340+-0.09436          9.91315+-0.09518       
   raytrace                         x2       1.51839+-0.01214    ?     1.52155+-0.01326       ?
   richards                         x2       0.15778+-0.00258    ?     0.15873+-0.00263       ?
   splay                            x2       1.05021+-0.01220    ?     1.05662+-0.01293       ?
   regexp                           x2      43.77781+-0.25201         43.26305+-0.45005         might be 1.0119x faster
   pdfjs                            x2      81.78266+-0.95327         80.39971+-1.06762         might be 1.0172x faster
   mandreel                         x2     107.16854+-1.15268        106.28571+-1.06227       
   gbemu                            x2      84.47725+-1.36278         83.21173+-1.26753         might be 1.0152x faster
   closure                                   0.75797+-0.00697          0.74811+-0.00958         might be 1.0132x faster
   jquery                                   11.70750+-0.11316         11.62195+-0.14425       
   box2d                            x2      24.69607+-0.30160         24.23807+-0.40581         might be 1.0189x faster
   zlib                             x2     666.82827+-12.50878   ?   685.25164+-16.85821      ? might be 1.0276x slower
   typescript                       x2    1460.83906+-13.60317   ?  1461.27808+-13.61377      ?

   &lt;geometric&gt;                              10.81353+-0.03277         10.77419+-0.03512         might be 1.0037x faster

                                                 original                 dependency                                    
Kraken:
   ai-astar                                  213.139+-1.663      ?     214.018+-2.360         ?
   audio-beat-detection                       73.722+-0.899             73.513+-1.162         
   audio-dft                                 160.656+-1.419            160.038+-1.366         
   audio-fft                                  54.096+-0.415      ?      54.140+-0.552         ?
   audio-oscillator                           70.751+-0.703      ?      71.216+-0.585         ?
   imaging-darkroom                           95.893+-1.023      ?      96.225+-1.048         ?
   imaging-desaturate                        101.466+-0.978      ?     102.377+-0.830         ?
   imaging-gaussian-blur                     124.911+-1.589            123.726+-1.553         
   json-parse-financial                       59.564+-0.415             59.434+-0.506         
   json-stringify-tinderbox                   38.598+-0.432             38.557+-0.437         
   stanford-crypto-aes                        85.026+-0.770             84.783+-0.864         
   stanford-crypto-ccm                        62.169+-1.002             61.935+-1.066         
   stanford-crypto-pbkdf2                    193.870+-1.840            191.803+-2.080           might be 1.0108x faster
   stanford-crypto-sha256-iterative           63.815+-0.547             63.426+-0.694         

   &lt;arithmetic&gt;                               99.834+-0.296             99.657+-0.346           might be 1.0018x faster

                                                 original                 dependency                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                           32.8558+-0.0744           32.7665+-0.0780          might be 1.0027x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230761</commentid>
    <comment_count>3</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-16 21:42:26 -0700</bug_when>
    <thetext>Sample function where this gets inlined JSC::CodeBlock::visitWeakly(JSC::SlotVisitor&amp;):

Before:
	ldr	w10, [x8,#136]         # Original read of m_version in MarkedBlock::needsFlip
	cmp	w10, w9
	b.ne	&lt;JSC::CodeBlock::visitWeakly(JSC::SlotVisitor&amp;)+0x88&gt;
	dmb	ish                    # This barrier is gone in the below version
	sub	x9, x20, x8
	lsr	x10, x9, #7            # Address computation
	ldrb	w8, [x8,x10]           # This load must observe stores which occured before the read of m_version above
	ubfx	w9, w9, #4, #3
	orr	w10, wzr, #0x1
	lsl	w9, w10, w9
	and	w8, w8, w9
	cbnz	w8, &lt;JSC::CodeBlock::visitWeakly(JSC::SlotVisitor&amp;)+0x188&gt;
	b	&lt;JSC::CodeBlock::visitWeakly(JSC::SlotVisitor&amp;)+0x88&gt;

Dependency:
	ldr	w11, [x8,#136]         # Original read of m_version in MarkedBlock::needsFlip
	eor	x9, x11, x11           # Create a dependency: x9 now holds a 0 which depends on the above load
	cmp	w11, w10
	b.ne	&lt;JSC::CodeBlock::visitWeakly(JSC::SlotVisitor&amp;)+0x8c&gt;
	sub	x10, x20, x8
	add	x9, x9, x10, lsr #4   # Address computation using the dependent zero
	lsr	x10, x9, #3           # Ditto, dependent zero carries through here
	ldrb	w8, [x8,x10]          # Dependent load, ARM&apos;s address dependency rule guarantees the value loaded will see stores which occured before m_version was stored
	and	w9, w9, #0x7
	orr	w10, wzr, #0x1
	lsl	w9, w10, w9
	and	w8, w8, w9
	cbnz	w8, &lt;JSC::CodeBlock::visitWeakly(JSC::SlotVisitor&amp;)+0x18c&gt;
	b	&lt;JSC::CodeBlock::visitWeakly(JSC::SlotVisitor&amp;)+0x8c&gt;

The same Heap::isMarkedConcurrently code and its callees get inlined in 12 places total. Here are the other ones:
  &lt;JSC::CodeBlock::propagateTransitions(JSC::SlotVisitor&amp;)&gt;: 3x inlined
  &lt;JSC::CodeBlock::determineLiveness(JSC::SlotVisitor&amp;)&gt;: 2x inlined
  &lt;JSC::CodeBlock::shouldJettisonDueToOldAge()&gt;:
  &lt;JSC::AccessCase::propagateTransitions(JSC::SlotVisitor&amp;) const&gt;:
  &lt;JSC::SlotVisitor::markAuxiliary(void const*)&gt;:
  &lt;JSC::Structure::isCheapDuringGC()&gt;: 2x inlined
  &lt;JSC::Structure::markIfCheap(JSC::SlotVisitor&amp;)&gt;:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230765</commentid>
    <comment_count>4</comment_count>
      <attachid>289161</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-16 22:21:31 -0700</bug_when>
    <thetext>Created attachment 289161
patch

A few open questions.

Which instruction is better for creating the dependency:
 - eor %xdep %xin %xin
 - and %xdep %xin #0
That&apos;s really a μarch question, I&apos;ll ask around. Either could be decoded intelligently at a zero-cycle cost by the front-end and rewritten to XZR (which I assume still keeps the dependency, though that&apos;s worth double-checking).

Should I specialize the template for different input sizes? Right now my inline asm uses %x (the full 64-bit X registers) and it&apos;s in a template, so it&apos;ll use the full register even if the input is a 32-bit W register.

Should I implement this for A32 / T32 as well? I figure it&apos;s safer to do one architecture at a time, so I&apos;d do it in a separate patch.

I just use a typedef for ConsumeDependency, and it&apos;s set to size_t. Should I encapsulate to reduce the operations which can be done with this value?

Overall I think we&apos;ll want to evolve this to a real C++ class as we start using it. I&apos;ll ping Paul and see what he thinks for RCU.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230766</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-16 22:24:06 -0700</bug_when>
    <thetext>Attachment 289161 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:236:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:250:  The parameter name &quot;dependency&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:476:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 3 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230851</commentid>
    <comment_count>6</comment_count>
      <attachid>289161</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-17 08:25:03 -0700</bug_when>
    <thetext>Comment on attachment 289161
patch

What about armv7? Wouldn&apos;t almost exactly the same code work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230858</commentid>
    <comment_count>7</comment_count>
      <attachid>289172</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-17 09:58:56 -0700</bug_when>
    <thetext>Created attachment 289172
patch

(In reply to comment #6)
&gt; Comment on attachment 289161 [details]
&gt; patch
&gt; 
&gt; What about armv7? Wouldn&apos;t almost exactly the same code work?

Added. I was wary of rolling this change to 2 architectures at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230859</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-17 09:59:55 -0700</bug_when>
    <thetext>Attachment 289172 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:236:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:242:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:250:  The parameter name &quot;dependency&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:476:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230865</commentid>
    <comment_count>9</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-17 11:40:50 -0700</bug_when>
    <thetext>Forgot to say: this is the general idea. I need to expand on it and add a few tests. Specifically, I want to SFINAE on is_trivially_copyable, and I want to switch template instances based on size (8-, 16-, 32-, 64-bit versions) because the load and xor should be different in some cases (especially the A32/T32 version with 64-bit, needs paired registers and needs dependency on both loaded 32-bit registers if I&apos;m not mistaken).

So, this is good for preliminary review, but definitely not commit yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230891</commentid>
    <comment_count>10</comment_count>
      <attachid>289184</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-17 18:10:29 -0700</bug_when>
    <thetext>Created attachment 289184
patch

I think the patch is pretty much good to go! I&apos;ll upload a test as well, not sure where it should go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230892</commentid>
    <comment_count>11</comment_count>
      <attachid>289185</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-17 18:11:22 -0700</bug_when>
    <thetext>Created attachment 289185
test

A test. Which directory should this go in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230893</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-17 18:12:24 -0700</bug_when>
    <thetext>Attachment 289184 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:236:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:242:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:250:  The parameter name &quot;dependency&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:476:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230894</commentid>
    <comment_count>13</comment_count>
      <attachid>289186</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-17 18:13:39 -0700</bug_when>
    <thetext>Created attachment 289186
patch

(was the old patch again)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230895</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-17 18:15:15 -0700</bug_when>
    <thetext>Attachment 289186 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:221:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:261:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Atomics.h:262:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Atomics.h:274:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Atomics.h:276:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:250:  The parameter name &quot;dependency&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:476:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 8 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231285</commentid>
    <comment_count>15</comment_count>
      <attachid>289186</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-09-19 13:41:47 -0700</bug_when>
    <thetext>Comment on attachment 289186
patch

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

&gt; Source/JavaScriptCore/heap/HeapInlines.h:96
&gt; +    auto f = block.needsFlipWithDependency(objectSpaceVersion);

&quot;f&quot; should have a name.

&gt; Source/JavaScriptCore/heap/MarkedBlock.h:250
&gt; +    bool isMarked(const void*, WTF::ConsumeDependency dependency = 0 /* No dependency */);

It is better for code to document itself. If 0 means &quot;no dependency&quot;, it should be an enum-style value or a named const.

&gt; Source/JavaScriptCore/heap/MarkedBlock.h:474
&gt; +    auto c = WTF::consumeLoad(&amp;m_version);

&quot;c&quot; needs a name. If &quot;c&quot; is the value of m_version, you can call it &quot;version&quot;.

&gt; Source/JavaScriptCore/heap/MarkedBlock.h:475
&gt; +    struct { bool needsFlip; WTF::ConsumeDependency dependency; } ret;

Since this struct is produced in one file an consumed in another, it should be declared in the header.

&gt; Source/WTF/ChangeLog:42
&gt; +        (WTF::makeMagicalZero): a 0 which carries a dependency

It&apos;s a warning flag when the comment describing a function is short and uses words that are not the same as the words in the name of the function. Usually, the words you would use to describe a function should appear in its name. I would call this function &quot;zeroWithConsumeDependency&quot;.

&gt; Source/WTF/wtf/Atomics.h:211
&gt; +    // doesn&apos;t know it. It&apos;s magical because it creates an address dependency

Notice that this line of commentary fully explains how to better name this function.

&gt; Source/WTF/wtf/Atomics.h:221
&gt; +                 // Lie about touching memory, freak the optimizer out a bit.
&gt; +                 : &quot;memory&quot;);

This comment isn&apos;t helpful. You should explain the effect you&apos;re trying to achieve, and exactly which kinds of optimizations you want to avoid.

&gt; Source/WTF/wtf/Atomics.h:229
&gt; +#else

I think this #else ought to specify its valid CPU architectures, and produce an #error for an unrecognized CPU architecture. Otherwise, new CPU bring-ups will get super-weird errors that could have been caught at compile time.

&gt; Source/WTF/wtf/Atomics.h:249
&gt; +#else

Should specify CPU architecture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231556</commentid>
    <comment_count>16</comment_count>
      <attachid>289330</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-19 23:30:07 -0700</bug_when>
    <thetext>Created attachment 289330
patch

Patch updated to address all comments, except as noted below:

&gt; &gt; Source/WTF/wtf/Atomics.h:229
&gt; &gt; +#else
&gt; 
&gt; I think this #else ought to specify its valid CPU architectures, and produce
&gt; an #error for an unrecognized CPU architecture. Otherwise, new CPU bring-ups
&gt; will get super-weird errors that could have been caught at compile time.
&gt; 
&gt; &gt; Source/WTF/wtf/Atomics.h:249
&gt; &gt; +#else
&gt; 
&gt; Should specify CPU architecture.

I don&apos;t think we should do this: as I coded it the behavior reverts to the one I&apos;m replacing (from consume to acquire). That&apos;s a pessimization but it&apos;s valid (and is what all C++ implementations do to consume already). Eventually I want to get this back into C++, so we&apos;re just making other weak architectures not as fast as they could be, there shouldn&apos;t be weird errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231557</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-19 23:31:08 -0700</bug_when>
    <thetext>Attachment 289330 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:223:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:250:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:284:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Atomics.h:285:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Atomics.h:293:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Atomics.h:295:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:251:  The parameter name &quot;dependency&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:270:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 8 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231740</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-09-20 10:13:10 -0700</bug_when>
    <thetext>The style checker warnings all seem valid, except for the last one. Could you please address them?

Additionally, the design in WTF is that all public symbols are supposed to be pulled into global namespace, so one should almost never use the WTF:: prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232101</commentid>
    <comment_count>19</comment_count>
      <attachid>289464</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-21 10:08:07 -0700</bug_when>
    <thetext>Created attachment 289464
patch

- Format patch with clang-format -style=WebKit. Error left is regex getting confused by inline assembly constraints (it doesn&apos;t like the colon because it doesn&apos;t understand inline asm).
- Remove WTF:: from bitwise_cast (leave other WTF:: uses which follow the surrounding code&apos;s uses of WTF::).
- Make sure 64-bit values don&apos;t tear.

Any opinions on where the test should go?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232107</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-09-21 10:43:11 -0700</bug_when>
    <thetext>&gt; - Format patch with clang-format -style=WebKit.

That&apos;s not always correct, Jonathan noticed some mistakes in clang formatter rules while looking at it. Note that the latest patch doesn&apos;t apply, so it&apos;s not being processed.

&gt; Any opinions on where the test should go?

The only place I can think of is Tools/TestWebKitAPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233467</commentid>
    <comment_count>21</comment_count>
      <attachid>289837</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-26 11:03:12 -0700</bug_when>
    <thetext>Created attachment 289837
patch

Rebased. Still need to move test to Tools/TestWebKitAPI/ but otherwise review is ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233470</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 11:06:19 -0700</bug_when>
    <thetext>Attachment 289837 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233471</commentid>
    <comment_count>23</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-09-26 11:08:32 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WTF/wtf/Atomics.h:249
&gt; &gt; &gt; +#else
&gt; &gt; 
&gt; &gt; Should specify CPU architecture.
&gt; 
&gt; I don&apos;t think we should do this: as I coded it the behavior reverts to the
&gt; one I&apos;m replacing (from consume to acquire).

Sounds good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233472</commentid>
    <comment_count>24</comment_count>
      <attachid>289837</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-26 11:08:37 -0700</bug_when>
    <thetext>Comment on attachment 289837
patch

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

&gt; Source/JavaScriptCore/heap/MarkedBlock.h:277
&gt; +        WTF::ConsumeDependency dependency;

Remove the WTF::

&gt; Source/JavaScriptCore/heap/MarkedBlock.h:484
&gt; +    auto consumed = WTF::consumeLoad(&amp;m_markingVersion);

Remove the WTF::

&gt; Source/WTF/wtf/Atomics.h:205
&gt; +typedef size_t ConsumeDependency;

You should do a &quot;using WTF::ConsumeDependency&quot; at the bottom of this file.  It&apos;s perverse, but the WTF convention is: WTF headers put their stuff in the WTF namespace and then use the public parts from the global namespace.  It&apos;s a bug that some of the Atomics stuff doesn&apos;t do this (like the fences).  I think that your new code should follow the general WTF convention.  Feel free to fix any other parts of Atomics.h in this patch if you like, like the fact that loadStoreFence() and friend are not usinged from the global namespace.

&gt; Source/WTF/wtf/Atomics.h:238
&gt; +ALWAYS_INLINE ConsumeDependency zeroWithConsumeDependency(T value)

Ditto.

&gt; Source/WTF/wtf/Atomics.h:264
&gt; +template &lt;typename T, typename std::enable_if&lt;sizeof(T) == 2&gt;::type* = nullptr&gt;

Ditto.

&gt; Source/WTF/wtf/Atomics.h:272
&gt; +ALWAYS_INLINE ConsumeDependency zeroWithConsumeDependency(T value)

Ditto.

&gt; Source/WTF/wtf/Atomics.h:279
&gt; +struct Consumed {

Ditto

&gt; Source/WTF/wtf/Atomics.h:299
&gt; +ALWAYS_INLINE auto consumeLoad(const T* location)

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233639</commentid>
    <comment_count>25</comment_count>
      <attachid>289886</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-26 16:21:04 -0700</bug_when>
    <thetext>Created attachment 289886
patch

Patch with test. Remove WTF:: prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233640</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 16:23:31 -0700</bug_when>
    <thetext>Attachment 289886 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/Consume.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Consume.cpp:33:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Consume.cpp:34:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Consume.cpp:35:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Consume.cpp:36:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Consume.cpp:37:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Consume.cpp:113:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 9 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233642</commentid>
    <comment_count>27</comment_count>
      <attachid>289888</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-26 16:27:00 -0700</bug_when>
    <thetext>Created attachment 289888
patch

Fix format of test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233643</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 16:29:08 -0700</bug_when>
    <thetext>Attachment 289888 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233648</commentid>
    <comment_count>29</comment_count>
      <attachid>289891</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-26 16:39:52 -0700</bug_when>
    <thetext>Created attachment 289891
patch

Fix asm warning on ARM build.
Make code cleaner by ordering function SFINAEs by size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233650</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 16:41:05 -0700</bug_when>
    <thetext>Attachment 289891 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:233:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:253:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233670</commentid>
    <comment_count>31</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-26 17:16:27 -0700</bug_when>
    <thetext>Building the test I added is failing in an unexpected manner:

Tools/TestWebKitAPI/Tests/WTF/Consume.cpp: In member function &apos;virtual void TestWebKitAPI::WTF_ConsumePtr_Test::TestBody()&apos;:
../../Tools/TestWebKitAPI/Tests/WTF/Consume.cpp:92:18: error: &apos;main&apos; was not declared in this scope
../../Tools/TestWebKitAPI/Tests/WTF/Consume.cpp:94:179: error: template argument 1 is invalid
../../Tools/TestWebKitAPI/Tests/WTF/Consume.cpp:95:184: error: template argument 1 is invalid

It looks like I didn&apos;t set up the xcode project file properly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233674</commentid>
    <comment_count>32</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-26 17:25:12 -0700</bug_when>
    <thetext>The main difference seems to be:

Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:            ADCEBBA51D99D4CF002E283A /* Consume.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Consume.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:                            ADCEBBA51D99D4CF002E283A /* Consume.cpp */,


Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:            7C83DF1D1D0A590C00FEBCF3 /* Lock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FFC45A41B73EBE20085BD62 /* Lock.cpp */; };
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:            0FFC45A41B73EBE20085BD62 /* Lock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Lock.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:                            0FFC45A41B73EBE20085BD62 /* Lock.cpp */,
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:                            7C83DF1D1D0A590C00FEBCF3 /* Lock.cpp in Sources */,


I&apos;m missing two entries, and the first should have a fileRef instead of this weird lastKnownFileType. This UI thing confuses and frightens me. I&apos;ll keep clicking around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233994</commentid>
    <comment_count>33</comment_count>
      <attachid>289986</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-27 11:38:52 -0700</bug_when>
    <thetext>Created attachment 289986
patch

Updated patch should fix xcode issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233996</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-27 11:40:58 -0700</bug_when>
    <thetext>Attachment 289986 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:233:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:253:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234008</commentid>
    <comment_count>35</comment_count>
      <attachid>289993</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-27 12:08:54 -0700</bug_when>
    <thetext>Created attachment 289993
patch

Some builds were sad, fix them (add static_cast, and use globals in the test instead of &amp;main).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234010</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-27 12:10:52 -0700</bug_when>
    <thetext>Attachment 289993 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:232:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:251:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:256:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234049</commentid>
    <comment_count>37</comment_count>
      <attachid>290003</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-27 13:42:39 -0700</bug_when>
    <thetext>Created attachment 290003
patch

Previous patch was missing a typo fix in the Consume.cpp test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234052</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-27 13:45:36 -0700</bug_when>
    <thetext>Attachment 290003 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:232:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:251:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Atomics.h:256:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234103</commentid>
    <comment_count>39</comment_count>
      <attachid>290003</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-27 15:57:52 -0700</bug_when>
    <thetext>Comment on attachment 290003
patch

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

&gt; Source/WTF/wtf/Atomics.h:252
&gt; +#elif CPU(ARM)

Does this kick in for what we call CPU(ARM_THUMB2)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234114</commentid>
    <comment_count>40</comment_count>
      <attachid>290003</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-09-27 16:20:34 -0700</bug_when>
    <thetext>Comment on attachment 290003
patch

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

&gt;&gt; Source/WTF/wtf/Atomics.h:252
&gt;&gt; +#elif CPU(ARM)
&gt; 
&gt; Does this kick in for what we call CPU(ARM_THUMB2)?

IIUC, yes: THUMB2 is only set if WTF_THUMB_ARCH_VERSION == 4, which means arch is 6T2 or 7 and above (otherwise it&apos;s ARM_TRADITIONAL), but ARM is always set.

So I think this does what we want.

See: https://godbolt.org/g/ST3PzR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234125</commentid>
    <comment_count>41</comment_count>
      <attachid>290003</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-27 16:43:55 -0700</bug_when>
    <thetext>Comment on attachment 290003
patch

Clearing flags on attachment: 290003

Committed r206470: &lt;http://trac.webkit.org/changeset/206470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234126</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-27 16:44:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289161</attachid>
            <date>2016-09-16 22:21:31 -0700</date>
            <delta_ts>2016-09-17 09:58:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>9746</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAyNjg4ZjE2MGIyOTdjN2RjYWI5YWNjNjMyMzQ3OTFmY2M4MTdjYTFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgIHwgMTUgKysr
KysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmggfCAgNyAr
Ky0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCB8IDE2ICsrKysr
KysrKy0tLQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8IDQzICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCAg
ICAgICAgICAgICAgICAgfCA0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNSBm
aWxlcyBjaGFuZ2VkLCAxMTkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwppbmRleCBiYzUyNzYzLi44YjRjNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wOS0xNiAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKKyAgICAgICAgU3BlZWQgdXAgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjA5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVk
IHVwIGlzTWFya2VkQ29uY3VycmVudGx5IGJ5IHVzaW5nIFdURjo6Y29uc3VtZUxvYWQuCisKKyAg
ICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmlzTWFya2Vk
Q29uY3VycmVudGx5KTogdXNlIG5lZWRzRmxpcFdpdGhEZXBlbmRlbmN5LCBkb2luZyBhd2F5IHdp
dGggdGhlIGxvYWQtbG9hZCBmZW5jZQorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om5lZWRzRmxpcFdpdGhEZXBlbmRlbmN5KTogdXNlIFdU
Rjo6Y29uc3VtZUxvYWQKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkKTogb3B0
aW9uYWxseSBpbmRleCB3aXRoIGEgZGVwZW5kZW5jeSBnZW5lcmF0ZWQgYnkgV1RGOjpjb25zdW1l
TG9hZAorCiAyMDE2LTA5LTE1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA1OTMxLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKaW5kZXggMWE5ZDA3Ni4uNjg2NGVhOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCkBAIC05MiwxMCArOTIsMTEg
QEAgQUxXQVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGNvbnN0IHZv
aWQqIHJhd0NlbGwpCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAg
IHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwogICAgIE1hcmtlZEJs
b2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7Ci0gICAgaWYgKGJsb2NrLm5lZWRzRmxp
cChibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpKSkKKyAgICBIZWFwVmVy
c2lvbiBvYmplY3RTcGFjZVZlcnNpb24gPSBibG9jay52bSgpLT5oZWFwLm9iamVjdFNwYWNlKCku
dmVyc2lvbigpOworICAgIGF1dG8gZiA9IGJsb2NrLm5lZWRzRmxpcFdpdGhEZXBlbmRlbmN5KG9i
amVjdFNwYWNlVmVyc2lvbik7CisgICAgaWYgKGYubmVlZHNGbGlwKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7Ci0gICAgcmV0dXJuIGJsb2NrLmlzTWFy
a2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsLCBmLmRlcGVuZGVuY3kp
OwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6dGVzdEFuZFNldE1hcmtlZChIZWFwVmVy
c2lvbiB2ZXJzaW9uLCBjb25zdCB2b2lkKiByYXdDZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggZDI2YWZmOS4uMGM4Y2Y4MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0yNDcsNyArMjQ3LDcgQEAgcHVibGljOgog
ICAgICAgICAKICAgICBzaXplX3QgbWFya0NvdW50KCk7CiAKLSAgICBib29sIGlzTWFya2VkKGNv
bnN0IHZvaWQqKTsKKyAgICBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqLCBXVEY6OkNvbnN1bWVE
ZXBlbmRlbmN5IGRlcGVuZGVuY3kgPSAwIC8qIE5vIGRlcGVuZGVuY3kgKi8pOwogICAgIGJvb2wg
dGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIAogICAgIGJvb2wgaXNNYXJr
ZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKik7CkBAIC0yNjUsNiArMjY1LDcgQEAg
cHVibGljOgogICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKIAogICAgIGJvb2wgbmVlZHNGbGlwKEhl
YXBWZXJzaW9uKTsKKyAgICBhdXRvIG5lZWRzRmxpcFdpdGhEZXBlbmRlbmN5KEhlYXBWZXJzaW9u
KTsKICAgICBib29sIG5lZWRzRmxpcCgpOwogICAgICAgICAKICAgICB2b2lkIGZsaXBJZk5lY2Vz
c2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24pOwpAQCAtNDY4LDYgKzQ2OSwxNSBAQCBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6bmVlZHNGbGlwKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQog
ICAgIHJldHVybiBoZWFwVmVyc2lvbiAhPSBtX3ZlcnNpb247CiB9CiAKK0FMV0FZU19JTkxJTkUg
YXV0byBNYXJrZWRCbG9jazo6bmVlZHNGbGlwV2l0aERlcGVuZGVuY3koSGVhcFZlcnNpb24gaGVh
cFZlcnNpb24pCit7CisgICAgYXV0byBjID0gV1RGOjpjb25zdW1lTG9hZCgmbV92ZXJzaW9uKTsK
KyAgICBzdHJ1Y3QgeyBib29sIG5lZWRzRmxpcDsgV1RGOjpDb25zdW1lRGVwZW5kZW5jeSBkZXBl
bmRlbmN5OyB9IHJldDsKKyAgICByZXQubmVlZHNGbGlwID0gYy52YWx1ZSAhPSBoZWFwVmVyc2lv
bjsKKyAgICByZXQuZGVwZW5kZW5jeSA9IGMuZGVwZW5kZW5jeTsKKyAgICByZXR1cm4gcmV0Owor
fQorCiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KEhlYXBWZXJzaW9u
IGhlYXBWZXJzaW9uKQogewogICAgIGlmIChVTkxJS0VMWShuZWVkc0ZsaXAoaGVhcFZlcnNpb24p
KSkKQEAgLTUxMywxMCArNTIzLDEwIEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmFzc2VydEZsaXBwZWQoKQogICAgIGJsb2NrKCkuYXNzZXJ0RmxpcHBlZCgpOwogfQogCi1pbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkKK2lubGluZSBib29s
IE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25zdCB2b2lkKiBwLCBXVEY6OkNvbnN1bWVEZXBlbmRl
bmN5IGRlcGVuZGVuY3kpCiB7CiAgICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgIHJldHVybiBtX21h
cmtzLmdldChhdG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJl
cihwKSArIGRlcGVuZGVuY3kpOwogfQogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6dGVzdEFu
ZFNldE1hcmtlZChjb25zdCB2b2lkKiBwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3YjQzZjYxLi4yNzU5N2IxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ2IEBACisyMDE2LTA5LTE2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNv
bT4KKworICAgICAgICBTcGVlZCB1cCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMDk1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVhcDo6aXNNYXJrZWRD
b25jdXJyZW50bHkgaGFkIGEgZmFpcmx5IGV4cGVuc2l2ZSBsb2FkLWxvYWQgZmVuY2UuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpcyBmYWlybHkgcGVyZi1uZXV0cmFsIG92ZXJhbGwsIGJ1dCB0aGUg
R0MncyBpbnN0cnVtZW50YXRpb24gcmVwb3J0czoKKyAgICAgICAgICBHQzpFZGVuIGlzIDkzJSBh
dmVyYWdlIHJ1bnRpbWUgYWZ0ZXIgY2hhbmdlCisgICAgICAgICAgR0M6RnVsbCBpcyA3NiUgYXZl
cmFnZSBydW50aW1lIGFmdGVyIGNoYW5nZQorCisgICAgICAgIFRoZSBmZW5jZSB3YXMgdGhlcmUg
YmVjYXVzZToKKyAgICAgICAgIDEuIElmIHRoZSByZWFkIG9mIG1fdmVyc2lvbiBpbiBNYXJrZWRC
bG9jazo6bmVlZHNGbGlwIGlzbid0IHdoYXQncyBleHBlY3RlZCB0aGVuOworICAgICAgICAgMi4g
VGhlIHJlYWQgb2YgbV9tYXJrcyBpbiBNYXJrZWRCbG9jazo6aXNNYXJrZWQgbmVlZHMgdG8gb2Jz
ZXJ2ZSB0aGUgdmFsdWUgdGhhdCB3YXMgc3RvcmVkICpiZWZvcmUqIG1fdmVyc2lvbiB3YXMgc3Rv
cmVkLgorCisgICAgICAgIFRoaXMgb3JkZXJpbmcgaXNuJ3QgZ3VhcmFudGVlZCBvbiBBUk0sIHdo
aWNoIGhhcyBhIHdlYWsgbWVtb3J5IG1vZGVsLgorCisgICAgICAgIFRoZXJlIGFyZSAzIHdheXMg
dG8gZ3VhcmFudGVlIHRoaXMgb3JkZXJpbmc6CisgICAgICAgICBBLiBVc2UgYSBiYXJyaWVyIGlu
c3RydWN0aW9uLgorICAgICAgICAgQi4gVXNlIGEgbG9hZC1hY3F1aXJlIChuZXcgaW4gQVJNdjgp
LgorICAgICAgICAgQy4gdXNlIEFSTSdzIGFkZHJlc3MgZGVwZW5kZW5jeSBydWxlLCB3aGljaCBD
KysgY2FsbHMgbWVtb3J5X29yZGVyX2NvbnN1bWUuCisKKyAgICAgICAgSW4gZ2VuZXJhbDoKKyAg
ICAgICAgIEEuIGlzIHNsb3cgYnV0IG9yZGVycyBhbGwgb2YgbWVtb3J5IGluIGFuIGludHVpdGl2
ZSBtYW5uZXIuCisgICAgICAgICBCLiBpcyBmYXN0ZXItaXNoIGFuZCBoYXMgdGhlIHNhbWUgcHJv
cGVydHktaXNoLgorICAgICAgICAgQy4gc2hvdWxkIGJlIGZhc3RlciBzdGlsbCwgYnV0ICpvbmx5
IG9yZGVycyBkZXBlbmRlbnQgbG9hZHMqLiBUaGlzIGxhc3QgcGFydCBpcyBjcml0aWNhbCEgQ29u
c3VtZSBpc24ndCBhbiBhbGwtb3V0IHJlcGxhY2VtZW50IGZvciBhY3F1aXJlIChhY3F1aXJlIGlz
IHJhdGhlciBhIHN1cGVyc2V0IG9mIGNvbnN1bWUpLgorCisgICAgICAgIEFSTSBleHBsYWlucyB0
aGUgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUgaW4gdGhlaXIgZG9jdW1lbnQgImJhcnJpZXIgbGl0
bXVzIHRlc3RzIGFuZCBjb29rYm9vayI6CisKKyAgICAgICAgPiAqUmVzb2x2aW5nIGJ5IHRoZSB1
c2Ugb2YgYmFycmllcnMgYW5kIGFkZHJlc3MgZGVwZW5kZW5jeSoKKyAgICAgICAgPgorICAgICAg
ICA+IFRoZXJlIGlzIGEgcnVsZSB3aXRoaW4gdGhlIEFSTSBhcmNoaXRlY3R1cmUgdGhhdDoKKyAg
ICAgICAgPiBXaGVyZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYSByZWFkIGlzIHVzZWQgdG8gY29t
cHV0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIGEgc3Vic2VxdWVudCByZWFkIG9yIHdyaXRlICh0
aGlzIGlzIGtub3duIGFzIGFuIGFkZHJlc3MgZGVwZW5kZW5jeSksIHRoZW4gdGhlc2UgdHdvIG1l
bW9yeSBhY2Nlc3NlcyB3aWxsIGJlIG9ic2VydmVkIGluIHByb2dyYW0gb3JkZXIuIEFuIGFkZHJl
c3MgZGVwZW5kZW5jeSBleGlzdHMgZXZlbiBpZiB0aGUgdmFsdWUgcmVhZCBieSB0aGUgZmlyc3Qg
cmVhZCBoYXMgbm8gZWZmZWN0IGluIGNoYW5naW5nIHRoZSB2aXJ0dWFsIGFkZHJlc3MgKGFzIG1p
Z2h0IGJlIHRoZSBjYXNlIGlmIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBtYXNrZWQgb2ZmIGJlZm9y
ZSBpdCBpcyB1c2VkLCBvciBpZiBpdCBoYWQgbm8gZWZmZWN0IG9uIGNoYW5naW5nIGEgcHJlZGlj
dGVkIGFkZHJlc3MgdmFsdWUpLgorICAgICAgICA+IFRoaXMgcmVzdHJpY3Rpb24gYXBwbGllcyBv
bmx5IHdoZW4gdGhlIGRhdGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBvbmUgcmVhZCBpcyB1c2VkIGFz
IGEgZGF0YSB2YWx1ZSB0byBjYWxjdWxhdGUgdGhlIGFkZHJlc3Mgb2YgYSBzdWJzZXF1ZW50IHJl
YWQgb3Igd3JpdGUuIFRoaXMgZG9lcyBub3QgYXBwbHkgaWYgdGhlIGRhdGEgdmFsdWUgcmV0dXJu
ZWQgZnJvbSBvbmUgcmVhZCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgY29uZGl0aW9uIGNvZGUg
ZmxhZ3MsIGFuZCB0aGUgdmFsdWVzIG9mIHRoZSBmbGFncyBhcmUgdXNlZCBmb3IgY29uZGl0aW9u
IGNvZGUgZXZhbHVhdGlvbiB0byBkZXRlcm1pbmUgdGhlIGFkZHJlc3Mgb2YgYSBzdWJzZXF1ZW50
IHJlYWRzLCBlaXRoZXIgdGhyb3VnaCBjb25kaXRpb25hbCBleGVjdXRpb24gb3IgdGhlIGV2YWx1
YXRpb24gb2YgYSBicmFuY2guIFRoaXMgaXMga25vd24gYXMgYSBjb250cm9sIGRlcGVuZGVuY3ku
CisgICAgICAgID4gV2hlcmUgYm90aCBhIGNvbnRyb2wgYW5kIGFkZHJlc3MgZGVwZW5kZW5jeSBl
eGlzdCwgdGhlIG9yZGVyaW5nIGJlaGF2aW91ciBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGFkZHJl
c3MgZGVwZW5kZW5jeS4KKworICAgICAgICBDKysncyBtZW1vcnlfb3JkZXJfY29uc3VtZSBpcyB1
bmZvcnR1bmF0ZWx5IHVuaW1wbGVtZW50ZWQgYnkgQysrIGNvbXBpbGVycywgYW5kIG1heWJlIHVu
aW1wbGVtZW50YWJsZSBhcyBzcGVjJ2QuIEknbSB3b3JraW5nIHdpdGggaW50ZXJlc3RlZCBmb2xr
cyBpbiB0aGUgY29tbWl0dGVlIHRvIGZpeCB0aGlzIHNpdHVhdGlvbjogaHR0cDovL3dnMjEubGlu
ay9wMDE5MHIyCisKKyAgICAgICAgKiB3dGYvQXRvbWljcy5oOgorICAgICAgICAoV1RGOjpjb25z
dW1lTG9hZCk6IHBpeGllIG1hZ2ljCisKIDIwMTYtMDktMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MDU5MzMgYW5kIHIyMDU5MzYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKaW5kZXggOWI0N2EwZS4uZjdhOWZiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQXRvbWljcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0F0b21p
Y3MuaApAQCAtMTk4LDYgKzE5OCw1MCBAQCBpbmxpbmUgdm9pZCBtZW1vcnlCYXJyaWVyQmVmb3Jl
VW5sb2NrKCkgeyBzdGQ6OmF0b21pY190aHJlYWRfZmVuY2Uoc3RkOjptZW1vcnlfbwogCiAjZW5k
aWYKIAordHlwZWRlZiBzaXplX3QgQ29uc3VtZURlcGVuZGVuY3k7CisKKy8vIENvbnN1bWUgbG9h
ZCwgcmV0dXJuaW5nIHRoZSBsb2FkZWQgYHZhbHVlYCBhdCBgbG9jYXRpb25gIGFuZCBhIGRlcGVu
ZGVudC16ZXJvCisvLyB3aGljaCBjcmVhdGVzIGFuIGFkZHJlc3MgZGVwZW5kZW5jeSBmcm9tIHRo
ZSBgbG9jYXRpb25gLgorLy8KKy8vIFVzYWdlIG5vdGVzOgorLy8gTWVyZWx5IGJyYW5jaGluZyBi
YXNlZCBvbiBgdmFsdWVgIGlzbid0IHN1ZmZpY2llbnQgdG8gaW1wb3NlIGEgZGVwZW5kZW5jeQor
Ly8gb3JkZXJpbmc6IHlvdSBtdXN0IHVzZSBgZGVwZW5kZW5jeWAgaW4gdGhlIGFkZHJlc3MgY29t
cHV0YXRpb24gb2Ygc3Vic2VxdWVudAorLy8gbG9hZHMgd2hpY2ggc2hvdWxkIG9ic2VydmUgdGhl
IHN0b3JlIG9yZGVyIHcuci50LiBgbG9jYXRpb25gLgorLy8gVGhpcyBvcmRlcnMgdGhlIGBsb2Nh
dGlvbmAgbG9hZCB3aXRoIHN1c2VxdWVudCBkZXBlbmRlbnQgbG9hZHMgKm9ubHkqLgorLy8gSXQg
c2F5cyBub3RoaW5nIGFib3V0IG9yZGVyaW5nIG9mIG90aGVyIGxvYWRzIQorLy8KKy8vIENhdmVh
dCBlbXB0b3IuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorQUxXQVlTX0lOTElORSBhdXRvIGNvbnN1
bWVMb2FkKGNvbnN0IFQqIGxvY2F0aW9uKQoreworICAgIHN0cnVjdCB7IFQgdmFsdWU7IENvbnN1
bWVEZXBlbmRlbmN5IGRlcGVuZGVuY3k7IH0gcmV0OworI2lmIENQVShBUk02NCkKKyAgICAvLyBG
b3JjZSB0aGUgcmVhZCBvZiBgbG9jYXRpb25gIHRvIG9jY3VyIG9ubHkgb25jZSB1c2luZyB2b2xh
dGlsZS4KKyAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBjb21waWxlciBjb3Vs
ZCBvdGhlcndpc2UgcmVtYXRlcmlhbGl6ZSB0aGUKKyAgICAvLyBsb2FkIGFuZCBsb3NlIHRoZSBk
ZXBlbmRlbmN5IHdlJ3JlIHRyeWluZyBzbyBoYXJkIHRvIGNyZWF0ZS4KKyAgICByZXQudmFsdWUg
PSAqc3RhdGljX2Nhc3Q8Y29uc3Qgdm9sYXRpbGUgVCo+KGxvY2F0aW9uKTsKKyAgICAvLyBDcmVh
dGUgYSBtYWdpY2FsIHplcm8gdmFsdWUgdGhyb3VnaCBpbmxpbmUgYXNzZW1ibHksIHdob3NlIGNv
bXB1dGF0aW9uCisgICAgLy8gaXNuJ3QgdmlzaWJsZSB0byB0aGUgb3B0aW1pemVyLiBUaGlzIHpl
cm8gaXMgdGhlbiB1c2FibGUgYXMgYW4gb2Zmc2V0IGluCisgICAgLy8gZnVydGhlciBhZGRyZXNz
IGNvbXB1dGF0aW9uczogYWRkaW5nIHplcm8gZG9lcyBub3RoaW5nLCBidXQgdGhlIGNvbXBpbGVy
CisgICAgLy8gZG9lc24ndCBrbm93IGl0LiBJdCdzIG1hZ2ljYWwgYmVjYXVzZSBpdCBjcmVhdGVz
IGFuIGFkZHJlc3MgZGVwZW5kZW5jeQorICAgIC8vIGZyb20gdGhlIGxvYWQgb2YgYGxvY2F0aW9u
YCB0byB0aGUgdXNlcyBvZiB0aGUgZGVwZW5kZW5jeSwgd2hpY2ggdHJpZ2dlcnMKKyAgICAvLyB0
aGUgQVJNIElTQSdzIGFkZHJlc3MgZGVwZW5kZW5jeSBydWxlLCBhLmsuYS4gdGhlIG15dGhpY2Fs
IEMrKyBjb25zdW1lCisgICAgLy8gb3JkZXJpbmcuIFRoaXMgZm9yY2VzIHdlYWsgbWVtb3J5IG9y
ZGVyIENQVXMgdG8gb2JzZXJ2ZSBgbG9jYXRpb25gIGFuZAorICAgIC8vIGRlcGVuZGVudCBsb2Fk
cyBpbiB0aGVpciBzdG9yZSBvcmRlciB3aXRob3V0IHRoZSByZWFkZXIgdXNpbmcgYSBiYXJyaWVy
CisgICAgLy8gb3IgYW4gYWNxdWlyZSBsb2FkLgorICAgIGFzbSB2b2xhdGlsZSgiZW9yICV4W2Rl
cGVuZGVuY3ldLCAleFtpbl0sICV4W2luXSIKKyAgICAgICAgICAgICAgICAgOiBbZGVwZW5kZW5j
eV0gIj1yIiAocmV0LmRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAgIDogW2luXSAiciIgKHJl
dC52YWx1ZSkKKyAgICAgICAgICAgICAgICAgLy8gTGllIGFib3V0IHRvdWNoaW5nIG1lbW9yeSwg
ZnJlYWsgdGhlIG9wdGltaXplciBvdXQgYSBiaXQuCisgICAgICAgICAgICAgICAgIDogIm1lbW9y
eSIpOworI2Vsc2UKKyAgICByZXQudmFsdWUgPSAqbG9jYXRpb247CisgICAgbG9hZExvYWRGZW5j
ZSgpOworICAgIHJldC5kZXBlbmRlbmN5ID0gMDsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkF0b21pYzsKLS0gCjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289172</attachid>
            <date>2016-09-17 09:58:56 -0700</date>
            <delta_ts>2016-09-17 18:10:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>10025</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBkN2I5MTVkN2Y4MDVkN2ZjNjM4M2UyZWJiYzhlNmIxNjc3M2YyMTBiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgIHwgMTUgKysr
KysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCB8ICA3ICsr
Ky0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIHwgMTYgKysrKysr
KystLQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8IDQzICsrKysr
KysrKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dURi93dGYvQXRvbWljcy5oICAgICAgICAg
ICAgICAgICB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNo
YW5nZWQsIDEyNSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCmluZGV4IGJjNTI3NjMuLjhiNGM0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDE2LTA5LTE2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxl
LmNvbT4KKworICAgICAgICBTcGVlZCB1cCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMDk1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlZWQgdXAgaXNN
YXJrZWRDb25jdXJyZW50bHkgYnkgdXNpbmcgV1RGOjpjb25zdW1lTG9hZC4KKworICAgICAgICAq
IGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWRDb25jdXJy
ZW50bHkpOiB1c2UgbmVlZHNGbGlwV2l0aERlcGVuZGVuY3ksIGRvaW5nIGF3YXkgd2l0aCB0aGUg
bG9hZC1sb2FkIGZlbmNlCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6bmVlZHNGbGlwV2l0aERlcGVuZGVuY3kpOiB1c2UgV1RGOjpjb25z
dW1lTG9hZAorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWQpOiBvcHRpb25hbGx5
IGluZGV4IHdpdGggYSBkZXBlbmRlbmN5IGdlbmVyYXRlZCBieSBXVEY6OmNvbnN1bWVMb2FkCisK
IDIwMTYtMDktMTUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDU5MzEuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCAxYTlkMDc2Li42ODY0ZWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTkyLDEwICs5MiwxMSBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkoY29uc3Qgdm9pZCogcmF3
Q2VsbCkKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJu
IGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJs
b2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJsb2Nr
LnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpKQorICAgIEhlYXBWZXJzaW9uIG9i
amVjdFNwYWNlVmVyc2lvbiA9IGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9u
KCk7CisgICAgYXV0byBmID0gYmxvY2submVlZHNGbGlwV2l0aERlcGVuZGVuY3kob2JqZWN0U3Bh
Y2VWZXJzaW9uKTsKKyAgICBpZiAoZi5uZWVkc0ZsaXApCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQoY2Vs
bCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwsIGYuZGVwZW5kZW5jeSk7CiB9CiAK
IEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKEhlYXBWZXJzaW9uIHZl
cnNpb24sIGNvbnN0IHZvaWQqIHJhd0NlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAppbmRleCBkMjZhZmY5Li4wYzhjZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IAogICAgIHNpemVfdCBtYXJrQ291bnQoKTsKIAotICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9p
ZCopOworICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCosIFdURjo6Q29uc3VtZURlcGVuZGVu
Y3kgZGVwZW5kZW5jeSA9IDAgLyogTm8gZGVwZW5kZW5jeSAqLyk7CiAgICAgYm9vbCB0ZXN0QW5k
U2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgCiAgICAgYm9vbCBpc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKQEAgLTI2NSw2ICsyNjUsNyBAQCBwdWJsaWM6
CiAgICAgV2Vha1NldCYgd2Vha1NldCgpOwogCiAgICAgYm9vbCBuZWVkc0ZsaXAoSGVhcFZlcnNp
b24pOworICAgIGF1dG8gbmVlZHNGbGlwV2l0aERlcGVuZGVuY3koSGVhcFZlcnNpb24pOwogICAg
IGJvb2wgbmVlZHNGbGlwKCk7CiAgICAgICAgIAogICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVy
aW5nTWFya2luZyhIZWFwVmVyc2lvbik7CkBAIC00NjgsNiArNDY5LDE1IEBAIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjpuZWVkc0ZsaXAoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiAgICAgcmV0
dXJuIGhlYXBWZXJzaW9uICE9IG1fdmVyc2lvbjsKIH0KIAorQUxXQVlTX0lOTElORSBhdXRvIE1h
cmtlZEJsb2NrOjpuZWVkc0ZsaXBXaXRoRGVwZW5kZW5jeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lv
bikKK3sKKyAgICBhdXRvIGMgPSBXVEY6OmNvbnN1bWVMb2FkKCZtX3ZlcnNpb24pOworICAgIHN0
cnVjdCB7IGJvb2wgbmVlZHNGbGlwOyBXVEY6OkNvbnN1bWVEZXBlbmRlbmN5IGRlcGVuZGVuY3k7
IH0gcmV0OworICAgIHJldC5uZWVkc0ZsaXAgPSBjLnZhbHVlICE9IGhlYXBWZXJzaW9uOworICAg
IHJldC5kZXBlbmRlbmN5ID0gYy5kZXBlbmRlbmN5OworICAgIHJldHVybiByZXQ7Cit9CisKIGlu
bGluZSB2b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24gaGVhcFZl
cnNpb24pCiB7CiAgICAgaWYgKFVOTElLRUxZKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpKQpAQCAt
NTEzLDEwICs1MjMsMTAgQEAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6YXNzZXJ0
RmxpcHBlZCgpCiAgICAgYmxvY2soKS5hc3NlcnRGbGlwcGVkKCk7CiB9CiAKLWlubGluZSBib29s
IE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25zdCB2b2lkKiBwKQoraW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHAsIFdURjo6Q29uc3VtZURlcGVuZGVuY3kgZGVw
ZW5kZW5jeSkKIHsKICAgICBhc3NlcnRGbGlwcGVkKCk7Ci0gICAgcmV0dXJuIG1fbWFya3MuZ2V0
KGF0b21OdW1iZXIocCkpOworICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApICsg
ZGVwZW5kZW5jeSk7CiB9CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjp0ZXN0QW5kU2V0TWFy
a2VkKGNvbnN0IHZvaWQqIHApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdiNDNmNjEuLjI3NTk3YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDYgQEAKKzIwMTYtMDktMTYgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFNwZWVkIHVwIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwOTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIZWFwOjppc01hcmtlZENvbmN1cnJl
bnRseSBoYWQgYSBmYWlybHkgZXhwZW5zaXZlIGxvYWQtbG9hZCBmZW5jZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGlzIGZhaXJseSBwZXJmLW5ldXRyYWwgb3ZlcmFsbCwgYnV0IHRoZSBHQydzIGlu
c3RydW1lbnRhdGlvbiByZXBvcnRzOgorICAgICAgICAgIEdDOkVkZW4gaXMgOTMlIGF2ZXJhZ2Ug
cnVudGltZSBhZnRlciBjaGFuZ2UKKyAgICAgICAgICBHQzpGdWxsIGlzIDc2JSBhdmVyYWdlIHJ1
bnRpbWUgYWZ0ZXIgY2hhbmdlCisKKyAgICAgICAgVGhlIGZlbmNlIHdhcyB0aGVyZSBiZWNhdXNl
OgorICAgICAgICAgMS4gSWYgdGhlIHJlYWQgb2YgbV92ZXJzaW9uIGluIE1hcmtlZEJsb2NrOjpu
ZWVkc0ZsaXAgaXNuJ3Qgd2hhdCdzIGV4cGVjdGVkIHRoZW47CisgICAgICAgICAyLiBUaGUgcmVh
ZCBvZiBtX21hcmtzIGluIE1hcmtlZEJsb2NrOjppc01hcmtlZCBuZWVkcyB0byBvYnNlcnZlIHRo
ZSB2YWx1ZSB0aGF0IHdhcyBzdG9yZWQgKmJlZm9yZSogbV92ZXJzaW9uIHdhcyBzdG9yZWQuCisK
KyAgICAgICAgVGhpcyBvcmRlcmluZyBpc24ndCBndWFyYW50ZWVkIG9uIEFSTSwgd2hpY2ggaGFz
IGEgd2VhayBtZW1vcnkgbW9kZWwuCisKKyAgICAgICAgVGhlcmUgYXJlIDMgd2F5cyB0byBndWFy
YW50ZWUgdGhpcyBvcmRlcmluZzoKKyAgICAgICAgIEEuIFVzZSBhIGJhcnJpZXIgaW5zdHJ1Y3Rp
b24uCisgICAgICAgICBCLiBVc2UgYSBsb2FkLWFjcXVpcmUgKG5ldyBpbiBBUk12OCkuCisgICAg
ICAgICBDLiB1c2UgQVJNJ3MgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUsIHdoaWNoIEMrKyBjYWxs
cyBtZW1vcnlfb3JkZXJfY29uc3VtZS4KKworICAgICAgICBJbiBnZW5lcmFsOgorICAgICAgICAg
QS4gaXMgc2xvdyBidXQgb3JkZXJzIGFsbCBvZiBtZW1vcnkgaW4gYW4gaW50dWl0aXZlIG1hbm5l
ci4KKyAgICAgICAgIEIuIGlzIGZhc3Rlci1pc2ggYW5kIGhhcyB0aGUgc2FtZSBwcm9wZXJ0eS1p
c2guCisgICAgICAgICBDLiBzaG91bGQgYmUgZmFzdGVyIHN0aWxsLCBidXQgKm9ubHkgb3JkZXJz
IGRlcGVuZGVudCBsb2FkcyouIFRoaXMgbGFzdCBwYXJ0IGlzIGNyaXRpY2FsISBDb25zdW1lIGlz
bid0IGFuIGFsbC1vdXQgcmVwbGFjZW1lbnQgZm9yIGFjcXVpcmUgKGFjcXVpcmUgaXMgcmF0aGVy
IGEgc3VwZXJzZXQgb2YgY29uc3VtZSkuCisKKyAgICAgICAgQVJNIGV4cGxhaW5zIHRoZSBhZGRy
ZXNzIGRlcGVuZGVuY3kgcnVsZSBpbiB0aGVpciBkb2N1bWVudCAiYmFycmllciBsaXRtdXMgdGVz
dHMgYW5kIGNvb2tib29rIjoKKworICAgICAgICA+ICpSZXNvbHZpbmcgYnkgdGhlIHVzZSBvZiBi
YXJyaWVycyBhbmQgYWRkcmVzcyBkZXBlbmRlbmN5KgorICAgICAgICA+CisgICAgICAgID4gVGhl
cmUgaXMgYSBydWxlIHdpdGhpbiB0aGUgQVJNIGFyY2hpdGVjdHVyZSB0aGF0OgorICAgICAgICA+
IFdoZXJlIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBhIHJlYWQgaXMgdXNlZCB0byBjb21wdXRlIHRo
ZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgYSBzdWJzZXF1ZW50IHJlYWQgb3Igd3JpdGUgKHRoaXMgaXMg
a25vd24gYXMgYW4gYWRkcmVzcyBkZXBlbmRlbmN5KSwgdGhlbiB0aGVzZSB0d28gbWVtb3J5IGFj
Y2Vzc2VzIHdpbGwgYmUgb2JzZXJ2ZWQgaW4gcHJvZ3JhbSBvcmRlci4gQW4gYWRkcmVzcyBkZXBl
bmRlbmN5IGV4aXN0cyBldmVuIGlmIHRoZSB2YWx1ZSByZWFkIGJ5IHRoZSBmaXJzdCByZWFkIGhh
cyBubyBlZmZlY3QgaW4gY2hhbmdpbmcgdGhlIHZpcnR1YWwgYWRkcmVzcyAoYXMgbWlnaHQgYmUg
dGhlIGNhc2UgaWYgdGhlIHZhbHVlIHJldHVybmVkIGlzIG1hc2tlZCBvZmYgYmVmb3JlIGl0IGlz
IHVzZWQsIG9yIGlmIGl0IGhhZCBubyBlZmZlY3Qgb24gY2hhbmdpbmcgYSBwcmVkaWN0ZWQgYWRk
cmVzcyB2YWx1ZSkuCisgICAgICAgID4gVGhpcyByZXN0cmljdGlvbiBhcHBsaWVzIG9ubHkgd2hl
biB0aGUgZGF0YSB2YWx1ZSByZXR1cm5lZCBmcm9tIG9uZSByZWFkIGlzIHVzZWQgYXMgYSBkYXRh
IHZhbHVlIHRvIGNhbGN1bGF0ZSB0aGUgYWRkcmVzcyBvZiBhIHN1YnNlcXVlbnQgcmVhZCBvciB3
cml0ZS4gVGhpcyBkb2VzIG5vdCBhcHBseSBpZiB0aGUgZGF0YSB2YWx1ZSByZXR1cm5lZCBmcm9t
IG9uZSByZWFkIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBjb25kaXRpb24gY29kZSBmbGFncywg
YW5kIHRoZSB2YWx1ZXMgb2YgdGhlIGZsYWdzIGFyZSB1c2VkIGZvciBjb25kaXRpb24gY29kZSBl
dmFsdWF0aW9uIHRvIGRldGVybWluZSB0aGUgYWRkcmVzcyBvZiBhIHN1YnNlcXVlbnQgcmVhZHMs
IGVpdGhlciB0aHJvdWdoIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbiBvciB0aGUgZXZhbHVhdGlvbiBv
ZiBhIGJyYW5jaC4gVGhpcyBpcyBrbm93biBhcyBhIGNvbnRyb2wgZGVwZW5kZW5jeS4KKyAgICAg
ICAgPiBXaGVyZSBib3RoIGEgY29udHJvbCBhbmQgYWRkcmVzcyBkZXBlbmRlbmN5IGV4aXN0LCB0
aGUgb3JkZXJpbmcgYmVoYXZpb3VyIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgYWRkcmVzcyBkZXBl
bmRlbmN5LgorCisgICAgICAgIEMrKydzIG1lbW9yeV9vcmRlcl9jb25zdW1lIGlzIHVuZm9ydHVu
YXRlbHkgdW5pbXBsZW1lbnRlZCBieSBDKysgY29tcGlsZXJzLCBhbmQgbWF5YmUgdW5pbXBsZW1l
bnRhYmxlIGFzIHNwZWMnZC4gSSdtIHdvcmtpbmcgd2l0aCBpbnRlcmVzdGVkIGZvbGtzIGluIHRo
ZSBjb21taXR0ZWUgdG8gZml4IHRoaXMgc2l0dWF0aW9uOiBodHRwOi8vd2cyMS5saW5rL3AwMTkw
cjIKKworICAgICAgICAqIHd0Zi9BdG9taWNzLmg6CisgICAgICAgIChXVEY6OmNvbnN1bWVMb2Fk
KTogcGl4aWUgbWFnaWMKKwogMjAxNi0wOS0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNTkzMyBh
bmQgcjIwNTkzNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCBiL1NvdXJj
ZS9XVEYvd3RmL0F0b21pY3MuaAppbmRleCA5YjQ3YTBlLi45MjM4NTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKKysrIGIvU291cmNlL1dURi93dGYvQXRvbWljcy5oCkBA
IC0xOTgsNiArMTk4LDU2IEBAIGlubGluZSB2b2lkIG1lbW9yeUJhcnJpZXJCZWZvcmVVbmxvY2so
KSB7IHN0ZDo6YXRvbWljX3RocmVhZF9mZW5jZShzdGQ6Om1lbW9yeV9vCiAKICNlbmRpZgogCit0
eXBlZGVmIHNpemVfdCBDb25zdW1lRGVwZW5kZW5jeTsKKworLy8gQ29uc3VtZSBsb2FkLCByZXR1
cm5pbmcgdGhlIGxvYWRlZCBgdmFsdWVgIGF0IGBsb2NhdGlvbmAgYW5kIGEgZGVwZW5kZW50LXpl
cm8KKy8vIHdoaWNoIGNyZWF0ZXMgYW4gYWRkcmVzcyBkZXBlbmRlbmN5IGZyb20gdGhlIGBsb2Nh
dGlvbmAuCisvLworLy8gVXNhZ2Ugbm90ZXM6CisvLyBNZXJlbHkgYnJhbmNoaW5nIGJhc2VkIG9u
IGB2YWx1ZWAgaXNuJ3Qgc3VmZmljaWVudCB0byBpbXBvc2UgYSBkZXBlbmRlbmN5CisvLyBvcmRl
cmluZzogeW91IG11c3QgdXNlIGBkZXBlbmRlbmN5YCBpbiB0aGUgYWRkcmVzcyBjb21wdXRhdGlv
biBvZiBzdWJzZXF1ZW50CisvLyBsb2FkcyB3aGljaCBzaG91bGQgb2JzZXJ2ZSB0aGUgc3RvcmUg
b3JkZXIgdy5yLnQuIGBsb2NhdGlvbmAuCisvLyBUaGlzIG9yZGVycyB0aGUgYGxvY2F0aW9uYCBs
b2FkIHdpdGggc3VzZXF1ZW50IGRlcGVuZGVudCBsb2FkcyAqb25seSouCisvLyBJdCBzYXlzIG5v
dGhpbmcgYWJvdXQgb3JkZXJpbmcgb2Ygb3RoZXIgbG9hZHMhCisvLworLy8gQ2F2ZWF0IGVtcHRv
ci4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitBTFdBWVNfSU5MSU5FIGF1dG8gY29uc3VtZUxvYWQo
Y29uc3QgVCogbG9jYXRpb24pCit7CisgICAgc3RydWN0IHsgVCB2YWx1ZTsgQ29uc3VtZURlcGVu
ZGVuY3kgZGVwZW5kZW5jeTsgfSByZXQ7CisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIEZvcmNlIHRo
ZSByZWFkIG9mIGBsb2NhdGlvbmAgdG8gb2NjdXIgb25seSBvbmNlIHVzaW5nIHZvbGF0aWxlLgor
ICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNvdWxkIG90aGVy
d2lzZSByZW1hdGVyaWFsaXplIHRoZQorICAgIC8vIGxvYWQgYW5kIGxvc2UgdGhlIGRlcGVuZGVu
Y3kgd2UncmUgdHJ5aW5nIHNvIGhhcmQgdG8gY3JlYXRlLgorICAgIHJldC52YWx1ZSA9ICpzdGF0
aWNfY2FzdDxjb25zdCB2b2xhdGlsZSBUKj4obG9jYXRpb24pOworICAgIC8vIENyZWF0ZSBhIG1h
Z2ljYWwgemVybyB2YWx1ZSB0aHJvdWdoIGlubGluZSBhc3NlbWJseSwgd2hvc2UgY29tcHV0YXRp
b24KKyAgICAvLyBpc24ndCB2aXNpYmxlIHRvIHRoZSBvcHRpbWl6ZXIuIFRoaXMgemVybyBpcyB0
aGVuIHVzYWJsZSBhcyBhbiBvZmZzZXQgaW4KKyAgICAvLyBmdXJ0aGVyIGFkZHJlc3MgY29tcHV0
YXRpb25zOiBhZGRpbmcgemVybyBkb2VzIG5vdGhpbmcsIGJ1dCB0aGUgY29tcGlsZXIKKyAgICAv
LyBkb2Vzbid0IGtub3cgaXQuIEl0J3MgbWFnaWNhbCBiZWNhdXNlIGl0IGNyZWF0ZXMgYW4gYWRk
cmVzcyBkZXBlbmRlbmN5CisgICAgLy8gZnJvbSB0aGUgbG9hZCBvZiBgbG9jYXRpb25gIHRvIHRo
ZSB1c2VzIG9mIHRoZSBkZXBlbmRlbmN5LCB3aGljaCB0cmlnZ2VycworICAgIC8vIHRoZSBBUk0g
SVNBJ3MgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUsIGEuay5hLiB0aGUgbXl0aGljYWwgQysrIGNv
bnN1bWUKKyAgICAvLyBvcmRlcmluZy4gVGhpcyBmb3JjZXMgd2VhayBtZW1vcnkgb3JkZXIgQ1BV
cyB0byBvYnNlcnZlIGBsb2NhdGlvbmAgYW5kCisgICAgLy8gZGVwZW5kZW50IGxvYWRzIGluIHRo
ZWlyIHN0b3JlIG9yZGVyIHdpdGhvdXQgdGhlIHJlYWRlciB1c2luZyBhIGJhcnJpZXIKKyAgICAv
LyBvciBhbiBhY3F1aXJlIGxvYWQuCisgICAgYXNtIHZvbGF0aWxlKCJlb3IgJXhbZGVwZW5kZW5j
eV0sICV4W2luXSwgJXhbaW5dIgorICAgICAgICAgICAgICAgICA6IFtkZXBlbmRlbmN5XSAiPXIi
IChyZXQuZGVwZW5kZW5jeSkKKyAgICAgICAgICAgICAgICAgOiBbaW5dICJyIiAocmV0LnZhbHVl
KQorICAgICAgICAgICAgICAgICAvLyBMaWUgYWJvdXQgdG91Y2hpbmcgbWVtb3J5LCBmcmVhayB0
aGUgb3B0aW1pemVyIG91dCBhIGJpdC4KKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7Cisj
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyAgICByZXQudmFs
dWUgPSAqc3RhdGljX2Nhc3Q8Y29uc3Qgdm9sYXRpbGUgVCo+KGxvY2F0aW9uKTsKKyAgICBhc20g
dm9sYXRpbGUoImVvciAlW2RlcGVuZGVuY3ldLCAlW2luXSwgJVtpbl0iCisgICAgICAgICAgICAg
ICAgIDogW2RlcGVuZGVuY3ldICI9ciIgKHJldC5kZXBlbmRlbmN5KQorICAgICAgICAgICAgICAg
ICA6IFtpbl0gInIiIChyZXQudmFsdWUpCisgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwor
I2Vsc2UKKyAgICByZXQudmFsdWUgPSAqbG9jYXRpb247CisgICAgbG9hZExvYWRGZW5jZSgpOwor
ICAgIHJldC5kZXBlbmRlbmN5ID0gMDsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkF0b21pYzsKLS0gCjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289184</attachid>
            <date>2016-09-17 18:10:29 -0700</date>
            <delta_ts>2016-09-17 18:13:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>10025</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBkN2I5MTVkN2Y4MDVkN2ZjNjM4M2UyZWJiYzhlNmIxNjc3M2YyMTBiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgIHwgMTUgKysr
KysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCB8ICA3ICsr
Ky0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIHwgMTYgKysrKysr
KystLQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8IDQzICsrKysr
KysrKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dURi93dGYvQXRvbWljcy5oICAgICAgICAg
ICAgICAgICB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNo
YW5nZWQsIDEyNSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCmluZGV4IGJjNTI3NjMuLjhiNGM0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDE2LTA5LTE2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxl
LmNvbT4KKworICAgICAgICBTcGVlZCB1cCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMDk1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlZWQgdXAgaXNN
YXJrZWRDb25jdXJyZW50bHkgYnkgdXNpbmcgV1RGOjpjb25zdW1lTG9hZC4KKworICAgICAgICAq
IGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWRDb25jdXJy
ZW50bHkpOiB1c2UgbmVlZHNGbGlwV2l0aERlcGVuZGVuY3ksIGRvaW5nIGF3YXkgd2l0aCB0aGUg
bG9hZC1sb2FkIGZlbmNlCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6bmVlZHNGbGlwV2l0aERlcGVuZGVuY3kpOiB1c2UgV1RGOjpjb25z
dW1lTG9hZAorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWQpOiBvcHRpb25hbGx5
IGluZGV4IHdpdGggYSBkZXBlbmRlbmN5IGdlbmVyYXRlZCBieSBXVEY6OmNvbnN1bWVMb2FkCisK
IDIwMTYtMDktMTUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDU5MzEuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCAxYTlkMDc2Li42ODY0ZWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTkyLDEwICs5MiwxMSBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkoY29uc3Qgdm9pZCogcmF3
Q2VsbCkKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJu
IGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJs
b2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJsb2Nr
LnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpKQorICAgIEhlYXBWZXJzaW9uIG9i
amVjdFNwYWNlVmVyc2lvbiA9IGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9u
KCk7CisgICAgYXV0byBmID0gYmxvY2submVlZHNGbGlwV2l0aERlcGVuZGVuY3kob2JqZWN0U3Bh
Y2VWZXJzaW9uKTsKKyAgICBpZiAoZi5uZWVkc0ZsaXApCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQoY2Vs
bCk7CisgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwsIGYuZGVwZW5kZW5jeSk7CiB9CiAK
IEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKEhlYXBWZXJzaW9uIHZl
cnNpb24sIGNvbnN0IHZvaWQqIHJhd0NlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAppbmRleCBkMjZhZmY5Li4wYzhjZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IAogICAgIHNpemVfdCBtYXJrQ291bnQoKTsKIAotICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9p
ZCopOworICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCosIFdURjo6Q29uc3VtZURlcGVuZGVu
Y3kgZGVwZW5kZW5jeSA9IDAgLyogTm8gZGVwZW5kZW5jeSAqLyk7CiAgICAgYm9vbCB0ZXN0QW5k
U2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgCiAgICAgYm9vbCBpc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKQEAgLTI2NSw2ICsyNjUsNyBAQCBwdWJsaWM6
CiAgICAgV2Vha1NldCYgd2Vha1NldCgpOwogCiAgICAgYm9vbCBuZWVkc0ZsaXAoSGVhcFZlcnNp
b24pOworICAgIGF1dG8gbmVlZHNGbGlwV2l0aERlcGVuZGVuY3koSGVhcFZlcnNpb24pOwogICAg
IGJvb2wgbmVlZHNGbGlwKCk7CiAgICAgICAgIAogICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVy
aW5nTWFya2luZyhIZWFwVmVyc2lvbik7CkBAIC00NjgsNiArNDY5LDE1IEBAIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjpuZWVkc0ZsaXAoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiAgICAgcmV0
dXJuIGhlYXBWZXJzaW9uICE9IG1fdmVyc2lvbjsKIH0KIAorQUxXQVlTX0lOTElORSBhdXRvIE1h
cmtlZEJsb2NrOjpuZWVkc0ZsaXBXaXRoRGVwZW5kZW5jeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lv
bikKK3sKKyAgICBhdXRvIGMgPSBXVEY6OmNvbnN1bWVMb2FkKCZtX3ZlcnNpb24pOworICAgIHN0
cnVjdCB7IGJvb2wgbmVlZHNGbGlwOyBXVEY6OkNvbnN1bWVEZXBlbmRlbmN5IGRlcGVuZGVuY3k7
IH0gcmV0OworICAgIHJldC5uZWVkc0ZsaXAgPSBjLnZhbHVlICE9IGhlYXBWZXJzaW9uOworICAg
IHJldC5kZXBlbmRlbmN5ID0gYy5kZXBlbmRlbmN5OworICAgIHJldHVybiByZXQ7Cit9CisKIGlu
bGluZSB2b2lkIE1hcmtlZEJsb2NrOjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24gaGVhcFZl
cnNpb24pCiB7CiAgICAgaWYgKFVOTElLRUxZKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpKQpAQCAt
NTEzLDEwICs1MjMsMTAgQEAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6YXNzZXJ0
RmxpcHBlZCgpCiAgICAgYmxvY2soKS5hc3NlcnRGbGlwcGVkKCk7CiB9CiAKLWlubGluZSBib29s
IE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25zdCB2b2lkKiBwKQoraW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHAsIFdURjo6Q29uc3VtZURlcGVuZGVuY3kgZGVw
ZW5kZW5jeSkKIHsKICAgICBhc3NlcnRGbGlwcGVkKCk7Ci0gICAgcmV0dXJuIG1fbWFya3MuZ2V0
KGF0b21OdW1iZXIocCkpOworICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApICsg
ZGVwZW5kZW5jeSk7CiB9CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjp0ZXN0QW5kU2V0TWFy
a2VkKGNvbnN0IHZvaWQqIHApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdiNDNmNjEuLjI3NTk3YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDYgQEAKKzIwMTYtMDktMTYgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFNwZWVkIHVwIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwOTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIZWFwOjppc01hcmtlZENvbmN1cnJl
bnRseSBoYWQgYSBmYWlybHkgZXhwZW5zaXZlIGxvYWQtbG9hZCBmZW5jZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGlzIGZhaXJseSBwZXJmLW5ldXRyYWwgb3ZlcmFsbCwgYnV0IHRoZSBHQydzIGlu
c3RydW1lbnRhdGlvbiByZXBvcnRzOgorICAgICAgICAgIEdDOkVkZW4gaXMgOTMlIGF2ZXJhZ2Ug
cnVudGltZSBhZnRlciBjaGFuZ2UKKyAgICAgICAgICBHQzpGdWxsIGlzIDc2JSBhdmVyYWdlIHJ1
bnRpbWUgYWZ0ZXIgY2hhbmdlCisKKyAgICAgICAgVGhlIGZlbmNlIHdhcyB0aGVyZSBiZWNhdXNl
OgorICAgICAgICAgMS4gSWYgdGhlIHJlYWQgb2YgbV92ZXJzaW9uIGluIE1hcmtlZEJsb2NrOjpu
ZWVkc0ZsaXAgaXNuJ3Qgd2hhdCdzIGV4cGVjdGVkIHRoZW47CisgICAgICAgICAyLiBUaGUgcmVh
ZCBvZiBtX21hcmtzIGluIE1hcmtlZEJsb2NrOjppc01hcmtlZCBuZWVkcyB0byBvYnNlcnZlIHRo
ZSB2YWx1ZSB0aGF0IHdhcyBzdG9yZWQgKmJlZm9yZSogbV92ZXJzaW9uIHdhcyBzdG9yZWQuCisK
KyAgICAgICAgVGhpcyBvcmRlcmluZyBpc24ndCBndWFyYW50ZWVkIG9uIEFSTSwgd2hpY2ggaGFz
IGEgd2VhayBtZW1vcnkgbW9kZWwuCisKKyAgICAgICAgVGhlcmUgYXJlIDMgd2F5cyB0byBndWFy
YW50ZWUgdGhpcyBvcmRlcmluZzoKKyAgICAgICAgIEEuIFVzZSBhIGJhcnJpZXIgaW5zdHJ1Y3Rp
b24uCisgICAgICAgICBCLiBVc2UgYSBsb2FkLWFjcXVpcmUgKG5ldyBpbiBBUk12OCkuCisgICAg
ICAgICBDLiB1c2UgQVJNJ3MgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUsIHdoaWNoIEMrKyBjYWxs
cyBtZW1vcnlfb3JkZXJfY29uc3VtZS4KKworICAgICAgICBJbiBnZW5lcmFsOgorICAgICAgICAg
QS4gaXMgc2xvdyBidXQgb3JkZXJzIGFsbCBvZiBtZW1vcnkgaW4gYW4gaW50dWl0aXZlIG1hbm5l
ci4KKyAgICAgICAgIEIuIGlzIGZhc3Rlci1pc2ggYW5kIGhhcyB0aGUgc2FtZSBwcm9wZXJ0eS1p
c2guCisgICAgICAgICBDLiBzaG91bGQgYmUgZmFzdGVyIHN0aWxsLCBidXQgKm9ubHkgb3JkZXJz
IGRlcGVuZGVudCBsb2FkcyouIFRoaXMgbGFzdCBwYXJ0IGlzIGNyaXRpY2FsISBDb25zdW1lIGlz
bid0IGFuIGFsbC1vdXQgcmVwbGFjZW1lbnQgZm9yIGFjcXVpcmUgKGFjcXVpcmUgaXMgcmF0aGVy
IGEgc3VwZXJzZXQgb2YgY29uc3VtZSkuCisKKyAgICAgICAgQVJNIGV4cGxhaW5zIHRoZSBhZGRy
ZXNzIGRlcGVuZGVuY3kgcnVsZSBpbiB0aGVpciBkb2N1bWVudCAiYmFycmllciBsaXRtdXMgdGVz
dHMgYW5kIGNvb2tib29rIjoKKworICAgICAgICA+ICpSZXNvbHZpbmcgYnkgdGhlIHVzZSBvZiBi
YXJyaWVycyBhbmQgYWRkcmVzcyBkZXBlbmRlbmN5KgorICAgICAgICA+CisgICAgICAgID4gVGhl
cmUgaXMgYSBydWxlIHdpdGhpbiB0aGUgQVJNIGFyY2hpdGVjdHVyZSB0aGF0OgorICAgICAgICA+
IFdoZXJlIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBhIHJlYWQgaXMgdXNlZCB0byBjb21wdXRlIHRo
ZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgYSBzdWJzZXF1ZW50IHJlYWQgb3Igd3JpdGUgKHRoaXMgaXMg
a25vd24gYXMgYW4gYWRkcmVzcyBkZXBlbmRlbmN5KSwgdGhlbiB0aGVzZSB0d28gbWVtb3J5IGFj
Y2Vzc2VzIHdpbGwgYmUgb2JzZXJ2ZWQgaW4gcHJvZ3JhbSBvcmRlci4gQW4gYWRkcmVzcyBkZXBl
bmRlbmN5IGV4aXN0cyBldmVuIGlmIHRoZSB2YWx1ZSByZWFkIGJ5IHRoZSBmaXJzdCByZWFkIGhh
cyBubyBlZmZlY3QgaW4gY2hhbmdpbmcgdGhlIHZpcnR1YWwgYWRkcmVzcyAoYXMgbWlnaHQgYmUg
dGhlIGNhc2UgaWYgdGhlIHZhbHVlIHJldHVybmVkIGlzIG1hc2tlZCBvZmYgYmVmb3JlIGl0IGlz
IHVzZWQsIG9yIGlmIGl0IGhhZCBubyBlZmZlY3Qgb24gY2hhbmdpbmcgYSBwcmVkaWN0ZWQgYWRk
cmVzcyB2YWx1ZSkuCisgICAgICAgID4gVGhpcyByZXN0cmljdGlvbiBhcHBsaWVzIG9ubHkgd2hl
biB0aGUgZGF0YSB2YWx1ZSByZXR1cm5lZCBmcm9tIG9uZSByZWFkIGlzIHVzZWQgYXMgYSBkYXRh
IHZhbHVlIHRvIGNhbGN1bGF0ZSB0aGUgYWRkcmVzcyBvZiBhIHN1YnNlcXVlbnQgcmVhZCBvciB3
cml0ZS4gVGhpcyBkb2VzIG5vdCBhcHBseSBpZiB0aGUgZGF0YSB2YWx1ZSByZXR1cm5lZCBmcm9t
IG9uZSByZWFkIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBjb25kaXRpb24gY29kZSBmbGFncywg
YW5kIHRoZSB2YWx1ZXMgb2YgdGhlIGZsYWdzIGFyZSB1c2VkIGZvciBjb25kaXRpb24gY29kZSBl
dmFsdWF0aW9uIHRvIGRldGVybWluZSB0aGUgYWRkcmVzcyBvZiBhIHN1YnNlcXVlbnQgcmVhZHMs
IGVpdGhlciB0aHJvdWdoIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbiBvciB0aGUgZXZhbHVhdGlvbiBv
ZiBhIGJyYW5jaC4gVGhpcyBpcyBrbm93biBhcyBhIGNvbnRyb2wgZGVwZW5kZW5jeS4KKyAgICAg
ICAgPiBXaGVyZSBib3RoIGEgY29udHJvbCBhbmQgYWRkcmVzcyBkZXBlbmRlbmN5IGV4aXN0LCB0
aGUgb3JkZXJpbmcgYmVoYXZpb3VyIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgYWRkcmVzcyBkZXBl
bmRlbmN5LgorCisgICAgICAgIEMrKydzIG1lbW9yeV9vcmRlcl9jb25zdW1lIGlzIHVuZm9ydHVu
YXRlbHkgdW5pbXBsZW1lbnRlZCBieSBDKysgY29tcGlsZXJzLCBhbmQgbWF5YmUgdW5pbXBsZW1l
bnRhYmxlIGFzIHNwZWMnZC4gSSdtIHdvcmtpbmcgd2l0aCBpbnRlcmVzdGVkIGZvbGtzIGluIHRo
ZSBjb21taXR0ZWUgdG8gZml4IHRoaXMgc2l0dWF0aW9uOiBodHRwOi8vd2cyMS5saW5rL3AwMTkw
cjIKKworICAgICAgICAqIHd0Zi9BdG9taWNzLmg6CisgICAgICAgIChXVEY6OmNvbnN1bWVMb2Fk
KTogcGl4aWUgbWFnaWMKKwogMjAxNi0wOS0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNTkzMyBh
bmQgcjIwNTkzNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCBiL1NvdXJj
ZS9XVEYvd3RmL0F0b21pY3MuaAppbmRleCA5YjQ3YTBlLi45MjM4NTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKKysrIGIvU291cmNlL1dURi93dGYvQXRvbWljcy5oCkBA
IC0xOTgsNiArMTk4LDU2IEBAIGlubGluZSB2b2lkIG1lbW9yeUJhcnJpZXJCZWZvcmVVbmxvY2so
KSB7IHN0ZDo6YXRvbWljX3RocmVhZF9mZW5jZShzdGQ6Om1lbW9yeV9vCiAKICNlbmRpZgogCit0
eXBlZGVmIHNpemVfdCBDb25zdW1lRGVwZW5kZW5jeTsKKworLy8gQ29uc3VtZSBsb2FkLCByZXR1
cm5pbmcgdGhlIGxvYWRlZCBgdmFsdWVgIGF0IGBsb2NhdGlvbmAgYW5kIGEgZGVwZW5kZW50LXpl
cm8KKy8vIHdoaWNoIGNyZWF0ZXMgYW4gYWRkcmVzcyBkZXBlbmRlbmN5IGZyb20gdGhlIGBsb2Nh
dGlvbmAuCisvLworLy8gVXNhZ2Ugbm90ZXM6CisvLyBNZXJlbHkgYnJhbmNoaW5nIGJhc2VkIG9u
IGB2YWx1ZWAgaXNuJ3Qgc3VmZmljaWVudCB0byBpbXBvc2UgYSBkZXBlbmRlbmN5CisvLyBvcmRl
cmluZzogeW91IG11c3QgdXNlIGBkZXBlbmRlbmN5YCBpbiB0aGUgYWRkcmVzcyBjb21wdXRhdGlv
biBvZiBzdWJzZXF1ZW50CisvLyBsb2FkcyB3aGljaCBzaG91bGQgb2JzZXJ2ZSB0aGUgc3RvcmUg
b3JkZXIgdy5yLnQuIGBsb2NhdGlvbmAuCisvLyBUaGlzIG9yZGVycyB0aGUgYGxvY2F0aW9uYCBs
b2FkIHdpdGggc3VzZXF1ZW50IGRlcGVuZGVudCBsb2FkcyAqb25seSouCisvLyBJdCBzYXlzIG5v
dGhpbmcgYWJvdXQgb3JkZXJpbmcgb2Ygb3RoZXIgbG9hZHMhCisvLworLy8gQ2F2ZWF0IGVtcHRv
ci4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitBTFdBWVNfSU5MSU5FIGF1dG8gY29uc3VtZUxvYWQo
Y29uc3QgVCogbG9jYXRpb24pCit7CisgICAgc3RydWN0IHsgVCB2YWx1ZTsgQ29uc3VtZURlcGVu
ZGVuY3kgZGVwZW5kZW5jeTsgfSByZXQ7CisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIEZvcmNlIHRo
ZSByZWFkIG9mIGBsb2NhdGlvbmAgdG8gb2NjdXIgb25seSBvbmNlIHVzaW5nIHZvbGF0aWxlLgor
ICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNvdWxkIG90aGVy
d2lzZSByZW1hdGVyaWFsaXplIHRoZQorICAgIC8vIGxvYWQgYW5kIGxvc2UgdGhlIGRlcGVuZGVu
Y3kgd2UncmUgdHJ5aW5nIHNvIGhhcmQgdG8gY3JlYXRlLgorICAgIHJldC52YWx1ZSA9ICpzdGF0
aWNfY2FzdDxjb25zdCB2b2xhdGlsZSBUKj4obG9jYXRpb24pOworICAgIC8vIENyZWF0ZSBhIG1h
Z2ljYWwgemVybyB2YWx1ZSB0aHJvdWdoIGlubGluZSBhc3NlbWJseSwgd2hvc2UgY29tcHV0YXRp
b24KKyAgICAvLyBpc24ndCB2aXNpYmxlIHRvIHRoZSBvcHRpbWl6ZXIuIFRoaXMgemVybyBpcyB0
aGVuIHVzYWJsZSBhcyBhbiBvZmZzZXQgaW4KKyAgICAvLyBmdXJ0aGVyIGFkZHJlc3MgY29tcHV0
YXRpb25zOiBhZGRpbmcgemVybyBkb2VzIG5vdGhpbmcsIGJ1dCB0aGUgY29tcGlsZXIKKyAgICAv
LyBkb2Vzbid0IGtub3cgaXQuIEl0J3MgbWFnaWNhbCBiZWNhdXNlIGl0IGNyZWF0ZXMgYW4gYWRk
cmVzcyBkZXBlbmRlbmN5CisgICAgLy8gZnJvbSB0aGUgbG9hZCBvZiBgbG9jYXRpb25gIHRvIHRo
ZSB1c2VzIG9mIHRoZSBkZXBlbmRlbmN5LCB3aGljaCB0cmlnZ2VycworICAgIC8vIHRoZSBBUk0g
SVNBJ3MgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUsIGEuay5hLiB0aGUgbXl0aGljYWwgQysrIGNv
bnN1bWUKKyAgICAvLyBvcmRlcmluZy4gVGhpcyBmb3JjZXMgd2VhayBtZW1vcnkgb3JkZXIgQ1BV
cyB0byBvYnNlcnZlIGBsb2NhdGlvbmAgYW5kCisgICAgLy8gZGVwZW5kZW50IGxvYWRzIGluIHRo
ZWlyIHN0b3JlIG9yZGVyIHdpdGhvdXQgdGhlIHJlYWRlciB1c2luZyBhIGJhcnJpZXIKKyAgICAv
LyBvciBhbiBhY3F1aXJlIGxvYWQuCisgICAgYXNtIHZvbGF0aWxlKCJlb3IgJXhbZGVwZW5kZW5j
eV0sICV4W2luXSwgJXhbaW5dIgorICAgICAgICAgICAgICAgICA6IFtkZXBlbmRlbmN5XSAiPXIi
IChyZXQuZGVwZW5kZW5jeSkKKyAgICAgICAgICAgICAgICAgOiBbaW5dICJyIiAocmV0LnZhbHVl
KQorICAgICAgICAgICAgICAgICAvLyBMaWUgYWJvdXQgdG91Y2hpbmcgbWVtb3J5LCBmcmVhayB0
aGUgb3B0aW1pemVyIG91dCBhIGJpdC4KKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7Cisj
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyAgICByZXQudmFs
dWUgPSAqc3RhdGljX2Nhc3Q8Y29uc3Qgdm9sYXRpbGUgVCo+KGxvY2F0aW9uKTsKKyAgICBhc20g
dm9sYXRpbGUoImVvciAlW2RlcGVuZGVuY3ldLCAlW2luXSwgJVtpbl0iCisgICAgICAgICAgICAg
ICAgIDogW2RlcGVuZGVuY3ldICI9ciIgKHJldC5kZXBlbmRlbmN5KQorICAgICAgICAgICAgICAg
ICA6IFtpbl0gInIiIChyZXQudmFsdWUpCisgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwor
I2Vsc2UKKyAgICByZXQudmFsdWUgPSAqbG9jYXRpb247CisgICAgbG9hZExvYWRGZW5jZSgpOwor
ICAgIHJldC5kZXBlbmRlbmN5ID0gMDsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkF0b21pYzsKLS0gCjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>289185</attachid>
            <date>2016-09-17 18:11:22 -0700</date>
            <delta_ts>2016-09-26 16:21:04 -0700</delta_ts>
            <desc>test</desc>
            <filename>consume.cpp</filename>
            <type>application/octet-stream</type>
            <size>4032</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">LyoKICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
ICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgogKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgogKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAogKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAqLwoKI2luY2x1ZGUgInd0Zi9Db25zdW1lLmgiCiNpbmNsdWRlIDxj
c3RkbGliPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx0aHJlYWQ+CgoKI2RlZmluZSBD
SEVDS19FUShHT1QsIEVYUEVDVCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgYXV0byBnb3QgPSAoR09UKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBhdXRvIGV4cGVjdCA9IChFWFBFQ1QpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGlmIChVTkxJS0VM
WShnb3QgIT0gZXhwZWN0KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgICBzdGQ6OmNlcnIgPDwgIkdvdCAiIDw8IGdvdCA8PCAiIGV4cGVjdGVkICIgPDwgZXhw
ZWN0ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICA8PCAiIGZvciAiIDw8ICNHT1QgPDwg
IiBhbmQgIiA8PCAjRVhQRUNUIDw8ICdcbic7ICAgICAgIFwKICAgICAgYWJvcnQoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgfSB3aGlsZSAoZmFsc2UpCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpORVZF
Ul9JTkxJTkUgYXV0byB0ZXN0KGNvbnN0IFQqIGxvY2F0aW9uKSB7CiAgV1RGOjpjb21waWxlckZl
bmNlKCk7IC8vIFBhcmFub2lkIHRlc3RpbmcuCiAgYXV0byByZXQgPSBXVEY6OmNvbnN1bWVMb2Fk
KGxvY2F0aW9uKTsKICBXVEY6OmNvbXBpbGVyRmVuY2UoKTsgLy8gUGFyYW5vaWQgdGVzdGluZy4K
ICByZXR1cm4gcmV0Owp9CgppbnQgbWFpbigpIHsKICB7CiAgICB1aW50OF90IGk4ID0gNDI7CiAg
ICBhdXRvIGk4X2NvbnN1bWVkID0gdGVzdCgmaTgpOwogICAgQ0hFQ0tfRVEoaThfY29uc3VtZWQu
dmFsdWUsIDQydSk7CiAgICBDSEVDS19FUShpOF9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7CiAg
fQoKICB7CiAgICB1aW50MTZfdCBpMTYgPSA0MjsKICAgIGF1dG8gaTE2X2NvbnN1bWVkID0gdGVz
dCgmaTE2KTsKICAgIENIRUNLX0VRKGkxNl9jb25zdW1lZC52YWx1ZSwgNDJ1KTsKICAgIENIRUNL
X0VRKGkxNl9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7CiAgfQoKICB7CiAgICB1aW50MzJfdCBp
MzIgPSA0MjsKICAgIGF1dG8gaTMyX2NvbnN1bWVkID0gdGVzdCgmaTMyKTsKICAgIENIRUNLX0VR
KGkzMl9jb25zdW1lZC52YWx1ZSwgNDJ1KTsKICAgIENIRUNLX0VRKGkzMl9jb25zdW1lZC5kZXBl
bmRlbmN5LCAwdSk7CiAgfQoKICB7CiAgICB1aW50NjRfdCBpNjQgPSA0MjsKICAgIGF1dG8gaTY0
X2NvbnN1bWVkID0gdGVzdCgmaTY0KTsKICAgIENIRUNLX0VRKGk2NF9jb25zdW1lZC52YWx1ZSwg
NDJ1KTsKICAgIENIRUNLX0VRKGk2NF9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7CiAgfQoKICB7
CiAgICBmbG9hdCBmMzIgPSA0Mi5mOwogICAgYXV0byBmMzJfY29uc3VtZWQgPSB0ZXN0KCZmMzIp
OwogICAgQ0hFQ0tfRVEoZjMyX2NvbnN1bWVkLnZhbHVlLCA0Mi5mKTsKICAgIENIRUNLX0VRKGYz
Ml9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7CiAgfQoKICB7CiAgICBkb3VibGUgZjY0ID0gNDIu
OwogICAgYXV0byBmNjRfY29uc3VtZWQgPSB0ZXN0KCZmNjQpOwogICAgQ0hFQ0tfRVEoZjY0X2Nv
bnN1bWVkLnZhbHVlLCA0Mi4pOwogICAgQ0hFQ0tfRVEoZjY0X2NvbnN1bWVkLmRlcGVuZGVuY3ks
IDB1KTsKICB9CgogIHsKICAgIGF1dG8qIHB0ciA9ICZtYWluOwogICAgYXV0byBwdHJfY29uc3Vt
ZWQgPSB0ZXN0KCZwdHIpOwogICAgQ0hFQ0tfRVEocHRyX2NvbnN1bWVkLnZhbHVlLCAmbWFpbik7
CiAgICBDSEVDS19FUShwdHJfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOwogIH0KCiAgewogICAg
Y2hhciogaGVsbG8gPSBudWxscHRyOwogICAgYXV0byogc3RhY2sgPSAmaGVsbG87CiAgICBhdXRv
IHN0YWNrX2NvbnN1bWVkID0gdGVzdCgmc3RhY2spOwogICAgQ0hFQ0tfRVEoc3RhY2tfY29uc3Vt
ZWQudmFsdWUsICZoZWxsbyk7CiAgICBDSEVDS19FUShzdGFja19jb25zdW1lZC5kZXBlbmRlbmN5
LCAwdSk7CiAgfQoKICB7CiAgICBib29sIHJlYWR5ID0gZmFsc2U7CiAgICBjb25zdGV4cHIgc2l6
ZV90IG51bSA9IDEwMjQ7CiAgICB1aW50MzJfdCogdmVjID0gbmV3IHVpbnQzMl90W251bV07CiAg
ICBzdGQ6OnRocmVhZCB0KFsmXSAoKSB7CiAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0g
bnVtOyArK2kpCiAgICAgICAgICB2ZWNbaV0gPSBpICogMjsKICAgICAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOwogICAgICAgIHJlYWR5ID0gdHJ1ZTsKICAgICAgfSk7CiAgICBkbyB7CiAgICAg
IGF1dG8gc3RhY2tfY29uc3VtZWQgPSB0ZXN0KCZyZWFkeSk7CiAgICAgIGlmIChzdGFja19jb25z
dW1lZC52YWx1ZSkgewogICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG51bTsgKytpKQog
ICAgICAgICAgQ0hFQ0tfRVEodmVjW2kgKyBzdGFja19jb25zdW1lZC5kZXBlbmRlbmN5XSwgaSAq
IDIpOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9IHdoaWxlICh0cnVlKTsKICAgIHQuam9p
bigpOwogICAgZGVsZXRlW10gdmVjOwogIH0KCiAgcmV0dXJuIDA7Cn0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289186</attachid>
            <date>2016-09-17 18:13:39 -0700</date>
            <delta_ts>2016-09-19 23:30:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>11589</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBiYTU2OWMyOTk5M2M2Yzg2MmM5YzUwZDA5YTFiZGVlNzUzYzIzZTk4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgIHwgMTUgKysr
KysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIHwgIDcgKy0tCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIHwgMTYgKysrKy0tCiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgIHwgNDQgKysrKysrKysrKysrKysr
KwogU291cmNlL1dURi93dGYvQXRvbWljcy5oICAgICAgICAgICAgICAgICB8IDg3ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDE2MyBpbnNlcnRpb25z
KCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJjNTI3NjMu
LjlkNDYzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2
LTA5LTE3ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBTcGVl
ZCB1cCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlZWQgdXAgaXNNYXJrZWRDb25jdXJyZW50bHkgYnkg
dXNpbmcgV1RGOjpjb25zdW1lTG9hZC4KKworICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkpOiB1c2UgbmVlZHNGbGlw
V2l0aERlcGVuZGVuY3ksIGRvaW5nIGF3YXkgd2l0aCB0aGUgbG9hZC1sb2FkIGZlbmNlCisgICAg
ICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6bmVl
ZHNGbGlwV2l0aERlcGVuZGVuY3kpOiB1c2UgV1RGOjpjb25zdW1lTG9hZAorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6aXNNYXJrZWQpOiBvcHRpb25hbGx5IGluZGV4IHdpdGggYSBkZXBlbmRl
bmN5IGdlbmVyYXRlZCBieSBXVEY6OmNvbnN1bWVMb2FkCisKIDIwMTYtMDktMTUgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMDU5MzEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMu
aAppbmRleCAxYTlkMDc2Li42ODY0ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBJbmxpbmVzLmgKQEAgLTkyLDEwICs5MiwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6
aXNNYXJrZWRDb25jdXJyZW50bHkoY29uc3Qgdm9pZCogcmF3Q2VsbCkKICAgICBpZiAoY2VsbC0+
aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlv
bigpLmlzTWFya2VkKCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxv
Y2soKTsKLSAgICBpZiAoYmxvY2submVlZHNGbGlwKGJsb2NrLnZtKCktPmhlYXAub2JqZWN0U3Bh
Y2UoKS52ZXJzaW9uKCkpKQorICAgIEhlYXBWZXJzaW9uIG9iamVjdFNwYWNlVmVyc2lvbiA9IGJs
b2NrLnZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCk7CisgICAgYXV0byBmID0gYmxv
Y2submVlZHNGbGlwV2l0aERlcGVuZGVuY3kob2JqZWN0U3BhY2VWZXJzaW9uKTsKKyAgICBpZiAo
Zi5uZWVkc0ZsaXApCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXVEY6OmxvYWRMb2FkRmVu
Y2UoKTsKLSAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQoY2VsbCk7CisgICAgcmV0dXJuIGJsb2Nr
LmlzTWFya2VkKGNlbGwsIGYuZGVwZW5kZW5jeSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBI
ZWFwOjp0ZXN0QW5kU2V0TWFya2VkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IHZvaWQqIHJh
d0NlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAppbmRleCBkMjZh
ZmY5Li4wYzhjZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgK
QEAgLTI0Nyw3ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIHNpemVfdCBtYXJrQ291
bnQoKTsKIAotICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOworICAgIGJvb2wgaXNNYXJr
ZWQoY29uc3Qgdm9pZCosIFdURjo6Q29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeSA9IDAgLyog
Tm8gZGVwZW5kZW5jeSAqLyk7CiAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQq
KTsKICAgICAgICAgCiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVh
cENlbGwqKTsKQEAgLTI2NSw2ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAgV2Vha1NldCYgd2Vha1Nl
dCgpOwogCiAgICAgYm9vbCBuZWVkc0ZsaXAoSGVhcFZlcnNpb24pOworICAgIGF1dG8gbmVlZHNG
bGlwV2l0aERlcGVuZGVuY3koSGVhcFZlcnNpb24pOwogICAgIGJvb2wgbmVlZHNGbGlwKCk7CiAg
ICAgICAgIAogICAgIHZvaWQgZmxpcElmTmVjZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lv
bik7CkBAIC00NjgsNiArNDY5LDE1IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpuZWVkc0Zs
aXAoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiAgICAgcmV0dXJuIGhlYXBWZXJzaW9uICE9IG1f
dmVyc2lvbjsKIH0KIAorQUxXQVlTX0lOTElORSBhdXRvIE1hcmtlZEJsb2NrOjpuZWVkc0ZsaXBX
aXRoRGVwZW5kZW5jeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKK3sKKyAgICBhdXRvIGMgPSBX
VEY6OmNvbnN1bWVMb2FkKCZtX3ZlcnNpb24pOworICAgIHN0cnVjdCB7IGJvb2wgbmVlZHNGbGlw
OyBXVEY6OkNvbnN1bWVEZXBlbmRlbmN5IGRlcGVuZGVuY3k7IH0gcmV0OworICAgIHJldC5uZWVk
c0ZsaXAgPSBjLnZhbHVlICE9IGhlYXBWZXJzaW9uOworICAgIHJldC5kZXBlbmRlbmN5ID0gYy5k
ZXBlbmRlbmN5OworICAgIHJldHVybiByZXQ7Cit9CisKIGlubGluZSB2b2lkIE1hcmtlZEJsb2Nr
OjpmbGlwSWZOZWNlc3NhcnkoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCiB7CiAgICAgaWYgKFVO
TElLRUxZKG5lZWRzRmxpcChoZWFwVmVyc2lvbikpKQpAQCAtNTEzLDEwICs1MjMsMTAgQEAgaW5s
aW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6YXNzZXJ0RmxpcHBlZCgpCiAgICAgYmxvY2so
KS5hc3NlcnRGbGlwcGVkKCk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtl
ZChjb25zdCB2b2lkKiBwKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKGNvbnN0
IHZvaWQqIHAsIFdURjo6Q29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeSkKIHsKICAgICBhc3Nl
cnRGbGlwcGVkKCk7Ci0gICAgcmV0dXJuIG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkpOworICAg
IHJldHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApICsgZGVwZW5kZW5jeSk7CiB9CiAKIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjp0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqIHApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDdiNDNmNjEuLmY3YzllMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTYtMDktMTcgIEpG
IEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwZWVkIHVwIEhlYXA6
OmlzTWFya2VkQ29uY3VycmVudGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSBoYWQgYSBmYWlybHkgZXhw
ZW5zaXZlIGxvYWQtbG9hZCBmZW5jZS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGZhaXJseSBw
ZXJmLW5ldXRyYWwgb3ZlcmFsbCwgYnV0IHRoZSBHQydzIGluc3RydW1lbnRhdGlvbiByZXBvcnRz
OgorICAgICAgICAgIEdDOkVkZW4gaXMgOTMlIGF2ZXJhZ2UgcnVudGltZSBhZnRlciBjaGFuZ2UK
KyAgICAgICAgICBHQzpGdWxsIGlzIDc2JSBhdmVyYWdlIHJ1bnRpbWUgYWZ0ZXIgY2hhbmdlCisK
KyAgICAgICAgVGhlIGZlbmNlIHdhcyB0aGVyZSBiZWNhdXNlOgorICAgICAgICAgMS4gSWYgdGhl
IHJlYWQgb2YgbV92ZXJzaW9uIGluIE1hcmtlZEJsb2NrOjpuZWVkc0ZsaXAgaXNuJ3Qgd2hhdCdz
IGV4cGVjdGVkIHRoZW47CisgICAgICAgICAyLiBUaGUgcmVhZCBvZiBtX21hcmtzIGluIE1hcmtl
ZEJsb2NrOjppc01hcmtlZCBuZWVkcyB0byBvYnNlcnZlIHRoZSB2YWx1ZSB0aGF0IHdhcyBzdG9y
ZWQgKmJlZm9yZSogbV92ZXJzaW9uIHdhcyBzdG9yZWQuCisKKyAgICAgICAgVGhpcyBvcmRlcmlu
ZyBpc24ndCBndWFyYW50ZWVkIG9uIEFSTSwgd2hpY2ggaGFzIGEgd2VhayBtZW1vcnkgbW9kZWwu
CisKKyAgICAgICAgVGhlcmUgYXJlIDMgd2F5cyB0byBndWFyYW50ZWUgdGhpcyBvcmRlcmluZzoK
KyAgICAgICAgIEEuIFVzZSBhIGJhcnJpZXIgaW5zdHJ1Y3Rpb24uCisgICAgICAgICBCLiBVc2Ug
YSBsb2FkLWFjcXVpcmUgKG5ldyBpbiBBUk12OCkuCisgICAgICAgICBDLiB1c2UgQVJNJ3MgYWRk
cmVzcyBkZXBlbmRlbmN5IHJ1bGUsIHdoaWNoIEMrKyBjYWxscyBtZW1vcnlfb3JkZXJfY29uc3Vt
ZS4KKworICAgICAgICBJbiBnZW5lcmFsOgorICAgICAgICAgQS4gaXMgc2xvdyBidXQgb3JkZXJz
IGFsbCBvZiBtZW1vcnkgaW4gYW4gaW50dWl0aXZlIG1hbm5lci4KKyAgICAgICAgIEIuIGlzIGZh
c3Rlci1pc2ggYW5kIGhhcyB0aGUgc2FtZSBwcm9wZXJ0eS1pc2guCisgICAgICAgICBDLiBzaG91
bGQgYmUgZmFzdGVyIHN0aWxsLCBidXQgKm9ubHkgb3JkZXJzIGRlcGVuZGVudCBsb2FkcyouIFRo
aXMgbGFzdCBwYXJ0IGlzIGNyaXRpY2FsISBDb25zdW1lIGlzbid0IGFuIGFsbC1vdXQgcmVwbGFj
ZW1lbnQgZm9yIGFjcXVpcmUgKGFjcXVpcmUgaXMgcmF0aGVyIGEgc3VwZXJzZXQgb2YgY29uc3Vt
ZSkuCisKKyAgICAgICAgQVJNIGV4cGxhaW5zIHRoZSBhZGRyZXNzIGRlcGVuZGVuY3kgcnVsZSBp
biB0aGVpciBkb2N1bWVudCAiYmFycmllciBsaXRtdXMgdGVzdHMgYW5kIGNvb2tib29rIjoKKwor
ICAgICAgICA+ICpSZXNvbHZpbmcgYnkgdGhlIHVzZSBvZiBiYXJyaWVycyBhbmQgYWRkcmVzcyBk
ZXBlbmRlbmN5KgorICAgICAgICA+CisgICAgICAgID4gVGhlcmUgaXMgYSBydWxlIHdpdGhpbiB0
aGUgQVJNIGFyY2hpdGVjdHVyZSB0aGF0OgorICAgICAgICA+IFdoZXJlIHRoZSB2YWx1ZSByZXR1
cm5lZCBieSBhIHJlYWQgaXMgdXNlZCB0byBjb21wdXRlIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2Yg
YSBzdWJzZXF1ZW50IHJlYWQgb3Igd3JpdGUgKHRoaXMgaXMga25vd24gYXMgYW4gYWRkcmVzcyBk
ZXBlbmRlbmN5KSwgdGhlbiB0aGVzZSB0d28gbWVtb3J5IGFjY2Vzc2VzIHdpbGwgYmUgb2JzZXJ2
ZWQgaW4gcHJvZ3JhbSBvcmRlci4gQW4gYWRkcmVzcyBkZXBlbmRlbmN5IGV4aXN0cyBldmVuIGlm
IHRoZSB2YWx1ZSByZWFkIGJ5IHRoZSBmaXJzdCByZWFkIGhhcyBubyBlZmZlY3QgaW4gY2hhbmdp
bmcgdGhlIHZpcnR1YWwgYWRkcmVzcyAoYXMgbWlnaHQgYmUgdGhlIGNhc2UgaWYgdGhlIHZhbHVl
IHJldHVybmVkIGlzIG1hc2tlZCBvZmYgYmVmb3JlIGl0IGlzIHVzZWQsIG9yIGlmIGl0IGhhZCBu
byBlZmZlY3Qgb24gY2hhbmdpbmcgYSBwcmVkaWN0ZWQgYWRkcmVzcyB2YWx1ZSkuCisgICAgICAg
ID4gVGhpcyByZXN0cmljdGlvbiBhcHBsaWVzIG9ubHkgd2hlbiB0aGUgZGF0YSB2YWx1ZSByZXR1
cm5lZCBmcm9tIG9uZSByZWFkIGlzIHVzZWQgYXMgYSBkYXRhIHZhbHVlIHRvIGNhbGN1bGF0ZSB0
aGUgYWRkcmVzcyBvZiBhIHN1YnNlcXVlbnQgcmVhZCBvciB3cml0ZS4gVGhpcyBkb2VzIG5vdCBh
cHBseSBpZiB0aGUgZGF0YSB2YWx1ZSByZXR1cm5lZCBmcm9tIG9uZSByZWFkIGlzIHVzZWQgdG8g
ZGV0ZXJtaW5lIHRoZSBjb25kaXRpb24gY29kZSBmbGFncywgYW5kIHRoZSB2YWx1ZXMgb2YgdGhl
IGZsYWdzIGFyZSB1c2VkIGZvciBjb25kaXRpb24gY29kZSBldmFsdWF0aW9uIHRvIGRldGVybWlu
ZSB0aGUgYWRkcmVzcyBvZiBhIHN1YnNlcXVlbnQgcmVhZHMsIGVpdGhlciB0aHJvdWdoIGNvbmRp
dGlvbmFsIGV4ZWN1dGlvbiBvciB0aGUgZXZhbHVhdGlvbiBvZiBhIGJyYW5jaC4gVGhpcyBpcyBr
bm93biBhcyBhIGNvbnRyb2wgZGVwZW5kZW5jeS4KKyAgICAgICAgPiBXaGVyZSBib3RoIGEgY29u
dHJvbCBhbmQgYWRkcmVzcyBkZXBlbmRlbmN5IGV4aXN0LCB0aGUgb3JkZXJpbmcgYmVoYXZpb3Vy
IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgYWRkcmVzcyBkZXBlbmRlbmN5LgorCisgICAgICAgIEMr
KydzIG1lbW9yeV9vcmRlcl9jb25zdW1lIGlzIHVuZm9ydHVuYXRlbHkgdW5pbXBsZW1lbnRlZCBi
eSBDKysgY29tcGlsZXJzLCBhbmQgbWF5YmUgdW5pbXBsZW1lbnRhYmxlIGFzIHNwZWMnZC4gSSdt
IHdvcmtpbmcgd2l0aCBpbnRlcmVzdGVkIGZvbGtzIGluIHRoZSBjb21taXR0ZWUgdG8gZml4IHRo
aXMgc2l0dWF0aW9uOiBodHRwOi8vd2cyMS5saW5rL3AwMTkwcjIKKworICAgICAgICAqIHd0Zi9B
dG9taWNzLmg6CisgICAgICAgIChXVEY6Om1ha2VNYWdpY2FsWmVybyk6IGEgMCB3aGljaCBjYXJy
aWVzIGEgZGVwZW5kZW5jeQorICAgICAgICAoV1RGOjpjb25zdW1lTG9hZCk6IHBpeGllIG1hZ2lj
CisKIDIwMTYtMDktMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDU5MzMgYW5kIHIyMDU5MzYuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmggYi9Tb3VyY2UvV1RGL3d0Zi9BdG9t
aWNzLmgKaW5kZXggOWI0N2EwZS4uNjYwODdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
QXRvbWljcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaApAQCAtMTk4LDYgKzE5OCw5
MyBAQCBpbmxpbmUgdm9pZCBtZW1vcnlCYXJyaWVyQmVmb3JlVW5sb2NrKCkgeyBzdGQ6OmF0b21p
Y190aHJlYWRfZmVuY2Uoc3RkOjptZW1vcnlfbwogCiAjZW5kaWYKIAordHlwZWRlZiBzaXplX3Qg
Q29uc3VtZURlcGVuZGVuY3k7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHNpemVvZihUKSA8IDg+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdBWVNfSU5MSU5F
IENvbnN1bWVEZXBlbmRlbmN5IG1ha2VNYWdpY2FsWmVybyhUIHZhbHVlKQoreworICAgIENvbnN1
bWVEZXBlbmRlbmN5IGRlcGVuZGVuY3k7CisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIENyZWF0ZSBh
IG1hZ2ljYWwgemVybyB2YWx1ZSB0aHJvdWdoIGlubGluZSBhc3NlbWJseSwgd2hvc2UgY29tcHV0
YXRpb24KKyAgICAvLyBpc24ndCB2aXNpYmxlIHRvIHRoZSBvcHRpbWl6ZXIuIFRoaXMgemVybyBp
cyB0aGVuIHVzYWJsZSBhcyBhbiBvZmZzZXQgaW4KKyAgICAvLyBmdXJ0aGVyIGFkZHJlc3MgY29t
cHV0YXRpb25zOiBhZGRpbmcgemVybyBkb2VzIG5vdGhpbmcsIGJ1dCB0aGUgY29tcGlsZXIKKyAg
ICAvLyBkb2Vzbid0IGtub3cgaXQuIEl0J3MgbWFnaWNhbCBiZWNhdXNlIGl0IGNyZWF0ZXMgYW4g
YWRkcmVzcyBkZXBlbmRlbmN5CisgICAgLy8gZnJvbSB0aGUgbG9hZCBvZiBgbG9jYXRpb25gIHRv
IHRoZSB1c2VzIG9mIHRoZSBkZXBlbmRlbmN5LCB3aGljaCB0cmlnZ2VycworICAgIC8vIHRoZSBB
Uk0gSVNBJ3MgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUsIGEuay5hLiB0aGUgbXl0aGljYWwgQysr
IGNvbnN1bWUKKyAgICAvLyBvcmRlcmluZy4gVGhpcyBmb3JjZXMgd2VhayBtZW1vcnkgb3JkZXIg
Q1BVcyB0byBvYnNlcnZlIGBsb2NhdGlvbmAgYW5kCisgICAgLy8gZGVwZW5kZW50IGxvYWRzIGlu
IHRoZWlyIHN0b3JlIG9yZGVyIHdpdGhvdXQgdGhlIHJlYWRlciB1c2luZyBhIGJhcnJpZXIKKyAg
ICAvLyBvciBhbiBhY3F1aXJlIGxvYWQuCisgICAgYXNtIHZvbGF0aWxlKCJlb3IgJXhbZGVwZW5k
ZW5jeV0sICV4W2luXSwgJXhbaW5dIgorICAgICAgICAgICAgICAgICA6IFtkZXBlbmRlbmN5XSAi
PXIiIChkZXBlbmRlbmN5KQorICAgICAgICAgICAgICAgICA6IFtpbl0gInIiICh2YWx1ZSkKKyAg
ICAgICAgICAgICAgICAgLy8gTGllIGFib3V0IHRvdWNoaW5nIG1lbW9yeSwgZnJlYWsgdGhlIG9w
dGltaXplciBvdXQgYSBiaXQuCisgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOworICAgIHJl
dHVybiBkZXBlbmRlbmN5OworI2VsaWYgQ1BVKEFSTSkKKyAgICBhc20gdm9sYXRpbGUoImVvciAl
W2RlcGVuZGVuY3ldLCAlW2luXSwgJVtpbl0iCisgICAgICAgICAgICAgICAgIDogW2RlcGVuZGVu
Y3ldICI9ciIgKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAgIDogW2luXSAiciIgKHZhbHVl
KQorICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKKyAgICByZXR1cm4gZGVwZW5kZW5jeTsK
KyNlbHNlCisgICAgKHZvaWQpdmFsdWU7CisgICAgZGVwZW5kZW5jeSA9IDA7CisgICAgcmV0dXJu
IGRlcGVuZGVuY3k7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDg+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdBWVNf
SU5MSU5FIENvbnN1bWVEZXBlbmRlbmN5IG1ha2VNYWdpY2FsWmVybyhUIHZhbHVlKQoreworI2lm
IENQVShBUk0pICYmICFDUFUoQVJNNjQpCisgICAgLy8gQTMyIGFuZCBUMzIgaGF2ZSAzMi1iaXQg
aW50ZWdlciByZWdpc3RlcnMsIHJlcXVpcmluZyBsb2FkcyBpbnRvIHBhaXJlZAorICAgIC8vIHJl
Z2lzdGVycy4gVGhlc2UgbG9hZHMgYXJlbid0IHNpbmdsZS1jb3B5IGF0b21pYyBvbiBhbGwgQVJN
IHZhcmlhbnRzCisgICAgLy8gKG9ubHkgZ3VhcmFudGVlZCB3aGVuIExQQUUgaXMgcHJlc2VudCku
IFdlIHdhbnQgYSBkZXBlbmRlbmN5IG9uIGJvdGgKKyAgICAvLyBib3R0b20gYW5kIHRvcCBsb2Fk
ZWQgdmFsdWVzLCB3aGljaCB3ZSBhY2hpZXZlIGJ5IHBlcmZvcm1pbmcgc29tZQorICAgIC8vIGFy
aXRobWV0aWMgYmV0d2VlbiBib3RoIHZhbHVlcywgcHJvZHVjaW5nIGEgMzItYml0IG91dHB1dCwg
YW5kIGdlbmVyYXRpYworICAgIC8vIGEgbWFnaWNhbCB6ZXJvIGZyb20gdGhpcyAzMi1iaXQgdmFs
dWUuCisgICAgdWludDY0X3QgY29weSA9IFdURjo6Yml0d2lzZV9jYXN0PHVpbnQ2NF90Pih2YWx1
ZSk7CisgICAgdWludDMyX3QgYm90dG9tID0gY29weSAmIDB4RkZGRkZGRkZ1LCB0b3AgPSBjb3B5
ID4+IDMyOworICAgIHJldHVybiBtYWtlTWFnaWNhbFplcm8oYm90dG9tIF4gdG9wKTsKKyNlbHNl
CisgICAgKHZvaWQpdmFsdWU7CisgICAgcmV0dXJuIG1ha2VNYWdpY2FsWmVybyh2YWx1ZSk7Cisj
ZW5kaWYKK30KKworLy8gQ29uc3VtZSBsb2FkLCByZXR1cm5pbmcgdGhlIGxvYWRlZCBgdmFsdWVg
IGF0IGBsb2NhdGlvbmAgYW5kIGEgZGVwZW5kZW50LXplcm8KKy8vIHdoaWNoIGNyZWF0ZXMgYW4g
YWRkcmVzcyBkZXBlbmRlbmN5IGZyb20gdGhlIGBsb2NhdGlvbmAuCisvLworLy8gVXNhZ2Ugbm90
ZXM6CisvLyBNZXJlbHkgYnJhbmNoaW5nIGJhc2VkIG9uIGB2YWx1ZWAgaXNuJ3Qgc3VmZmljaWVu
dCB0byBpbXBvc2UgYSBkZXBlbmRlbmN5CisvLyBvcmRlcmluZzogeW91IG11c3QgdXNlIGBkZXBl
bmRlbmN5YCBpbiB0aGUgYWRkcmVzcyBjb21wdXRhdGlvbiBvZiBzdWJzZXF1ZW50CisvLyBsb2Fk
cyB3aGljaCBzaG91bGQgb2JzZXJ2ZSB0aGUgc3RvcmUgb3JkZXIgdy5yLnQuIGBsb2NhdGlvbmAu
ICBUaGlzIG9yZGVycworLy8gdGhlIGBsb2NhdGlvbmAgbG9hZCB3aXRoIHN1c2VxdWVudCBkZXBl
bmRlbnQgbG9hZHMgKm9ubHkqLiAgSXQgc2F5cyBub3RoaW5nCisvLyBhYm91dCBvcmRlcmluZyBv
ZiBvdGhlciBsb2FkcyEKKy8vCisvLyBDYXZlYXQgZW1wdG9yLgordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK0FMV0FZU19JTkxJTkUgYXV0byBjb25zdW1lTG9hZChjb25zdCBUKiBsb2NhdGlvbikKK3sK
KyAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlIFJldHVybmVkOwor
I2lmIENPTVBJTEVSX1NVUFBPUlRTKEJVSUxUSU5fSVNfVFJJVklBTExZX0NPUFlBQkxFKQorICAg
IC8vIE5vdCBhbGwgcmVjZW50IFNUTCBpbXBsZW1lbnRhdGlvbnMgc3VwcG9ydCB0aGUgc3RkOjpp
c190cml2aWFsbHlfY29weWFibGUgdHlwZSB0cmFpdC4gV29yayBhcm91bmQgdGhpcyBieSBvbmx5
IGNoZWNraW5nIG9uIHRvb2xjaGFpbnMgd2hpY2ggaGF2ZSB0aGUgZXF1aXZhbGVudCBjb21waWxl
ciBpbnRyaW5zaWMuCisgICAgc3RhdGljX2Fzc2VydChfX2lzX3RyaXZpYWxseV9jb3B5YWJsZShS
ZXR1cm5lZCksICJjb25zdW1lTG9hZCBvZiBub24tdHJpdmlhbGx5LWNvcHlhYmxlIHR5cGUhIik7
CisjZW5kaWYKKyAgICBzdHJ1Y3QgeyBSZXR1cm5lZCB2YWx1ZTsgQ29uc3VtZURlcGVuZGVuY3kg
ZGVwZW5kZW5jeTsgfSByZXQgeyB9OworI2lmIENQVShBUk02NCkgfHwgQ1BVKEFSTSkKKyAgICAv
LyBGb3JjZSB0aGUgcmVhZCBvZiBgbG9jYXRpb25gIHRvIG9jY3VyIG9ubHkgb25jZSB1c2luZyB2
b2xhdGlsZS4gIFRoaXMgaXMKKyAgICAvLyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgY29tcGlsZXIg
Y291bGQgb3RoZXJ3aXNlIHJlbWF0ZXJpYWxpemUgdGhlIGxvYWQgYW5kCisgICAgLy8gbG9zZSB0
aGUgZGVwZW5kZW5jeSB3ZSdyZSB0cnlpbmcgc28gaGFyZCB0byBjcmVhdGUuCisgICAgcmV0LnZh
bHVlID0gKnN0YXRpY19jYXN0PGNvbnN0IHZvbGF0aWxlIFJldHVybmVkKj4obG9jYXRpb24pOwor
I2Vsc2UKKyAgICByZXQudmFsdWUgPSAqbG9jYXRpb247CisgICAgbG9hZExvYWRGZW5jZSgpOwor
I2VuZGlmCisgICAgcmV0LmRlcGVuZGVuY3kgPSBtYWtlTWFnaWNhbFplcm8ocmV0LnZhbHVlKTsK
KyAgICByZXR1cm4gcmV0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpB
dG9taWM7Ci0tIAoyLjkuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289330</attachid>
            <date>2016-09-19 23:30:07 -0700</date>
            <delta_ts>2016-09-21 10:08:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>12258</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBhZjM2NTdjZGZiMDUyYTgzNzdiNjdhYWJkNGI4ZWZmMTY5YmZmYWU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgIHwgIDE1ICsr
KysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIHwgICA3ICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIHwgIDE4ICsrKysrLQogU291
cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8ICA0NCArKysrKysrKysrKysr
CiBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmggICAgICAgICAgICAgICAgIHwgMTA2ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMTg0IGluc2VydGlvbnMo
KyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmM1Mjc2My4u
YzVlODI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYt
MDktMTkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwZWVk
IHVwIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTcGVlZCB1cCBpc01hcmtlZENvbmN1cnJlbnRseSBieSB1
c2luZyBXVEY6OmNvbnN1bWVMb2FkLgorCisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSk6IHVzZSBuZWVkc0ZsaXBX
aXRoRGVwZW5kZW5jeSwgZG9pbmcgYXdheSB3aXRoIHRoZSBsb2FkLWxvYWQgZmVuY2UKKyAgICAg
ICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpuZWVk
c0ZsaXBXaXRoRGVwZW5kZW5jeSk6IHVzZSBXVEY6OmNvbnN1bWVMb2FkCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjppc01hcmtlZCk6IG9wdGlvbmFsbHkgaW5kZXggd2l0aCBhIGRlcGVuZGVu
Y3kgZ2VuZXJhdGVkIGJ5IFdURjo6Y29uc3VtZUxvYWQKKwogMjAxNi0wOS0xNSAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIwNTkzMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5o
CmluZGV4IDFhOWQwNzYuLjcwNzU1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cElubGluZXMuaApAQCAtOTIsMTAgKzkyLDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjpp
c01hcmtlZENvbmN1cnJlbnRseShjb25zdCB2b2lkKiByYXdDZWxsKQogICAgIGlmIChjZWxsLT5p
c0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9u
KCkuaXNNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9j
aygpOwotICAgIGlmIChibG9jay5uZWVkc0ZsaXAoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLnZlcnNpb24oKSkpCisgICAgSGVhcFZlcnNpb24gb2JqZWN0U3BhY2VWZXJzaW9uID0gYmxv
Y2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKKyAgICBhdXRvIGZsaXBEZXBl
bmRlbmN5ID0gYmxvY2submVlZHNGbGlwV2l0aERlcGVuZGVuY3kob2JqZWN0U3BhY2VWZXJzaW9u
KTsKKyAgICBpZiAoZmxpcERlcGVuZGVuY3kubmVlZHNGbGlwKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7Ci0gICAgcmV0dXJuIGJsb2NrLmlzTWFya2Vk
KGNlbGwpOworICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsLCBmbGlwRGVwZW5kZW5jeS5k
ZXBlbmRlbmN5KTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJr
ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qgdm9pZCogcmF3Q2VsbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGQyNmFmZjkuLjc3MTEzZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMjQ3LDcgKzI0Nyw4IEBA
IHB1YmxpYzoKICAgICAgICAgCiAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogCi0gICAgYm9vbCBp
c01hcmtlZChjb25zdCB2b2lkKik7CisgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBXVEY6OkNv
bnN1bWVEZXBlbmRlbmN5IG5vRGVwZW5kZW5jeSA9IDA7CisgICAgYm9vbCBpc01hcmtlZChjb25z
dCB2b2lkKiwgV1RGOjpDb25zdW1lRGVwZW5kZW5jeSBkZXBlbmRlbmN5ID0gbm9EZXBlbmRlbmN5
KTsKICAgICBib29sIHRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICAKICAg
ICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOwpAQCAtMjY1
LDYgKzI2Niw4IEBAIHB1YmxpYzoKICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAKICAgICBib29s
IG5lZWRzRmxpcChIZWFwVmVyc2lvbik7CisgICAgc3RydWN0IE5lZWRzRmxpcERlcGVuZGVuY3kg
eyBib29sIG5lZWRzRmxpcDsgV1RGOjpDb25zdW1lRGVwZW5kZW5jeSBkZXBlbmRlbmN5OyB9Owor
ICAgIE5lZWRzRmxpcERlcGVuZGVuY3kgbmVlZHNGbGlwV2l0aERlcGVuZGVuY3koSGVhcFZlcnNp
b24pOwogICAgIGJvb2wgbmVlZHNGbGlwKCk7CiAgICAgICAgIAogICAgIHZvaWQgZmxpcElmTmVj
ZXNzYXJ5RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbik7CkBAIC00NjgsNiArNDcxLDE1IEBAIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpuZWVkc0ZsaXAoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24p
CiAgICAgcmV0dXJuIGhlYXBWZXJzaW9uICE9IG1fdmVyc2lvbjsKIH0KIAorQUxXQVlTX0lOTElO
RSBNYXJrZWRCbG9jazo6TmVlZHNGbGlwRGVwZW5kZW5jeSBNYXJrZWRCbG9jazo6bmVlZHNGbGlw
V2l0aERlcGVuZGVuY3koSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCit7CisgICAgYXV0byBjb25z
dW1lZCA9IFdURjo6Y29uc3VtZUxvYWQoJm1fdmVyc2lvbik7CisgICAgTmVlZHNGbGlwRGVwZW5k
ZW5jeSByZXQ7CisgICAgcmV0Lm5lZWRzRmxpcCA9IGNvbnN1bWVkLnZhbHVlICE9IGhlYXBWZXJz
aW9uOworICAgIHJldC5kZXBlbmRlbmN5ID0gY29uc3VtZWQuZGVwZW5kZW5jeTsKKyAgICByZXR1
cm4gcmV0OworfQorCiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6ZmxpcElmTmVjZXNzYXJ5KEhl
YXBWZXJzaW9uIGhlYXBWZXJzaW9uKQogewogICAgIGlmIChVTkxJS0VMWShuZWVkc0ZsaXAoaGVh
cFZlcnNpb24pKSkKQEAgLTUxMywxMCArNTI1LDEwIEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmFzc2VydEZsaXBwZWQoKQogICAgIGJsb2NrKCkuYXNzZXJ0RmxpcHBlZCgpOwog
fQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkKK2lu
bGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25zdCB2b2lkKiBwLCBXVEY6OkNvbnN1
bWVEZXBlbmRlbmN5IGRlcGVuZGVuY3kpCiB7CiAgICAgYXNzZXJ0RmxpcHBlZCgpOwotICAgIHJl
dHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gbV9tYXJrcy5nZXQo
YXRvbU51bWJlcihwKSArIGRlcGVuZGVuY3kpOwogfQogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6dGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKiBwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3YjQzZjYxLi4wZDI5YWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTA5LTE5ICBKRiBCYXN0aWVuICA8amZiYXN0aWVu
QGFwcGxlLmNvbT4KKworICAgICAgICBTcGVlZCB1cCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRs
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMDk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVhcDo6
aXNNYXJrZWRDb25jdXJyZW50bHkgaGFkIGEgZmFpcmx5IGV4cGVuc2l2ZSBsb2FkLWxvYWQgZmVu
Y2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBmYWlybHkgcGVyZi1uZXV0cmFsIG92ZXJhbGws
IGJ1dCB0aGUgR0MncyBpbnN0cnVtZW50YXRpb24gcmVwb3J0czoKKyAgICAgICAgICBHQzpFZGVu
IGlzIDkzJSBhdmVyYWdlIHJ1bnRpbWUgYWZ0ZXIgY2hhbmdlCisgICAgICAgICAgR0M6RnVsbCBp
cyA3NiUgYXZlcmFnZSBydW50aW1lIGFmdGVyIGNoYW5nZQorCisgICAgICAgIFRoZSBmZW5jZSB3
YXMgdGhlcmUgYmVjYXVzZToKKyAgICAgICAgIDEuIElmIHRoZSByZWFkIG9mIG1fdmVyc2lvbiBp
biBNYXJrZWRCbG9jazo6bmVlZHNGbGlwIGlzbid0IHdoYXQncyBleHBlY3RlZCB0aGVuOworICAg
ICAgICAgMi4gVGhlIHJlYWQgb2YgbV9tYXJrcyBpbiBNYXJrZWRCbG9jazo6aXNNYXJrZWQgbmVl
ZHMgdG8gb2JzZXJ2ZSB0aGUgdmFsdWUgdGhhdCB3YXMgc3RvcmVkICpiZWZvcmUqIG1fdmVyc2lv
biB3YXMgc3RvcmVkLgorCisgICAgICAgIFRoaXMgb3JkZXJpbmcgaXNuJ3QgZ3VhcmFudGVlZCBv
biBBUk0sIHdoaWNoIGhhcyBhIHdlYWsgbWVtb3J5IG1vZGVsLgorCisgICAgICAgIFRoZXJlIGFy
ZSAzIHdheXMgdG8gZ3VhcmFudGVlIHRoaXMgb3JkZXJpbmc6CisgICAgICAgICBBLiBVc2UgYSBi
YXJyaWVyIGluc3RydWN0aW9uLgorICAgICAgICAgQi4gVXNlIGEgbG9hZC1hY3F1aXJlIChuZXcg
aW4gQVJNdjgpLgorICAgICAgICAgQy4gdXNlIEFSTSdzIGFkZHJlc3MgZGVwZW5kZW5jeSBydWxl
LCB3aGljaCBDKysgY2FsbHMgbWVtb3J5X29yZGVyX2NvbnN1bWUuCisKKyAgICAgICAgSW4gZ2Vu
ZXJhbDoKKyAgICAgICAgIEEuIGlzIHNsb3cgYnV0IG9yZGVycyBhbGwgb2YgbWVtb3J5IGluIGFu
IGludHVpdGl2ZSBtYW5uZXIuCisgICAgICAgICBCLiBpcyBmYXN0ZXItaXNoIGFuZCBoYXMgdGhl
IHNhbWUgcHJvcGVydHktaXNoLgorICAgICAgICAgQy4gc2hvdWxkIGJlIGZhc3RlciBzdGlsbCwg
YnV0ICpvbmx5IG9yZGVycyBkZXBlbmRlbnQgbG9hZHMqLiBUaGlzIGxhc3QgcGFydCBpcyBjcml0
aWNhbCEgQ29uc3VtZSBpc24ndCBhbiBhbGwtb3V0IHJlcGxhY2VtZW50IGZvciBhY3F1aXJlIChh
Y3F1aXJlIGlzIHJhdGhlciBhIHN1cGVyc2V0IG9mIGNvbnN1bWUpLgorCisgICAgICAgIEFSTSBl
eHBsYWlucyB0aGUgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUgaW4gdGhlaXIgZG9jdW1lbnQgImJh
cnJpZXIgbGl0bXVzIHRlc3RzIGFuZCBjb29rYm9vayI6CisKKyAgICAgICAgPiAqUmVzb2x2aW5n
IGJ5IHRoZSB1c2Ugb2YgYmFycmllcnMgYW5kIGFkZHJlc3MgZGVwZW5kZW5jeSoKKyAgICAgICAg
PgorICAgICAgICA+IFRoZXJlIGlzIGEgcnVsZSB3aXRoaW4gdGhlIEFSTSBhcmNoaXRlY3R1cmUg
dGhhdDoKKyAgICAgICAgPiBXaGVyZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYSByZWFkIGlzIHVz
ZWQgdG8gY29tcHV0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIGEgc3Vic2VxdWVudCByZWFkIG9y
IHdyaXRlICh0aGlzIGlzIGtub3duIGFzIGFuIGFkZHJlc3MgZGVwZW5kZW5jeSksIHRoZW4gdGhl
c2UgdHdvIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGJlIG9ic2VydmVkIGluIHByb2dyYW0gb3JkZXIu
IEFuIGFkZHJlc3MgZGVwZW5kZW5jeSBleGlzdHMgZXZlbiBpZiB0aGUgdmFsdWUgcmVhZCBieSB0
aGUgZmlyc3QgcmVhZCBoYXMgbm8gZWZmZWN0IGluIGNoYW5naW5nIHRoZSB2aXJ0dWFsIGFkZHJl
c3MgKGFzIG1pZ2h0IGJlIHRoZSBjYXNlIGlmIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBtYXNrZWQg
b2ZmIGJlZm9yZSBpdCBpcyB1c2VkLCBvciBpZiBpdCBoYWQgbm8gZWZmZWN0IG9uIGNoYW5naW5n
IGEgcHJlZGljdGVkIGFkZHJlc3MgdmFsdWUpLgorICAgICAgICA+IFRoaXMgcmVzdHJpY3Rpb24g
YXBwbGllcyBvbmx5IHdoZW4gdGhlIGRhdGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBvbmUgcmVhZCBp
cyB1c2VkIGFzIGEgZGF0YSB2YWx1ZSB0byBjYWxjdWxhdGUgdGhlIGFkZHJlc3Mgb2YgYSBzdWJz
ZXF1ZW50IHJlYWQgb3Igd3JpdGUuIFRoaXMgZG9lcyBub3QgYXBwbHkgaWYgdGhlIGRhdGEgdmFs
dWUgcmV0dXJuZWQgZnJvbSBvbmUgcmVhZCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgY29uZGl0
aW9uIGNvZGUgZmxhZ3MsIGFuZCB0aGUgdmFsdWVzIG9mIHRoZSBmbGFncyBhcmUgdXNlZCBmb3Ig
Y29uZGl0aW9uIGNvZGUgZXZhbHVhdGlvbiB0byBkZXRlcm1pbmUgdGhlIGFkZHJlc3Mgb2YgYSBz
dWJzZXF1ZW50IHJlYWRzLCBlaXRoZXIgdGhyb3VnaCBjb25kaXRpb25hbCBleGVjdXRpb24gb3Ig
dGhlIGV2YWx1YXRpb24gb2YgYSBicmFuY2guIFRoaXMgaXMga25vd24gYXMgYSBjb250cm9sIGRl
cGVuZGVuY3kuCisgICAgICAgID4gV2hlcmUgYm90aCBhIGNvbnRyb2wgYW5kIGFkZHJlc3MgZGVw
ZW5kZW5jeSBleGlzdCwgdGhlIG9yZGVyaW5nIGJlaGF2aW91ciBpcyBjb25zaXN0ZW50IHdpdGgg
dGhlIGFkZHJlc3MgZGVwZW5kZW5jeS4KKworICAgICAgICBDKysncyBtZW1vcnlfb3JkZXJfY29u
c3VtZSBpcyB1bmZvcnR1bmF0ZWx5IHVuaW1wbGVtZW50ZWQgYnkgQysrIGNvbXBpbGVycywgYW5k
IG1heWJlIHVuaW1wbGVtZW50YWJsZSBhcyBzcGVjJ2QuIEknbSB3b3JraW5nIHdpdGggaW50ZXJl
c3RlZCBmb2xrcyBpbiB0aGUgY29tbWl0dGVlIHRvIGZpeCB0aGlzIHNpdHVhdGlvbjogaHR0cDov
L3dnMjEubGluay9wMDE5MHIyCisKKyAgICAgICAgKiB3dGYvQXRvbWljcy5oOgorICAgICAgICAo
V1RGOjp6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KTogYSAwIHdoaWNoIGNhcnJpZXMgYSBkZXBl
bmRlbmN5CisgICAgICAgIChXVEY6OmNvbnN1bWVMb2FkKTogcGl4aWUgbWFnaWMKKwogMjAxNi0w
OS0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNTkzMyBhbmQgcjIwNTkzNi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCBiL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAppbmRl
eCA5YjQ3YTBlLi45YmQ5MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgK
KysrIGIvU291cmNlL1dURi93dGYvQXRvbWljcy5oCkBAIC0xOTgsNiArMTk4LDExMiBAQCBpbmxp
bmUgdm9pZCBtZW1vcnlCYXJyaWVyQmVmb3JlVW5sb2NrKCkgeyBzdGQ6OmF0b21pY190aHJlYWRf
ZmVuY2Uoc3RkOjptZW1vcnlfbwogCiAjZW5kaWYKIAordHlwZWRlZiBzaXplX3QgQ29uc3VtZURl
cGVuZGVuY3k7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHNpemVvZihUKSA9PSA0Pjo6dHlwZSogPSBudWxscHRyPgorQUxXQVlTX0lOTElORSBDb25zdW1l
RGVwZW5kZW5jeSB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KFQgdmFsdWUpCit7CisjaWYgQ1BV
KEFSTSkgfHwgQ1BVKEFSTTY0KQorICAgIHVpbnQzMl90IGRlcGVuZGVuY3k7CisgICAgdWludDMy
X3QgY29weSA9IFdURjo6Yml0d2lzZV9jYXN0PHVpbnQzMl90Pih2YWx1ZSk7CisgICAgLy8gQ3Jl
YXRlIGEgbWFnaWNhbCB6ZXJvIHZhbHVlIHRocm91Z2ggaW5saW5lIGFzc2VtYmx5LCB3aG9zZSBj
b21wdXRhdGlvbgorICAgIC8vIGlzbid0IHZpc2libGUgdG8gdGhlIG9wdGltaXplci4gVGhpcyB6
ZXJvIGlzIHRoZW4gdXNhYmxlIGFzIGFuIG9mZnNldCBpbgorICAgIC8vIGZ1cnRoZXIgYWRkcmVz
cyBjb21wdXRhdGlvbnM6IGFkZGluZyB6ZXJvIGRvZXMgbm90aGluZywgYnV0IHRoZSBjb21waWxl
cgorICAgIC8vIGRvZXNuJ3Qga25vdyBpdC4gSXQncyBtYWdpY2FsIGJlY2F1c2UgaXQgY3JlYXRl
cyBhbiBhZGRyZXNzIGRlcGVuZGVuY3kKKyAgICAvLyBmcm9tIHRoZSBsb2FkIG9mIGBsb2NhdGlv
bmAgdG8gdGhlIHVzZXMgb2YgdGhlIGRlcGVuZGVuY3ksIHdoaWNoIHRyaWdnZXJzCisgICAgLy8g
dGhlIEFSTSBJU0EncyBhZGRyZXNzIGRlcGVuZGVuY3kgcnVsZSwgYS5rLmEuIHRoZSBteXRoaWNh
bCBDKysgY29uc3VtZQorICAgIC8vIG9yZGVyaW5nLiBUaGlzIGZvcmNlcyB3ZWFrIG1lbW9yeSBv
cmRlciBDUFVzIHRvIG9ic2VydmUgYGxvY2F0aW9uYCBhbmQKKyAgICAvLyBkZXBlbmRlbnQgbG9h
ZHMgaW4gdGhlaXIgc3RvcmUgb3JkZXIgd2l0aG91dCB0aGUgcmVhZGVyIHVzaW5nIGEgYmFycmll
cgorICAgIC8vIG9yIGFuIGFjcXVpcmUgbG9hZC4KKyAgICBhc20gdm9sYXRpbGUoImVvciAlW2Rl
cGVuZGVuY3ldLCAlW2luXSwgJVtpbl0iCisgICAgICAgICAgICAgICAgIDogW2RlcGVuZGVuY3ld
ICI9ciIgKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAgIDogW2luXSAiciIgKGNvcHkpCisg
ICAgICAgICAgICAgICAgIC8vIExpZSBhYm91dCB0b3VjaGluZyBtZW1vcnkuIE5vdCBzdHJpY3Rs
eSBuZWVkZWQsIGJ1dCBpcworICAgICAgICAgICAgICAgICAvLyBsaWtlbHkgdG8gYXZvaWQgdW53
YW50ZWQgbG9hZC9zdG9yZSBtb3Rpb24uCisgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwor
ICAgIHJldHVybiBkZXBlbmRlbmN5OworI2Vsc2UKKyAgICAvLyBObyBkZXBlbmRlbmN5IGlzIG5l
ZWRlZCBmb3IgdGhpcyBhcmNoaXRlY3R1cmUuCisgICAgKHZvaWQpdmFsdWU7CisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c2l6ZW9mKFQpID09IDg+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdBWVNfSU5MSU5FIENv
bnN1bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koVCB2YWx1ZSkKK3sKKyAg
ICB1aW50NjRfdCBjb3B5ID0gV1RGOjpiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsKKyNp
ZiBDUFUoQVJNKSAmJiAhQ1BVKEFSTTY0KQorICAgIC8vIEEzMiBhbmQgVDMyIGhhdmUgMzItYml0
IGludGVnZXIgcmVnaXN0ZXJzLCByZXF1aXJpbmcgbG9hZHMgaW50byBwYWlyZWQKKyAgICAvLyBy
ZWdpc3RlcnMuIFRoZXNlIGxvYWRzIGFyZW4ndCBzaW5nbGUtY29weSBhdG9taWMgb24gYWxsIEFS
TSB2YXJpYW50cworICAgIC8vIChvbmx5IGd1YXJhbnRlZWQgd2hlbiBMUEFFIGlzIHByZXNlbnQp
LiBXZSB3YW50IGEgZGVwZW5kZW5jeSBvbiBib3RoCisgICAgLy8gYm90dG9tIGFuZCB0b3AgbG9h
ZGVkIHZhbHVlcywgd2hpY2ggd2UgYWNoaWV2ZSBieSBwZXJmb3JtaW5nIHNvbWUKKyAgICAvLyBh
cml0aG1ldGljIGJldHdlZW4gYm90aCB2YWx1ZXMsIHByb2R1Y2luZyBhIDMyLWJpdCBvdXRwdXQs
IGFuZCBnZW5lcmF0aWMKKyAgICAvLyBhIG1hZ2ljYWwgemVybyBmcm9tIHRoaXMgMzItYml0IHZh
bHVlLgorICAgIHVpbnQzMl90IGJvdHRvbSA9IGNvcHkgJiAweEZGRkZGRkZGdSwgdG9wID0gY29w
eSA+PiAzMjsKKyAgICByZXR1cm4gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShib3R0b20gXiB0
b3ApOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHVpbnQ2NF90IGRlcGVuZGVuY3k7CisgICAgYXNt
IHZvbGF0aWxlKCJlb3IgJVtkZXBlbmRlbmN5XSwgJVtpbl0sICVbaW5dIgorICAgICAgICAgICAg
ICAgICA6IFtkZXBlbmRlbmN5XSAiPXIiIChkZXBlbmRlbmN5KQorICAgICAgICAgICAgICAgICA6
IFtpbl0gInIiIChjb3B5KQorICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKKyAgICByZXR1
cm4gZGVwZW5kZW5jeTsKKyNlbHNlCisgICAgKHZvaWQpY29weTsKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
aXplb2YoVCkgPT0gMj46OnR5cGUqID0gbnVsbHB0cj4KK0FMV0FZU19JTkxJTkUgQ29uc3VtZURl
cGVuZGVuY3kgemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShUIHZhbHVlKQoreworICAgIHVpbnQx
Nl90IGNvcHkgPSBXVEY6OmJpdHdpc2VfY2FzdDx1aW50MTZfdD4odmFsdWUpOworICAgIHJldHVy
biB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KHN0YXRpY19jYXN0PHNpemVfdD4oY29weSkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzaXplb2Yo
VCkgPT0gMT46OnR5cGUqID0gbnVsbHB0cj4KK0FMV0FZU19JTkxJTkUgQ29uc3VtZURlcGVuZGVu
Y3kgemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShUIHZhbHVlKQoreworICAgIHVpbnQ4X3QgY29w
eSA9IFdURjo6Yml0d2lzZV9jYXN0PHVpbnQ4X3Q+KHZhbHVlKTsKKyAgICByZXR1cm4gemVyb1dp
dGhDb25zdW1lRGVwZW5kZW5jeShzdGF0aWNfY2FzdDxzaXplX3Q+KGNvcHkpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBDb25zdW1lZCB7CisgICAgVCB2YWx1ZTsKKyAgICBD
b25zdW1lRGVwZW5kZW5jeSBkZXBlbmRlbmN5OworfTsKKworLy8gQ29uc3VtZSBsb2FkLCByZXR1
cm5pbmcgdGhlIGxvYWRlZCBgdmFsdWVgIGF0IGBsb2NhdGlvbmAgYW5kIGEgZGVwZW5kZW50LXpl
cm8KKy8vIHdoaWNoIGNyZWF0ZXMgYW4gYWRkcmVzcyBkZXBlbmRlbmN5IGZyb20gdGhlIGBsb2Nh
dGlvbmAuCisvLworLy8gVXNhZ2Ugbm90ZXM6CisvLyBNZXJlbHkgYnJhbmNoaW5nIGJhc2VkIG9u
IGB2YWx1ZWAgaXNuJ3Qgc3VmZmljaWVudCB0byBpbXBvc2UgYSBkZXBlbmRlbmN5CisvLyBvcmRl
cmluZzogeW91IG11c3QgdXNlIGBkZXBlbmRlbmN5YCBpbiB0aGUgYWRkcmVzcyBjb21wdXRhdGlv
biBvZiBzdWJzZXF1ZW50CisvLyBsb2FkcyB3aGljaCBzaG91bGQgb2JzZXJ2ZSB0aGUgc3RvcmUg
b3JkZXIgdy5yLnQuIGBsb2NhdGlvbmAuICBUaGlzIG9yZGVycworLy8gdGhlIGBsb2NhdGlvbmAg
bG9hZCB3aXRoIHN1c2VxdWVudCBkZXBlbmRlbnQgbG9hZHMgKm9ubHkqLiAgSXQgc2F5cyBub3Ro
aW5nCisvLyBhYm91dCBvcmRlcmluZyBvZiBvdGhlciBsb2FkcyEKKy8vCisvLyBDYXZlYXQgZW1w
dG9yLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0FMV0FZU19JTkxJTkUgYXV0byBjb25zdW1lTG9h
ZChjb25zdCBUKiBsb2NhdGlvbikKK3sKKyAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2N2PFQ+Ojp0eXBlIFJldHVybmVkOworICAgIENvbnN1bWVkPFJldHVybmVkPiByZXR7IH07Cisj
aWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNKQorICAgIC8vIEZvcmNlIHRoZSByZWFkIG9mIGBsb2Nh
dGlvbmAgdG8gb2NjdXIgb25seSBvbmNlIHVzaW5nIHZvbGF0aWxlLiAgVGhpcyBpcworICAgIC8v
IGltcG9ydGFudCBiZWNhdXNlIHRoZSBjb21waWxlciBjb3VsZCBvdGhlcndpc2UgcmVtYXRlcmlh
bGl6ZSB0aGUgbG9hZCBhbmQKKyAgICAvLyBsb3NlIHRoZSBkZXBlbmRlbmN5IHdlJ3JlIHRyeWlu
ZyBzbyBoYXJkIHRvIGNyZWF0ZS4KKyAgICByZXQudmFsdWUgPSAqc3RhdGljX2Nhc3Q8Y29uc3Qg
dm9sYXRpbGUgUmV0dXJuZWQqPihsb2NhdGlvbik7CisjZWxzZQorICAgIHJldC52YWx1ZSA9ICps
b2NhdGlvbjsKKyAgICBsb2FkTG9hZEZlbmNlKCk7CisjZW5kaWYKKyAgICByZXQuZGVwZW5kZW5j
eSA9IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3kocmV0LnZhbHVlKTsKKyAgICByZXR1cm4gcmV0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpBdG9taWM7Ci0tIAoyLjku
MwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289464</attachid>
            <date>2016-09-21 10:08:07 -0700</date>
            <delta_ts>2016-09-26 11:03:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>12491</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA5MDA5Mjk3YWJjYWRiYTcwMWU1MGYyODI3YWRmNzAzMmViZTg2YTcwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgIHwgIDE1ICsr
KysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIHwgICA3ICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIHwgIDIxICsrKysrLQogU291
cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8ICA0NCArKysrKysrKysrKysr
CiBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmggICAgICAgICAgICAgICAgIHwgMTA5ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMo
KyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmM1Mjc2My4u
YzVlODI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYt
MDktMTkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwZWVk
IHVwIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTcGVlZCB1cCBpc01hcmtlZENvbmN1cnJlbnRseSBieSB1
c2luZyBXVEY6OmNvbnN1bWVMb2FkLgorCisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSk6IHVzZSBuZWVkc0ZsaXBX
aXRoRGVwZW5kZW5jeSwgZG9pbmcgYXdheSB3aXRoIHRoZSBsb2FkLWxvYWQgZmVuY2UKKyAgICAg
ICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpuZWVk
c0ZsaXBXaXRoRGVwZW5kZW5jeSk6IHVzZSBXVEY6OmNvbnN1bWVMb2FkCisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjppc01hcmtlZCk6IG9wdGlvbmFsbHkgaW5kZXggd2l0aCBhIGRlcGVuZGVu
Y3kgZ2VuZXJhdGVkIGJ5IFdURjo6Y29uc3VtZUxvYWQKKwogMjAxNi0wOS0xNSAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIwNTkzMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5o
CmluZGV4IDFhOWQwNzYuLjcwNzU1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cElubGluZXMuaApAQCAtOTIsMTAgKzkyLDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBIZWFwOjpp
c01hcmtlZENvbmN1cnJlbnRseShjb25zdCB2b2lkKiByYXdDZWxsKQogICAgIGlmIChjZWxsLT5p
c0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9u
KCkuaXNNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9j
aygpOwotICAgIGlmIChibG9jay5uZWVkc0ZsaXAoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLnZlcnNpb24oKSkpCisgICAgSGVhcFZlcnNpb24gb2JqZWN0U3BhY2VWZXJzaW9uID0gYmxv
Y2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKTsKKyAgICBhdXRvIGZsaXBEZXBl
bmRlbmN5ID0gYmxvY2submVlZHNGbGlwV2l0aERlcGVuZGVuY3kob2JqZWN0U3BhY2VWZXJzaW9u
KTsKKyAgICBpZiAoZmxpcERlcGVuZGVuY3kubmVlZHNGbGlwKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7Ci0gICAgcmV0dXJuIGJsb2NrLmlzTWFya2Vk
KGNlbGwpOworICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsLCBmbGlwRGVwZW5kZW5jeS5k
ZXBlbmRlbmN5KTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRTZXRNYXJr
ZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qgdm9pZCogcmF3Q2VsbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGQyNmFmZjkuLjRlNTFlMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMjQ3LDcgKzI0Nyw4IEBA
IHB1YmxpYzoKICAgICAgICAgCiAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogCi0gICAgYm9vbCBp
c01hcmtlZChjb25zdCB2b2lkKik7CisgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBXVEY6OkNv
bnN1bWVEZXBlbmRlbmN5IG5vRGVwZW5kZW5jeSA9IDA7CisgICAgYm9vbCBpc01hcmtlZChjb25z
dCB2b2lkKiwgV1RGOjpDb25zdW1lRGVwZW5kZW5jeSA9IG5vRGVwZW5kZW5jeSk7CiAgICAgYm9v
bCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgCiAgICAgYm9vbCBpc01h
cmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwqKTsKQEAgLTI2NSw2ICsyNjYsMTEg
QEAgcHVibGljOgogICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKIAogICAgIGJvb2wgbmVlZHNGbGlw
KEhlYXBWZXJzaW9uKTsKKyAgICBzdHJ1Y3QgTmVlZHNGbGlwRGVwZW5kZW5jeSB7CisgICAgICAg
IGJvb2wgbmVlZHNGbGlwOworICAgICAgICBXVEY6OkNvbnN1bWVEZXBlbmRlbmN5IGRlcGVuZGVu
Y3k7CisgICAgfTsKKyAgICBOZWVkc0ZsaXBEZXBlbmRlbmN5IG5lZWRzRmxpcFdpdGhEZXBlbmRl
bmN5KEhlYXBWZXJzaW9uKTsKICAgICBib29sIG5lZWRzRmxpcCgpOwogICAgICAgICAKICAgICB2
b2lkIGZsaXBJZk5lY2Vzc2FyeUR1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24pOwpAQCAtNDY4LDYg
KzQ3NCwxNSBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bmVlZHNGbGlwKEhlYXBWZXJzaW9u
IGhlYXBWZXJzaW9uKQogICAgIHJldHVybiBoZWFwVmVyc2lvbiAhPSBtX3ZlcnNpb247CiB9CiAK
K0FMV0FZU19JTkxJTkUgTWFya2VkQmxvY2s6Ok5lZWRzRmxpcERlcGVuZGVuY3kgTWFya2VkQmxv
Y2s6Om5lZWRzRmxpcFdpdGhEZXBlbmRlbmN5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQorewor
ICAgIGF1dG8gY29uc3VtZWQgPSBXVEY6OmNvbnN1bWVMb2FkKCZtX3ZlcnNpb24pOworICAgIE5l
ZWRzRmxpcERlcGVuZGVuY3kgcmV0OworICAgIHJldC5uZWVkc0ZsaXAgPSBjb25zdW1lZC52YWx1
ZSAhPSBoZWFwVmVyc2lvbjsKKyAgICByZXQuZGVwZW5kZW5jeSA9IGNvbnN1bWVkLmRlcGVuZGVu
Y3k7CisgICAgcmV0dXJuIHJldDsKK30KKwogaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmZsaXBJ
Zk5lY2Vzc2FyeShIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKIHsKICAgICBpZiAoVU5MSUtFTFko
bmVlZHNGbGlwKGhlYXBWZXJzaW9uKSkpCkBAIC01MTMsMTAgKzUyOCwxMCBAQCBpbmxpbmUgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjphc3NlcnRGbGlwcGVkKCkKICAgICBibG9jaygpLmFzc2Vy
dEZsaXBwZWQoKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKGNvbnN0
IHZvaWQqIHApCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoY29uc3Qgdm9pZCog
cCwgV1RGOjpDb25zdW1lRGVwZW5kZW5jeSBkZXBlbmRlbmN5KQogewogICAgIGFzc2VydEZsaXBw
ZWQoKTsKLSAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7CisgICAgcmV0dXJu
IG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkgKyBkZXBlbmRlbmN5KTsKIH0KIAogaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OnRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCogcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggN2I0
M2Y2MS4uMGQyOWFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxNi0wOS0xOSAgSkYgQmFzdGll
biAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3BlZWQgdXAgSGVhcDo6aXNNYXJr
ZWRDb25jdXJyZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MjA5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5IGhhZCBhIGZhaXJseSBleHBlbnNpdmUg
bG9hZC1sb2FkIGZlbmNlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgZmFpcmx5IHBlcmYtbmV1
dHJhbCBvdmVyYWxsLCBidXQgdGhlIEdDJ3MgaW5zdHJ1bWVudGF0aW9uIHJlcG9ydHM6CisgICAg
ICAgICAgR0M6RWRlbiBpcyA5MyUgYXZlcmFnZSBydW50aW1lIGFmdGVyIGNoYW5nZQorICAgICAg
ICAgIEdDOkZ1bGwgaXMgNzYlIGF2ZXJhZ2UgcnVudGltZSBhZnRlciBjaGFuZ2UKKworICAgICAg
ICBUaGUgZmVuY2Ugd2FzIHRoZXJlIGJlY2F1c2U6CisgICAgICAgICAxLiBJZiB0aGUgcmVhZCBv
ZiBtX3ZlcnNpb24gaW4gTWFya2VkQmxvY2s6Om5lZWRzRmxpcCBpc24ndCB3aGF0J3MgZXhwZWN0
ZWQgdGhlbjsKKyAgICAgICAgIDIuIFRoZSByZWFkIG9mIG1fbWFya3MgaW4gTWFya2VkQmxvY2s6
OmlzTWFya2VkIG5lZWRzIHRvIG9ic2VydmUgdGhlIHZhbHVlIHRoYXQgd2FzIHN0b3JlZCAqYmVm
b3JlKiBtX3ZlcnNpb24gd2FzIHN0b3JlZC4KKworICAgICAgICBUaGlzIG9yZGVyaW5nIGlzbid0
IGd1YXJhbnRlZWQgb24gQVJNLCB3aGljaCBoYXMgYSB3ZWFrIG1lbW9yeSBtb2RlbC4KKworICAg
ICAgICBUaGVyZSBhcmUgMyB3YXlzIHRvIGd1YXJhbnRlZSB0aGlzIG9yZGVyaW5nOgorICAgICAg
ICAgQS4gVXNlIGEgYmFycmllciBpbnN0cnVjdGlvbi4KKyAgICAgICAgIEIuIFVzZSBhIGxvYWQt
YWNxdWlyZSAobmV3IGluIEFSTXY4KS4KKyAgICAgICAgIEMuIHVzZSBBUk0ncyBhZGRyZXNzIGRl
cGVuZGVuY3kgcnVsZSwgd2hpY2ggQysrIGNhbGxzIG1lbW9yeV9vcmRlcl9jb25zdW1lLgorCisg
ICAgICAgIEluIGdlbmVyYWw6CisgICAgICAgICBBLiBpcyBzbG93IGJ1dCBvcmRlcnMgYWxsIG9m
IG1lbW9yeSBpbiBhbiBpbnR1aXRpdmUgbWFubmVyLgorICAgICAgICAgQi4gaXMgZmFzdGVyLWlz
aCBhbmQgaGFzIHRoZSBzYW1lIHByb3BlcnR5LWlzaC4KKyAgICAgICAgIEMuIHNob3VsZCBiZSBm
YXN0ZXIgc3RpbGwsIGJ1dCAqb25seSBvcmRlcnMgZGVwZW5kZW50IGxvYWRzKi4gVGhpcyBsYXN0
IHBhcnQgaXMgY3JpdGljYWwhIENvbnN1bWUgaXNuJ3QgYW4gYWxsLW91dCByZXBsYWNlbWVudCBm
b3IgYWNxdWlyZSAoYWNxdWlyZSBpcyByYXRoZXIgYSBzdXBlcnNldCBvZiBjb25zdW1lKS4KKwor
ICAgICAgICBBUk0gZXhwbGFpbnMgdGhlIGFkZHJlc3MgZGVwZW5kZW5jeSBydWxlIGluIHRoZWly
IGRvY3VtZW50ICJiYXJyaWVyIGxpdG11cyB0ZXN0cyBhbmQgY29va2Jvb2siOgorCisgICAgICAg
ID4gKlJlc29sdmluZyBieSB0aGUgdXNlIG9mIGJhcnJpZXJzIGFuZCBhZGRyZXNzIGRlcGVuZGVu
Y3kqCisgICAgICAgID4KKyAgICAgICAgPiBUaGVyZSBpcyBhIHJ1bGUgd2l0aGluIHRoZSBBUk0g
YXJjaGl0ZWN0dXJlIHRoYXQ6CisgICAgICAgID4gV2hlcmUgdGhlIHZhbHVlIHJldHVybmVkIGJ5
IGEgcmVhZCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiBhIHN1YnNl
cXVlbnQgcmVhZCBvciB3cml0ZSAodGhpcyBpcyBrbm93biBhcyBhbiBhZGRyZXNzIGRlcGVuZGVu
Y3kpLCB0aGVuIHRoZXNlIHR3byBtZW1vcnkgYWNjZXNzZXMgd2lsbCBiZSBvYnNlcnZlZCBpbiBw
cm9ncmFtIG9yZGVyLiBBbiBhZGRyZXNzIGRlcGVuZGVuY3kgZXhpc3RzIGV2ZW4gaWYgdGhlIHZh
bHVlIHJlYWQgYnkgdGhlIGZpcnN0IHJlYWQgaGFzIG5vIGVmZmVjdCBpbiBjaGFuZ2luZyB0aGUg
dmlydHVhbCBhZGRyZXNzIChhcyBtaWdodCBiZSB0aGUgY2FzZSBpZiB0aGUgdmFsdWUgcmV0dXJu
ZWQgaXMgbWFza2VkIG9mZiBiZWZvcmUgaXQgaXMgdXNlZCwgb3IgaWYgaXQgaGFkIG5vIGVmZmVj
dCBvbiBjaGFuZ2luZyBhIHByZWRpY3RlZCBhZGRyZXNzIHZhbHVlKS4KKyAgICAgICAgPiBUaGlz
IHJlc3RyaWN0aW9uIGFwcGxpZXMgb25seSB3aGVuIHRoZSBkYXRhIHZhbHVlIHJldHVybmVkIGZy
b20gb25lIHJlYWQgaXMgdXNlZCBhcyBhIGRhdGEgdmFsdWUgdG8gY2FsY3VsYXRlIHRoZSBhZGRy
ZXNzIG9mIGEgc3Vic2VxdWVudCByZWFkIG9yIHdyaXRlLiBUaGlzIGRvZXMgbm90IGFwcGx5IGlm
IHRoZSBkYXRhIHZhbHVlIHJldHVybmVkIGZyb20gb25lIHJlYWQgaXMgdXNlZCB0byBkZXRlcm1p
bmUgdGhlIGNvbmRpdGlvbiBjb2RlIGZsYWdzLCBhbmQgdGhlIHZhbHVlcyBvZiB0aGUgZmxhZ3Mg
YXJlIHVzZWQgZm9yIGNvbmRpdGlvbiBjb2RlIGV2YWx1YXRpb24gdG8gZGV0ZXJtaW5lIHRoZSBh
ZGRyZXNzIG9mIGEgc3Vic2VxdWVudCByZWFkcywgZWl0aGVyIHRocm91Z2ggY29uZGl0aW9uYWwg
ZXhlY3V0aW9uIG9yIHRoZSBldmFsdWF0aW9uIG9mIGEgYnJhbmNoLiBUaGlzIGlzIGtub3duIGFz
IGEgY29udHJvbCBkZXBlbmRlbmN5LgorICAgICAgICA+IFdoZXJlIGJvdGggYSBjb250cm9sIGFu
ZCBhZGRyZXNzIGRlcGVuZGVuY3kgZXhpc3QsIHRoZSBvcmRlcmluZyBiZWhhdmlvdXIgaXMgY29u
c2lzdGVudCB3aXRoIHRoZSBhZGRyZXNzIGRlcGVuZGVuY3kuCisKKyAgICAgICAgQysrJ3MgbWVt
b3J5X29yZGVyX2NvbnN1bWUgaXMgdW5mb3J0dW5hdGVseSB1bmltcGxlbWVudGVkIGJ5IEMrKyBj
b21waWxlcnMsIGFuZCBtYXliZSB1bmltcGxlbWVudGFibGUgYXMgc3BlYydkLiBJJ20gd29ya2lu
ZyB3aXRoIGludGVyZXN0ZWQgZm9sa3MgaW4gdGhlIGNvbW1pdHRlZSB0byBmaXggdGhpcyBzaXR1
YXRpb246IGh0dHA6Ly93ZzIxLmxpbmsvcDAxOTByMgorCisgICAgICAgICogd3RmL0F0b21pY3Mu
aDoKKyAgICAgICAgKFdURjo6emVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeSk6IGEgMCB3aGljaCBj
YXJyaWVzIGEgZGVwZW5kZW5jeQorICAgICAgICAoV1RGOjpjb25zdW1lTG9hZCk6IHBpeGllIG1h
Z2ljCisKIDIwMTYtMDktMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDU5MzMgYW5kIHIyMDU5MzYu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmggYi9Tb3VyY2UvV1RGL3d0Zi9B
dG9taWNzLmgKaW5kZXggOWI0N2EwZS4uNTBlNGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQXRvbWljcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaApAQCAtMTk4LDYgKzE5
OCwxMTUgQEAgaW5saW5lIHZvaWQgbWVtb3J5QmFycmllckJlZm9yZVVubG9jaygpIHsgc3RkOjph
dG9taWNfdGhyZWFkX2ZlbmNlKHN0ZDo6bWVtb3J5X28KIAogI2VuZGlmCiAKK3R5cGVkZWYgc2l6
ZV90IENvbnN1bWVEZXBlbmRlbmN5OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDQ+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdBWVNf
SU5MSU5FIENvbnN1bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koVCB2YWx1
ZSkKK3sKKyNpZiBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpCisgICAgdWludDMyX3QgZGVwZW5kZW5j
eTsKKyAgICB1aW50MzJfdCBjb3B5ID0gYml0d2lzZV9jYXN0PHVpbnQzMl90Pih2YWx1ZSk7Cisg
ICAgLy8gQ3JlYXRlIGEgbWFnaWNhbCB6ZXJvIHZhbHVlIHRocm91Z2ggaW5saW5lIGFzc2VtYmx5
LCB3aG9zZSBjb21wdXRhdGlvbgorICAgIC8vIGlzbid0IHZpc2libGUgdG8gdGhlIG9wdGltaXpl
ci4gVGhpcyB6ZXJvIGlzIHRoZW4gdXNhYmxlIGFzIGFuIG9mZnNldCBpbgorICAgIC8vIGZ1cnRo
ZXIgYWRkcmVzcyBjb21wdXRhdGlvbnM6IGFkZGluZyB6ZXJvIGRvZXMgbm90aGluZywgYnV0IHRo
ZSBjb21waWxlcgorICAgIC8vIGRvZXNuJ3Qga25vdyBpdC4gSXQncyBtYWdpY2FsIGJlY2F1c2Ug
aXQgY3JlYXRlcyBhbiBhZGRyZXNzIGRlcGVuZGVuY3kKKyAgICAvLyBmcm9tIHRoZSBsb2FkIG9m
IGBsb2NhdGlvbmAgdG8gdGhlIHVzZXMgb2YgdGhlIGRlcGVuZGVuY3ksIHdoaWNoIHRyaWdnZXJz
CisgICAgLy8gdGhlIEFSTSBJU0EncyBhZGRyZXNzIGRlcGVuZGVuY3kgcnVsZSwgYS5rLmEuIHRo
ZSBteXRoaWNhbCBDKysgY29uc3VtZQorICAgIC8vIG9yZGVyaW5nLiBUaGlzIGZvcmNlcyB3ZWFr
IG1lbW9yeSBvcmRlciBDUFVzIHRvIG9ic2VydmUgYGxvY2F0aW9uYCBhbmQKKyAgICAvLyBkZXBl
bmRlbnQgbG9hZHMgaW4gdGhlaXIgc3RvcmUgb3JkZXIgd2l0aG91dCB0aGUgcmVhZGVyIHVzaW5n
IGEgYmFycmllcgorICAgIC8vIG9yIGFuIGFjcXVpcmUgbG9hZC4KKyAgICBhc20gdm9sYXRpbGUo
ImVvciAlW2RlcGVuZGVuY3ldLCAlW2luXSwgJVtpbl0iCisgICAgICAgICAgICAgICAgIDogW2Rl
cGVuZGVuY3ldICI9ciIoZGVwZW5kZW5jeSkKKyAgICAgICAgICAgICAgICAgOiBbaW5dICJyIihj
b3B5KQorICAgICAgICAgICAgICAgICAvLyBMaWUgYWJvdXQgdG91Y2hpbmcgbWVtb3J5LiBOb3Qg
c3RyaWN0bHkgbmVlZGVkLCBidXQgaXMKKyAgICAgICAgICAgICAgICAgLy8gbGlrZWx5IHRvIGF2
b2lkIHVud2FudGVkIGxvYWQvc3RvcmUgbW90aW9uLgorICAgICAgICAgICAgICAgICA6ICJtZW1v
cnkiKTsKKyAgICByZXR1cm4gZGVwZW5kZW5jeTsKKyNlbHNlCisgICAgLy8gTm8gZGVwZW5kZW5j
eSBpcyBuZWVkZWQgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLgorICAgICh2b2lkKXZhbHVlOworICAg
IHJldHVybiAwOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzaXplb2YoVCkgPT0gOD46OnR5cGUqID0gbnVsbHB0cj4KK0FMV0FZU19J
TkxJTkUgQ29uc3VtZURlcGVuZGVuY3kgemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShUIHZhbHVl
KQoreworICAgIHVpbnQ2NF90IGNvcHkgPSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsK
KyNpZiBDUFUoQVJNKSAmJiAhQ1BVKEFSTTY0KQorICAgIC8vIEEzMiBhbmQgVDMyIGhhdmUgMzIt
Yml0IGludGVnZXIgcmVnaXN0ZXJzLCByZXF1aXJpbmcgbG9hZHMgaW50byBwYWlyZWQKKyAgICAv
LyByZWdpc3RlcnMuIFRoZXNlIGxvYWRzIGFyZW4ndCBzaW5nbGUtY29weSBhdG9taWMgb24gYWxs
IEFSTSB2YXJpYW50cworICAgIC8vIChvbmx5IGd1YXJhbnRlZWQgd2hlbiBMUEFFIGlzIHByZXNl
bnQpLiBXZSB3YW50IGEgZGVwZW5kZW5jeSBvbiBib3RoCisgICAgLy8gYm90dG9tIGFuZCB0b3Ag
bG9hZGVkIHZhbHVlcywgd2hpY2ggd2UgYWNoaWV2ZSBieSBwZXJmb3JtaW5nIHNvbWUKKyAgICAv
LyBhcml0aG1ldGljIGJldHdlZW4gYm90aCB2YWx1ZXMsIHByb2R1Y2luZyBhIDMyLWJpdCBvdXRw
dXQsIGFuZCBnZW5lcmF0aWMKKyAgICAvLyBhIG1hZ2ljYWwgemVybyBmcm9tIHRoaXMgMzItYml0
IHZhbHVlLgorICAgIHVpbnQzMl90IGJvdHRvbSA9IGNvcHkgJiAweEZGRkZGRkZGdSwgdG9wID0g
Y29weSA+PiAzMjsKKyAgICByZXR1cm4gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShib3R0b20g
XiB0b3ApOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHVpbnQ2NF90IGRlcGVuZGVuY3k7CisgICAg
YXNtIHZvbGF0aWxlKCJlb3IgJVtkZXBlbmRlbmN5XSwgJVtpbl0sICVbaW5dIgorICAgICAgICAg
ICAgICAgICA6IFtkZXBlbmRlbmN5XSAiPXIiKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAg
IDogW2luXSAiciIoY29weSkKKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CisgICAgcmV0
dXJuIGRlcGVuZGVuY3k7CisjZWxzZQorICAgICh2b2lkKWNvcHk7CisgICAgcmV0dXJuIDA7Cisj
ZW5kaWYKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHNpemVvZihUKSA9PSAyPjo6dHlwZSogPSBudWxscHRyPgorQUxXQVlTX0lOTElORSBDb25zdW1l
RGVwZW5kZW5jeSB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KFQgdmFsdWUpCit7CisgICAgdWlu
dDE2X3QgY29weSA9IGJpdHdpc2VfY2FzdDx1aW50MTZfdD4odmFsdWUpOworICAgIHJldHVybiB6
ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KHN0YXRpY19jYXN0PHNpemVfdD4oY29weSkpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKFQp
ID09IDE+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdBWVNfSU5MSU5FIENvbnN1bWVEZXBlbmRlbmN5
IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koVCB2YWx1ZSkKK3sKKyAgICB1aW50OF90IGNvcHkg
PSBiaXR3aXNlX2Nhc3Q8dWludDhfdD4odmFsdWUpOworICAgIHJldHVybiB6ZXJvV2l0aENvbnN1
bWVEZXBlbmRlbmN5KHN0YXRpY19jYXN0PHNpemVfdD4oY29weSkpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3N0cnVjdCBDb25zdW1lZCB7CisgICAgVCB2YWx1ZTsKKyAgICBDb25zdW1l
RGVwZW5kZW5jeSBkZXBlbmRlbmN5OworfTsKKworLy8gQ29uc3VtZSBsb2FkLCByZXR1cm5pbmcg
dGhlIGxvYWRlZCBgdmFsdWVgIGF0IGBsb2NhdGlvbmAgYW5kIGEgZGVwZW5kZW50LXplcm8KKy8v
IHdoaWNoIGNyZWF0ZXMgYW4gYWRkcmVzcyBkZXBlbmRlbmN5IGZyb20gdGhlIGBsb2NhdGlvbmAu
CisvLworLy8gVXNhZ2Ugbm90ZXM6CisvLyBNZXJlbHkgYnJhbmNoaW5nIGJhc2VkIG9uIGB2YWx1
ZWAgaXNuJ3Qgc3VmZmljaWVudCB0byBpbXBvc2UgYSBkZXBlbmRlbmN5CisvLyBvcmRlcmluZzog
eW91IG11c3QgdXNlIGBkZXBlbmRlbmN5YCBpbiB0aGUgYWRkcmVzcyBjb21wdXRhdGlvbiBvZiBz
dWJzZXF1ZW50CisvLyBsb2FkcyB3aGljaCBzaG91bGQgb2JzZXJ2ZSB0aGUgc3RvcmUgb3JkZXIg
dy5yLnQuIGBsb2NhdGlvbmAuIFRoaXMgb3JkZXJzCisvLyB0aGUgYGxvY2F0aW9uYCBsb2FkIHdp
dGggc3VzZXF1ZW50IGRlcGVuZGVudCBsb2FkcyAqb25seSouIEl0IHNheXMgbm90aGluZworLy8g
YWJvdXQgb3JkZXJpbmcgb2Ygb3RoZXIgbG9hZHMhCisvLworLy8gQ2F2ZWF0IGVtcHRvci4KK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorQUxXQVlTX0lOTElORSBhdXRvIGNvbnN1bWVMb2FkKGNvbnN0
IFQqIGxvY2F0aW9uKQoreworICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46
OnR5cGUgUmV0dXJuZWQ7CisgICAgQ29uc3VtZWQ8UmV0dXJuZWQ+IHJldCB7IH07CisjaWYgQ1BV
KEFSTTY0KSB8fCBDUFUoQVJNKQorICAgIC8vIEZvcmNlIHRoZSByZWFkIG9mIGBsb2NhdGlvbmAg
dG8gb2NjdXIgb25seSBvbmNlIHVzaW5nIHZvbGF0aWxlLiBUaGlzIGlzCisgICAgLy8gaW1wb3J0
YW50IGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNvdWxkIG90aGVyd2lzZSByZW1hdGVyaWFsaXplIHRo
ZSBsb2FkIGFuZAorICAgIC8vIGxvc2UgdGhlIGRlcGVuZGVuY3kgd2UncmUgdHJ5aW5nIHNvIGhh
cmQgdG8gY3JlYXRlLiBQcmV2ZW50IHRlYXJpbmcgYnkKKyAgICAvLyB1c2luZyBhbiBhdG9taWMs
IGJ1dCBsZXQgaXQgbW92ZSBhcm91bmQgYnkgdXNpbmcgcmVsYXhlZC4gV2UgaGF2ZSBhdAorICAg
IC8vIGxlYXN0IGEgbWVtb3J5IGZlbmNlIGFmdGVyIHRoaXMgd2hpY2ggcHJldmVudHMgdGhlIGxv
YWQgZnJvbSBtb3ZpbmcgdG9vCisgICAgLy8gbXVjaC4KKyAgICByZXQudmFsdWUgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvbGF0aWxlIHN0ZDo6YXRvbWljPFJldHVybmVkPio+KGxvY2F0aW9u
KS0+bG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyNlbHNlCisgICAgcmV0LnZhbHVl
ID0gKmxvY2F0aW9uOworICAgIGxvYWRMb2FkRmVuY2UoKTsKKyNlbmRpZgorICAgIHJldC5kZXBl
bmRlbmN5ID0gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShyZXQudmFsdWUpOworICAgIHJldHVy
biByZXQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkF0b21pYzsKLS0g
CjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289837</attachid>
            <date>2016-09-26 11:03:12 -0700</date>
            <delta_ts>2016-09-26 16:21:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>11544</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBhZmEyZjJkYTIzM2NmN2MzZjdlZWIyMDExYWViMDE2NTA1MDM0Nzc4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgIHwgIDE0ICsr
KysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggfCAgMjQgKysrKyst
LQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8ICA0NCArKysrKysr
KysrKysrCiBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmggICAgICAgICAgICAgICAgIHwgMTEwICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTg3IGluc2Vy
dGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2Zh
Y2E5NS4uZmMxZDliZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xICsxLDE1IEBACisy
MDE2LTA5LTI2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBT
cGVlZCB1cCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlZWQgdXAgaXNNYXJrZWRDb25jdXJyZW50bHkg
YnkgdXNpbmcgV1RGOjpjb25zdW1lTG9hZC4KKworICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFyZU1hcmtzU3RhbGUpOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6YXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkQ29uY3VycmVudGx5KTogZG8gYXdheSB3aXRoIHRo
ZSBsb2FkLWxvYWQgZmVuY2UKKwogPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTYtMDkt
MjYgPT0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGRkOWU4
NDQuLjMzOWFmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApA
QCAtMjY5LDkgKzI2OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RlTWFya2VkKCk7CiAgICAg
ICAgIAogICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKLSAgICAKLSAgICBib29sIGFyZU1hcmtzU3Rh
bGUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOworCiAgICAgYm9vbCBhcmVNYXJrc1N0YWxl
KCk7CisgICAgYm9vbCBhcmVNYXJrc1N0YWxlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsK
KyAgICBzdHJ1Y3QgTWFya3NXaXRoRGVwZW5kZW5jeSB7CisgICAgICAgIGJvb2wgYXJlU3RhbGU7
CisgICAgICAgIFdURjo6Q29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeTsKKyAgICB9OworICAg
IE1hcmtzV2l0aERlcGVuZGVuY3kgYXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICAgICAgCkBAIC00NzQsNiArNDc5LDE1IEBAIGlubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uKQogICAgIHJldHVybiBtYXJraW5nVmVyc2lvbiAhPSBtX21hcmtpbmdWZXJzaW9uOwogfQog
CitBTFdBWVNfSU5MSU5FIE1hcmtlZEJsb2NrOjpNYXJrc1dpdGhEZXBlbmRlbmN5IE1hcmtlZEJs
b2NrOjphcmVNYXJrc1N0YWxlV2l0aERlcGVuZGVuY3koSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24pCit7CisgICAgYXV0byBjb25zdW1lZCA9IFdURjo6Y29uc3VtZUxvYWQoJm1fbWFya2luZ1Zl
cnNpb24pOworICAgIE1hcmtzV2l0aERlcGVuZGVuY3kgcmV0OworICAgIHJldC5hcmVTdGFsZSA9
IGNvbnN1bWVkLnZhbHVlICE9IG1hcmtpbmdWZXJzaW9uOworICAgIHJldC5kZXBlbmRlbmN5ID0g
Y29uc3VtZWQuZGVwZW5kZW5jeTsKKyAgICByZXR1cm4gcmV0OworfQorCiBpbmxpbmUgdm9pZCBN
YXJrZWRCbG9jazo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pCiB7CiAg
ICAgaWYgKFVOTElLRUxZKGFyZU1hcmtzU3RhbGUobWFya2luZ1ZlcnNpb24pKSkKQEAgLTQ5OSwx
MCArNTEzLDEwIEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKIAogaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OmlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25z
dCB2b2lkKiBwKQogewotICAgIGlmIChhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkKKyAg
ICBhdXRvIG1hcmtzV2l0aERlcGVuZGVuY3kgPSBhcmVNYXJrc1N0YWxlV2l0aERlcGVuZGVuY3ko
bWFya2luZ1ZlcnNpb24pOworICAgIGlmIChtYXJrc1dpdGhEZXBlbmRlbmN5LmFyZVN0YWxlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7Ci0gICAgcmV0
dXJuIG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkpOworICAgIHJldHVybiBtX21hcmtzLmdldChh
dG9tTnVtYmVyKHApICsgbWFya3NXaXRoRGVwZW5kZW5jeS5kZXBlbmRlbmN5KTsKIH0KIAogaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OnRlc3RBbmRTZXRNYXJrZWQoY29uc3Qgdm9pZCogcCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggZDk3MTQwMi4uZDNmOGU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxNi0wOS0yNiAgSkYg
QmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3BlZWQgdXAgSGVhcDo6
aXNNYXJrZWRDb25jdXJyZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MjA5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5IGhhZCBhIGxvYWQtbG9hZCBm
ZW5jZSB3aGljaCBpcyBleHBlbnNpdmUgb24gd2VhayBtZW1vcnkgSVNBcyBzdWNoIGFzIEFSTS4K
KworICAgICAgICBUaGlzIHBhdGNoIGlzIGZhaXJseSBwZXJmLW5ldXRyYWwgb3ZlcmFsbCwgYnV0
IHRoZSBHQydzIGluc3RydW1lbnRhdGlvbiByZXBvcnRzOgorICAgICAgICAgIEdDOkVkZW4gaXMg
OTMlIGF2ZXJhZ2UgcnVudGltZSBhZnRlciBjaGFuZ2UKKyAgICAgICAgICBHQzpGdWxsIGlzIDc2
JSBhdmVyYWdlIHJ1bnRpbWUgYWZ0ZXIgY2hhbmdlCisKKyAgICAgICAgVGhlIGZlbmNlIHdhcyB0
aGVyZSBiZWNhdXNlOgorICAgICAgICAgMS4gSWYgdGhlIHJlYWQgb2YgbV9tYXJraW5nVmVyc2lv
biBpbiBNYXJrZWRCbG9jazo6YXJlTWFya3NTdGFsZSBpc24ndCB3aGF0J3MgZXhwZWN0ZWQgdGhl
bjsKKyAgICAgICAgIDIuIFRoZSByZWFkIG9mIG1fbWFya3MgaW4gTWFya2VkQmxvY2s6OmlzTWFy
a2VkIG5lZWRzIHRvIG9ic2VydmUgdGhlIHZhbHVlIHRoYXQgd2FzIHN0b3JlZCAqYmVmb3JlKiBt
X21hcmtpbmdWZXJzaW9uIHdhcyBzdG9yZWQuCisKKyAgICAgICAgVGhpcyBvcmRlcmluZyBpc24n
dCBndWFyYW50ZWVkIG9uIEFSTSwgd2hpY2ggaGFzIGEgd2VhayBtZW1vcnkgbW9kZWwuCisKKyAg
ICAgICAgVGhlcmUgYXJlIDMgd2F5cyB0byBndWFyYW50ZWUgdGhpcyBvcmRlcmluZzoKKyAgICAg
ICAgIEEuIFVzZSBhIGJhcnJpZXIgaW5zdHJ1Y3Rpb24uCisgICAgICAgICBCLiBVc2UgYSBsb2Fk
LWFjcXVpcmUgKG5ldyBpbiBBUk12OCkuCisgICAgICAgICBDLiB1c2UgQVJNJ3MgYWRkcmVzcyBk
ZXBlbmRlbmN5IHJ1bGUsIHdoaWNoIEMrKyBjYWxscyBtZW1vcnlfb3JkZXJfY29uc3VtZS4KKwor
ICAgICAgICBJbiBnZW5lcmFsOgorICAgICAgICAgQS4gaXMgc2xvdyBidXQgb3JkZXJzIGFsbCBv
ZiBtZW1vcnkgaW4gYW4gaW50dWl0aXZlIG1hbm5lci4KKyAgICAgICAgIEIuIGlzIGZhc3Rlci1p
c2ggYW5kIGhhcyB0aGUgc2FtZSBwcm9wZXJ0eS1pc2guCisgICAgICAgICBDLiBzaG91bGQgYmUg
ZmFzdGVyIHN0aWxsLCBidXQgKm9ubHkgb3JkZXJzIGRlcGVuZGVudCBsb2FkcyouIFRoaXMgbGFz
dCBwYXJ0IGlzIGNyaXRpY2FsISBDb25zdW1lIGlzbid0IGFuIGFsbC1vdXQgcmVwbGFjZW1lbnQg
Zm9yIGFjcXVpcmUgKGFjcXVpcmUgaXMgcmF0aGVyIGEgc3VwZXJzZXQgb2YgY29uc3VtZSkuCisK
KyAgICAgICAgQVJNIGV4cGxhaW5zIHRoZSBhZGRyZXNzIGRlcGVuZGVuY3kgcnVsZSBpbiB0aGVp
ciBkb2N1bWVudCAiYmFycmllciBsaXRtdXMgdGVzdHMgYW5kIGNvb2tib29rIjoKKworICAgICAg
ICA+ICpSZXNvbHZpbmcgYnkgdGhlIHVzZSBvZiBiYXJyaWVycyBhbmQgYWRkcmVzcyBkZXBlbmRl
bmN5KgorICAgICAgICA+CisgICAgICAgID4gVGhlcmUgaXMgYSBydWxlIHdpdGhpbiB0aGUgQVJN
IGFyY2hpdGVjdHVyZSB0aGF0OgorICAgICAgICA+IFdoZXJlIHRoZSB2YWx1ZSByZXR1cm5lZCBi
eSBhIHJlYWQgaXMgdXNlZCB0byBjb21wdXRlIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgYSBzdWJz
ZXF1ZW50IHJlYWQgb3Igd3JpdGUgKHRoaXMgaXMga25vd24gYXMgYW4gYWRkcmVzcyBkZXBlbmRl
bmN5KSwgdGhlbiB0aGVzZSB0d28gbWVtb3J5IGFjY2Vzc2VzIHdpbGwgYmUgb2JzZXJ2ZWQgaW4g
cHJvZ3JhbSBvcmRlci4gQW4gYWRkcmVzcyBkZXBlbmRlbmN5IGV4aXN0cyBldmVuIGlmIHRoZSB2
YWx1ZSByZWFkIGJ5IHRoZSBmaXJzdCByZWFkIGhhcyBubyBlZmZlY3QgaW4gY2hhbmdpbmcgdGhl
IHZpcnR1YWwgYWRkcmVzcyAoYXMgbWlnaHQgYmUgdGhlIGNhc2UgaWYgdGhlIHZhbHVlIHJldHVy
bmVkIGlzIG1hc2tlZCBvZmYgYmVmb3JlIGl0IGlzIHVzZWQsIG9yIGlmIGl0IGhhZCBubyBlZmZl
Y3Qgb24gY2hhbmdpbmcgYSBwcmVkaWN0ZWQgYWRkcmVzcyB2YWx1ZSkuCisgICAgICAgID4gVGhp
cyByZXN0cmljdGlvbiBhcHBsaWVzIG9ubHkgd2hlbiB0aGUgZGF0YSB2YWx1ZSByZXR1cm5lZCBm
cm9tIG9uZSByZWFkIGlzIHVzZWQgYXMgYSBkYXRhIHZhbHVlIHRvIGNhbGN1bGF0ZSB0aGUgYWRk
cmVzcyBvZiBhIHN1YnNlcXVlbnQgcmVhZCBvciB3cml0ZS4gVGhpcyBkb2VzIG5vdCBhcHBseSBp
ZiB0aGUgZGF0YSB2YWx1ZSByZXR1cm5lZCBmcm9tIG9uZSByZWFkIGlzIHVzZWQgdG8gZGV0ZXJt
aW5lIHRoZSBjb25kaXRpb24gY29kZSBmbGFncywgYW5kIHRoZSB2YWx1ZXMgb2YgdGhlIGZsYWdz
IGFyZSB1c2VkIGZvciBjb25kaXRpb24gY29kZSBldmFsdWF0aW9uIHRvIGRldGVybWluZSB0aGUg
YWRkcmVzcyBvZiBhIHN1YnNlcXVlbnQgcmVhZHMsIGVpdGhlciB0aHJvdWdoIGNvbmRpdGlvbmFs
IGV4ZWN1dGlvbiBvciB0aGUgZXZhbHVhdGlvbiBvZiBhIGJyYW5jaC4gVGhpcyBpcyBrbm93biBh
cyBhIGNvbnRyb2wgZGVwZW5kZW5jeS4KKyAgICAgICAgPiBXaGVyZSBib3RoIGEgY29udHJvbCBh
bmQgYWRkcmVzcyBkZXBlbmRlbmN5IGV4aXN0LCB0aGUgb3JkZXJpbmcgYmVoYXZpb3VyIGlzIGNv
bnNpc3RlbnQgd2l0aCB0aGUgYWRkcmVzcyBkZXBlbmRlbmN5LgorCisgICAgICAgIEMrKydzIG1l
bW9yeV9vcmRlcl9jb25zdW1lIGlzIHVuZm9ydHVuYXRlbHkgdW5pbXBsZW1lbnRlZCBieSBDKysg
Y29tcGlsZXJzLCBhbmQgbWF5YmUgdW5pbXBsZW1lbnRhYmxlIGFzIHNwZWMnZC4gSSdtIHdvcmtp
bmcgd2l0aCBpbnRlcmVzdGVkIGZvbGtzIGluIHRoZSBjb21taXR0ZWUgdG8gZml4IHRoaXMgc2l0
dWF0aW9uOiBodHRwOi8vd2cyMS5saW5rL3AwMTkwcjIKKworICAgICAgICAqIHd0Zi9BdG9taWNz
Lmg6CisgICAgICAgIChXVEY6Onplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3kpOiBhIDAgd2hpY2gg
Y2FycmllcyBhIGRlcGVuZGVuY3kKKyAgICAgICAgKFdURjo6Y29uc3VtZUxvYWQpOiBwaXhpZSBt
YWdpYworCiAyMDE2LTA5LTI2ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlh
LmNvbT4KIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHIgZGVsZXRlciBmdW5jdGlvbnMgc2hvdWxk
IG5vdCBjaGVjayBpZiBwb2ludGVyIGlzIG51bGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0F0b21pY3MuaCBiL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaAppbmRleCBlNDZhNGJhLi44ZmVj
NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvQXRvbWljcy5oCkBAIC0yMDIsNiArMjAyLDExNiBAQCBpbmxpbmUgdm9pZCBtZW1vcnlC
YXJyaWVyQmVmb3JlVW5sb2NrKCkgeyBzdGQ6OmF0b21pY190aHJlYWRfZmVuY2Uoc3RkOjptZW1v
cnlfbwogCiAjZW5kaWYKIAordHlwZWRlZiBzaXplX3QgQ29uc3VtZURlcGVuZGVuY3k7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzaXplb2YoVCkgPT0g
ND46OnR5cGUqID0gbnVsbHB0cj4KK0FMV0FZU19JTkxJTkUgQ29uc3VtZURlcGVuZGVuY3kgemVy
b1dpdGhDb25zdW1lRGVwZW5kZW5jeShUIHZhbHVlKQoreworI2lmIENQVShBUk0pIHx8IENQVShB
Uk02NCkKKyAgICB1aW50MzJfdCBkZXBlbmRlbmN5OworICAgIHVpbnQzMl90IGNvcHkgPSBiaXR3
aXNlX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKTsKKyAgICAvLyBDcmVhdGUgYSBtYWdpY2FsIHplcm8g
dmFsdWUgdGhyb3VnaCBpbmxpbmUgYXNzZW1ibHksIHdob3NlIGNvbXB1dGF0aW9uCisgICAgLy8g
aXNuJ3QgdmlzaWJsZSB0byB0aGUgb3B0aW1pemVyLiBUaGlzIHplcm8gaXMgdGhlbiB1c2FibGUg
YXMgYW4gb2Zmc2V0IGluCisgICAgLy8gZnVydGhlciBhZGRyZXNzIGNvbXB1dGF0aW9uczogYWRk
aW5nIHplcm8gZG9lcyBub3RoaW5nLCBidXQgdGhlIGNvbXBpbGVyCisgICAgLy8gZG9lc24ndCBr
bm93IGl0LiBJdCdzIG1hZ2ljYWwgYmVjYXVzZSBpdCBjcmVhdGVzIGFuIGFkZHJlc3MgZGVwZW5k
ZW5jeQorICAgIC8vIGZyb20gdGhlIGxvYWQgb2YgYGxvY2F0aW9uYCB0byB0aGUgdXNlcyBvZiB0
aGUgZGVwZW5kZW5jeSwgd2hpY2ggdHJpZ2dlcnMKKyAgICAvLyB0aGUgQVJNIElTQSdzIGFkZHJl
c3MgZGVwZW5kZW5jeSBydWxlLCBhLmsuYS4gdGhlIG15dGhpY2FsIEMrKyBjb25zdW1lCisgICAg
Ly8gb3JkZXJpbmcuIFRoaXMgZm9yY2VzIHdlYWsgbWVtb3J5IG9yZGVyIENQVXMgdG8gb2JzZXJ2
ZSBgbG9jYXRpb25gIGFuZAorICAgIC8vIGRlcGVuZGVudCBsb2FkcyBpbiB0aGVpciBzdG9yZSBv
cmRlciB3aXRob3V0IHRoZSByZWFkZXIgdXNpbmcgYSBiYXJyaWVyCisgICAgLy8gb3IgYW4gYWNx
dWlyZSBsb2FkLgorICAgIGFzbSB2b2xhdGlsZSgiZW9yICVbZGVwZW5kZW5jeV0sICVbaW5dLCAl
W2luXSIKKyAgICAgICAgICAgICAgICAgOiBbZGVwZW5kZW5jeV0gIj1yIihkZXBlbmRlbmN5KQor
ICAgICAgICAgICAgICAgICA6IFtpbl0gInIiKGNvcHkpCisgICAgICAgICAgICAgICAgIC8vIExp
ZSBhYm91dCB0b3VjaGluZyBtZW1vcnkuIE5vdCBzdHJpY3RseSBuZWVkZWQsIGJ1dCBpcworICAg
ICAgICAgICAgICAgICAvLyBsaWtlbHkgdG8gYXZvaWQgdW53YW50ZWQgbG9hZC9zdG9yZSBtb3Rp
b24uCisgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOworICAgIHJldHVybiBkZXBlbmRlbmN5
OworI2Vsc2UKKyAgICAvLyBObyBkZXBlbmRlbmN5IGlzIG5lZWRlZCBmb3IgdGhpcyBhcmNoaXRl
Y3R1cmUuCisgICAgbG9hZExvYWRGZW5jZSgpOworICAgICh2b2lkKXZhbHVlOworICAgIHJldHVy
biAwOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzaXplb2YoVCkgPT0gOD46OnR5cGUqID0gbnVsbHB0cj4KK0FMV0FZU19JTkxJTkUg
Q29uc3VtZURlcGVuZGVuY3kgemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShUIHZhbHVlKQorewor
ICAgIHVpbnQ2NF90IGNvcHkgPSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsKKyNpZiBD
UFUoQVJNKSAmJiAhQ1BVKEFSTTY0KQorICAgIC8vIEEzMiBhbmQgVDMyIGhhdmUgMzItYml0IGlu
dGVnZXIgcmVnaXN0ZXJzLCByZXF1aXJpbmcgbG9hZHMgaW50byBwYWlyZWQKKyAgICAvLyByZWdp
c3RlcnMuIFRoZXNlIGxvYWRzIGFyZW4ndCBzaW5nbGUtY29weSBhdG9taWMgb24gYWxsIEFSTSB2
YXJpYW50cworICAgIC8vIChvbmx5IGd1YXJhbnRlZWQgd2hlbiBMUEFFIGlzIHByZXNlbnQpLiBX
ZSB3YW50IGEgZGVwZW5kZW5jeSBvbiBib3RoCisgICAgLy8gYm90dG9tIGFuZCB0b3AgbG9hZGVk
IHZhbHVlcywgd2hpY2ggd2UgYWNoaWV2ZSBieSBwZXJmb3JtaW5nIHNvbWUKKyAgICAvLyBhcml0
aG1ldGljIGJldHdlZW4gYm90aCB2YWx1ZXMsIHByb2R1Y2luZyBhIDMyLWJpdCBvdXRwdXQsIGFu
ZCBnZW5lcmF0aWMKKyAgICAvLyBhIG1hZ2ljYWwgemVybyBmcm9tIHRoaXMgMzItYml0IHZhbHVl
LgorICAgIHVpbnQzMl90IGJvdHRvbSA9IGNvcHkgJiAweEZGRkZGRkZGdSwgdG9wID0gY29weSA+
PiAzMjsKKyAgICByZXR1cm4gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShib3R0b20gXiB0b3Ap
OworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHVpbnQ2NF90IGRlcGVuZGVuY3k7CisgICAgYXNtIHZv
bGF0aWxlKCJlb3IgJVtkZXBlbmRlbmN5XSwgJVtpbl0sICVbaW5dIgorICAgICAgICAgICAgICAg
ICA6IFtkZXBlbmRlbmN5XSAiPXIiKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAgIDogW2lu
XSAiciIoY29weSkKKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CisgICAgcmV0dXJuIGRl
cGVuZGVuY3k7CisjZWxzZQorICAgIGxvYWRMb2FkRmVuY2UoKTsKKyAgICAodm9pZCljb3B5Owor
ICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzaXplb2YoVCkgPT0gMj46OnR5cGUqID0gbnVsbHB0cj4KK0FMV0FZ
U19JTkxJTkUgQ29uc3VtZURlcGVuZGVuY3kgemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShUIHZh
bHVlKQoreworICAgIHVpbnQxNl90IGNvcHkgPSBiaXR3aXNlX2Nhc3Q8dWludDE2X3Q+KHZhbHVl
KTsKKyAgICByZXR1cm4gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShzdGF0aWNfY2FzdDxzaXpl
X3Q+KGNvcHkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHNpemVvZihUKSA9PSAxPjo6dHlwZSogPSBudWxscHRyPgorQUxXQVlTX0lOTElORSBD
b25zdW1lRGVwZW5kZW5jeSB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KFQgdmFsdWUpCit7Cisg
ICAgdWludDhfdCBjb3B5ID0gYml0d2lzZV9jYXN0PHVpbnQ4X3Q+KHZhbHVlKTsKKyAgICByZXR1
cm4gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShzdGF0aWNfY2FzdDxzaXplX3Q+KGNvcHkpKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29uc3VtZWQgeworICAgIFQgdmFs
dWU7CisgICAgQ29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeTsKK307CisKKy8vIENvbnN1bWUg
bG9hZCwgcmV0dXJuaW5nIHRoZSBsb2FkZWQgYHZhbHVlYCBhdCBgbG9jYXRpb25gIGFuZCBhIGRl
cGVuZGVudC16ZXJvCisvLyB3aGljaCBjcmVhdGVzIGFuIGFkZHJlc3MgZGVwZW5kZW5jeSBmcm9t
IHRoZSBgbG9jYXRpb25gLgorLy8KKy8vIFVzYWdlIG5vdGVzOgorLy8KKy8vICAqIFJlZ2FyZGlu
ZyBjb250cm9sIGRlcGVuZGVuY2llczogbWVyZWx5IGJyYW5jaGluZyBiYXNlZCBvbiBgdmFsdWVg
IG9yCisvLyAgICBgZGVwZW5kZW5jeWAgaXNuJ3Qgc3VmZmljaWVudCB0byBpbXBvc2UgYSBkZXBl
bmRlbmN5IG9yZGVyaW5nOiB5b3UgbXVzdAorLy8gICAgdXNlIGBkZXBlbmRlbmN5YCBpbiB0aGUg
YWRkcmVzcyBjb21wdXRhdGlvbiBvZiBzdWJzZXF1ZW50IGxvYWRzIHdoaWNoCisvLyAgICBzaG91
bGQgb2JzZXJ2ZSB0aGUgc3RvcmUgb3JkZXIgdy5yLnQuIGBsb2NhdGlvbmAuCisvLyAqIFJlZ2Fy
ZGluZyBtZW1vcnkgb3JkZXJpbmc6IGNvbnN1bWUgbG9hZCBvcmRlcnMgdGhlIGBsb2NhdGlvbmAg
bG9hZCB3aXRoCisvLyAgIHN1c2VxdWVudCBkZXBlbmRlbnQgbG9hZHMgKm9ubHkqLiBJdCBzYXlz
IG5vdGhpbmcgYWJvdXQgb3JkZXJpbmcgb2Ygb3RoZXIKKy8vICAgbG9hZHMhCisvLworLy8gQ2F2
ZWF0IGVtcHRvci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorQUxXQVlTX0lOTElORSBhdXRvIGNv
bnN1bWVMb2FkKGNvbnN0IFQqIGxvY2F0aW9uKQoreworICAgIHR5cGVkZWYgdHlwZW5hbWUgc3Rk
OjpyZW1vdmVfY3Y8VD46OnR5cGUgUmV0dXJuZWQ7CisgICAgQ29uc3VtZWQ8UmV0dXJuZWQ+IHJl
dCB7IH07CisgICAgLy8gRm9yY2UgdGhlIHJlYWQgb2YgYGxvY2F0aW9uYCB0byBvY2N1ciBleGFj
dGx5IG9uY2UgYW5kIHdpdGhvdXQgZnVzaW5nIG9yCisgICAgLy8gZm9yd2FyZGluZyB1c2luZyB2
b2xhdGlsZS4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgY29tcGlsZXIgY291bGQKKyAg
ICAvLyBvdGhlcndpc2UgcmVtYXRlcmlhbGl6ZSBvciBmaW5kIGVxdWl2YWxlbnQgbG9hZHMsIG9y
IHNpbXBseSBmb3J3YXJkIGZyb20KKyAgICAvLyBhIHByZXZpb3VzIG9uZSwgYW5kIGxvc2UgdGhl
IGRlcGVuZGVuY3kgd2UncmUgdHJ5aW5nIHNvIGhhcmQgdG8KKyAgICAvLyBjcmVhdGUuIFByZXZl
bnQgdGVhcmluZyBieSB1c2luZyBhbiBhdG9taWMsIGJ1dCBsZXQgaXQgbW92ZSBhcm91bmQgYnkK
KyAgICAvLyB1c2luZyByZWxheGVkLiBXZSBoYXZlIGF0IGxlYXN0IGEgbWVtb3J5IGZlbmNlIGFm
dGVyIHRoaXMgd2hpY2ggcHJldmVudHMKKyAgICAvLyB0aGUgbG9hZCBmcm9tIG1vdmluZyB0b28g
bXVjaC4KKyAgICByZXQudmFsdWUgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZvbGF0aWxlIHN0
ZDo6YXRvbWljPFJldHVybmVkPio+KGxvY2F0aW9uKS0+bG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsKKyAgICByZXQuZGVwZW5kZW5jeSA9IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3ko
cmV0LnZhbHVlKTsKKyAgICByZXR1cm4gcmV0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAog
dXNpbmcgV1RGOjpBdG9taWM7Ci0tIAoyLjkuMwoK
</data>
<flag name="review"
          id="313020"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289886</attachid>
            <date>2016-09-26 16:21:04 -0700</date>
            <delta_ts>2016-09-26 16:27:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>19469</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0YTNlZmFlODQ5Y2NiMjgyOWE2YWM4Yzg1ZGJlMjgyNjkxOGUyNDU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggICAg
ICAgICAgIHwgIDI0ICsrKy0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDQ0ICsrKysrKysKIFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKwogVG9vbHMvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKysrCiBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICB8ICAgMSArCiAu
Li4vVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgICB8ICAgMiAr
CiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNwcCAgICAgICAgICB8IDEz
MCArKysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMzM1IGluc2VydGlvbnMo
KyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ29uc3VtZS5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzZjli
MDhiLi42OTRiZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNi0wOS0yNiAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3BlZWQgdXAgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjA5NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkIHVwIGlzTWFya2VkQ29uY3VycmVudGx5
IGJ5IHVzaW5nIFdURjo6Y29uc3VtZUxvYWQuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2Nr
Lmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmFyZU1hcmtzU3RhbGVXaXRoRGVwZW5kZW5jeSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZENvbmN1cnJlbnRseSk6IGRvIGF3YXkgd2l0aCB0
aGUgbG9hZC1sb2FkIGZlbmNlCisKIDIwMTYtMDktMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gT3B0aW9uIHRvIGRpc2FibGUgdGhlIENv
ZGVDYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggZGQ5
ZTg0NC4uYTY0NjlmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CkBAIC0yNjksOSArMjY5LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKICAg
ICAgICAgCiAgICAgV2Vha1NldCYgd2Vha1NldCgpOwotICAgIAotICAgIGJvb2wgYXJlTWFya3NT
dGFsZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7CisKICAgICBib29sIGFyZU1hcmtzU3Rh
bGUoKTsKKyAgICBib29sIGFyZU1hcmtzU3RhbGUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24p
OworICAgIHN0cnVjdCBNYXJrc1dpdGhEZXBlbmRlbmN5IHsKKyAgICAgICAgYm9vbCBhcmVTdGFs
ZTsKKyAgICAgICAgQ29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeTsKKyAgICB9OworICAgIE1h
cmtzV2l0aERlcGVuZGVuY3kgYXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uKTsKICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uKTsKICAgICAgICAgCkBAIC00NzQsNiArNDc5LDE1IEBAIGlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9u
KQogICAgIHJldHVybiBtYXJraW5nVmVyc2lvbiAhPSBtX21hcmtpbmdWZXJzaW9uOwogfQogCitB
TFdBWVNfSU5MSU5FIE1hcmtlZEJsb2NrOjpNYXJrc1dpdGhEZXBlbmRlbmN5IE1hcmtlZEJsb2Nr
OjphcmVNYXJrc1N0YWxlV2l0aERlcGVuZGVuY3koSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24p
Cit7CisgICAgYXV0byBjb25zdW1lZCA9IGNvbnN1bWVMb2FkKCZtX21hcmtpbmdWZXJzaW9uKTsK
KyAgICBNYXJrc1dpdGhEZXBlbmRlbmN5IHJldDsKKyAgICByZXQuYXJlU3RhbGUgPSBjb25zdW1l
ZC52YWx1ZSAhPSBtYXJraW5nVmVyc2lvbjsKKyAgICByZXQuZGVwZW5kZW5jeSA9IGNvbnN1bWVk
LmRlcGVuZGVuY3k7CisgICAgcmV0dXJuIHJldDsKK30KKwogaW5saW5lIHZvaWQgTWFya2VkQmxv
Y2s6OmFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQogewogICAgIGlmIChV
TkxJS0VMWShhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkpCkBAIC00OTksMTAgKzUxMywx
MCBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoSGVhcFZlcnNpb24gbWFya2lu
Z1ZlcnNpb24sIGNvbnN0IHZvaWQqIHApCiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01h
cmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9pZCog
cCkKIHsKLSAgICBpZiAoYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpCisgICAgYXV0byBt
YXJrc1dpdGhEZXBlbmRlbmN5ID0gYXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KG1hcmtpbmdW
ZXJzaW9uKTsKKyAgICBpZiAobWFya3NXaXRoRGVwZW5kZW5jeS5hcmVTdGFsZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwotICAgIHJldHVybiBtX21h
cmtzLmdldChhdG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJl
cihwKSArIG1hcmtzV2l0aERlcGVuZGVuY3kuZGVwZW5kZW5jeSk7CiB9CiAKIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjp0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqIHApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc2ZmMw
NGIuLjkwZWQzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTYtMDktMjYgIEpGIEJhc3RpZW4g
IDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwZWVkIHVwIEhlYXA6OmlzTWFya2Vk
Q29uY3VycmVudGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSBoYWQgYSBsb2FkLWxvYWQgZmVuY2Ugd2hp
Y2ggaXMgZXhwZW5zaXZlIG9uIHdlYWsgbWVtb3J5IElTQXMgc3VjaCBhcyBBUk0uCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBmYWlybHkgcGVyZi1uZXV0cmFsIG92ZXJhbGwsIGJ1dCB0aGUgR0Mn
cyBpbnN0cnVtZW50YXRpb24gcmVwb3J0czoKKyAgICAgICAgICBHQzpFZGVuIGlzIDkzJSBhdmVy
YWdlIHJ1bnRpbWUgYWZ0ZXIgY2hhbmdlCisgICAgICAgICAgR0M6RnVsbCBpcyA3NiUgYXZlcmFn
ZSBydW50aW1lIGFmdGVyIGNoYW5nZQorCisgICAgICAgIFRoZSBmZW5jZSB3YXMgdGhlcmUgYmVj
YXVzZToKKyAgICAgICAgIDEuIElmIHRoZSByZWFkIG9mIG1fbWFya2luZ1ZlcnNpb24gaW4gTWFy
a2VkQmxvY2s6OmFyZU1hcmtzU3RhbGUgaXNuJ3Qgd2hhdCdzIGV4cGVjdGVkIHRoZW47CisgICAg
ICAgICAyLiBUaGUgcmVhZCBvZiBtX21hcmtzIGluIE1hcmtlZEJsb2NrOjppc01hcmtlZCBuZWVk
cyB0byBvYnNlcnZlIHRoZSB2YWx1ZSB0aGF0IHdhcyBzdG9yZWQgKmJlZm9yZSogbV9tYXJraW5n
VmVyc2lvbiB3YXMgc3RvcmVkLgorCisgICAgICAgIFRoaXMgb3JkZXJpbmcgaXNuJ3QgZ3VhcmFu
dGVlZCBvbiBBUk0sIHdoaWNoIGhhcyBhIHdlYWsgbWVtb3J5IG1vZGVsLgorCisgICAgICAgIFRo
ZXJlIGFyZSAzIHdheXMgdG8gZ3VhcmFudGVlIHRoaXMgb3JkZXJpbmc6CisgICAgICAgICBBLiBV
c2UgYSBiYXJyaWVyIGluc3RydWN0aW9uLgorICAgICAgICAgQi4gVXNlIGEgbG9hZC1hY3F1aXJl
IChuZXcgaW4gQVJNdjgpLgorICAgICAgICAgQy4gdXNlIEFSTSdzIGFkZHJlc3MgZGVwZW5kZW5j
eSBydWxlLCB3aGljaCBDKysgY2FsbHMgbWVtb3J5X29yZGVyX2NvbnN1bWUuCisKKyAgICAgICAg
SW4gZ2VuZXJhbDoKKyAgICAgICAgIEEuIGlzIHNsb3cgYnV0IG9yZGVycyBhbGwgb2YgbWVtb3J5
IGluIGFuIGludHVpdGl2ZSBtYW5uZXIuCisgICAgICAgICBCLiBpcyBmYXN0ZXItaXNoIGFuZCBo
YXMgdGhlIHNhbWUgcHJvcGVydHktaXNoLgorICAgICAgICAgQy4gc2hvdWxkIGJlIGZhc3RlciBz
dGlsbCwgYnV0ICpvbmx5IG9yZGVycyBkZXBlbmRlbnQgbG9hZHMqLiBUaGlzIGxhc3QgcGFydCBp
cyBjcml0aWNhbCEgQ29uc3VtZSBpc24ndCBhbiBhbGwtb3V0IHJlcGxhY2VtZW50IGZvciBhY3F1
aXJlIChhY3F1aXJlIGlzIHJhdGhlciBhIHN1cGVyc2V0IG9mIGNvbnN1bWUpLgorCisgICAgICAg
IEFSTSBleHBsYWlucyB0aGUgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUgaW4gdGhlaXIgZG9jdW1l
bnQgImJhcnJpZXIgbGl0bXVzIHRlc3RzIGFuZCBjb29rYm9vayI6CisKKyAgICAgICAgPiAqUmVz
b2x2aW5nIGJ5IHRoZSB1c2Ugb2YgYmFycmllcnMgYW5kIGFkZHJlc3MgZGVwZW5kZW5jeSoKKyAg
ICAgICAgPgorICAgICAgICA+IFRoZXJlIGlzIGEgcnVsZSB3aXRoaW4gdGhlIEFSTSBhcmNoaXRl
Y3R1cmUgdGhhdDoKKyAgICAgICAgPiBXaGVyZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYSByZWFk
IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIGEgc3Vic2VxdWVudCBy
ZWFkIG9yIHdyaXRlICh0aGlzIGlzIGtub3duIGFzIGFuIGFkZHJlc3MgZGVwZW5kZW5jeSksIHRo
ZW4gdGhlc2UgdHdvIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGJlIG9ic2VydmVkIGluIHByb2dyYW0g
b3JkZXIuIEFuIGFkZHJlc3MgZGVwZW5kZW5jeSBleGlzdHMgZXZlbiBpZiB0aGUgdmFsdWUgcmVh
ZCBieSB0aGUgZmlyc3QgcmVhZCBoYXMgbm8gZWZmZWN0IGluIGNoYW5naW5nIHRoZSB2aXJ0dWFs
IGFkZHJlc3MgKGFzIG1pZ2h0IGJlIHRoZSBjYXNlIGlmIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBt
YXNrZWQgb2ZmIGJlZm9yZSBpdCBpcyB1c2VkLCBvciBpZiBpdCBoYWQgbm8gZWZmZWN0IG9uIGNo
YW5naW5nIGEgcHJlZGljdGVkIGFkZHJlc3MgdmFsdWUpLgorICAgICAgICA+IFRoaXMgcmVzdHJp
Y3Rpb24gYXBwbGllcyBvbmx5IHdoZW4gdGhlIGRhdGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBvbmUg
cmVhZCBpcyB1c2VkIGFzIGEgZGF0YSB2YWx1ZSB0byBjYWxjdWxhdGUgdGhlIGFkZHJlc3Mgb2Yg
YSBzdWJzZXF1ZW50IHJlYWQgb3Igd3JpdGUuIFRoaXMgZG9lcyBub3QgYXBwbHkgaWYgdGhlIGRh
dGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBvbmUgcmVhZCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUg
Y29uZGl0aW9uIGNvZGUgZmxhZ3MsIGFuZCB0aGUgdmFsdWVzIG9mIHRoZSBmbGFncyBhcmUgdXNl
ZCBmb3IgY29uZGl0aW9uIGNvZGUgZXZhbHVhdGlvbiB0byBkZXRlcm1pbmUgdGhlIGFkZHJlc3Mg
b2YgYSBzdWJzZXF1ZW50IHJlYWRzLCBlaXRoZXIgdGhyb3VnaCBjb25kaXRpb25hbCBleGVjdXRp
b24gb3IgdGhlIGV2YWx1YXRpb24gb2YgYSBicmFuY2guIFRoaXMgaXMga25vd24gYXMgYSBjb250
cm9sIGRlcGVuZGVuY3kuCisgICAgICAgID4gV2hlcmUgYm90aCBhIGNvbnRyb2wgYW5kIGFkZHJl
c3MgZGVwZW5kZW5jeSBleGlzdCwgdGhlIG9yZGVyaW5nIGJlaGF2aW91ciBpcyBjb25zaXN0ZW50
IHdpdGggdGhlIGFkZHJlc3MgZGVwZW5kZW5jeS4KKworICAgICAgICBDKysncyBtZW1vcnlfb3Jk
ZXJfY29uc3VtZSBpcyB1bmZvcnR1bmF0ZWx5IHVuaW1wbGVtZW50ZWQgYnkgQysrIGNvbXBpbGVy
cywgYW5kIG1heWJlIHVuaW1wbGVtZW50YWJsZSBhcyBzcGVjJ2QuIEknbSB3b3JraW5nIHdpdGgg
aW50ZXJlc3RlZCBmb2xrcyBpbiB0aGUgY29tbWl0dGVlIHRvIGZpeCB0aGlzIHNpdHVhdGlvbjog
aHR0cDovL3dnMjEubGluay9wMDE5MHIyCisKKyAgICAgICAgKiB3dGYvQXRvbWljcy5oOgorICAg
ICAgICAoV1RGOjp6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KTogYSAwIHdoaWNoIGNhcnJpZXMg
YSBkZXBlbmRlbmN5CisgICAgICAgIChXVEY6OmNvbnN1bWVMb2FkKTogcGl4aWUgbWFnaWMKKwog
MjAxNi0wOS0yNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
UmVuYW1lIElPU19URVhUX0FVVE9TSVpJTkcgdG8gVEVYVF9BVVRPU0laSU5HCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmggYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKaW5k
ZXggZTQ2YTRiYS4uMTc2MWQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXRvbWljcy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaApAQCAtMjAyLDggKzIwMiwxMjAgQEAgaW5s
aW5lIHZvaWQgbWVtb3J5QmFycmllckJlZm9yZVVubG9jaygpIHsgc3RkOjphdG9taWNfdGhyZWFk
X2ZlbmNlKHN0ZDo6bWVtb3J5X28KIAogI2VuZGlmCiAKK3R5cGVkZWYgc2l6ZV90IENvbnN1bWVE
ZXBlbmRlbmN5OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c2l6ZW9mKFQpID09IDQ+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdBWVNfSU5MSU5FIENvbnN1
bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koVCB2YWx1ZSkKK3sKKyNpZiBD
UFUoQVJNKSB8fCBDUFUoQVJNNjQpCisgICAgdWludDMyX3QgZGVwZW5kZW5jeTsKKyAgICB1aW50
MzJfdCBjb3B5ID0gYml0d2lzZV9jYXN0PHVpbnQzMl90Pih2YWx1ZSk7CisgICAgLy8gQ3JlYXRl
IGEgbWFnaWNhbCB6ZXJvIHZhbHVlIHRocm91Z2ggaW5saW5lIGFzc2VtYmx5LCB3aG9zZSBjb21w
dXRhdGlvbgorICAgIC8vIGlzbid0IHZpc2libGUgdG8gdGhlIG9wdGltaXplci4gVGhpcyB6ZXJv
IGlzIHRoZW4gdXNhYmxlIGFzIGFuIG9mZnNldCBpbgorICAgIC8vIGZ1cnRoZXIgYWRkcmVzcyBj
b21wdXRhdGlvbnM6IGFkZGluZyB6ZXJvIGRvZXMgbm90aGluZywgYnV0IHRoZSBjb21waWxlcgor
ICAgIC8vIGRvZXNuJ3Qga25vdyBpdC4gSXQncyBtYWdpY2FsIGJlY2F1c2UgaXQgY3JlYXRlcyBh
biBhZGRyZXNzIGRlcGVuZGVuY3kKKyAgICAvLyBmcm9tIHRoZSBsb2FkIG9mIGBsb2NhdGlvbmAg
dG8gdGhlIHVzZXMgb2YgdGhlIGRlcGVuZGVuY3ksIHdoaWNoIHRyaWdnZXJzCisgICAgLy8gdGhl
IEFSTSBJU0EncyBhZGRyZXNzIGRlcGVuZGVuY3kgcnVsZSwgYS5rLmEuIHRoZSBteXRoaWNhbCBD
KysgY29uc3VtZQorICAgIC8vIG9yZGVyaW5nLiBUaGlzIGZvcmNlcyB3ZWFrIG1lbW9yeSBvcmRl
ciBDUFVzIHRvIG9ic2VydmUgYGxvY2F0aW9uYCBhbmQKKyAgICAvLyBkZXBlbmRlbnQgbG9hZHMg
aW4gdGhlaXIgc3RvcmUgb3JkZXIgd2l0aG91dCB0aGUgcmVhZGVyIHVzaW5nIGEgYmFycmllcgor
ICAgIC8vIG9yIGFuIGFjcXVpcmUgbG9hZC4KKyAgICBhc20gdm9sYXRpbGUoImVvciAlW2RlcGVu
ZGVuY3ldLCAlW2luXSwgJVtpbl0iCisgICAgICAgICAgICAgICAgIDogW2RlcGVuZGVuY3ldICI9
ciIoZGVwZW5kZW5jeSkKKyAgICAgICAgICAgICAgICAgOiBbaW5dICJyIihjb3B5KQorICAgICAg
ICAgICAgICAgICAvLyBMaWUgYWJvdXQgdG91Y2hpbmcgbWVtb3J5LiBOb3Qgc3RyaWN0bHkgbmVl
ZGVkLCBidXQgaXMKKyAgICAgICAgICAgICAgICAgLy8gbGlrZWx5IHRvIGF2b2lkIHVud2FudGVk
IGxvYWQvc3RvcmUgbW90aW9uLgorICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKKyAgICBy
ZXR1cm4gZGVwZW5kZW5jeTsKKyNlbHNlCisgICAgLy8gTm8gZGVwZW5kZW5jeSBpcyBuZWVkZWQg
Zm9yIHRoaXMgYXJjaGl0ZWN0dXJlLgorICAgIGxvYWRMb2FkRmVuY2UoKTsKKyAgICAodm9pZCl2
YWx1ZTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDg+Ojp0eXBlKiA9IG51bGxwdHI+
CitBTFdBWVNfSU5MSU5FIENvbnN1bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVuZGVu
Y3koVCB2YWx1ZSkKK3sKKyAgICB1aW50NjRfdCBjb3B5ID0gYml0d2lzZV9jYXN0PHVpbnQ2NF90
Pih2YWx1ZSk7CisjaWYgQ1BVKEFSTSkgJiYgIUNQVShBUk02NCkKKyAgICAvLyBBMzIgYW5kIFQz
MiBoYXZlIDMyLWJpdCBpbnRlZ2VyIHJlZ2lzdGVycywgcmVxdWlyaW5nIGxvYWRzIGludG8gcGFp
cmVkCisgICAgLy8gcmVnaXN0ZXJzLiBUaGVzZSBsb2FkcyBhcmVuJ3Qgc2luZ2xlLWNvcHkgYXRv
bWljIG9uIGFsbCBBUk0gdmFyaWFudHMKKyAgICAvLyAob25seSBndWFyYW50ZWVkIHdoZW4gTFBB
RSBpcyBwcmVzZW50KS4gV2Ugd2FudCBhIGRlcGVuZGVuY3kgb24gYm90aAorICAgIC8vIGJvdHRv
bSBhbmQgdG9wIGxvYWRlZCB2YWx1ZXMsIHdoaWNoIHdlIGFjaGlldmUgYnkgcGVyZm9ybWluZyBz
b21lCisgICAgLy8gYXJpdGhtZXRpYyBiZXR3ZWVuIGJvdGggdmFsdWVzLCBwcm9kdWNpbmcgYSAz
Mi1iaXQgb3V0cHV0LCBhbmQgZ2VuZXJhdGljCisgICAgLy8gYSBtYWdpY2FsIHplcm8gZnJvbSB0
aGlzIDMyLWJpdCB2YWx1ZS4KKyAgICB1aW50MzJfdCBib3R0b20gPSBjb3B5ICYgMHhGRkZGRkZG
RnUsIHRvcCA9IGNvcHkgPj4gMzI7CisgICAgcmV0dXJuIHplcm9XaXRoQ29uc3VtZURlcGVuZGVu
Y3koYm90dG9tIF4gdG9wKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICB1aW50NjRfdCBkZXBlbmRl
bmN5OworICAgIGFzbSB2b2xhdGlsZSgiZW9yICVbZGVwZW5kZW5jeV0sICVbaW5dLCAlW2luXSIK
KyAgICAgICAgICAgICAgICAgOiBbZGVwZW5kZW5jeV0gIj1yIihkZXBlbmRlbmN5KQorICAgICAg
ICAgICAgICAgICA6IFtpbl0gInIiKGNvcHkpCisgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIp
OworICAgIHJldHVybiBkZXBlbmRlbmN5OworI2Vsc2UKKyAgICBsb2FkTG9hZEZlbmNlKCk7Cisg
ICAgKHZvaWQpY29weTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDI+Ojp0eXBlKiA9
IG51bGxwdHI+CitBTFdBWVNfSU5MSU5FIENvbnN1bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3Vt
ZURlcGVuZGVuY3koVCB2YWx1ZSkKK3sKKyAgICB1aW50MTZfdCBjb3B5ID0gYml0d2lzZV9jYXN0
PHVpbnQxNl90Pih2YWx1ZSk7CisgICAgcmV0dXJuIHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3ko
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb3B5KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzaXplb2YoVCkgPT0gMT46OnR5cGUqID0gbnVsbHB0cj4K
K0FMV0FZU19JTkxJTkUgQ29uc3VtZURlcGVuZGVuY3kgemVyb1dpdGhDb25zdW1lRGVwZW5kZW5j
eShUIHZhbHVlKQoreworICAgIHVpbnQ4X3QgY29weSA9IGJpdHdpc2VfY2FzdDx1aW50OF90Pih2
YWx1ZSk7CisgICAgcmV0dXJuIHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koc3RhdGljX2Nhc3Q8
c2l6ZV90Pihjb3B5KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IENvbnN1
bWVkIHsKKyAgICBUIHZhbHVlOworICAgIENvbnN1bWVEZXBlbmRlbmN5IGRlcGVuZGVuY3k7Cit9
OworCisvLyBDb25zdW1lIGxvYWQsIHJldHVybmluZyB0aGUgbG9hZGVkIGB2YWx1ZWAgYXQgYGxv
Y2F0aW9uYCBhbmQgYSBkZXBlbmRlbnQtemVybworLy8gd2hpY2ggY3JlYXRlcyBhbiBhZGRyZXNz
IGRlcGVuZGVuY3kgZnJvbSB0aGUgYGxvY2F0aW9uYC4KKy8vCisvLyBVc2FnZSBub3RlczoKKy8v
CisvLyAgKiBSZWdhcmRpbmcgY29udHJvbCBkZXBlbmRlbmNpZXM6IG1lcmVseSBicmFuY2hpbmcg
YmFzZWQgb24gYHZhbHVlYCBvcgorLy8gICAgYGRlcGVuZGVuY3lgIGlzbid0IHN1ZmZpY2llbnQg
dG8gaW1wb3NlIGEgZGVwZW5kZW5jeSBvcmRlcmluZzogeW91IG11c3QKKy8vICAgIHVzZSBgZGVw
ZW5kZW5jeWAgaW4gdGhlIGFkZHJlc3MgY29tcHV0YXRpb24gb2Ygc3Vic2VxdWVudCBsb2FkcyB3
aGljaAorLy8gICAgc2hvdWxkIG9ic2VydmUgdGhlIHN0b3JlIG9yZGVyIHcuci50LiBgbG9jYXRp
b25gLgorLy8gKiBSZWdhcmRpbmcgbWVtb3J5IG9yZGVyaW5nOiBjb25zdW1lIGxvYWQgb3JkZXJz
IHRoZSBgbG9jYXRpb25gIGxvYWQgd2l0aAorLy8gICBzdXNlcXVlbnQgZGVwZW5kZW50IGxvYWRz
ICpvbmx5Ki4gSXQgc2F5cyBub3RoaW5nIGFib3V0IG9yZGVyaW5nIG9mIG90aGVyCisvLyAgIGxv
YWRzIQorLy8KKy8vIENhdmVhdCBlbXB0b3IuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0FMV0FZ
U19JTkxJTkUgYXV0byBjb25zdW1lTG9hZChjb25zdCBUKiBsb2NhdGlvbikKK3sKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlIFJldHVybmVkOworICAgIENvbnN1
bWVkPFJldHVybmVkPiByZXQgeyB9OworICAgIC8vIEZvcmNlIHRoZSByZWFkIG9mIGBsb2NhdGlv
bmAgdG8gb2NjdXIgZXhhY3RseSBvbmNlIGFuZCB3aXRob3V0IGZ1c2luZyBvcgorICAgIC8vIGZv
cndhcmRpbmcgdXNpbmcgdm9sYXRpbGUuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGNv
bXBpbGVyIGNvdWxkCisgICAgLy8gb3RoZXJ3aXNlIHJlbWF0ZXJpYWxpemUgb3IgZmluZCBlcXVp
dmFsZW50IGxvYWRzLCBvciBzaW1wbHkgZm9yd2FyZCBmcm9tCisgICAgLy8gYSBwcmV2aW91cyBv
bmUsIGFuZCBsb3NlIHRoZSBkZXBlbmRlbmN5IHdlJ3JlIHRyeWluZyBzbyBoYXJkIHRvCisgICAg
Ly8gY3JlYXRlLiBQcmV2ZW50IHRlYXJpbmcgYnkgdXNpbmcgYW4gYXRvbWljLCBidXQgbGV0IGl0
IG1vdmUgYXJvdW5kIGJ5CisgICAgLy8gdXNpbmcgcmVsYXhlZC4gV2UgaGF2ZSBhdCBsZWFzdCBh
IG1lbW9yeSBmZW5jZSBhZnRlciB0aGlzIHdoaWNoIHByZXZlbnRzCisgICAgLy8gdGhlIGxvYWQg
ZnJvbSBtb3ZpbmcgdG9vIG11Y2guCisgICAgcmV0LnZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB2b2xhdGlsZSBzdGQ6OmF0b21pYzxSZXR1cm5lZD4qPihsb2NhdGlvbiktPmxvYWQoc3Rk
OjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgICAgcmV0LmRlcGVuZGVuY3kgPSB6ZXJvV2l0aENv
bnN1bWVEZXBlbmRlbmN5KHJldC52YWx1ZSk7CisgICAgcmV0dXJuIHJldDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6QXRvbWljOwordXNpbmcgV1RGOjpDb25zdW1lRGVw
ZW5kZW5jeTsKK3VzaW5nIFdURjo6Y29uc3VtZUxvYWQ7CiAKICNlbmRpZiAvLyBBdG9taWNzX2gK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxODlk
ODBlLi5mZTgwYTI1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDktMjYgIEpGIEJhc3RpZW4gIDxqZmJhc3Rp
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwZWVkIHVwIEhlYXA6OmlzTWFya2VkQ29uY3VycmVu
dGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIw
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ29uc3VtZS5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdENvbnN1bWUp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTYtMDktMjYgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBJT1NfVEVYVF9BVVRP
U0laSU5HIHRvIFRFWFRfQVVUT1NJWklORwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5k
ZXggMmRhNGM4ZC4uZmEzODMxNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC00
Miw2ICs0Miw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0c0NvbnRyb2xsZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L0F0b21pY1N0cmluZy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQmxv
b21GaWx0ZXIuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbnN1bWUu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ1N0cmluZy5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25z
LmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhN2JjNjNkLi5jOTBlYmI2IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTA1Miw2ICsxMDUyLDcgQEAKIAkJQTVFMjAyNzAxNUIyMTgw
NjAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNUUyMDI3MjE1QjIxODE5MDBDMTNFMTQgLyogV2luZG93
bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNrZWRBcml0aG1ldGlj
T3BlcmF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGVj
a2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBRENFQkJBNTFEOTlENENGMDAyRTI4M0EgLyogQ29uc3VtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjQwMzlGOUMxNUU2RDhCMzAwNzI1NUQ2IC8qIE1hdGhFeHRyYXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aEV4dHJhcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1NUFEMUQxMTc5RjMzNjYwMEFDMTQ5NCAvKiBQcmV2ZW50
SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFByZXZl
bnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tOyBwYXRoID0gV2ViS2l0Mk9iakMvUHJldmVu
dEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUI1NUFEMUQzMTc5RjNBQkYwMEFDMTQ5NCAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9S
ZXNpemluZ19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdfQnVuZGxlLmNwcDsgcGF0aCA9IFdlYktp
dDJPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1bmRsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzE4LDYgKzE3MTksNyBAQAogCQlCQzkwOTY0NjEy
NTU2MTg5MDAwODM3NTYgLyogV1RGICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlBRENFQkJBNTFEOTlENENGMDAyRTI4M0EgLyogQ29uc3VtZS5jcHAgKi8s
CiAJCQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5OEYyIC8qIGNmICovLAogCQkJCTdDQkJBMDc1MTlC
QjhBMDkwMEJCRjAyNSAvKiBkYXJ3aW4gKi8sCiAJCQkJQkMwMjlCMUExNDg2QjIzODAwODE3REE5
IC8qIG5zICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29u
c3VtZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGQwMjJiCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3VtZS5jcHAKQEAgLTAsMCArMSwx
MzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHRo
cmVhZD4KKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorTkVWRVJfSU5MSU5FIGF1dG8gdGVzdENv
bnN1bWUoY29uc3QgVCogbG9jYXRpb24pIHsKKyAgV1RGOjpjb21waWxlckZlbmNlKCk7IC8vIFBh
cmFub2lkIHRlc3RpbmcuCisgIGF1dG8gcmV0ID0gV1RGOjpjb25zdW1lTG9hZChsb2NhdGlvbik7
CisgIFdURjo6Y29tcGlsZXJGZW5jZSgpOyAvLyBQYXJhbm9pZCB0ZXN0aW5nLgorICByZXR1cm4g
cmV0OworfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGLCBDb25zdW1l
aTgpCit7CisgICAgdWludDhfdCBpOCA9IDQyOworICAgIGF1dG8gaThfY29uc3VtZWQgPSB0ZXN0
Q29uc3VtZSgmaTgpOworICAgIEFTU0VSVF9FUShpOF9jb25zdW1lZC52YWx1ZSwgNDJ1KTsKKyAg
ICBBU1NFUlRfRVEoaThfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwg
Q29uc3VtZWkxNikKK3sKKyAgICB1aW50MTZfdCBpMTYgPSA0MjsKKyAgICBhdXRvIGkxNl9jb25z
dW1lZCA9IHRlc3RDb25zdW1lKCZpMTYpOworICAgIEFTU0VSVF9FUShpMTZfY29uc3VtZWQudmFs
dWUsIDQydSk7CisgICAgQVNTRVJUX0VRKGkxNl9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7Cit9
CisKK1RFU1QoV1RGLCBDb25zdW1laTMyKQoreworICAgIHVpbnQzMl90IGkzMiA9IDQyOworICAg
IGF1dG8gaTMyX2NvbnN1bWVkID0gdGVzdENvbnN1bWUoJmkzMik7CisgICAgQVNTRVJUX0VRKGkz
Ml9jb25zdW1lZC52YWx1ZSwgNDJ1KTsKKyAgICBBU1NFUlRfRVEoaTMyX2NvbnN1bWVkLmRlcGVu
ZGVuY3ksIDB1KTsKK30KKworVEVTVChXVEYsIENvbnN1bWVpNjQpCit7CisgICAgdWludDY0X3Qg
aTY0ID0gNDI7CisgICAgYXV0byBpNjRfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmaTY0KTsKKyAg
ICBBU1NFUlRfRVEoaTY0X2NvbnN1bWVkLnZhbHVlLCA0MnUpOworICAgIEFTU0VSVF9FUShpNjRf
Y29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29uc3VtZWYzMikKK3sK
KyAgICBmbG9hdCBmMzIgPSA0Mi5mOworICAgIGF1dG8gZjMyX2NvbnN1bWVkID0gdGVzdENvbnN1
bWUoJmYzMik7CisgICAgQVNTRVJUX0VRKGYzMl9jb25zdW1lZC52YWx1ZSwgNDIuZik7CisgICAg
QVNTRVJUX0VRKGYzMl9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBD
b25zdW1lZjY0KQoreworICAgIGRvdWJsZSBmNjQgPSA0Mi47CisgICAgYXV0byBmNjRfY29uc3Vt
ZWQgPSB0ZXN0Q29uc3VtZSgmZjY0KTsKKyAgICBBU1NFUlRfRVEoZjY0X2NvbnN1bWVkLnZhbHVl
LCA0Mi4pOworICAgIEFTU0VSVF9FUShmNjRfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQor
CitURVNUKFdURiwgQ29uc3VtZVB0cikKK3sKKyAgICBhdXRvKiBwdHIgPSAmbWFpbjsKKyAgICBh
dXRvIHB0cl9jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZwdHIpOworICAgIEFTU0VSVF9FUShwdHJf
Y29uc3VtZWQudmFsdWUsICZtYWluKTsKKyAgICBBU1NFUlRfRVEocHRyX2NvbnN1bWVkLmRlcGVu
ZGVuY3ksIDB1KTsKK30KKworVEVTVChXVEYsIENvbnN1bWVDaGFyUHRyKQoreworICAgIGNoYXIq
IGhlbGxvID0gbnVsbHB0cjsKKyAgICBhdXRvKiBzdGFjayA9ICZoZWxsbzsKKyAgICBhdXRvIHN0
YWNrX2NvbnN1bWVkID0gdGVzdENvbnN1bWUoJnN0YWNrKTsKKyAgICBBU1NFUlRfRVEoc3RhY2tf
Y29uc3VtZWQudmFsdWUsICZoZWxsbyk7CisgICAgQVNTRVJUX0VRKHN0YWNrX2NvbnN1bWVkLmRl
cGVuZGVuY3ksIDB1KTsKK30KKworVEVTVChXVEYsIENvbnN1bWVXaXRoVGhyZWFkKQoreworICAg
IGJvb2wgcmVhZHkgPSBmYWxzZTsKKyAgICBjb25zdGV4cHIgc2l6ZV90IG51bSA9IDEwMjQ7Cisg
ICAgdWludDMyX3QqIHZlYyA9IG5ldyB1aW50MzJfdFtudW1dOworICAgIHN0ZDo6dGhyZWFkIHQo
WyZdICgpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG51bTsgKytpKQor
ICAgICAgICAgICAgICAgIHZlY1tpXSA9IGkgKiAyOworICAgICAgICAgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsKKyAgICAgICAgICAgIHJlYWR5ID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAg
ZG8geworICAgICAgICBhdXRvIHN0YWNrX2NvbnN1bWVkID0gdGVzdENvbnN1bWUoJnJlYWR5KTsK
KyAgICAgICAgaWYgKHN0YWNrX2NvbnN1bWVkLnZhbHVlKSB7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSAhPSBudW07ICsraSkKKyAgICAgICAgICAgICAgICBBU1NFUlRfRVEodmVj
W2kgKyBzdGFja19jb25zdW1lZC5kZXBlbmRlbmN5XSwgaSAqIDIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9IHdoaWxlICh0cnVlKTsKKyAgICB0LmpvaW4oKTsKKyAgICBk
ZWxldGVbXSB2ZWM7Cit9CisKK30KLS0gCjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289888</attachid>
            <date>2016-09-26 16:27:00 -0700</date>
            <delta_ts>2016-09-26 16:39:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>19454</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA1NjAzODI1YWM3MDRmMTVkY2UzZWE1ZTUzMzk5YjAyNzc5YzFhMmI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggICAg
ICAgICAgIHwgIDI0ICsrKy0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDQ0ICsrKysrKysKIFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKwogVG9vbHMvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKysrCiBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICB8ICAgMSArCiAu
Li4vVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgICB8ICAgMiAr
CiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNwcCAgICAgICAgICB8IDEy
OSArKysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMzM0IGluc2VydGlvbnMo
KyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ29uc3VtZS5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzZjli
MDhiLi42OTRiZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNi0wOS0yNiAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3BlZWQgdXAgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjA5NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkIHVwIGlzTWFya2VkQ29uY3VycmVudGx5
IGJ5IHVzaW5nIFdURjo6Y29uc3VtZUxvYWQuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2Nr
Lmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmFyZU1hcmtzU3RhbGVXaXRoRGVwZW5kZW5jeSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZENvbmN1cnJlbnRseSk6IGRvIGF3YXkgd2l0aCB0
aGUgbG9hZC1sb2FkIGZlbmNlCisKIDIwMTYtMDktMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gT3B0aW9uIHRvIGRpc2FibGUgdGhlIENv
ZGVDYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggZGQ5
ZTg0NC4uYTY0NjlmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CkBAIC0yNjksOSArMjY5LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKICAg
ICAgICAgCiAgICAgV2Vha1NldCYgd2Vha1NldCgpOwotICAgIAotICAgIGJvb2wgYXJlTWFya3NT
dGFsZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7CisKICAgICBib29sIGFyZU1hcmtzU3Rh
bGUoKTsKKyAgICBib29sIGFyZU1hcmtzU3RhbGUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24p
OworICAgIHN0cnVjdCBNYXJrc1dpdGhEZXBlbmRlbmN5IHsKKyAgICAgICAgYm9vbCBhcmVTdGFs
ZTsKKyAgICAgICAgQ29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeTsKKyAgICB9OworICAgIE1h
cmtzV2l0aERlcGVuZGVuY3kgYXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uKTsKICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uKTsKICAgICAgICAgCkBAIC00NzQsNiArNDc5LDE1IEBAIGlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9u
KQogICAgIHJldHVybiBtYXJraW5nVmVyc2lvbiAhPSBtX21hcmtpbmdWZXJzaW9uOwogfQogCitB
TFdBWVNfSU5MSU5FIE1hcmtlZEJsb2NrOjpNYXJrc1dpdGhEZXBlbmRlbmN5IE1hcmtlZEJsb2Nr
OjphcmVNYXJrc1N0YWxlV2l0aERlcGVuZGVuY3koSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24p
Cit7CisgICAgYXV0byBjb25zdW1lZCA9IGNvbnN1bWVMb2FkKCZtX21hcmtpbmdWZXJzaW9uKTsK
KyAgICBNYXJrc1dpdGhEZXBlbmRlbmN5IHJldDsKKyAgICByZXQuYXJlU3RhbGUgPSBjb25zdW1l
ZC52YWx1ZSAhPSBtYXJraW5nVmVyc2lvbjsKKyAgICByZXQuZGVwZW5kZW5jeSA9IGNvbnN1bWVk
LmRlcGVuZGVuY3k7CisgICAgcmV0dXJuIHJldDsKK30KKwogaW5saW5lIHZvaWQgTWFya2VkQmxv
Y2s6OmFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQogewogICAgIGlmIChV
TkxJS0VMWShhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkpCkBAIC00OTksMTAgKzUxMywx
MCBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoSGVhcFZlcnNpb24gbWFya2lu
Z1ZlcnNpb24sIGNvbnN0IHZvaWQqIHApCiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01h
cmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9pZCog
cCkKIHsKLSAgICBpZiAoYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpCisgICAgYXV0byBt
YXJrc1dpdGhEZXBlbmRlbmN5ID0gYXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KG1hcmtpbmdW
ZXJzaW9uKTsKKyAgICBpZiAobWFya3NXaXRoRGVwZW5kZW5jeS5hcmVTdGFsZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwotICAgIHJldHVybiBtX21h
cmtzLmdldChhdG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJl
cihwKSArIG1hcmtzV2l0aERlcGVuZGVuY3kuZGVwZW5kZW5jeSk7CiB9CiAKIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjp0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqIHApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc2ZmMw
NGIuLjkwZWQzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTYtMDktMjYgIEpGIEJhc3RpZW4g
IDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwZWVkIHVwIEhlYXA6OmlzTWFya2Vk
Q29uY3VycmVudGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSBoYWQgYSBsb2FkLWxvYWQgZmVuY2Ugd2hp
Y2ggaXMgZXhwZW5zaXZlIG9uIHdlYWsgbWVtb3J5IElTQXMgc3VjaCBhcyBBUk0uCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBmYWlybHkgcGVyZi1uZXV0cmFsIG92ZXJhbGwsIGJ1dCB0aGUgR0Mn
cyBpbnN0cnVtZW50YXRpb24gcmVwb3J0czoKKyAgICAgICAgICBHQzpFZGVuIGlzIDkzJSBhdmVy
YWdlIHJ1bnRpbWUgYWZ0ZXIgY2hhbmdlCisgICAgICAgICAgR0M6RnVsbCBpcyA3NiUgYXZlcmFn
ZSBydW50aW1lIGFmdGVyIGNoYW5nZQorCisgICAgICAgIFRoZSBmZW5jZSB3YXMgdGhlcmUgYmVj
YXVzZToKKyAgICAgICAgIDEuIElmIHRoZSByZWFkIG9mIG1fbWFya2luZ1ZlcnNpb24gaW4gTWFy
a2VkQmxvY2s6OmFyZU1hcmtzU3RhbGUgaXNuJ3Qgd2hhdCdzIGV4cGVjdGVkIHRoZW47CisgICAg
ICAgICAyLiBUaGUgcmVhZCBvZiBtX21hcmtzIGluIE1hcmtlZEJsb2NrOjppc01hcmtlZCBuZWVk
cyB0byBvYnNlcnZlIHRoZSB2YWx1ZSB0aGF0IHdhcyBzdG9yZWQgKmJlZm9yZSogbV9tYXJraW5n
VmVyc2lvbiB3YXMgc3RvcmVkLgorCisgICAgICAgIFRoaXMgb3JkZXJpbmcgaXNuJ3QgZ3VhcmFu
dGVlZCBvbiBBUk0sIHdoaWNoIGhhcyBhIHdlYWsgbWVtb3J5IG1vZGVsLgorCisgICAgICAgIFRo
ZXJlIGFyZSAzIHdheXMgdG8gZ3VhcmFudGVlIHRoaXMgb3JkZXJpbmc6CisgICAgICAgICBBLiBV
c2UgYSBiYXJyaWVyIGluc3RydWN0aW9uLgorICAgICAgICAgQi4gVXNlIGEgbG9hZC1hY3F1aXJl
IChuZXcgaW4gQVJNdjgpLgorICAgICAgICAgQy4gdXNlIEFSTSdzIGFkZHJlc3MgZGVwZW5kZW5j
eSBydWxlLCB3aGljaCBDKysgY2FsbHMgbWVtb3J5X29yZGVyX2NvbnN1bWUuCisKKyAgICAgICAg
SW4gZ2VuZXJhbDoKKyAgICAgICAgIEEuIGlzIHNsb3cgYnV0IG9yZGVycyBhbGwgb2YgbWVtb3J5
IGluIGFuIGludHVpdGl2ZSBtYW5uZXIuCisgICAgICAgICBCLiBpcyBmYXN0ZXItaXNoIGFuZCBo
YXMgdGhlIHNhbWUgcHJvcGVydHktaXNoLgorICAgICAgICAgQy4gc2hvdWxkIGJlIGZhc3RlciBz
dGlsbCwgYnV0ICpvbmx5IG9yZGVycyBkZXBlbmRlbnQgbG9hZHMqLiBUaGlzIGxhc3QgcGFydCBp
cyBjcml0aWNhbCEgQ29uc3VtZSBpc24ndCBhbiBhbGwtb3V0IHJlcGxhY2VtZW50IGZvciBhY3F1
aXJlIChhY3F1aXJlIGlzIHJhdGhlciBhIHN1cGVyc2V0IG9mIGNvbnN1bWUpLgorCisgICAgICAg
IEFSTSBleHBsYWlucyB0aGUgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUgaW4gdGhlaXIgZG9jdW1l
bnQgImJhcnJpZXIgbGl0bXVzIHRlc3RzIGFuZCBjb29rYm9vayI6CisKKyAgICAgICAgPiAqUmVz
b2x2aW5nIGJ5IHRoZSB1c2Ugb2YgYmFycmllcnMgYW5kIGFkZHJlc3MgZGVwZW5kZW5jeSoKKyAg
ICAgICAgPgorICAgICAgICA+IFRoZXJlIGlzIGEgcnVsZSB3aXRoaW4gdGhlIEFSTSBhcmNoaXRl
Y3R1cmUgdGhhdDoKKyAgICAgICAgPiBXaGVyZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYSByZWFk
IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIGEgc3Vic2VxdWVudCBy
ZWFkIG9yIHdyaXRlICh0aGlzIGlzIGtub3duIGFzIGFuIGFkZHJlc3MgZGVwZW5kZW5jeSksIHRo
ZW4gdGhlc2UgdHdvIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGJlIG9ic2VydmVkIGluIHByb2dyYW0g
b3JkZXIuIEFuIGFkZHJlc3MgZGVwZW5kZW5jeSBleGlzdHMgZXZlbiBpZiB0aGUgdmFsdWUgcmVh
ZCBieSB0aGUgZmlyc3QgcmVhZCBoYXMgbm8gZWZmZWN0IGluIGNoYW5naW5nIHRoZSB2aXJ0dWFs
IGFkZHJlc3MgKGFzIG1pZ2h0IGJlIHRoZSBjYXNlIGlmIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBt
YXNrZWQgb2ZmIGJlZm9yZSBpdCBpcyB1c2VkLCBvciBpZiBpdCBoYWQgbm8gZWZmZWN0IG9uIGNo
YW5naW5nIGEgcHJlZGljdGVkIGFkZHJlc3MgdmFsdWUpLgorICAgICAgICA+IFRoaXMgcmVzdHJp
Y3Rpb24gYXBwbGllcyBvbmx5IHdoZW4gdGhlIGRhdGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBvbmUg
cmVhZCBpcyB1c2VkIGFzIGEgZGF0YSB2YWx1ZSB0byBjYWxjdWxhdGUgdGhlIGFkZHJlc3Mgb2Yg
YSBzdWJzZXF1ZW50IHJlYWQgb3Igd3JpdGUuIFRoaXMgZG9lcyBub3QgYXBwbHkgaWYgdGhlIGRh
dGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBvbmUgcmVhZCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUg
Y29uZGl0aW9uIGNvZGUgZmxhZ3MsIGFuZCB0aGUgdmFsdWVzIG9mIHRoZSBmbGFncyBhcmUgdXNl
ZCBmb3IgY29uZGl0aW9uIGNvZGUgZXZhbHVhdGlvbiB0byBkZXRlcm1pbmUgdGhlIGFkZHJlc3Mg
b2YgYSBzdWJzZXF1ZW50IHJlYWRzLCBlaXRoZXIgdGhyb3VnaCBjb25kaXRpb25hbCBleGVjdXRp
b24gb3IgdGhlIGV2YWx1YXRpb24gb2YgYSBicmFuY2guIFRoaXMgaXMga25vd24gYXMgYSBjb250
cm9sIGRlcGVuZGVuY3kuCisgICAgICAgID4gV2hlcmUgYm90aCBhIGNvbnRyb2wgYW5kIGFkZHJl
c3MgZGVwZW5kZW5jeSBleGlzdCwgdGhlIG9yZGVyaW5nIGJlaGF2aW91ciBpcyBjb25zaXN0ZW50
IHdpdGggdGhlIGFkZHJlc3MgZGVwZW5kZW5jeS4KKworICAgICAgICBDKysncyBtZW1vcnlfb3Jk
ZXJfY29uc3VtZSBpcyB1bmZvcnR1bmF0ZWx5IHVuaW1wbGVtZW50ZWQgYnkgQysrIGNvbXBpbGVy
cywgYW5kIG1heWJlIHVuaW1wbGVtZW50YWJsZSBhcyBzcGVjJ2QuIEknbSB3b3JraW5nIHdpdGgg
aW50ZXJlc3RlZCBmb2xrcyBpbiB0aGUgY29tbWl0dGVlIHRvIGZpeCB0aGlzIHNpdHVhdGlvbjog
aHR0cDovL3dnMjEubGluay9wMDE5MHIyCisKKyAgICAgICAgKiB3dGYvQXRvbWljcy5oOgorICAg
ICAgICAoV1RGOjp6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KTogYSAwIHdoaWNoIGNhcnJpZXMg
YSBkZXBlbmRlbmN5CisgICAgICAgIChXVEY6OmNvbnN1bWVMb2FkKTogcGl4aWUgbWFnaWMKKwog
MjAxNi0wOS0yNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
UmVuYW1lIElPU19URVhUX0FVVE9TSVpJTkcgdG8gVEVYVF9BVVRPU0laSU5HCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmggYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKaW5k
ZXggZTQ2YTRiYS4uMTc2MWQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXRvbWljcy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaApAQCAtMjAyLDggKzIwMiwxMjAgQEAgaW5s
aW5lIHZvaWQgbWVtb3J5QmFycmllckJlZm9yZVVubG9jaygpIHsgc3RkOjphdG9taWNfdGhyZWFk
X2ZlbmNlKHN0ZDo6bWVtb3J5X28KIAogI2VuZGlmCiAKK3R5cGVkZWYgc2l6ZV90IENvbnN1bWVE
ZXBlbmRlbmN5OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c2l6ZW9mKFQpID09IDQ+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdBWVNfSU5MSU5FIENvbnN1
bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koVCB2YWx1ZSkKK3sKKyNpZiBD
UFUoQVJNKSB8fCBDUFUoQVJNNjQpCisgICAgdWludDMyX3QgZGVwZW5kZW5jeTsKKyAgICB1aW50
MzJfdCBjb3B5ID0gYml0d2lzZV9jYXN0PHVpbnQzMl90Pih2YWx1ZSk7CisgICAgLy8gQ3JlYXRl
IGEgbWFnaWNhbCB6ZXJvIHZhbHVlIHRocm91Z2ggaW5saW5lIGFzc2VtYmx5LCB3aG9zZSBjb21w
dXRhdGlvbgorICAgIC8vIGlzbid0IHZpc2libGUgdG8gdGhlIG9wdGltaXplci4gVGhpcyB6ZXJv
IGlzIHRoZW4gdXNhYmxlIGFzIGFuIG9mZnNldCBpbgorICAgIC8vIGZ1cnRoZXIgYWRkcmVzcyBj
b21wdXRhdGlvbnM6IGFkZGluZyB6ZXJvIGRvZXMgbm90aGluZywgYnV0IHRoZSBjb21waWxlcgor
ICAgIC8vIGRvZXNuJ3Qga25vdyBpdC4gSXQncyBtYWdpY2FsIGJlY2F1c2UgaXQgY3JlYXRlcyBh
biBhZGRyZXNzIGRlcGVuZGVuY3kKKyAgICAvLyBmcm9tIHRoZSBsb2FkIG9mIGBsb2NhdGlvbmAg
dG8gdGhlIHVzZXMgb2YgdGhlIGRlcGVuZGVuY3ksIHdoaWNoIHRyaWdnZXJzCisgICAgLy8gdGhl
IEFSTSBJU0EncyBhZGRyZXNzIGRlcGVuZGVuY3kgcnVsZSwgYS5rLmEuIHRoZSBteXRoaWNhbCBD
KysgY29uc3VtZQorICAgIC8vIG9yZGVyaW5nLiBUaGlzIGZvcmNlcyB3ZWFrIG1lbW9yeSBvcmRl
ciBDUFVzIHRvIG9ic2VydmUgYGxvY2F0aW9uYCBhbmQKKyAgICAvLyBkZXBlbmRlbnQgbG9hZHMg
aW4gdGhlaXIgc3RvcmUgb3JkZXIgd2l0aG91dCB0aGUgcmVhZGVyIHVzaW5nIGEgYmFycmllcgor
ICAgIC8vIG9yIGFuIGFjcXVpcmUgbG9hZC4KKyAgICBhc20gdm9sYXRpbGUoImVvciAlW2RlcGVu
ZGVuY3ldLCAlW2luXSwgJVtpbl0iCisgICAgICAgICAgICAgICAgIDogW2RlcGVuZGVuY3ldICI9
ciIoZGVwZW5kZW5jeSkKKyAgICAgICAgICAgICAgICAgOiBbaW5dICJyIihjb3B5KQorICAgICAg
ICAgICAgICAgICAvLyBMaWUgYWJvdXQgdG91Y2hpbmcgbWVtb3J5LiBOb3Qgc3RyaWN0bHkgbmVl
ZGVkLCBidXQgaXMKKyAgICAgICAgICAgICAgICAgLy8gbGlrZWx5IHRvIGF2b2lkIHVud2FudGVk
IGxvYWQvc3RvcmUgbW90aW9uLgorICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKKyAgICBy
ZXR1cm4gZGVwZW5kZW5jeTsKKyNlbHNlCisgICAgLy8gTm8gZGVwZW5kZW5jeSBpcyBuZWVkZWQg
Zm9yIHRoaXMgYXJjaGl0ZWN0dXJlLgorICAgIGxvYWRMb2FkRmVuY2UoKTsKKyAgICAodm9pZCl2
YWx1ZTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDg+Ojp0eXBlKiA9IG51bGxwdHI+
CitBTFdBWVNfSU5MSU5FIENvbnN1bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVuZGVu
Y3koVCB2YWx1ZSkKK3sKKyAgICB1aW50NjRfdCBjb3B5ID0gYml0d2lzZV9jYXN0PHVpbnQ2NF90
Pih2YWx1ZSk7CisjaWYgQ1BVKEFSTSkgJiYgIUNQVShBUk02NCkKKyAgICAvLyBBMzIgYW5kIFQz
MiBoYXZlIDMyLWJpdCBpbnRlZ2VyIHJlZ2lzdGVycywgcmVxdWlyaW5nIGxvYWRzIGludG8gcGFp
cmVkCisgICAgLy8gcmVnaXN0ZXJzLiBUaGVzZSBsb2FkcyBhcmVuJ3Qgc2luZ2xlLWNvcHkgYXRv
bWljIG9uIGFsbCBBUk0gdmFyaWFudHMKKyAgICAvLyAob25seSBndWFyYW50ZWVkIHdoZW4gTFBB
RSBpcyBwcmVzZW50KS4gV2Ugd2FudCBhIGRlcGVuZGVuY3kgb24gYm90aAorICAgIC8vIGJvdHRv
bSBhbmQgdG9wIGxvYWRlZCB2YWx1ZXMsIHdoaWNoIHdlIGFjaGlldmUgYnkgcGVyZm9ybWluZyBz
b21lCisgICAgLy8gYXJpdGhtZXRpYyBiZXR3ZWVuIGJvdGggdmFsdWVzLCBwcm9kdWNpbmcgYSAz
Mi1iaXQgb3V0cHV0LCBhbmQgZ2VuZXJhdGljCisgICAgLy8gYSBtYWdpY2FsIHplcm8gZnJvbSB0
aGlzIDMyLWJpdCB2YWx1ZS4KKyAgICB1aW50MzJfdCBib3R0b20gPSBjb3B5ICYgMHhGRkZGRkZG
RnUsIHRvcCA9IGNvcHkgPj4gMzI7CisgICAgcmV0dXJuIHplcm9XaXRoQ29uc3VtZURlcGVuZGVu
Y3koYm90dG9tIF4gdG9wKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICB1aW50NjRfdCBkZXBlbmRl
bmN5OworICAgIGFzbSB2b2xhdGlsZSgiZW9yICVbZGVwZW5kZW5jeV0sICVbaW5dLCAlW2luXSIK
KyAgICAgICAgICAgICAgICAgOiBbZGVwZW5kZW5jeV0gIj1yIihkZXBlbmRlbmN5KQorICAgICAg
ICAgICAgICAgICA6IFtpbl0gInIiKGNvcHkpCisgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIp
OworICAgIHJldHVybiBkZXBlbmRlbmN5OworI2Vsc2UKKyAgICBsb2FkTG9hZEZlbmNlKCk7Cisg
ICAgKHZvaWQpY29weTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDI+Ojp0eXBlKiA9
IG51bGxwdHI+CitBTFdBWVNfSU5MSU5FIENvbnN1bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3Vt
ZURlcGVuZGVuY3koVCB2YWx1ZSkKK3sKKyAgICB1aW50MTZfdCBjb3B5ID0gYml0d2lzZV9jYXN0
PHVpbnQxNl90Pih2YWx1ZSk7CisgICAgcmV0dXJuIHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3ko
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb3B5KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzaXplb2YoVCkgPT0gMT46OnR5cGUqID0gbnVsbHB0cj4K
K0FMV0FZU19JTkxJTkUgQ29uc3VtZURlcGVuZGVuY3kgemVyb1dpdGhDb25zdW1lRGVwZW5kZW5j
eShUIHZhbHVlKQoreworICAgIHVpbnQ4X3QgY29weSA9IGJpdHdpc2VfY2FzdDx1aW50OF90Pih2
YWx1ZSk7CisgICAgcmV0dXJuIHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koc3RhdGljX2Nhc3Q8
c2l6ZV90Pihjb3B5KSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IENvbnN1
bWVkIHsKKyAgICBUIHZhbHVlOworICAgIENvbnN1bWVEZXBlbmRlbmN5IGRlcGVuZGVuY3k7Cit9
OworCisvLyBDb25zdW1lIGxvYWQsIHJldHVybmluZyB0aGUgbG9hZGVkIGB2YWx1ZWAgYXQgYGxv
Y2F0aW9uYCBhbmQgYSBkZXBlbmRlbnQtemVybworLy8gd2hpY2ggY3JlYXRlcyBhbiBhZGRyZXNz
IGRlcGVuZGVuY3kgZnJvbSB0aGUgYGxvY2F0aW9uYC4KKy8vCisvLyBVc2FnZSBub3RlczoKKy8v
CisvLyAgKiBSZWdhcmRpbmcgY29udHJvbCBkZXBlbmRlbmNpZXM6IG1lcmVseSBicmFuY2hpbmcg
YmFzZWQgb24gYHZhbHVlYCBvcgorLy8gICAgYGRlcGVuZGVuY3lgIGlzbid0IHN1ZmZpY2llbnQg
dG8gaW1wb3NlIGEgZGVwZW5kZW5jeSBvcmRlcmluZzogeW91IG11c3QKKy8vICAgIHVzZSBgZGVw
ZW5kZW5jeWAgaW4gdGhlIGFkZHJlc3MgY29tcHV0YXRpb24gb2Ygc3Vic2VxdWVudCBsb2FkcyB3
aGljaAorLy8gICAgc2hvdWxkIG9ic2VydmUgdGhlIHN0b3JlIG9yZGVyIHcuci50LiBgbG9jYXRp
b25gLgorLy8gKiBSZWdhcmRpbmcgbWVtb3J5IG9yZGVyaW5nOiBjb25zdW1lIGxvYWQgb3JkZXJz
IHRoZSBgbG9jYXRpb25gIGxvYWQgd2l0aAorLy8gICBzdXNlcXVlbnQgZGVwZW5kZW50IGxvYWRz
ICpvbmx5Ki4gSXQgc2F5cyBub3RoaW5nIGFib3V0IG9yZGVyaW5nIG9mIG90aGVyCisvLyAgIGxv
YWRzIQorLy8KKy8vIENhdmVhdCBlbXB0b3IuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0FMV0FZ
U19JTkxJTkUgYXV0byBjb25zdW1lTG9hZChjb25zdCBUKiBsb2NhdGlvbikKK3sKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlIFJldHVybmVkOworICAgIENvbnN1
bWVkPFJldHVybmVkPiByZXQgeyB9OworICAgIC8vIEZvcmNlIHRoZSByZWFkIG9mIGBsb2NhdGlv
bmAgdG8gb2NjdXIgZXhhY3RseSBvbmNlIGFuZCB3aXRob3V0IGZ1c2luZyBvcgorICAgIC8vIGZv
cndhcmRpbmcgdXNpbmcgdm9sYXRpbGUuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGNv
bXBpbGVyIGNvdWxkCisgICAgLy8gb3RoZXJ3aXNlIHJlbWF0ZXJpYWxpemUgb3IgZmluZCBlcXVp
dmFsZW50IGxvYWRzLCBvciBzaW1wbHkgZm9yd2FyZCBmcm9tCisgICAgLy8gYSBwcmV2aW91cyBv
bmUsIGFuZCBsb3NlIHRoZSBkZXBlbmRlbmN5IHdlJ3JlIHRyeWluZyBzbyBoYXJkIHRvCisgICAg
Ly8gY3JlYXRlLiBQcmV2ZW50IHRlYXJpbmcgYnkgdXNpbmcgYW4gYXRvbWljLCBidXQgbGV0IGl0
IG1vdmUgYXJvdW5kIGJ5CisgICAgLy8gdXNpbmcgcmVsYXhlZC4gV2UgaGF2ZSBhdCBsZWFzdCBh
IG1lbW9yeSBmZW5jZSBhZnRlciB0aGlzIHdoaWNoIHByZXZlbnRzCisgICAgLy8gdGhlIGxvYWQg
ZnJvbSBtb3ZpbmcgdG9vIG11Y2guCisgICAgcmV0LnZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB2b2xhdGlsZSBzdGQ6OmF0b21pYzxSZXR1cm5lZD4qPihsb2NhdGlvbiktPmxvYWQoc3Rk
OjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisgICAgcmV0LmRlcGVuZGVuY3kgPSB6ZXJvV2l0aENv
bnN1bWVEZXBlbmRlbmN5KHJldC52YWx1ZSk7CisgICAgcmV0dXJuIHJldDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6QXRvbWljOwordXNpbmcgV1RGOjpDb25zdW1lRGVw
ZW5kZW5jeTsKK3VzaW5nIFdURjo6Y29uc3VtZUxvYWQ7CiAKICNlbmRpZiAvLyBBdG9taWNzX2gK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxODlk
ODBlLi5mZTgwYTI1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDktMjYgIEpGIEJhc3RpZW4gIDxqZmJhc3Rp
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwZWVkIHVwIEhlYXA6OmlzTWFya2VkQ29uY3VycmVu
dGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIw
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ29uc3VtZS5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdENvbnN1bWUp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTYtMDktMjYgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBJT1NfVEVYVF9BVVRP
U0laSU5HIHRvIFRFWFRfQVVUT1NJWklORwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5k
ZXggMmRhNGM4ZC4uZmEzODMxNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC00
Miw2ICs0Miw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0c0NvbnRyb2xsZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L0F0b21pY1N0cmluZy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQmxv
b21GaWx0ZXIuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbnN1bWUu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ1N0cmluZy5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25z
LmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhN2JjNjNkLi5jOTBlYmI2IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTA1Miw2ICsxMDUyLDcgQEAKIAkJQTVFMjAyNzAxNUIyMTgw
NjAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNUUyMDI3MjE1QjIxODE5MDBDMTNFMTQgLyogV2luZG93
bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNrZWRBcml0aG1ldGlj
T3BlcmF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGVj
a2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBRENFQkJBNTFEOTlENENGMDAyRTI4M0EgLyogQ29uc3VtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjQwMzlGOUMxNUU2RDhCMzAwNzI1NUQ2IC8qIE1hdGhFeHRyYXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aEV4dHJhcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1NUFEMUQxMTc5RjMzNjYwMEFDMTQ5NCAvKiBQcmV2ZW50
SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFByZXZl
bnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tOyBwYXRoID0gV2ViS2l0Mk9iakMvUHJldmVu
dEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUI1NUFEMUQzMTc5RjNBQkYwMEFDMTQ5NCAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9S
ZXNpemluZ19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdfQnVuZGxlLmNwcDsgcGF0aCA9IFdlYktp
dDJPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1bmRsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzE4LDYgKzE3MTksNyBAQAogCQlCQzkwOTY0NjEy
NTU2MTg5MDAwODM3NTYgLyogV1RGICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlBRENFQkJBNTFEOTlENENGMDAyRTI4M0EgLyogQ29uc3VtZS5jcHAgKi8s
CiAJCQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5OEYyIC8qIGNmICovLAogCQkJCTdDQkJBMDc1MTlC
QjhBMDkwMEJCRjAyNSAvKiBkYXJ3aW4gKi8sCiAJCQkJQkMwMjlCMUExNDg2QjIzODAwODE3REE5
IC8qIG5zICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29u
c3VtZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjBiZDg4Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3VtZS5jcHAKQEAgLTAsMCArMSwx
MjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx0aHJlYWQ+CisjaW5jbHVkZSA8d3RmL0F0b21p
Y3MuaD4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitORVZFUl9JTkxJTkUgYXV0byB0ZXN0Q29u
c3VtZShjb25zdCBUKiBsb2NhdGlvbikKK3sKKyAgICBXVEY6OmNvbXBpbGVyRmVuY2UoKTsgLy8g
UGFyYW5vaWQgdGVzdGluZy4KKyAgICBhdXRvIHJldCA9IFdURjo6Y29uc3VtZUxvYWQobG9jYXRp
b24pOworICAgIFdURjo6Y29tcGlsZXJGZW5jZSgpOyAvLyBQYXJhbm9pZCB0ZXN0aW5nLgorICAg
IHJldHVybiByZXQ7Cit9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEYs
IENvbnN1bWVpOCkKK3sKKyAgICB1aW50OF90IGk4ID0gNDI7CisgICAgYXV0byBpOF9jb25zdW1l
ZCA9IHRlc3RDb25zdW1lKCZpOCk7CisgICAgQVNTRVJUX0VRKGk4X2NvbnN1bWVkLnZhbHVlLCA0
MnUpOworICAgIEFTU0VSVF9FUShpOF9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7Cit9CisKK1RF
U1QoV1RGLCBDb25zdW1laTE2KQoreworICAgIHVpbnQxNl90IGkxNiA9IDQyOworICAgIGF1dG8g
aTE2X2NvbnN1bWVkID0gdGVzdENvbnN1bWUoJmkxNik7CisgICAgQVNTRVJUX0VRKGkxNl9jb25z
dW1lZC52YWx1ZSwgNDJ1KTsKKyAgICBBU1NFUlRfRVEoaTE2X2NvbnN1bWVkLmRlcGVuZGVuY3ks
IDB1KTsKK30KKworVEVTVChXVEYsIENvbnN1bWVpMzIpCit7CisgICAgdWludDMyX3QgaTMyID0g
NDI7CisgICAgYXV0byBpMzJfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmaTMyKTsKKyAgICBBU1NF
UlRfRVEoaTMyX2NvbnN1bWVkLnZhbHVlLCA0MnUpOworICAgIEFTU0VSVF9FUShpMzJfY29uc3Vt
ZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29uc3VtZWk2NCkKK3sKKyAgICB1
aW50NjRfdCBpNjQgPSA0MjsKKyAgICBhdXRvIGk2NF9jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZp
NjQpOworICAgIEFTU0VSVF9FUShpNjRfY29uc3VtZWQudmFsdWUsIDQydSk7CisgICAgQVNTRVJU
X0VRKGk2NF9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBDb25zdW1l
ZjMyKQoreworICAgIGZsb2F0IGYzMiA9IDQyLmY7CisgICAgYXV0byBmMzJfY29uc3VtZWQgPSB0
ZXN0Q29uc3VtZSgmZjMyKTsKKyAgICBBU1NFUlRfRVEoZjMyX2NvbnN1bWVkLnZhbHVlLCA0Mi5m
KTsKKyAgICBBU1NFUlRfRVEoZjMyX2NvbnN1bWVkLmRlcGVuZGVuY3ksIDB1KTsKK30KKworVEVT
VChXVEYsIENvbnN1bWVmNjQpCit7CisgICAgZG91YmxlIGY2NCA9IDQyLjsKKyAgICBhdXRvIGY2
NF9jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZmNjQpOworICAgIEFTU0VSVF9FUShmNjRfY29uc3Vt
ZWQudmFsdWUsIDQyLik7CisgICAgQVNTRVJUX0VRKGY2NF9jb25zdW1lZC5kZXBlbmRlbmN5LCAw
dSk7Cit9CisKK1RFU1QoV1RGLCBDb25zdW1lUHRyKQoreworICAgIGF1dG8qIHB0ciA9ICZtYWlu
OworICAgIGF1dG8gcHRyX2NvbnN1bWVkID0gdGVzdENvbnN1bWUoJnB0cik7CisgICAgQVNTRVJU
X0VRKHB0cl9jb25zdW1lZC52YWx1ZSwgJm1haW4pOworICAgIEFTU0VSVF9FUShwdHJfY29uc3Vt
ZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29uc3VtZUNoYXJQdHIpCit7Cisg
ICAgY2hhciogaGVsbG8gPSBudWxscHRyOworICAgIGF1dG8qIHN0YWNrID0gJmhlbGxvOworICAg
IGF1dG8gc3RhY2tfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmc3RhY2spOworICAgIEFTU0VSVF9F
UShzdGFja19jb25zdW1lZC52YWx1ZSwgJmhlbGxvKTsKKyAgICBBU1NFUlRfRVEoc3RhY2tfY29u
c3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29uc3VtZVdpdGhUaHJlYWQp
Cit7CisgICAgYm9vbCByZWFkeSA9IGZhbHNlOworICAgIGNvbnN0ZXhwciBzaXplX3QgbnVtID0g
MTAyNDsKKyAgICB1aW50MzJfdCogdmVjID0gbmV3IHVpbnQzMl90W251bV07CisgICAgc3RkOjp0
aHJlYWQgdChbJl0oKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG51bTsgKytp
KQorICAgICAgICAgICAgdmVjW2ldID0gaSAqIDI7CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZl
bmNlKCk7CisgICAgICAgIHJlYWR5ID0gdHJ1ZTsKKyAgICB9KTsKKyAgICBkbyB7CisgICAgICAg
IGF1dG8gc3RhY2tfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmcmVhZHkpOworICAgICAgICBpZiAo
c3RhY2tfY29uc3VtZWQudmFsdWUpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
ICE9IG51bTsgKytpKQorICAgICAgICAgICAgICAgIEFTU0VSVF9FUSh2ZWNbaSArIHN0YWNrX2Nv
bnN1bWVkLmRlcGVuZGVuY3ldLCBpICogMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0gd2hpbGUgKHRydWUpOworICAgIHQuam9pbigpOworICAgIGRlbGV0ZVtdIHZlYzsK
K30KK30KLS0gCjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289891</attachid>
            <date>2016-09-26 16:39:52 -0700</date>
            <delta_ts>2016-09-27 11:38:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>19330</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA1Y2MyZjEyOGI1NzE1NzAwOGU3ZmMzYjZiNDgwYzM4MGY0M2VkYzk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggICAg
ICAgICAgIHwgIDI0ICsrKy0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDQ0ICsrKysrKysKIFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgMTE3ICsrKysrKysrKysrKysrKysrKysKIFRvb2xzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrKwogVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgfCAgIDEgKwog
Li4uL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgICAgICAgfCAgIDIg
KwogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3VtZS5jcHAgICAgICAgICAgfCAx
MjkgKysrKysrKysrKysrKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDMzOSBpbnNlcnRpb25z
KCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0NvbnN1bWUuY3BwCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggM2Y5
YjA4Yi4uNjk0YmZkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTYtMDktMjYgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAg
IFNwZWVkIHVwIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwOTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVlZCB1cCBpc01hcmtlZENvbmN1cnJlbnRs
eSBieSB1c2luZyBXVEY6OmNvbnN1bWVMb2FkLgorCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9j
ay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6YXJlTWFya3NTdGFsZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlV2l0aERlcGVuZGVuY3kpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50bHkpOiBkbyBhd2F5IHdpdGgg
dGhlIGxvYWQtbG9hZCBmZW5jZQorCiAyMDE2LTA5LTI2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIE9wdGlvbiB0byBkaXNhYmxlIHRoZSBD
b2RlQ2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IGRk
OWU4NDQuLmE2NDY5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aApAQCAtMjY5LDkgKzI2OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RlTWFya2VkKCk7CiAg
ICAgICAgIAogICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKLSAgICAKLSAgICBib29sIGFyZU1hcmtz
U3RhbGUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOworCiAgICAgYm9vbCBhcmVNYXJrc1N0
YWxlKCk7CisgICAgYm9vbCBhcmVNYXJrc1N0YWxlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9u
KTsKKyAgICBzdHJ1Y3QgTWFya3NXaXRoRGVwZW5kZW5jeSB7CisgICAgICAgIGJvb2wgYXJlU3Rh
bGU7CisgICAgICAgIENvbnN1bWVEZXBlbmRlbmN5IGRlcGVuZGVuY3k7CisgICAgfTsKKyAgICBN
YXJrc1dpdGhEZXBlbmRlbmN5IGFyZU1hcmtzU3RhbGVXaXRoRGVwZW5kZW5jeShIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbik7CiAgICAgCiAgICAgdm9pZCBhYm91dFRvTWFyayhIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbik7CiAgICAgICAgIApAQCAtNDc0LDYgKzQ3OSwxNSBAQCBpbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6YXJlTWFya3NTdGFsZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lv
bikKICAgICByZXR1cm4gbWFya2luZ1ZlcnNpb24gIT0gbV9tYXJraW5nVmVyc2lvbjsKIH0KIAor
QUxXQVlTX0lOTElORSBNYXJrZWRCbG9jazo6TWFya3NXaXRoRGVwZW5kZW5jeSBNYXJrZWRCbG9j
azo6YXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9u
KQoreworICAgIGF1dG8gY29uc3VtZWQgPSBjb25zdW1lTG9hZCgmbV9tYXJraW5nVmVyc2lvbik7
CisgICAgTWFya3NXaXRoRGVwZW5kZW5jeSByZXQ7CisgICAgcmV0LmFyZVN0YWxlID0gY29uc3Vt
ZWQudmFsdWUgIT0gbWFya2luZ1ZlcnNpb247CisgICAgcmV0LmRlcGVuZGVuY3kgPSBjb25zdW1l
ZC5kZXBlbmRlbmN5OworICAgIHJldHVybiByZXQ7Cit9CisKIGlubGluZSB2b2lkIE1hcmtlZEJs
b2NrOjphYm91dFRvTWFyayhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbikKIHsKICAgICBpZiAo
VU5MSUtFTFkoYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpKQpAQCAtNDk5LDEwICs1MTMs
MTAgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKEhlYXBWZXJzaW9uIG1hcmtp
bmdWZXJzaW9uLCBjb25zdCB2b2lkKiBwKQogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNN
YXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQq
IHApCiB7Ci0gICAgaWYgKGFyZU1hcmtzU3RhbGUobWFya2luZ1ZlcnNpb24pKQorICAgIGF1dG8g
bWFya3NXaXRoRGVwZW5kZW5jeSA9IGFyZU1hcmtzU3RhbGVXaXRoRGVwZW5kZW5jeShtYXJraW5n
VmVyc2lvbik7CisgICAgaWYgKG1hcmtzV2l0aERlcGVuZGVuY3kuYXJlU3RhbGUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICByZXR1cm4gbV9t
YXJrcy5nZXQoYXRvbU51bWJlcihwKSk7CisgICAgcmV0dXJuIG1fbWFya3MuZ2V0KGF0b21OdW1i
ZXIocCkgKyBtYXJrc1dpdGhEZXBlbmRlbmN5LmRlcGVuZGVuY3kpOwogfQogCiBpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6dGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKiBwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3NmZj
MDRiLi45MGVkM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTA5LTI2ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBTcGVlZCB1cCBIZWFwOjppc01hcmtl
ZENvbmN1cnJlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyMDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkgaGFkIGEgbG9hZC1sb2FkIGZlbmNlIHdo
aWNoIGlzIGV4cGVuc2l2ZSBvbiB3ZWFrIG1lbW9yeSBJU0FzIHN1Y2ggYXMgQVJNLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgZmFpcmx5IHBlcmYtbmV1dHJhbCBvdmVyYWxsLCBidXQgdGhlIEdD
J3MgaW5zdHJ1bWVudGF0aW9uIHJlcG9ydHM6CisgICAgICAgICAgR0M6RWRlbiBpcyA5MyUgYXZl
cmFnZSBydW50aW1lIGFmdGVyIGNoYW5nZQorICAgICAgICAgIEdDOkZ1bGwgaXMgNzYlIGF2ZXJh
Z2UgcnVudGltZSBhZnRlciBjaGFuZ2UKKworICAgICAgICBUaGUgZmVuY2Ugd2FzIHRoZXJlIGJl
Y2F1c2U6CisgICAgICAgICAxLiBJZiB0aGUgcmVhZCBvZiBtX21hcmtpbmdWZXJzaW9uIGluIE1h
cmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlIGlzbid0IHdoYXQncyBleHBlY3RlZCB0aGVuOworICAg
ICAgICAgMi4gVGhlIHJlYWQgb2YgbV9tYXJrcyBpbiBNYXJrZWRCbG9jazo6aXNNYXJrZWQgbmVl
ZHMgdG8gb2JzZXJ2ZSB0aGUgdmFsdWUgdGhhdCB3YXMgc3RvcmVkICpiZWZvcmUqIG1fbWFya2lu
Z1ZlcnNpb24gd2FzIHN0b3JlZC4KKworICAgICAgICBUaGlzIG9yZGVyaW5nIGlzbid0IGd1YXJh
bnRlZWQgb24gQVJNLCB3aGljaCBoYXMgYSB3ZWFrIG1lbW9yeSBtb2RlbC4KKworICAgICAgICBU
aGVyZSBhcmUgMyB3YXlzIHRvIGd1YXJhbnRlZSB0aGlzIG9yZGVyaW5nOgorICAgICAgICAgQS4g
VXNlIGEgYmFycmllciBpbnN0cnVjdGlvbi4KKyAgICAgICAgIEIuIFVzZSBhIGxvYWQtYWNxdWly
ZSAobmV3IGluIEFSTXY4KS4KKyAgICAgICAgIEMuIHVzZSBBUk0ncyBhZGRyZXNzIGRlcGVuZGVu
Y3kgcnVsZSwgd2hpY2ggQysrIGNhbGxzIG1lbW9yeV9vcmRlcl9jb25zdW1lLgorCisgICAgICAg
IEluIGdlbmVyYWw6CisgICAgICAgICBBLiBpcyBzbG93IGJ1dCBvcmRlcnMgYWxsIG9mIG1lbW9y
eSBpbiBhbiBpbnR1aXRpdmUgbWFubmVyLgorICAgICAgICAgQi4gaXMgZmFzdGVyLWlzaCBhbmQg
aGFzIHRoZSBzYW1lIHByb3BlcnR5LWlzaC4KKyAgICAgICAgIEMuIHNob3VsZCBiZSBmYXN0ZXIg
c3RpbGwsIGJ1dCAqb25seSBvcmRlcnMgZGVwZW5kZW50IGxvYWRzKi4gVGhpcyBsYXN0IHBhcnQg
aXMgY3JpdGljYWwhIENvbnN1bWUgaXNuJ3QgYW4gYWxsLW91dCByZXBsYWNlbWVudCBmb3IgYWNx
dWlyZSAoYWNxdWlyZSBpcyByYXRoZXIgYSBzdXBlcnNldCBvZiBjb25zdW1lKS4KKworICAgICAg
ICBBUk0gZXhwbGFpbnMgdGhlIGFkZHJlc3MgZGVwZW5kZW5jeSBydWxlIGluIHRoZWlyIGRvY3Vt
ZW50ICJiYXJyaWVyIGxpdG11cyB0ZXN0cyBhbmQgY29va2Jvb2siOgorCisgICAgICAgID4gKlJl
c29sdmluZyBieSB0aGUgdXNlIG9mIGJhcnJpZXJzIGFuZCBhZGRyZXNzIGRlcGVuZGVuY3kqCisg
ICAgICAgID4KKyAgICAgICAgPiBUaGVyZSBpcyBhIHJ1bGUgd2l0aGluIHRoZSBBUk0gYXJjaGl0
ZWN0dXJlIHRoYXQ6CisgICAgICAgID4gV2hlcmUgdGhlIHZhbHVlIHJldHVybmVkIGJ5IGEgcmVh
ZCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiBhIHN1YnNlcXVlbnQg
cmVhZCBvciB3cml0ZSAodGhpcyBpcyBrbm93biBhcyBhbiBhZGRyZXNzIGRlcGVuZGVuY3kpLCB0
aGVuIHRoZXNlIHR3byBtZW1vcnkgYWNjZXNzZXMgd2lsbCBiZSBvYnNlcnZlZCBpbiBwcm9ncmFt
IG9yZGVyLiBBbiBhZGRyZXNzIGRlcGVuZGVuY3kgZXhpc3RzIGV2ZW4gaWYgdGhlIHZhbHVlIHJl
YWQgYnkgdGhlIGZpcnN0IHJlYWQgaGFzIG5vIGVmZmVjdCBpbiBjaGFuZ2luZyB0aGUgdmlydHVh
bCBhZGRyZXNzIChhcyBtaWdodCBiZSB0aGUgY2FzZSBpZiB0aGUgdmFsdWUgcmV0dXJuZWQgaXMg
bWFza2VkIG9mZiBiZWZvcmUgaXQgaXMgdXNlZCwgb3IgaWYgaXQgaGFkIG5vIGVmZmVjdCBvbiBj
aGFuZ2luZyBhIHByZWRpY3RlZCBhZGRyZXNzIHZhbHVlKS4KKyAgICAgICAgPiBUaGlzIHJlc3Ry
aWN0aW9uIGFwcGxpZXMgb25seSB3aGVuIHRoZSBkYXRhIHZhbHVlIHJldHVybmVkIGZyb20gb25l
IHJlYWQgaXMgdXNlZCBhcyBhIGRhdGEgdmFsdWUgdG8gY2FsY3VsYXRlIHRoZSBhZGRyZXNzIG9m
IGEgc3Vic2VxdWVudCByZWFkIG9yIHdyaXRlLiBUaGlzIGRvZXMgbm90IGFwcGx5IGlmIHRoZSBk
YXRhIHZhbHVlIHJldHVybmVkIGZyb20gb25lIHJlYWQgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhl
IGNvbmRpdGlvbiBjb2RlIGZsYWdzLCBhbmQgdGhlIHZhbHVlcyBvZiB0aGUgZmxhZ3MgYXJlIHVz
ZWQgZm9yIGNvbmRpdGlvbiBjb2RlIGV2YWx1YXRpb24gdG8gZGV0ZXJtaW5lIHRoZSBhZGRyZXNz
IG9mIGEgc3Vic2VxdWVudCByZWFkcywgZWl0aGVyIHRocm91Z2ggY29uZGl0aW9uYWwgZXhlY3V0
aW9uIG9yIHRoZSBldmFsdWF0aW9uIG9mIGEgYnJhbmNoLiBUaGlzIGlzIGtub3duIGFzIGEgY29u
dHJvbCBkZXBlbmRlbmN5LgorICAgICAgICA+IFdoZXJlIGJvdGggYSBjb250cm9sIGFuZCBhZGRy
ZXNzIGRlcGVuZGVuY3kgZXhpc3QsIHRoZSBvcmRlcmluZyBiZWhhdmlvdXIgaXMgY29uc2lzdGVu
dCB3aXRoIHRoZSBhZGRyZXNzIGRlcGVuZGVuY3kuCisKKyAgICAgICAgQysrJ3MgbWVtb3J5X29y
ZGVyX2NvbnN1bWUgaXMgdW5mb3J0dW5hdGVseSB1bmltcGxlbWVudGVkIGJ5IEMrKyBjb21waWxl
cnMsIGFuZCBtYXliZSB1bmltcGxlbWVudGFibGUgYXMgc3BlYydkLiBJJ20gd29ya2luZyB3aXRo
IGludGVyZXN0ZWQgZm9sa3MgaW4gdGhlIGNvbW1pdHRlZSB0byBmaXggdGhpcyBzaXR1YXRpb246
IGh0dHA6Ly93ZzIxLmxpbmsvcDAxOTByMgorCisgICAgICAgICogd3RmL0F0b21pY3MuaDoKKyAg
ICAgICAgKFdURjo6emVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeSk6IGEgMCB3aGljaCBjYXJyaWVz
IGEgZGVwZW5kZW5jeQorICAgICAgICAoV1RGOjpjb25zdW1lTG9hZCk6IHBpeGllIG1hZ2ljCisK
IDIwMTYtMDktMjYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBJT1NfVEVYVF9BVVRPU0laSU5HIHRvIFRFWFRfQVVUT1NJWklORwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQXRvbWljcy5oIGIvU291cmNlL1dURi93dGYvQXRvbWljcy5oCmlu
ZGV4IGU0NmE0YmEuLjMzNzVlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0F0b21pY3Mu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKQEAgLTIwMiw4ICsyMDIsMTI1IEBAIGlu
bGluZSB2b2lkIG1lbW9yeUJhcnJpZXJCZWZvcmVVbmxvY2soKSB7IHN0ZDo6YXRvbWljX3RocmVh
ZF9mZW5jZShzdGQ6Om1lbW9yeV9vCiAKICNlbmRpZgogCit0eXBlZGVmIHNpemVfdCBDb25zdW1l
RGVwZW5kZW5jeTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHNpemVvZihUKSA9PSA4Pjo6dHlwZSogPSBudWxscHRyPgorQUxXQVlTX0lOTElORSBDb25z
dW1lRGVwZW5kZW5jeSB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KFQgdmFsdWUpCit7CisgICAg
dWludDY0X3QgZGVwZW5kZW5jeTsKKyAgICB1aW50NjRfdCBjb3B5ID0gYml0d2lzZV9jYXN0PHVp
bnQ2NF90Pih2YWx1ZSk7CisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIENyZWF0ZSBhIG1hZ2ljYWwg
emVybyB2YWx1ZSB0aHJvdWdoIGlubGluZSBhc3NlbWJseSwgd2hvc2UgY29tcHV0YXRpb24KKyAg
ICAvLyBpc24ndCB2aXNpYmxlIHRvIHRoZSBvcHRpbWl6ZXIuIFRoaXMgemVybyBpcyB0aGVuIHVz
YWJsZSBhcyBhbiBvZmZzZXQgaW4KKyAgICAvLyBmdXJ0aGVyIGFkZHJlc3MgY29tcHV0YXRpb25z
OiBhZGRpbmcgemVybyBkb2VzIG5vdGhpbmcsIGJ1dCB0aGUgY29tcGlsZXIKKyAgICAvLyBkb2Vz
bid0IGtub3cgaXQuIEl0J3MgbWFnaWNhbCBiZWNhdXNlIGl0IGNyZWF0ZXMgYW4gYWRkcmVzcyBk
ZXBlbmRlbmN5CisgICAgLy8gZnJvbSB0aGUgbG9hZCBvZiBgbG9jYXRpb25gIHRvIHRoZSB1c2Vz
IG9mIHRoZSBkZXBlbmRlbmN5LCB3aGljaCB0cmlnZ2VycworICAgIC8vIHRoZSBBUk0gSVNBJ3Mg
YWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUsIGEuay5hLiB0aGUgbXl0aGljYWwgQysrIGNvbnN1bWUK
KyAgICAvLyBvcmRlcmluZy4gVGhpcyBmb3JjZXMgd2VhayBtZW1vcnkgb3JkZXIgQ1BVcyB0byBv
YnNlcnZlIGBsb2NhdGlvbmAgYW5kCisgICAgLy8gZGVwZW5kZW50IGxvYWRzIGluIHRoZWlyIHN0
b3JlIG9yZGVyIHdpdGhvdXQgdGhlIHJlYWRlciB1c2luZyBhIGJhcnJpZXIKKyAgICAvLyBvciBh
biBhY3F1aXJlIGxvYWQuCisgICAgYXNtIHZvbGF0aWxlKCJlb3IgJXhbZGVwZW5kZW5jeV0sICV4
W2luXSwgJXhbaW5dIgorICAgICAgICAgICAgICAgICA6IFtkZXBlbmRlbmN5XSAiPXIiKGRlcGVu
ZGVuY3kpCisgICAgICAgICAgICAgICAgIDogW2luXSAiciIoY29weSkKKyAgICAgICAgICAgICAg
ICAgLy8gTGllIGFib3V0IHRvdWNoaW5nIG1lbW9yeS4gTm90IHN0cmljdGx5IG5lZWRlZCwgYnV0
IGlzCisgICAgICAgICAgICAgICAgIC8vIGxpa2VseSB0byBhdm9pZCB1bndhbnRlZCBsb2FkL3N0
b3JlIG1vdGlvbi4KKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CisgICAgcmV0dXJuIGRl
cGVuZGVuY3k7CisjZWxpZiBDUFUoQVJNKQorICAgIGFzbSB2b2xhdGlsZSgiZW9yICVbZGVwZW5k
ZW5jeV0sICVbaW5dLCAlW2luXSIKKyAgICAgICAgICAgICAgICAgOiBbZGVwZW5kZW5jeV0gIj1y
IihkZXBlbmRlbmN5KQorICAgICAgICAgICAgICAgICA6IFtpbl0gInIiKGNvcHkpCisgICAgICAg
ICAgICAgICAgIDogIm1lbW9yeSIpOworICAgIHJldHVybiBkZXBlbmRlbmN5OworI2Vsc2UKKyAg
ICAvLyBObyBkZXBlbmRlbmN5IGlzIG5lZWRlZCBmb3IgdGhpcyBhcmNoaXRlY3R1cmUuCisgICAg
bG9hZExvYWRGZW5jZSgpOworICAgICh2b2lkKWRlcGVuZGVuY3k7CisgICAgKHZvaWQpY29weTsK
KyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDQ+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdB
WVNfSU5MSU5FIENvbnN1bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koVCB2
YWx1ZSkKK3sKKyAgICB1aW50MzJfdCBkZXBlbmRlbmN5OworICAgIHVpbnQzMl90IGNvcHkgPSBi
aXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgYXNtIHZv
bGF0aWxlKCJlb3IgJXdbZGVwZW5kZW5jeV0sICV3W2luXSwgJXdbaW5dIgorICAgICAgICAgICAg
ICAgICA6IFtkZXBlbmRlbmN5XSAiPXIiKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAgIDog
W2luXSAiciIoY29weSkKKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CisgICAgcmV0dXJu
IGRlcGVuZGVuY3k7CisjZWxpZiBDUFUoQVJNKQorICAgIGFzbSB2b2xhdGlsZSgiZW9yICVbZGVw
ZW5kZW5jeV0sICVbaW5dLCAlW2luXSIKKyAgICAgICAgICAgICAgICAgOiBbZGVwZW5kZW5jeV0g
Ij1yIihkZXBlbmRlbmN5KQorICAgICAgICAgICAgICAgICA6IFtpbl0gInIiKGNvcHkpCisgICAg
ICAgICAgICAgICAgIDogIm1lbW9yeSIpOworICAgIHJldHVybiBkZXBlbmRlbmN5OworI2Vsc2UK
KyAgICBsb2FkTG9hZEZlbmNlKCk7CisgICAgKHZvaWQpZGVwZW5kZW5jeTsKKyAgICAodm9pZClj
b3B5OworICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzaXplb2YoVCkgPT0gMj46OnR5cGUqID0gbnVsbHB0cj4K
K0FMV0FZU19JTkxJTkUgQ29uc3VtZURlcGVuZGVuY3kgemVyb1dpdGhDb25zdW1lRGVwZW5kZW5j
eShUIHZhbHVlKQoreworICAgIHVpbnQxNl90IGNvcHkgPSBiaXR3aXNlX2Nhc3Q8dWludDE2X3Q+
KHZhbHVlKTsKKyAgICByZXR1cm4gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShzdGF0aWNfY2Fz
dDxzaXplX3Q+KGNvcHkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHNpemVvZihUKSA9PSAxPjo6dHlwZSogPSBudWxscHRyPgorQUxXQVlTX0lO
TElORSBDb25zdW1lRGVwZW5kZW5jeSB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KFQgdmFsdWUp
Cit7CisgICAgdWludDhfdCBjb3B5ID0gYml0d2lzZV9jYXN0PHVpbnQ4X3Q+KHZhbHVlKTsKKyAg
ICByZXR1cm4gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShzdGF0aWNfY2FzdDxzaXplX3Q+KGNv
cHkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29uc3VtZWQgeworICAg
IFQgdmFsdWU7CisgICAgQ29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeTsKK307CisKKy8vIENv
bnN1bWUgbG9hZCwgcmV0dXJuaW5nIHRoZSBsb2FkZWQgYHZhbHVlYCBhdCBgbG9jYXRpb25gIGFu
ZCBhIGRlcGVuZGVudC16ZXJvCisvLyB3aGljaCBjcmVhdGVzIGFuIGFkZHJlc3MgZGVwZW5kZW5j
eSBmcm9tIHRoZSBgbG9jYXRpb25gLgorLy8KKy8vIFVzYWdlIG5vdGVzOgorLy8KKy8vICAqIFJl
Z2FyZGluZyBjb250cm9sIGRlcGVuZGVuY2llczogbWVyZWx5IGJyYW5jaGluZyBiYXNlZCBvbiBg
dmFsdWVgIG9yCisvLyAgICBgZGVwZW5kZW5jeWAgaXNuJ3Qgc3VmZmljaWVudCB0byBpbXBvc2Ug
YSBkZXBlbmRlbmN5IG9yZGVyaW5nOiB5b3UgbXVzdAorLy8gICAgdXNlIGBkZXBlbmRlbmN5YCBp
biB0aGUgYWRkcmVzcyBjb21wdXRhdGlvbiBvZiBzdWJzZXF1ZW50IGxvYWRzIHdoaWNoCisvLyAg
ICBzaG91bGQgb2JzZXJ2ZSB0aGUgc3RvcmUgb3JkZXIgdy5yLnQuIGBsb2NhdGlvbmAuCisvLyAq
IFJlZ2FyZGluZyBtZW1vcnkgb3JkZXJpbmc6IGNvbnN1bWUgbG9hZCBvcmRlcnMgdGhlIGBsb2Nh
dGlvbmAgbG9hZCB3aXRoCisvLyAgIHN1c2VxdWVudCBkZXBlbmRlbnQgbG9hZHMgKm9ubHkqLiBJ
dCBzYXlzIG5vdGhpbmcgYWJvdXQgb3JkZXJpbmcgb2Ygb3RoZXIKKy8vICAgbG9hZHMhCisvLwor
Ly8gQ2F2ZWF0IGVtcHRvci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorQUxXQVlTX0lOTElORSBh
dXRvIGNvbnN1bWVMb2FkKGNvbnN0IFQqIGxvY2F0aW9uKQoreworICAgIHR5cGVkZWYgdHlwZW5h
bWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUgUmV0dXJuZWQ7CisgICAgQ29uc3VtZWQ8UmV0dXJu
ZWQ+IHJldCB7IH07CisgICAgLy8gRm9yY2UgdGhlIHJlYWQgb2YgYGxvY2F0aW9uYCB0byBvY2N1
ciBleGFjdGx5IG9uY2UgYW5kIHdpdGhvdXQgZnVzaW5nIG9yCisgICAgLy8gZm9yd2FyZGluZyB1
c2luZyB2b2xhdGlsZS4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgY29tcGlsZXIgY291
bGQKKyAgICAvLyBvdGhlcndpc2UgcmVtYXRlcmlhbGl6ZSBvciBmaW5kIGVxdWl2YWxlbnQgbG9h
ZHMsIG9yIHNpbXBseSBmb3J3YXJkIGZyb20KKyAgICAvLyBhIHByZXZpb3VzIG9uZSwgYW5kIGxv
c2UgdGhlIGRlcGVuZGVuY3kgd2UncmUgdHJ5aW5nIHNvIGhhcmQgdG8KKyAgICAvLyBjcmVhdGUu
IFByZXZlbnQgdGVhcmluZyBieSB1c2luZyBhbiBhdG9taWMsIGJ1dCBsZXQgaXQgbW92ZSBhcm91
bmQgYnkKKyAgICAvLyB1c2luZyByZWxheGVkLiBXZSBoYXZlIGF0IGxlYXN0IGEgbWVtb3J5IGZl
bmNlIGFmdGVyIHRoaXMgd2hpY2ggcHJldmVudHMKKyAgICAvLyB0aGUgbG9hZCBmcm9tIG1vdmlu
ZyB0b28gbXVjaC4KKyAgICByZXQudmFsdWUgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZvbGF0
aWxlIHN0ZDo6YXRvbWljPFJldHVybmVkPio+KGxvY2F0aW9uKS0+bG9hZChzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkKTsKKyAgICByZXQuZGVwZW5kZW5jeSA9IHplcm9XaXRoQ29uc3VtZURlcGVu
ZGVuY3kocmV0LnZhbHVlKTsKKyAgICByZXR1cm4gcmV0OworfQorCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAogdXNpbmcgV1RGOjpBdG9taWM7Cit1c2luZyBXVEY6OkNvbnN1bWVEZXBlbmRlbmN5Owor
dXNpbmcgV1RGOjpjb25zdW1lTG9hZDsKIAogI2VuZGlmIC8vIEF0b21pY3NfaApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE4OWQ4MGUuLmZlODBh
MjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxNi0wOS0yNiAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5j
b20+CisKKyAgICAgICAgU3BlZWQgdXAgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjA5NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Db25zdW1lLmNwcDogQWRkZWQuCisgICAgICAgICh0ZXN0Q29uc3VtZSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0wOS0yNiAgRGFuaWVsIEJhdGVzICA8ZGFi
YXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIElPU19URVhUX0FVVE9TSVpJTkcgdG8g
VEVYVF9BVVRPU0laSU5HCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCAyZGE0Yzhk
Li5mYTM4MzE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTQyLDYgKzQyLDcg
QEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29u
dHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQXRvbWljU3Ry
aW5nLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9CbG9vbUZpbHRlci5j
cHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uc3VtZS5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9DU3RyaW5nLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9DaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGE3YmM2M2QuLmM5MGViYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDUyLDYgKzEwNTIsNyBAQAogCQlBNUUyMDI3MDE1QjIxODA2MDBDMTNFMTQg
LyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1RTIwMjcyMTVCMjE4MTkwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmll
d1dpdGhNZWRpYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdp
bmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoZWNrZWRBcml0aG1l
dGljT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEQ0VCQkE1
MUQ5OUQ0Q0YwMDJFMjgzQSAvKiBDb25zdW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbnN1bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
NDAzOUY5QzE1RTZEOEIzMDA3MjU1RDYgLyogTWF0aEV4dHJhcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoRXh0cmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjU1QUQxRDExNzlGMzM2NjAwQUMxNDk0IC8qIFByZXZlbnRJbWFnZUxvYWRX
aXRoQXV0b1Jlc2l6aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUHJldmVudEltYWdlTG9h
ZFdpdGhBdXRvUmVzaXppbmcubW07IHBhdGggPSBXZWJLaXQyT2JqQy9QcmV2ZW50SW1hZ2VMb2Fk
V2l0aEF1dG9SZXNpemluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU1QUQx
RDMxNzlGM0FCRjAwQUMxNDk0IC8qIFByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1
bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcmV2ZW50SW1h
Z2VMb2FkV2l0aEF1dG9SZXNpemluZ19CdW5kbGUuY3BwOyBwYXRoID0gV2ViS2l0Mk9iakMvUHJl
dmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3MTgsNiArMTcxOSw3IEBACiAJCUJDOTA5NjQ2MTI1NTYxODkwMDA4
Mzc1NiAvKiBXVEYgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCUFEQ0VCQkE1MUQ5OUQ0Q0YwMDJFMjgzQSAvKiBDb25zdW1lLmNwcCAqLywKIAkJCQlDMDk5
MUM0RjE0M0M3RDY4MDA3OTk4RjIgLyogY2YgKi8sCiAJCQkJN0NCQkEwNzUxOUJCOEEwOTAwQkJG
MDI1IC8qIGRhcndpbiAqLywKIAkJCQlCQzAyOUIxQTE0ODZCMjM4MDA4MTdEQTkgLyogbnMgKi8s
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN1bWUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMGJkODgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNwcApAQCAtMCwwICsxLDEyOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK05FVkVSX0lOTElORSBhdXRvIHRlc3RDb25zdW1lKGNvbnN0
IFQqIGxvY2F0aW9uKQoreworICAgIFdURjo6Y29tcGlsZXJGZW5jZSgpOyAvLyBQYXJhbm9pZCB0
ZXN0aW5nLgorICAgIGF1dG8gcmV0ID0gV1RGOjpjb25zdW1lTG9hZChsb2NhdGlvbik7CisgICAg
V1RGOjpjb21waWxlckZlbmNlKCk7IC8vIFBhcmFub2lkIHRlc3RpbmcuCisgICAgcmV0dXJuIHJl
dDsKK30KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURiwgQ29uc3VtZWk4
KQoreworICAgIHVpbnQ4X3QgaTggPSA0MjsKKyAgICBhdXRvIGk4X2NvbnN1bWVkID0gdGVzdENv
bnN1bWUoJmk4KTsKKyAgICBBU1NFUlRfRVEoaThfY29uc3VtZWQudmFsdWUsIDQydSk7CisgICAg
QVNTRVJUX0VRKGk4X2NvbnN1bWVkLmRlcGVuZGVuY3ksIDB1KTsKK30KKworVEVTVChXVEYsIENv
bnN1bWVpMTYpCit7CisgICAgdWludDE2X3QgaTE2ID0gNDI7CisgICAgYXV0byBpMTZfY29uc3Vt
ZWQgPSB0ZXN0Q29uc3VtZSgmaTE2KTsKKyAgICBBU1NFUlRfRVEoaTE2X2NvbnN1bWVkLnZhbHVl
LCA0MnUpOworICAgIEFTU0VSVF9FUShpMTZfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQor
CitURVNUKFdURiwgQ29uc3VtZWkzMikKK3sKKyAgICB1aW50MzJfdCBpMzIgPSA0MjsKKyAgICBh
dXRvIGkzMl9jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZpMzIpOworICAgIEFTU0VSVF9FUShpMzJf
Y29uc3VtZWQudmFsdWUsIDQydSk7CisgICAgQVNTRVJUX0VRKGkzMl9jb25zdW1lZC5kZXBlbmRl
bmN5LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBDb25zdW1laTY0KQoreworICAgIHVpbnQ2NF90IGk2
NCA9IDQyOworICAgIGF1dG8gaTY0X2NvbnN1bWVkID0gdGVzdENvbnN1bWUoJmk2NCk7CisgICAg
QVNTRVJUX0VRKGk2NF9jb25zdW1lZC52YWx1ZSwgNDJ1KTsKKyAgICBBU1NFUlRfRVEoaTY0X2Nv
bnN1bWVkLmRlcGVuZGVuY3ksIDB1KTsKK30KKworVEVTVChXVEYsIENvbnN1bWVmMzIpCit7Cisg
ICAgZmxvYXQgZjMyID0gNDIuZjsKKyAgICBhdXRvIGYzMl9jb25zdW1lZCA9IHRlc3RDb25zdW1l
KCZmMzIpOworICAgIEFTU0VSVF9FUShmMzJfY29uc3VtZWQudmFsdWUsIDQyLmYpOworICAgIEFT
U0VSVF9FUShmMzJfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29u
c3VtZWY2NCkKK3sKKyAgICBkb3VibGUgZjY0ID0gNDIuOworICAgIGF1dG8gZjY0X2NvbnN1bWVk
ID0gdGVzdENvbnN1bWUoJmY2NCk7CisgICAgQVNTRVJUX0VRKGY2NF9jb25zdW1lZC52YWx1ZSwg
NDIuKTsKKyAgICBBU1NFUlRfRVEoZjY0X2NvbnN1bWVkLmRlcGVuZGVuY3ksIDB1KTsKK30KKwor
VEVTVChXVEYsIENvbnN1bWVQdHIpCit7CisgICAgYXV0byogcHRyID0gJm1haW47CisgICAgYXV0
byBwdHJfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmcHRyKTsKKyAgICBBU1NFUlRfRVEocHRyX2Nv
bnN1bWVkLnZhbHVlLCAmbWFpbik7CisgICAgQVNTRVJUX0VRKHB0cl9jb25zdW1lZC5kZXBlbmRl
bmN5LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBDb25zdW1lQ2hhclB0cikKK3sKKyAgICBjaGFyKiBo
ZWxsbyA9IG51bGxwdHI7CisgICAgYXV0byogc3RhY2sgPSAmaGVsbG87CisgICAgYXV0byBzdGFj
a19jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZzdGFjayk7CisgICAgQVNTRVJUX0VRKHN0YWNrX2Nv
bnN1bWVkLnZhbHVlLCAmaGVsbG8pOworICAgIEFTU0VSVF9FUShzdGFja19jb25zdW1lZC5kZXBl
bmRlbmN5LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBDb25zdW1lV2l0aFRocmVhZCkKK3sKKyAgICBi
b29sIHJlYWR5ID0gZmFsc2U7CisgICAgY29uc3RleHByIHNpemVfdCBudW0gPSAxMDI0OworICAg
IHVpbnQzMl90KiB2ZWMgPSBuZXcgdWludDMyX3RbbnVtXTsKKyAgICBzdGQ6OnRocmVhZCB0KFsm
XSgpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbnVtOyArK2kpCisgICAgICAg
ICAgICB2ZWNbaV0gPSBpICogMjsKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAg
ICAgICAgcmVhZHkgPSB0cnVlOworICAgIH0pOworICAgIGRvIHsKKyAgICAgICAgYXV0byBzdGFj
a19jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZyZWFkeSk7CisgICAgICAgIGlmIChzdGFja19jb25z
dW1lZC52YWx1ZSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbnVtOyAr
K2kpCisgICAgICAgICAgICAgICAgQVNTRVJUX0VRKHZlY1tpICsgc3RhY2tfY29uc3VtZWQuZGVw
ZW5kZW5jeV0sIGkgKiAyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSB3
aGlsZSAodHJ1ZSk7CisgICAgdC5qb2luKCk7CisgICAgZGVsZXRlW10gdmVjOworfQorfQotLSAK
Mi45LjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289986</attachid>
            <date>2016-09-27 11:38:52 -0700</date>
            <delta_ts>2016-09-27 12:08:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>21236</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA5ZjBlZmRhNWEwOTFmMGU4NWJhNTAwZjYzNDZiYTFhYjVkZjg5MzYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggICAg
ICAgICAgIHwgIDI0ICsrKy0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDQ0ICsrKysrKysKIFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgMTE3ICsrKysrKysrKysrKysrKysrKysKIFRvb2xzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrKwogVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgfCAgIDEgKwog
Li4uL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgICAgICAgfCAgIDQg
KwogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3VtZS5jcHAgICAgICAgICAgfCAx
MjkgKysrKysrKysrKysrKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDM0MSBpbnNlcnRpb25z
KCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0NvbnN1bWUuY3BwCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNjYy
MWQzOC4uZmYxZjY3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTYtMDktMjYgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAg
IFNwZWVkIHVwIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIwOTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVlZCB1cCBpc01hcmtlZENvbmN1cnJlbnRs
eSBieSB1c2luZyBXVEY6OmNvbnN1bWVMb2FkLgorCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9j
ay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6YXJlTWFya3NTdGFsZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlV2l0aERlcGVuZGVuY3kpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50bHkpOiBkbyBhd2F5IHdpdGgg
dGhlIGxvYWQtbG9hZCBmZW5jZQorCiAyMDE2LTA5LTI3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBkZXByZWNhdGVkIEVOQ1JZUFRFRF9NRURJQSBp
bXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmlu
ZGV4IGRkOWU4NDQuLmE2NDY5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaApAQCAtMjY5LDkgKzI2OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RlTWFya2Vk
KCk7CiAgICAgICAgIAogICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKLSAgICAKLSAgICBib29sIGFy
ZU1hcmtzU3RhbGUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOworCiAgICAgYm9vbCBhcmVN
YXJrc1N0YWxlKCk7CisgICAgYm9vbCBhcmVNYXJrc1N0YWxlKEhlYXBWZXJzaW9uIG1hcmtpbmdW
ZXJzaW9uKTsKKyAgICBzdHJ1Y3QgTWFya3NXaXRoRGVwZW5kZW5jeSB7CisgICAgICAgIGJvb2wg
YXJlU3RhbGU7CisgICAgICAgIENvbnN1bWVEZXBlbmRlbmN5IGRlcGVuZGVuY3k7CisgICAgfTsK
KyAgICBNYXJrc1dpdGhEZXBlbmRlbmN5IGFyZU1hcmtzU3RhbGVXaXRoRGVwZW5kZW5jeShIZWFw
VmVyc2lvbiBtYXJraW5nVmVyc2lvbik7CiAgICAgCiAgICAgdm9pZCBhYm91dFRvTWFyayhIZWFw
VmVyc2lvbiBtYXJraW5nVmVyc2lvbik7CiAgICAgICAgIApAQCAtNDc0LDYgKzQ3OSwxNSBAQCBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6YXJlTWFya3NTdGFsZShIZWFwVmVyc2lvbiBtYXJraW5n
VmVyc2lvbikKICAgICByZXR1cm4gbWFya2luZ1ZlcnNpb24gIT0gbV9tYXJraW5nVmVyc2lvbjsK
IH0KIAorQUxXQVlTX0lOTElORSBNYXJrZWRCbG9jazo6TWFya3NXaXRoRGVwZW5kZW5jeSBNYXJr
ZWRCbG9jazo6YXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KEhlYXBWZXJzaW9uIG1hcmtpbmdW
ZXJzaW9uKQoreworICAgIGF1dG8gY29uc3VtZWQgPSBjb25zdW1lTG9hZCgmbV9tYXJraW5nVmVy
c2lvbik7CisgICAgTWFya3NXaXRoRGVwZW5kZW5jeSByZXQ7CisgICAgcmV0LmFyZVN0YWxlID0g
Y29uc3VtZWQudmFsdWUgIT0gbWFya2luZ1ZlcnNpb247CisgICAgcmV0LmRlcGVuZGVuY3kgPSBj
b25zdW1lZC5kZXBlbmRlbmN5OworICAgIHJldHVybiByZXQ7Cit9CisKIGlubGluZSB2b2lkIE1h
cmtlZEJsb2NrOjphYm91dFRvTWFyayhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbikKIHsKICAg
ICBpZiAoVU5MSUtFTFkoYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpKQpAQCAtNDk5LDEw
ICs1MTMsMTAgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkKEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uLCBjb25zdCB2b2lkKiBwKQogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6aXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0
IHZvaWQqIHApCiB7Ci0gICAgaWYgKGFyZU1hcmtzU3RhbGUobWFya2luZ1ZlcnNpb24pKQorICAg
IGF1dG8gbWFya3NXaXRoRGVwZW5kZW5jeSA9IGFyZU1hcmtzU3RhbGVXaXRoRGVwZW5kZW5jeSht
YXJraW5nVmVyc2lvbik7CisgICAgaWYgKG1hcmtzV2l0aERlcGVuZGVuY3kuYXJlU3RhbGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICByZXR1
cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihwKSk7CisgICAgcmV0dXJuIG1fbWFya3MuZ2V0KGF0
b21OdW1iZXIocCkgKyBtYXJrc1dpdGhEZXBlbmRlbmN5LmRlcGVuZGVuY3kpOwogfQogCiBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6dGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKiBwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA2NWM2M2MyLi5lNzE2MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTA5LTI2ICBKRiBC
YXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBTcGVlZCB1cCBIZWFwOjpp
c01hcmtlZENvbmN1cnJlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYyMDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkgaGFkIGEgbG9hZC1sb2FkIGZl
bmNlIHdoaWNoIGlzIGV4cGVuc2l2ZSBvbiB3ZWFrIG1lbW9yeSBJU0FzIHN1Y2ggYXMgQVJNLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgZmFpcmx5IHBlcmYtbmV1dHJhbCBvdmVyYWxsLCBidXQg
dGhlIEdDJ3MgaW5zdHJ1bWVudGF0aW9uIHJlcG9ydHM6CisgICAgICAgICAgR0M6RWRlbiBpcyA5
MyUgYXZlcmFnZSBydW50aW1lIGFmdGVyIGNoYW5nZQorICAgICAgICAgIEdDOkZ1bGwgaXMgNzYl
IGF2ZXJhZ2UgcnVudGltZSBhZnRlciBjaGFuZ2UKKworICAgICAgICBUaGUgZmVuY2Ugd2FzIHRo
ZXJlIGJlY2F1c2U6CisgICAgICAgICAxLiBJZiB0aGUgcmVhZCBvZiBtX21hcmtpbmdWZXJzaW9u
IGluIE1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlIGlzbid0IHdoYXQncyBleHBlY3RlZCB0aGVu
OworICAgICAgICAgMi4gVGhlIHJlYWQgb2YgbV9tYXJrcyBpbiBNYXJrZWRCbG9jazo6aXNNYXJr
ZWQgbmVlZHMgdG8gb2JzZXJ2ZSB0aGUgdmFsdWUgdGhhdCB3YXMgc3RvcmVkICpiZWZvcmUqIG1f
bWFya2luZ1ZlcnNpb24gd2FzIHN0b3JlZC4KKworICAgICAgICBUaGlzIG9yZGVyaW5nIGlzbid0
IGd1YXJhbnRlZWQgb24gQVJNLCB3aGljaCBoYXMgYSB3ZWFrIG1lbW9yeSBtb2RlbC4KKworICAg
ICAgICBUaGVyZSBhcmUgMyB3YXlzIHRvIGd1YXJhbnRlZSB0aGlzIG9yZGVyaW5nOgorICAgICAg
ICAgQS4gVXNlIGEgYmFycmllciBpbnN0cnVjdGlvbi4KKyAgICAgICAgIEIuIFVzZSBhIGxvYWQt
YWNxdWlyZSAobmV3IGluIEFSTXY4KS4KKyAgICAgICAgIEMuIHVzZSBBUk0ncyBhZGRyZXNzIGRl
cGVuZGVuY3kgcnVsZSwgd2hpY2ggQysrIGNhbGxzIG1lbW9yeV9vcmRlcl9jb25zdW1lLgorCisg
ICAgICAgIEluIGdlbmVyYWw6CisgICAgICAgICBBLiBpcyBzbG93IGJ1dCBvcmRlcnMgYWxsIG9m
IG1lbW9yeSBpbiBhbiBpbnR1aXRpdmUgbWFubmVyLgorICAgICAgICAgQi4gaXMgZmFzdGVyLWlz
aCBhbmQgaGFzIHRoZSBzYW1lIHByb3BlcnR5LWlzaC4KKyAgICAgICAgIEMuIHNob3VsZCBiZSBm
YXN0ZXIgc3RpbGwsIGJ1dCAqb25seSBvcmRlcnMgZGVwZW5kZW50IGxvYWRzKi4gVGhpcyBsYXN0
IHBhcnQgaXMgY3JpdGljYWwhIENvbnN1bWUgaXNuJ3QgYW4gYWxsLW91dCByZXBsYWNlbWVudCBm
b3IgYWNxdWlyZSAoYWNxdWlyZSBpcyByYXRoZXIgYSBzdXBlcnNldCBvZiBjb25zdW1lKS4KKwor
ICAgICAgICBBUk0gZXhwbGFpbnMgdGhlIGFkZHJlc3MgZGVwZW5kZW5jeSBydWxlIGluIHRoZWly
IGRvY3VtZW50ICJiYXJyaWVyIGxpdG11cyB0ZXN0cyBhbmQgY29va2Jvb2siOgorCisgICAgICAg
ID4gKlJlc29sdmluZyBieSB0aGUgdXNlIG9mIGJhcnJpZXJzIGFuZCBhZGRyZXNzIGRlcGVuZGVu
Y3kqCisgICAgICAgID4KKyAgICAgICAgPiBUaGVyZSBpcyBhIHJ1bGUgd2l0aGluIHRoZSBBUk0g
YXJjaGl0ZWN0dXJlIHRoYXQ6CisgICAgICAgID4gV2hlcmUgdGhlIHZhbHVlIHJldHVybmVkIGJ5
IGEgcmVhZCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiBhIHN1YnNl
cXVlbnQgcmVhZCBvciB3cml0ZSAodGhpcyBpcyBrbm93biBhcyBhbiBhZGRyZXNzIGRlcGVuZGVu
Y3kpLCB0aGVuIHRoZXNlIHR3byBtZW1vcnkgYWNjZXNzZXMgd2lsbCBiZSBvYnNlcnZlZCBpbiBw
cm9ncmFtIG9yZGVyLiBBbiBhZGRyZXNzIGRlcGVuZGVuY3kgZXhpc3RzIGV2ZW4gaWYgdGhlIHZh
bHVlIHJlYWQgYnkgdGhlIGZpcnN0IHJlYWQgaGFzIG5vIGVmZmVjdCBpbiBjaGFuZ2luZyB0aGUg
dmlydHVhbCBhZGRyZXNzIChhcyBtaWdodCBiZSB0aGUgY2FzZSBpZiB0aGUgdmFsdWUgcmV0dXJu
ZWQgaXMgbWFza2VkIG9mZiBiZWZvcmUgaXQgaXMgdXNlZCwgb3IgaWYgaXQgaGFkIG5vIGVmZmVj
dCBvbiBjaGFuZ2luZyBhIHByZWRpY3RlZCBhZGRyZXNzIHZhbHVlKS4KKyAgICAgICAgPiBUaGlz
IHJlc3RyaWN0aW9uIGFwcGxpZXMgb25seSB3aGVuIHRoZSBkYXRhIHZhbHVlIHJldHVybmVkIGZy
b20gb25lIHJlYWQgaXMgdXNlZCBhcyBhIGRhdGEgdmFsdWUgdG8gY2FsY3VsYXRlIHRoZSBhZGRy
ZXNzIG9mIGEgc3Vic2VxdWVudCByZWFkIG9yIHdyaXRlLiBUaGlzIGRvZXMgbm90IGFwcGx5IGlm
IHRoZSBkYXRhIHZhbHVlIHJldHVybmVkIGZyb20gb25lIHJlYWQgaXMgdXNlZCB0byBkZXRlcm1p
bmUgdGhlIGNvbmRpdGlvbiBjb2RlIGZsYWdzLCBhbmQgdGhlIHZhbHVlcyBvZiB0aGUgZmxhZ3Mg
YXJlIHVzZWQgZm9yIGNvbmRpdGlvbiBjb2RlIGV2YWx1YXRpb24gdG8gZGV0ZXJtaW5lIHRoZSBh
ZGRyZXNzIG9mIGEgc3Vic2VxdWVudCByZWFkcywgZWl0aGVyIHRocm91Z2ggY29uZGl0aW9uYWwg
ZXhlY3V0aW9uIG9yIHRoZSBldmFsdWF0aW9uIG9mIGEgYnJhbmNoLiBUaGlzIGlzIGtub3duIGFz
IGEgY29udHJvbCBkZXBlbmRlbmN5LgorICAgICAgICA+IFdoZXJlIGJvdGggYSBjb250cm9sIGFu
ZCBhZGRyZXNzIGRlcGVuZGVuY3kgZXhpc3QsIHRoZSBvcmRlcmluZyBiZWhhdmlvdXIgaXMgY29u
c2lzdGVudCB3aXRoIHRoZSBhZGRyZXNzIGRlcGVuZGVuY3kuCisKKyAgICAgICAgQysrJ3MgbWVt
b3J5X29yZGVyX2NvbnN1bWUgaXMgdW5mb3J0dW5hdGVseSB1bmltcGxlbWVudGVkIGJ5IEMrKyBj
b21waWxlcnMsIGFuZCBtYXliZSB1bmltcGxlbWVudGFibGUgYXMgc3BlYydkLiBJJ20gd29ya2lu
ZyB3aXRoIGludGVyZXN0ZWQgZm9sa3MgaW4gdGhlIGNvbW1pdHRlZSB0byBmaXggdGhpcyBzaXR1
YXRpb246IGh0dHA6Ly93ZzIxLmxpbmsvcDAxOTByMgorCisgICAgICAgICogd3RmL0F0b21pY3Mu
aDoKKyAgICAgICAgKFdURjo6emVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeSk6IGEgMCB3aGljaCBj
YXJyaWVzIGEgZGVwZW5kZW5jeQorICAgICAgICAoV1RGOjpjb25zdW1lTG9hZCk6IHBpeGllIG1h
Z2ljCisKIDIwMTYtMDktMjcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIGRlcHJlY2F0ZWQgRU5DUllQVEVEX01FRElBIGltcGxlbWVudGF0aW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXRvbWljcy5oIGIvU291cmNlL1dURi93dGYvQXRv
bWljcy5oCmluZGV4IGU0NmE0YmEuLjMzNzVlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0F0b21pY3MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKQEAgLTIwMiw4ICsyMDIs
MTI1IEBAIGlubGluZSB2b2lkIG1lbW9yeUJhcnJpZXJCZWZvcmVVbmxvY2soKSB7IHN0ZDo6YXRv
bWljX3RocmVhZF9mZW5jZShzdGQ6Om1lbW9yeV9vCiAKICNlbmRpZgogCit0eXBlZGVmIHNpemVf
dCBDb25zdW1lRGVwZW5kZW5jeTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHNpemVvZihUKSA9PSA4Pjo6dHlwZSogPSBudWxscHRyPgorQUxXQVlTX0lO
TElORSBDb25zdW1lRGVwZW5kZW5jeSB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KFQgdmFsdWUp
Cit7CisgICAgdWludDY0X3QgZGVwZW5kZW5jeTsKKyAgICB1aW50NjRfdCBjb3B5ID0gYml0d2lz
ZV9jYXN0PHVpbnQ2NF90Pih2YWx1ZSk7CisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIENyZWF0ZSBh
IG1hZ2ljYWwgemVybyB2YWx1ZSB0aHJvdWdoIGlubGluZSBhc3NlbWJseSwgd2hvc2UgY29tcHV0
YXRpb24KKyAgICAvLyBpc24ndCB2aXNpYmxlIHRvIHRoZSBvcHRpbWl6ZXIuIFRoaXMgemVybyBp
cyB0aGVuIHVzYWJsZSBhcyBhbiBvZmZzZXQgaW4KKyAgICAvLyBmdXJ0aGVyIGFkZHJlc3MgY29t
cHV0YXRpb25zOiBhZGRpbmcgemVybyBkb2VzIG5vdGhpbmcsIGJ1dCB0aGUgY29tcGlsZXIKKyAg
ICAvLyBkb2Vzbid0IGtub3cgaXQuIEl0J3MgbWFnaWNhbCBiZWNhdXNlIGl0IGNyZWF0ZXMgYW4g
YWRkcmVzcyBkZXBlbmRlbmN5CisgICAgLy8gZnJvbSB0aGUgbG9hZCBvZiBgbG9jYXRpb25gIHRv
IHRoZSB1c2VzIG9mIHRoZSBkZXBlbmRlbmN5LCB3aGljaCB0cmlnZ2VycworICAgIC8vIHRoZSBB
Uk0gSVNBJ3MgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUsIGEuay5hLiB0aGUgbXl0aGljYWwgQysr
IGNvbnN1bWUKKyAgICAvLyBvcmRlcmluZy4gVGhpcyBmb3JjZXMgd2VhayBtZW1vcnkgb3JkZXIg
Q1BVcyB0byBvYnNlcnZlIGBsb2NhdGlvbmAgYW5kCisgICAgLy8gZGVwZW5kZW50IGxvYWRzIGlu
IHRoZWlyIHN0b3JlIG9yZGVyIHdpdGhvdXQgdGhlIHJlYWRlciB1c2luZyBhIGJhcnJpZXIKKyAg
ICAvLyBvciBhbiBhY3F1aXJlIGxvYWQuCisgICAgYXNtIHZvbGF0aWxlKCJlb3IgJXhbZGVwZW5k
ZW5jeV0sICV4W2luXSwgJXhbaW5dIgorICAgICAgICAgICAgICAgICA6IFtkZXBlbmRlbmN5XSAi
PXIiKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAgIDogW2luXSAiciIoY29weSkKKyAgICAg
ICAgICAgICAgICAgLy8gTGllIGFib3V0IHRvdWNoaW5nIG1lbW9yeS4gTm90IHN0cmljdGx5IG5l
ZWRlZCwgYnV0IGlzCisgICAgICAgICAgICAgICAgIC8vIGxpa2VseSB0byBhdm9pZCB1bndhbnRl
ZCBsb2FkL3N0b3JlIG1vdGlvbi4KKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CisgICAg
cmV0dXJuIGRlcGVuZGVuY3k7CisjZWxpZiBDUFUoQVJNKQorICAgIGFzbSB2b2xhdGlsZSgiZW9y
ICVbZGVwZW5kZW5jeV0sICVbaW5dLCAlW2luXSIKKyAgICAgICAgICAgICAgICAgOiBbZGVwZW5k
ZW5jeV0gIj1yIihkZXBlbmRlbmN5KQorICAgICAgICAgICAgICAgICA6IFtpbl0gInIiKGNvcHkp
CisgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOworICAgIHJldHVybiBkZXBlbmRlbmN5Owor
I2Vsc2UKKyAgICAvLyBObyBkZXBlbmRlbmN5IGlzIG5lZWRlZCBmb3IgdGhpcyBhcmNoaXRlY3R1
cmUuCisgICAgbG9hZExvYWRGZW5jZSgpOworICAgICh2b2lkKWRlcGVuZGVuY3k7CisgICAgKHZv
aWQpY29weTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDQ+Ojp0eXBlKiA9IG51bGxw
dHI+CitBTFdBWVNfSU5MSU5FIENvbnN1bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVu
ZGVuY3koVCB2YWx1ZSkKK3sKKyAgICB1aW50MzJfdCBkZXBlbmRlbmN5OworICAgIHVpbnQzMl90
IGNvcHkgPSBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKTsKKyNpZiBDUFUoQVJNNjQpCisg
ICAgYXNtIHZvbGF0aWxlKCJlb3IgJXdbZGVwZW5kZW5jeV0sICV3W2luXSwgJXdbaW5dIgorICAg
ICAgICAgICAgICAgICA6IFtkZXBlbmRlbmN5XSAiPXIiKGRlcGVuZGVuY3kpCisgICAgICAgICAg
ICAgICAgIDogW2luXSAiciIoY29weSkKKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7Cisg
ICAgcmV0dXJuIGRlcGVuZGVuY3k7CisjZWxpZiBDUFUoQVJNKQorICAgIGFzbSB2b2xhdGlsZSgi
ZW9yICVbZGVwZW5kZW5jeV0sICVbaW5dLCAlW2luXSIKKyAgICAgICAgICAgICAgICAgOiBbZGVw
ZW5kZW5jeV0gIj1yIihkZXBlbmRlbmN5KQorICAgICAgICAgICAgICAgICA6IFtpbl0gInIiKGNv
cHkpCisgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOworICAgIHJldHVybiBkZXBlbmRlbmN5
OworI2Vsc2UKKyAgICBsb2FkTG9hZEZlbmNlKCk7CisgICAgKHZvaWQpZGVwZW5kZW5jeTsKKyAg
ICAodm9pZCljb3B5OworICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzaXplb2YoVCkgPT0gMj46OnR5cGUqID0g
bnVsbHB0cj4KK0FMV0FZU19JTkxJTkUgQ29uc3VtZURlcGVuZGVuY3kgemVyb1dpdGhDb25zdW1l
RGVwZW5kZW5jeShUIHZhbHVlKQoreworICAgIHVpbnQxNl90IGNvcHkgPSBiaXR3aXNlX2Nhc3Q8
dWludDE2X3Q+KHZhbHVlKTsKKyAgICByZXR1cm4gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShz
dGF0aWNfY2FzdDxzaXplX3Q+KGNvcHkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHNpemVvZihUKSA9PSAxPjo6dHlwZSogPSBudWxscHRyPgor
QUxXQVlTX0lOTElORSBDb25zdW1lRGVwZW5kZW5jeSB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5
KFQgdmFsdWUpCit7CisgICAgdWludDhfdCBjb3B5ID0gYml0d2lzZV9jYXN0PHVpbnQ4X3Q+KHZh
bHVlKTsKKyAgICByZXR1cm4gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShzdGF0aWNfY2FzdDxz
aXplX3Q+KGNvcHkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29uc3Vt
ZWQgeworICAgIFQgdmFsdWU7CisgICAgQ29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeTsKK307
CisKKy8vIENvbnN1bWUgbG9hZCwgcmV0dXJuaW5nIHRoZSBsb2FkZWQgYHZhbHVlYCBhdCBgbG9j
YXRpb25gIGFuZCBhIGRlcGVuZGVudC16ZXJvCisvLyB3aGljaCBjcmVhdGVzIGFuIGFkZHJlc3Mg
ZGVwZW5kZW5jeSBmcm9tIHRoZSBgbG9jYXRpb25gLgorLy8KKy8vIFVzYWdlIG5vdGVzOgorLy8K
Ky8vICAqIFJlZ2FyZGluZyBjb250cm9sIGRlcGVuZGVuY2llczogbWVyZWx5IGJyYW5jaGluZyBi
YXNlZCBvbiBgdmFsdWVgIG9yCisvLyAgICBgZGVwZW5kZW5jeWAgaXNuJ3Qgc3VmZmljaWVudCB0
byBpbXBvc2UgYSBkZXBlbmRlbmN5IG9yZGVyaW5nOiB5b3UgbXVzdAorLy8gICAgdXNlIGBkZXBl
bmRlbmN5YCBpbiB0aGUgYWRkcmVzcyBjb21wdXRhdGlvbiBvZiBzdWJzZXF1ZW50IGxvYWRzIHdo
aWNoCisvLyAgICBzaG91bGQgb2JzZXJ2ZSB0aGUgc3RvcmUgb3JkZXIgdy5yLnQuIGBsb2NhdGlv
bmAuCisvLyAqIFJlZ2FyZGluZyBtZW1vcnkgb3JkZXJpbmc6IGNvbnN1bWUgbG9hZCBvcmRlcnMg
dGhlIGBsb2NhdGlvbmAgbG9hZCB3aXRoCisvLyAgIHN1c2VxdWVudCBkZXBlbmRlbnQgbG9hZHMg
Km9ubHkqLiBJdCBzYXlzIG5vdGhpbmcgYWJvdXQgb3JkZXJpbmcgb2Ygb3RoZXIKKy8vICAgbG9h
ZHMhCisvLworLy8gQ2F2ZWF0IGVtcHRvci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorQUxXQVlT
X0lOTElORSBhdXRvIGNvbnN1bWVMb2FkKGNvbnN0IFQqIGxvY2F0aW9uKQoreworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUgUmV0dXJuZWQ7CisgICAgQ29uc3Vt
ZWQ8UmV0dXJuZWQ+IHJldCB7IH07CisgICAgLy8gRm9yY2UgdGhlIHJlYWQgb2YgYGxvY2F0aW9u
YCB0byBvY2N1ciBleGFjdGx5IG9uY2UgYW5kIHdpdGhvdXQgZnVzaW5nIG9yCisgICAgLy8gZm9y
d2FyZGluZyB1c2luZyB2b2xhdGlsZS4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgY29t
cGlsZXIgY291bGQKKyAgICAvLyBvdGhlcndpc2UgcmVtYXRlcmlhbGl6ZSBvciBmaW5kIGVxdWl2
YWxlbnQgbG9hZHMsIG9yIHNpbXBseSBmb3J3YXJkIGZyb20KKyAgICAvLyBhIHByZXZpb3VzIG9u
ZSwgYW5kIGxvc2UgdGhlIGRlcGVuZGVuY3kgd2UncmUgdHJ5aW5nIHNvIGhhcmQgdG8KKyAgICAv
LyBjcmVhdGUuIFByZXZlbnQgdGVhcmluZyBieSB1c2luZyBhbiBhdG9taWMsIGJ1dCBsZXQgaXQg
bW92ZSBhcm91bmQgYnkKKyAgICAvLyB1c2luZyByZWxheGVkLiBXZSBoYXZlIGF0IGxlYXN0IGEg
bWVtb3J5IGZlbmNlIGFmdGVyIHRoaXMgd2hpY2ggcHJldmVudHMKKyAgICAvLyB0aGUgbG9hZCBm
cm9tIG1vdmluZyB0b28gbXVjaC4KKyAgICByZXQudmFsdWUgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IHZvbGF0aWxlIHN0ZDo6YXRvbWljPFJldHVybmVkPio+KGxvY2F0aW9uKS0+bG9hZChzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICByZXQuZGVwZW5kZW5jeSA9IHplcm9XaXRoQ29u
c3VtZURlcGVuZGVuY3kocmV0LnZhbHVlKTsKKyAgICByZXR1cm4gcmV0OworfQorCiB9IC8vIG5h
bWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpBdG9taWM7Cit1c2luZyBXVEY6OkNvbnN1bWVEZXBl
bmRlbmN5OwordXNpbmcgV1RGOjpjb25zdW1lTG9hZDsKIAogI2VuZGlmIC8vIEF0b21pY3NfaApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYzMjg4
NTUuLjU4YzViZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wOS0yNiAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKKyAgICAgICAgU3BlZWQgdXAgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjA5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNwcDogQWRkZWQuCisgICAgICAgICh0ZXN0Q29uc3VtZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0wOS0yNyAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJFR1JFU1NJT04gKHIxODIx
MjYpOiBTZWxlY3Rpb24gaGlnaGxpZ2h0IGFuZCBoYW5kbGVzIGFyZW7igJl0IHZpc2libGUgd2l0
aCBXS1NlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAyZGE0YzhkLi5mYTM4MzE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQKQEAgLTQyLDYgKzQyLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvQXRvbWljU3RyaW5nLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9CbG9vbUZpbHRlci5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYv
Q29uc3VtZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ3Jvc3NUaHJl
YWRUYXNrLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9DU3RyaW5nLmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9DaGVja2VkQXJpdGhtZXRpY09w
ZXJhdGlvbnMuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4MjE0MGUuLjY4NDFjNDUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MzAsNiArNDMwLDcgQEAKIAkJQTFERjc0MzIx
QzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY3NDMwMUM0MUI2NTgw
MEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi87IH07CiAJCUE1N0Ez
NEYyMTZBRjZCMkIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5n
ZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTdBMzRGMTE2QUY2OUUyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhX
aW5kb3dDaGFuZ2VzLmh0bWwgKi87IH07CiAJCUE1RTIwMjc1MTVCMjFGNkUwMEMxM0UxNCAvKiBX
aW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RTIwMjcwMTVCMjE4MDYwMEMxM0UxNCAvKiBX
aW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sICovOyB9OworCQlBRENFQkJBNjFEOUFFMjI5
MDAyRTI4M0EgLyogQ29uc3VtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBRENFQkJBNTFEOTlENENGMDAyRTI4M0EgLyogQ29uc3VtZS5jcHAgKi87
IH07CiAJCUI1NUFEMUQ1MTc5RjNCMzAwMEFDMTQ5NCAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1
dG9SZXNpemluZ19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjU1QUQxRDMxNzlGM0FCRjAwQUMxNDk0IC8qIFByZXZlbnRJbWFnZUxvYWRX
aXRoQXV0b1Jlc2l6aW5nX0J1bmRsZS5jcHAgKi87IH07CiAJCUI1NUYxMUI3MTUxN0QwMzMwMDkx
NTkxNiAvKiBhdHRyaWJ1dGVkU3RyaW5nQ3VzdG9tRm9udC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NUYxMUIwMTUxN0EyQzQwMDkx
NTkxNiAvKiBhdHRyaWJ1dGVkU3RyaW5nQ3VzdG9tRm9udC5odG1sICovOyB9OwogCQlCNTVGMTFC
RTE1MTkxQTA2MDA5MTU5MTYgLyogQWhlbS50dGYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RjExQjkxNTE5MTZFNjAwOTE1OTE2IC8qIEFo
ZW0udHRmICovOyB9OwpAQCAtMTA1NSw2ICsxMDU2LDcgQEAKIAkJQTVFMjAyNzAxNUIyMTgwNjAw
QzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUUyMDI3MjE1QjIxODE5MDBDMTNFMTQgLyogV2luZG93bGVz
c1dlYlZpZXdXaXRoTWVkaWEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNrZWRBcml0aG1ldGljT3Bl
cmF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGVja2Vk
QXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
RENFQkJBNTFEOTlENENGMDAyRTI4M0EgLyogQ29uc3VtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjQwMzlGOUMxNUU2RDhCMzAwNzI1NUQ2IC8qIE1hdGhFeHRyYXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aEV4dHJhcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUI1NUFEMUQxMTc5RjMzNjYwMEFDMTQ5NCAvKiBQcmV2ZW50SW1h
Z2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFByZXZlbnRJ
bWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tOyBwYXRoID0gV2ViS2l0Mk9iakMvUHJldmVudElt
YWdlTG9hZFdpdGhBdXRvUmVzaXppbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUI1NUFEMUQzMTc5RjNBQkYwMEFDMTQ5NCAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNp
emluZ19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJl
dmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdfQnVuZGxlLmNwcDsgcGF0aCA9IFdlYktpdDJP
YmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1bmRsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzI5LDYgKzE3MzEsNyBAQAogCQkJCUU0MDAxOTMwMUFD
RTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5jcHAgKi8sCiAJCQkJQTdBOTY2REExNDBFQ0ND
ODAwNUVGOUI0IC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJMEZF
QUUzNjcxQjdEMTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCisJCQkJQURDRUJCQTUx
RDk5RDRDRjAwMkUyODNBIC8qIENvbnN1bWUuY3BwICovLAogCQkJCTUxNzE0RUI5MUQwODc0MTYw
MDQ3MjNDNCAvKiBDcm9zc1RocmVhZFRhc2suY3BwICovLAogCQkJCTI2QTJDNzJFMTVFMkU3M0Mw
MDVCMUExNCAvKiBDU3RyaW5nLmNwcCAqLywKIAkJCQk3QUEwMjFCQTFBQjA5RUE3MDA1Mjk1M0Yg
LyogRGF0ZU1hdGguY3BwICovLApAQCAtMjI0MCw2ICsyMjQzLDcgQEAKIAkJCQk3QzgzREVGNjFE
MEE1OTBDMDBGRUJDRjMgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzREVGRTFEMEE1OTBDMDBGRUJDRjMgLyogTmFrZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RGMDExRDBBNTkwQzAwRkVCQ0YzIC8qIE9wdGlvbmFsLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUFEQ0VCQkE2MUQ5QUUyMjkwMDJFMjgzQSAvKiBDb25zdW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERjAyMUQwQTU5MEMwMEZFQkNGMyAvKiBPU09iamVjdFB0ci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREY1OTFEMEE1OTBDMDBGRUJDRjMgLyogUGFya2luZ0xvdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYxMzFEMEE1OTBDMDBGRUJDRjMgLyogUmVkQmxh
Y2tUcmVlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ29uc3VtZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9D
b25zdW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjBiZDg4Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3VtZS5j
cHAKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx0aHJlYWQ+CisjaW5j
bHVkZSA8d3RmL0F0b21pY3MuaD4KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitORVZFUl9JTkxJ
TkUgYXV0byB0ZXN0Q29uc3VtZShjb25zdCBUKiBsb2NhdGlvbikKK3sKKyAgICBXVEY6OmNvbXBp
bGVyRmVuY2UoKTsgLy8gUGFyYW5vaWQgdGVzdGluZy4KKyAgICBhdXRvIHJldCA9IFdURjo6Y29u
c3VtZUxvYWQobG9jYXRpb24pOworICAgIFdURjo6Y29tcGlsZXJGZW5jZSgpOyAvLyBQYXJhbm9p
ZCB0ZXN0aW5nLgorICAgIHJldHVybiByZXQ7Cit9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworVEVTVChXVEYsIENvbnN1bWVpOCkKK3sKKyAgICB1aW50OF90IGk4ID0gNDI7CisgICAg
YXV0byBpOF9jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZpOCk7CisgICAgQVNTRVJUX0VRKGk4X2Nv
bnN1bWVkLnZhbHVlLCA0MnUpOworICAgIEFTU0VSVF9FUShpOF9jb25zdW1lZC5kZXBlbmRlbmN5
LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBDb25zdW1laTE2KQoreworICAgIHVpbnQxNl90IGkxNiA9
IDQyOworICAgIGF1dG8gaTE2X2NvbnN1bWVkID0gdGVzdENvbnN1bWUoJmkxNik7CisgICAgQVNT
RVJUX0VRKGkxNl9jb25zdW1lZC52YWx1ZSwgNDJ1KTsKKyAgICBBU1NFUlRfRVEoaTE2X2NvbnN1
bWVkLmRlcGVuZGVuY3ksIDB1KTsKK30KKworVEVTVChXVEYsIENvbnN1bWVpMzIpCit7CisgICAg
dWludDMyX3QgaTMyID0gNDI7CisgICAgYXV0byBpMzJfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgm
aTMyKTsKKyAgICBBU1NFUlRfRVEoaTMyX2NvbnN1bWVkLnZhbHVlLCA0MnUpOworICAgIEFTU0VS
VF9FUShpMzJfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29uc3Vt
ZWk2NCkKK3sKKyAgICB1aW50NjRfdCBpNjQgPSA0MjsKKyAgICBhdXRvIGk2NF9jb25zdW1lZCA9
IHRlc3RDb25zdW1lKCZpNjQpOworICAgIEFTU0VSVF9FUShpNjRfY29uc3VtZWQudmFsdWUsIDQy
dSk7CisgICAgQVNTRVJUX0VRKGk2NF9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7Cit9CisKK1RF
U1QoV1RGLCBDb25zdW1lZjMyKQoreworICAgIGZsb2F0IGYzMiA9IDQyLmY7CisgICAgYXV0byBm
MzJfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmZjMyKTsKKyAgICBBU1NFUlRfRVEoZjMyX2NvbnN1
bWVkLnZhbHVlLCA0Mi5mKTsKKyAgICBBU1NFUlRfRVEoZjMyX2NvbnN1bWVkLmRlcGVuZGVuY3ks
IDB1KTsKK30KKworVEVTVChXVEYsIENvbnN1bWVmNjQpCit7CisgICAgZG91YmxlIGY2NCA9IDQy
LjsKKyAgICBhdXRvIGY2NF9jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZmNjQpOworICAgIEFTU0VS
VF9FUShmNjRfY29uc3VtZWQudmFsdWUsIDQyLik7CisgICAgQVNTRVJUX0VRKGY2NF9jb25zdW1l
ZC5kZXBlbmRlbmN5LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBDb25zdW1lUHRyKQoreworICAgIGF1
dG8qIHB0ciA9ICZtYWluOworICAgIGF1dG8gcHRyX2NvbnN1bWVkID0gdGVzdENvbnN1bWUoJnB0
cik7CisgICAgQVNTRVJUX0VRKHB0cl9jb25zdW1lZC52YWx1ZSwgJm1haW4pOworICAgIEFTU0VS
VF9FUShwdHJfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29uc3Vt
ZUNoYXJQdHIpCit7CisgICAgY2hhciogaGVsbG8gPSBudWxscHRyOworICAgIGF1dG8qIHN0YWNr
ID0gJmhlbGxvOworICAgIGF1dG8gc3RhY2tfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmc3RhY2sp
OworICAgIEFTU0VSVF9FUShzdGFja19jb25zdW1lZC52YWx1ZSwgJmhlbGxvKTsKKyAgICBBU1NF
UlRfRVEoc3RhY2tfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29u
c3VtZVdpdGhUaHJlYWQpCit7CisgICAgYm9vbCByZWFkeSA9IGZhbHNlOworICAgIGNvbnN0ZXhw
ciBzaXplX3QgbnVtID0gMTAyNDsKKyAgICB1aW50MzJfdCogdmVjID0gbmV3IHVpbnQzMl90W251
bV07CisgICAgc3RkOjp0aHJlYWQgdChbJl0oKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpICE9IG51bTsgKytpKQorICAgICAgICAgICAgdmVjW2ldID0gaSAqIDI7CisgICAgICAgIFdU
Rjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgICAgIHJlYWR5ID0gdHJ1ZTsKKyAgICB9KTsKKyAg
ICBkbyB7CisgICAgICAgIGF1dG8gc3RhY2tfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmcmVhZHkp
OworICAgICAgICBpZiAoc3RhY2tfY29uc3VtZWQudmFsdWUpIHsKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpICE9IG51bTsgKytpKQorICAgICAgICAgICAgICAgIEFTU0VSVF9FUSh2
ZWNbaSArIHN0YWNrX2NvbnN1bWVkLmRlcGVuZGVuY3ldLCBpICogMik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKHRydWUpOworICAgIHQuam9pbigpOworICAg
IGRlbGV0ZVtdIHZlYzsKK30KK30KLS0gCjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289993</attachid>
            <date>2016-09-27 12:08:54 -0700</date>
            <delta_ts>2016-09-27 13:42:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>21496</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA2ZWZhMWE5NTZkZWY2YjExN2JjMDViNmY2NzM0MDYwZTVmYjNlN2FiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCAgICAg
ICAgICAgfCAgMjQgKysrLQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgNDQgKysrKysrKwogU291cmNlL1dURi93dGYvQXRvbWljcy5oICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAxMTMgKysrKysrKysrKysrKysrKysKIFRvb2xzL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrCiBUb29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4v
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgICB8ICAgNCArCiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNwcCAgICAgICAgICB8IDE0MSAr
KysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMzQ5IGluc2VydGlvbnMoKyks
IDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ29uc3VtZS5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2NjIxZDM4
Li5mZjFmNjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ni0wOS0yNiAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3Bl
ZWQgdXAgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjA5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkIHVwIGlzTWFya2VkQ29uY3VycmVudGx5IGJ5
IHVzaW5nIFdURjo6Y29uc3VtZUxvYWQuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OmFyZU1hcmtzU3RhbGVXaXRoRGVwZW5kZW5jeSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZENvbmN1cnJlbnRseSk6IGRvIGF3YXkgd2l0aCB0aGUg
bG9hZC1sb2FkIGZlbmNlCisKIDIwMTYtMDktMjcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRlcHJlY2F0ZWQgRU5DUllQVEVEX01FRElBIGltcGxl
bWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXgg
ZGQ5ZTg0NC4uYTY0NjlmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCkBAIC0yNjksOSArMjY5LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsK
ICAgICAgICAgCiAgICAgV2Vha1NldCYgd2Vha1NldCgpOwotICAgIAotICAgIGJvb2wgYXJlTWFy
a3NTdGFsZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7CisKICAgICBib29sIGFyZU1hcmtz
U3RhbGUoKTsKKyAgICBib29sIGFyZU1hcmtzU3RhbGUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24pOworICAgIHN0cnVjdCBNYXJrc1dpdGhEZXBlbmRlbmN5IHsKKyAgICAgICAgYm9vbCBhcmVT
dGFsZTsKKyAgICAgICAgQ29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeTsKKyAgICB9OworICAg
IE1hcmtzV2l0aERlcGVuZGVuY3kgYXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICAgICAgCkBAIC00NzQsNiArNDc5LDE1IEBAIGlubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uKQogICAgIHJldHVybiBtYXJraW5nVmVyc2lvbiAhPSBtX21hcmtpbmdWZXJzaW9uOwogfQog
CitBTFdBWVNfSU5MSU5FIE1hcmtlZEJsb2NrOjpNYXJrc1dpdGhEZXBlbmRlbmN5IE1hcmtlZEJs
b2NrOjphcmVNYXJrc1N0YWxlV2l0aERlcGVuZGVuY3koSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24pCit7CisgICAgYXV0byBjb25zdW1lZCA9IGNvbnN1bWVMb2FkKCZtX21hcmtpbmdWZXJzaW9u
KTsKKyAgICBNYXJrc1dpdGhEZXBlbmRlbmN5IHJldDsKKyAgICByZXQuYXJlU3RhbGUgPSBjb25z
dW1lZC52YWx1ZSAhPSBtYXJraW5nVmVyc2lvbjsKKyAgICByZXQuZGVwZW5kZW5jeSA9IGNvbnN1
bWVkLmRlcGVuZGVuY3k7CisgICAgcmV0dXJuIHJldDsKK30KKwogaW5saW5lIHZvaWQgTWFya2Vk
QmxvY2s6OmFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQogewogICAgIGlm
IChVTkxJS0VMWShhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkpCkBAIC00OTksMTAgKzUx
MywxMCBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoSGVhcFZlcnNpb24gbWFy
a2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQqIHApCiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpp
c01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9p
ZCogcCkKIHsKLSAgICBpZiAoYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpCisgICAgYXV0
byBtYXJrc1dpdGhEZXBlbmRlbmN5ID0gYXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KG1hcmtp
bmdWZXJzaW9uKTsKKyAgICBpZiAobWFya3NXaXRoRGVwZW5kZW5jeS5hcmVTdGFsZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwotICAgIHJldHVybiBt
X21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51
bWJlcihwKSArIG1hcmtzV2l0aERlcGVuZGVuY3kuZGVwZW5kZW5jeSk7CiB9CiAKIGlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjp0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqIHApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY1
YzYzYzIuLmU3MTYwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTYtMDktMjYgIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwZWVkIHVwIEhlYXA6OmlzTWFy
a2VkQ29uY3VycmVudGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSBoYWQgYSBsb2FkLWxvYWQgZmVuY2Ug
d2hpY2ggaXMgZXhwZW5zaXZlIG9uIHdlYWsgbWVtb3J5IElTQXMgc3VjaCBhcyBBUk0uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpcyBmYWlybHkgcGVyZi1uZXV0cmFsIG92ZXJhbGwsIGJ1dCB0aGUg
R0MncyBpbnN0cnVtZW50YXRpb24gcmVwb3J0czoKKyAgICAgICAgICBHQzpFZGVuIGlzIDkzJSBh
dmVyYWdlIHJ1bnRpbWUgYWZ0ZXIgY2hhbmdlCisgICAgICAgICAgR0M6RnVsbCBpcyA3NiUgYXZl
cmFnZSBydW50aW1lIGFmdGVyIGNoYW5nZQorCisgICAgICAgIFRoZSBmZW5jZSB3YXMgdGhlcmUg
YmVjYXVzZToKKyAgICAgICAgIDEuIElmIHRoZSByZWFkIG9mIG1fbWFya2luZ1ZlcnNpb24gaW4g
TWFya2VkQmxvY2s6OmFyZU1hcmtzU3RhbGUgaXNuJ3Qgd2hhdCdzIGV4cGVjdGVkIHRoZW47Cisg
ICAgICAgICAyLiBUaGUgcmVhZCBvZiBtX21hcmtzIGluIE1hcmtlZEJsb2NrOjppc01hcmtlZCBu
ZWVkcyB0byBvYnNlcnZlIHRoZSB2YWx1ZSB0aGF0IHdhcyBzdG9yZWQgKmJlZm9yZSogbV9tYXJr
aW5nVmVyc2lvbiB3YXMgc3RvcmVkLgorCisgICAgICAgIFRoaXMgb3JkZXJpbmcgaXNuJ3QgZ3Vh
cmFudGVlZCBvbiBBUk0sIHdoaWNoIGhhcyBhIHdlYWsgbWVtb3J5IG1vZGVsLgorCisgICAgICAg
IFRoZXJlIGFyZSAzIHdheXMgdG8gZ3VhcmFudGVlIHRoaXMgb3JkZXJpbmc6CisgICAgICAgICBB
LiBVc2UgYSBiYXJyaWVyIGluc3RydWN0aW9uLgorICAgICAgICAgQi4gVXNlIGEgbG9hZC1hY3F1
aXJlIChuZXcgaW4gQVJNdjgpLgorICAgICAgICAgQy4gdXNlIEFSTSdzIGFkZHJlc3MgZGVwZW5k
ZW5jeSBydWxlLCB3aGljaCBDKysgY2FsbHMgbWVtb3J5X29yZGVyX2NvbnN1bWUuCisKKyAgICAg
ICAgSW4gZ2VuZXJhbDoKKyAgICAgICAgIEEuIGlzIHNsb3cgYnV0IG9yZGVycyBhbGwgb2YgbWVt
b3J5IGluIGFuIGludHVpdGl2ZSBtYW5uZXIuCisgICAgICAgICBCLiBpcyBmYXN0ZXItaXNoIGFu
ZCBoYXMgdGhlIHNhbWUgcHJvcGVydHktaXNoLgorICAgICAgICAgQy4gc2hvdWxkIGJlIGZhc3Rl
ciBzdGlsbCwgYnV0ICpvbmx5IG9yZGVycyBkZXBlbmRlbnQgbG9hZHMqLiBUaGlzIGxhc3QgcGFy
dCBpcyBjcml0aWNhbCEgQ29uc3VtZSBpc24ndCBhbiBhbGwtb3V0IHJlcGxhY2VtZW50IGZvciBh
Y3F1aXJlIChhY3F1aXJlIGlzIHJhdGhlciBhIHN1cGVyc2V0IG9mIGNvbnN1bWUpLgorCisgICAg
ICAgIEFSTSBleHBsYWlucyB0aGUgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUgaW4gdGhlaXIgZG9j
dW1lbnQgImJhcnJpZXIgbGl0bXVzIHRlc3RzIGFuZCBjb29rYm9vayI6CisKKyAgICAgICAgPiAq
UmVzb2x2aW5nIGJ5IHRoZSB1c2Ugb2YgYmFycmllcnMgYW5kIGFkZHJlc3MgZGVwZW5kZW5jeSoK
KyAgICAgICAgPgorICAgICAgICA+IFRoZXJlIGlzIGEgcnVsZSB3aXRoaW4gdGhlIEFSTSBhcmNo
aXRlY3R1cmUgdGhhdDoKKyAgICAgICAgPiBXaGVyZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYSBy
ZWFkIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIGEgc3Vic2VxdWVu
dCByZWFkIG9yIHdyaXRlICh0aGlzIGlzIGtub3duIGFzIGFuIGFkZHJlc3MgZGVwZW5kZW5jeSks
IHRoZW4gdGhlc2UgdHdvIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGJlIG9ic2VydmVkIGluIHByb2dy
YW0gb3JkZXIuIEFuIGFkZHJlc3MgZGVwZW5kZW5jeSBleGlzdHMgZXZlbiBpZiB0aGUgdmFsdWUg
cmVhZCBieSB0aGUgZmlyc3QgcmVhZCBoYXMgbm8gZWZmZWN0IGluIGNoYW5naW5nIHRoZSB2aXJ0
dWFsIGFkZHJlc3MgKGFzIG1pZ2h0IGJlIHRoZSBjYXNlIGlmIHRoZSB2YWx1ZSByZXR1cm5lZCBp
cyBtYXNrZWQgb2ZmIGJlZm9yZSBpdCBpcyB1c2VkLCBvciBpZiBpdCBoYWQgbm8gZWZmZWN0IG9u
IGNoYW5naW5nIGEgcHJlZGljdGVkIGFkZHJlc3MgdmFsdWUpLgorICAgICAgICA+IFRoaXMgcmVz
dHJpY3Rpb24gYXBwbGllcyBvbmx5IHdoZW4gdGhlIGRhdGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBv
bmUgcmVhZCBpcyB1c2VkIGFzIGEgZGF0YSB2YWx1ZSB0byBjYWxjdWxhdGUgdGhlIGFkZHJlc3Mg
b2YgYSBzdWJzZXF1ZW50IHJlYWQgb3Igd3JpdGUuIFRoaXMgZG9lcyBub3QgYXBwbHkgaWYgdGhl
IGRhdGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBvbmUgcmVhZCBpcyB1c2VkIHRvIGRldGVybWluZSB0
aGUgY29uZGl0aW9uIGNvZGUgZmxhZ3MsIGFuZCB0aGUgdmFsdWVzIG9mIHRoZSBmbGFncyBhcmUg
dXNlZCBmb3IgY29uZGl0aW9uIGNvZGUgZXZhbHVhdGlvbiB0byBkZXRlcm1pbmUgdGhlIGFkZHJl
c3Mgb2YgYSBzdWJzZXF1ZW50IHJlYWRzLCBlaXRoZXIgdGhyb3VnaCBjb25kaXRpb25hbCBleGVj
dXRpb24gb3IgdGhlIGV2YWx1YXRpb24gb2YgYSBicmFuY2guIFRoaXMgaXMga25vd24gYXMgYSBj
b250cm9sIGRlcGVuZGVuY3kuCisgICAgICAgID4gV2hlcmUgYm90aCBhIGNvbnRyb2wgYW5kIGFk
ZHJlc3MgZGVwZW5kZW5jeSBleGlzdCwgdGhlIG9yZGVyaW5nIGJlaGF2aW91ciBpcyBjb25zaXN0
ZW50IHdpdGggdGhlIGFkZHJlc3MgZGVwZW5kZW5jeS4KKworICAgICAgICBDKysncyBtZW1vcnlf
b3JkZXJfY29uc3VtZSBpcyB1bmZvcnR1bmF0ZWx5IHVuaW1wbGVtZW50ZWQgYnkgQysrIGNvbXBp
bGVycywgYW5kIG1heWJlIHVuaW1wbGVtZW50YWJsZSBhcyBzcGVjJ2QuIEknbSB3b3JraW5nIHdp
dGggaW50ZXJlc3RlZCBmb2xrcyBpbiB0aGUgY29tbWl0dGVlIHRvIGZpeCB0aGlzIHNpdHVhdGlv
bjogaHR0cDovL3dnMjEubGluay9wMDE5MHIyCisKKyAgICAgICAgKiB3dGYvQXRvbWljcy5oOgor
ICAgICAgICAoV1RGOjp6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KTogYSAwIHdoaWNoIGNhcnJp
ZXMgYSBkZXBlbmRlbmN5CisgICAgICAgIChXVEY6OmNvbnN1bWVMb2FkKTogcGl4aWUgbWFnaWMK
KwogMjAxNi0wOS0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgZGVwcmVjYXRlZCBFTkNSWVBURURfTUVESUEgaW1wbGVtZW50YXRpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmggYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNz
LmgKaW5kZXggZTQ2YTRiYS4uMzg4Njc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXRv
bWljcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0F0b21pY3MuaApAQCAtMjAyLDggKzIwMiwxMjEg
QEAgaW5saW5lIHZvaWQgbWVtb3J5QmFycmllckJlZm9yZVVubG9jaygpIHsgc3RkOjphdG9taWNf
dGhyZWFkX2ZlbmNlKHN0ZDo6bWVtb3J5X28KIAogI2VuZGlmCiAKK3R5cGVkZWYgc2l6ZV90IENv
bnN1bWVEZXBlbmRlbmN5OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c2l6ZW9mKFQpID09IDg+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdBWVNfSU5MSU5F
IENvbnN1bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koVCB2YWx1ZSkKK3sK
KyAgICB1aW50NjRfdCBkZXBlbmRlbmN5OworICAgIHVpbnQ2NF90IGNvcHkgPSBiaXR3aXNlX2Nh
c3Q8dWludDY0X3Q+KHZhbHVlKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgLy8gQ3JlYXRlIGEgbWFn
aWNhbCB6ZXJvIHZhbHVlIHRocm91Z2ggaW5saW5lIGFzc2VtYmx5LCB3aG9zZSBjb21wdXRhdGlv
bgorICAgIC8vIGlzbid0IHZpc2libGUgdG8gdGhlIG9wdGltaXplci4gVGhpcyB6ZXJvIGlzIHRo
ZW4gdXNhYmxlIGFzIGFuIG9mZnNldCBpbgorICAgIC8vIGZ1cnRoZXIgYWRkcmVzcyBjb21wdXRh
dGlvbnM6IGFkZGluZyB6ZXJvIGRvZXMgbm90aGluZywgYnV0IHRoZSBjb21waWxlcgorICAgIC8v
IGRvZXNuJ3Qga25vdyBpdC4gSXQncyBtYWdpY2FsIGJlY2F1c2UgaXQgY3JlYXRlcyBhbiBhZGRy
ZXNzIGRlcGVuZGVuY3kKKyAgICAvLyBmcm9tIHRoZSBsb2FkIG9mIGBsb2NhdGlvbmAgdG8gdGhl
IHVzZXMgb2YgdGhlIGRlcGVuZGVuY3ksIHdoaWNoIHRyaWdnZXJzCisgICAgLy8gdGhlIEFSTSBJ
U0EncyBhZGRyZXNzIGRlcGVuZGVuY3kgcnVsZSwgYS5rLmEuIHRoZSBteXRoaWNhbCBDKysgY29u
c3VtZQorICAgIC8vIG9yZGVyaW5nLiBUaGlzIGZvcmNlcyB3ZWFrIG1lbW9yeSBvcmRlciBDUFVz
IHRvIG9ic2VydmUgYGxvY2F0aW9uYCBhbmQKKyAgICAvLyBkZXBlbmRlbnQgbG9hZHMgaW4gdGhl
aXIgc3RvcmUgb3JkZXIgd2l0aG91dCB0aGUgcmVhZGVyIHVzaW5nIGEgYmFycmllcgorICAgIC8v
IG9yIGFuIGFjcXVpcmUgbG9hZC4KKyAgICBhc20gdm9sYXRpbGUoImVvciAleFtkZXBlbmRlbmN5
XSwgJXhbaW5dLCAleFtpbl0iCisgICAgICAgICAgICAgICAgIDogW2RlcGVuZGVuY3ldICI9ciIo
ZGVwZW5kZW5jeSkKKyAgICAgICAgICAgICAgICAgOiBbaW5dICJyIihjb3B5KQorICAgICAgICAg
ICAgICAgICAvLyBMaWUgYWJvdXQgdG91Y2hpbmcgbWVtb3J5LiBOb3Qgc3RyaWN0bHkgbmVlZGVk
LCBidXQgaXMKKyAgICAgICAgICAgICAgICAgLy8gbGlrZWx5IHRvIGF2b2lkIHVud2FudGVkIGxv
YWQvc3RvcmUgbW90aW9uLgorICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKKyNlbGlmIENQ
VShBUk0pCisgICAgYXNtIHZvbGF0aWxlKCJlb3IgJVtkZXBlbmRlbmN5XSwgJVtpbl0sICVbaW5d
IgorICAgICAgICAgICAgICAgICA6IFtkZXBlbmRlbmN5XSAiPXIiKGRlcGVuZGVuY3kpCisgICAg
ICAgICAgICAgICAgIDogW2luXSAiciIoY29weSkKKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5
Iik7CisjZWxzZQorICAgIC8vIE5vIGRlcGVuZGVuY3kgaXMgbmVlZGVkIGZvciB0aGlzIGFyY2hp
dGVjdHVyZS4KKyAgICBsb2FkTG9hZEZlbmNlKCk7CisgICAgZGVwZW5kZW5jeSA9IDA7CisgICAg
KHZvaWQpY29weTsKKyNlbmRpZgorICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb25zdW1lRGVwZW5k
ZW5jeT4oZGVwZW5kZW5jeSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzaXplb2YoVCkgPT0gND46OnR5cGUqID0gbnVsbHB0cj4KK0FMV0FZU19J
TkxJTkUgQ29uc3VtZURlcGVuZGVuY3kgemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShUIHZhbHVl
KQoreworICAgIHVpbnQzMl90IGRlcGVuZGVuY3k7CisgICAgdWludDMyX3QgY29weSA9IGJpdHdp
c2VfY2FzdDx1aW50MzJfdD4odmFsdWUpOworI2lmIENQVShBUk02NCkKKyAgICBhc20gdm9sYXRp
bGUoImVvciAld1tkZXBlbmRlbmN5XSwgJXdbaW5dLCAld1tpbl0iCisgICAgICAgICAgICAgICAg
IDogW2RlcGVuZGVuY3ldICI9ciIoZGVwZW5kZW5jeSkKKyAgICAgICAgICAgICAgICAgOiBbaW5d
ICJyIihjb3B5KQorICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKKyNlbGlmIENQVShBUk0p
CisgICAgYXNtIHZvbGF0aWxlKCJlb3IgJVtkZXBlbmRlbmN5XSwgJVtpbl0sICVbaW5dIgorICAg
ICAgICAgICAgICAgICA6IFtkZXBlbmRlbmN5XSAiPXIiKGRlcGVuZGVuY3kpCisgICAgICAgICAg
ICAgICAgIDogW2luXSAiciIoY29weSkKKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7Cisj
ZWxzZQorICAgIGxvYWRMb2FkRmVuY2UoKTsKKyAgICBkZXBlbmRlbmN5ID0gMDsKKyAgICAodm9p
ZCljb3B5OworI2VuZGlmCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN1bWVEZXBlbmRlbmN5
PihkZXBlbmRlbmN5KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHNpemVvZihUKSA9PSAyPjo6dHlwZSogPSBudWxscHRyPgorQUxXQVlTX0lOTElO
RSBDb25zdW1lRGVwZW5kZW5jeSB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KFQgdmFsdWUpCit7
CisgICAgdWludDE2X3QgY29weSA9IGJpdHdpc2VfY2FzdDx1aW50MTZfdD4odmFsdWUpOworICAg
IHJldHVybiB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KHN0YXRpY19jYXN0PHNpemVfdD4oY29w
eSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c2l6ZW9mKFQpID09IDE+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdBWVNfSU5MSU5FIENvbnN1bWVE
ZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koVCB2YWx1ZSkKK3sKKyAgICB1aW50
OF90IGNvcHkgPSBiaXR3aXNlX2Nhc3Q8dWludDhfdD4odmFsdWUpOworICAgIHJldHVybiB6ZXJv
V2l0aENvbnN1bWVEZXBlbmRlbmN5KHN0YXRpY19jYXN0PHNpemVfdD4oY29weSkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBDb25zdW1lZCB7CisgICAgVCB2YWx1ZTsKKyAg
ICBDb25zdW1lRGVwZW5kZW5jeSBkZXBlbmRlbmN5OworfTsKKworLy8gQ29uc3VtZSBsb2FkLCBy
ZXR1cm5pbmcgdGhlIGxvYWRlZCBgdmFsdWVgIGF0IGBsb2NhdGlvbmAgYW5kIGEgZGVwZW5kZW50
LXplcm8KKy8vIHdoaWNoIGNyZWF0ZXMgYW4gYWRkcmVzcyBkZXBlbmRlbmN5IGZyb20gdGhlIGBs
b2NhdGlvbmAuCisvLworLy8gVXNhZ2Ugbm90ZXM6CisvLworLy8gICogUmVnYXJkaW5nIGNvbnRy
b2wgZGVwZW5kZW5jaWVzOiBtZXJlbHkgYnJhbmNoaW5nIGJhc2VkIG9uIGB2YWx1ZWAgb3IKKy8v
ICAgIGBkZXBlbmRlbmN5YCBpc24ndCBzdWZmaWNpZW50IHRvIGltcG9zZSBhIGRlcGVuZGVuY3kg
b3JkZXJpbmc6IHlvdSBtdXN0CisvLyAgICB1c2UgYGRlcGVuZGVuY3lgIGluIHRoZSBhZGRyZXNz
IGNvbXB1dGF0aW9uIG9mIHN1YnNlcXVlbnQgbG9hZHMgd2hpY2gKKy8vICAgIHNob3VsZCBvYnNl
cnZlIHRoZSBzdG9yZSBvcmRlciB3LnIudC4gYGxvY2F0aW9uYC4KKy8vICogUmVnYXJkaW5nIG1l
bW9yeSBvcmRlcmluZzogY29uc3VtZSBsb2FkIG9yZGVycyB0aGUgYGxvY2F0aW9uYCBsb2FkIHdp
dGgKKy8vICAgc3VzZXF1ZW50IGRlcGVuZGVudCBsb2FkcyAqb25seSouIEl0IHNheXMgbm90aGlu
ZyBhYm91dCBvcmRlcmluZyBvZiBvdGhlcgorLy8gICBsb2FkcyEKKy8vCisvLyBDYXZlYXQgZW1w
dG9yLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitBTFdBWVNfSU5MSU5FIGF1dG8gY29uc3VtZUxv
YWQoY29uc3QgVCogbG9jYXRpb24pCit7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jdjxUPjo6dHlwZSBSZXR1cm5lZDsKKyAgICBDb25zdW1lZDxSZXR1cm5lZD4gcmV0IHsgfTsK
KyAgICAvLyBGb3JjZSB0aGUgcmVhZCBvZiBgbG9jYXRpb25gIHRvIG9jY3VyIGV4YWN0bHkgb25j
ZSBhbmQgd2l0aG91dCBmdXNpbmcgb3IKKyAgICAvLyBmb3J3YXJkaW5nIHVzaW5nIHZvbGF0aWxl
LiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBjb21waWxlciBjb3VsZAorICAgIC8vIG90
aGVyd2lzZSByZW1hdGVyaWFsaXplIG9yIGZpbmQgZXF1aXZhbGVudCBsb2Fkcywgb3Igc2ltcGx5
IGZvcndhcmQgZnJvbQorICAgIC8vIGEgcHJldmlvdXMgb25lLCBhbmQgbG9zZSB0aGUgZGVwZW5k
ZW5jeSB3ZSdyZSB0cnlpbmcgc28gaGFyZCB0bworICAgIC8vIGNyZWF0ZS4gUHJldmVudCB0ZWFy
aW5nIGJ5IHVzaW5nIGFuIGF0b21pYywgYnV0IGxldCBpdCBtb3ZlIGFyb3VuZCBieQorICAgIC8v
IHVzaW5nIHJlbGF4ZWQuIFdlIGhhdmUgYXQgbGVhc3QgYSBtZW1vcnkgZmVuY2UgYWZ0ZXIgdGhp
cyB3aGljaCBwcmV2ZW50cworICAgIC8vIHRoZSBsb2FkIGZyb20gbW92aW5nIHRvbyBtdWNoLgor
ICAgIHJldC52YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9sYXRpbGUgc3RkOjphdG9t
aWM8UmV0dXJuZWQ+Kj4obG9jYXRpb24pLT5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OworICAgIHJldC5kZXBlbmRlbmN5ID0gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShyZXQudmFs
dWUpOworICAgIHJldHVybiByZXQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBX
VEY6OkF0b21pYzsKK3VzaW5nIFdURjo6Q29uc3VtZURlcGVuZGVuY3k7Cit1c2luZyBXVEY6OmNv
bnN1bWVMb2FkOwogCiAjZW5kaWYgLy8gQXRvbWljc19oCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjMyODg1NS4uNThjNWJlMiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDE2LTA5LTI2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBTcGVlZCB1cCBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMDk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN1bWUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RDb25zdW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCiAyMDE2LTA5LTI3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gUkVHUkVTU0lPTiAocjE4MjEyNik6IFNlbGVjdGlvbiBoaWdobGln
aHQgYW5kIGhhbmRsZXMgYXJlbuKAmXQgdmlzaWJsZSB3aXRoIFdLU2VsZWN0aW9uR3JhbnVsYXJp
dHlDaGFyYWN0ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDJkYTRjOGQuLmZh
MzgzMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtNDIsNiArNDIsNyBAQCBz
ZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHNDb250cm9s
bGVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9BdG9taWNTdHJpbmcu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Jsb29tRmlsdGVyLmNwcAor
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25zdW1lLmNwcAogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCiAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NTdHJpbmcuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYzgyMTQwZS4uNjg0MWM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTQzMCw2ICs0MzAsNyBAQAogCQlBMURGNzQzMjFDNDFCNjU4MDBBMkY0RDAgLyogQWx3
YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFERjc0MzAxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFs
aWRhdGVkVVJMU2NoZW1lcy5tbSAqLzsgfTsKIAkJQTU3QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0EzNEYxMTZBRjY5RTIw
MEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLzsg
fTsKIAkJQTVFMjAyNzUxNUIyMUY2RTAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1l
ZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVFMjAyNzAxNUIyMTgwNjAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1l
ZGlhLmh0bWwgKi87IH07CisJCUFEQ0VCQkE2MUQ5QUUyMjkwMDJFMjgzQSAvKiBDb25zdW1lLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEQ0VCQkE1
MUQ5OUQ0Q0YwMDJFMjgzQSAvKiBDb25zdW1lLmNwcCAqLzsgfTsKIAkJQjU1QUQxRDUxNzlGM0Iz
MDAwQUMxNDk0IC8qIFByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1bmRsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTVBRDFEMzE3
OUYzQUJGMDBBQzE0OTQgLyogUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdfQnVuZGxl
LmNwcCAqLzsgfTsKIAkJQjU1RjExQjcxNTE3RDAzMzAwOTE1OTE2IC8qIGF0dHJpYnV0ZWRTdHJp
bmdDdXN0b21Gb250Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjU1RjExQjAxNTE3QTJDNDAwOTE1OTE2IC8qIGF0dHJpYnV0ZWRTdHJp
bmdDdXN0b21Gb250Lmh0bWwgKi87IH07CiAJCUI1NUYxMUJFMTUxOTFBMDYwMDkxNTkxNiAvKiBB
aGVtLnR0ZiBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNTVGMTFCOTE1MTkxNkU2MDA5MTU5MTYgLyogQWhlbS50dGYgKi87IH07CkBAIC0xMDU1
LDYgKzEwNTYsNyBAQAogCQlBNUUyMDI3MDE1QjIxODA2MDBDMTNFMTQgLyogV2luZG93bGVzc1dl
YlZpZXdXaXRoTWVkaWEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdpbmRvd2xl
c3NXZWJWaWV3V2l0aE1lZGlhLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
RTIwMjcyMTVCMjE4MTkwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdpbmRvd2xlc3NXZWJWaWV3
V2l0aE1lZGlhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0E5NjZEQTE0MEVD
Q0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEQ0VCQkE1MUQ5OUQ0Q0YwMDJFMjgz
QSAvKiBDb25zdW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENv
bnN1bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNDAzOUY5QzE1RTZEOEIz
MDA3MjU1RDYgLyogTWF0aEV4dHJhcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNYXRoRXh0cmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU1
QUQxRDExNzlGMzM2NjAwQUMxNDk0IC8qIFByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5n
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXpp
bmcubW07IHBhdGggPSBXZWJLaXQyT2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemlu
Zy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU1QUQxRDMxNzlGM0FCRjAwQUMx
NDk0IC8qIFByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1bmRsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9S
ZXNpemluZ19CdW5kbGUuY3BwOyBwYXRoID0gV2ViS2l0Mk9iakMvUHJldmVudEltYWdlTG9hZFdp
dGhBdXRvUmVzaXppbmdfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE3MjksNiArMTczMSw3IEBACiAJCQkJRTQwMDE5MzAxQUNFOUI1QzAwMUIwQTJBIC8qIEJsb29t
RmlsdGVyLmNwcCAqLywKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFy
aXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQkwRkVBRTM2NzFCN0QxOUNCMDBDRTE3RjIg
LyogQ29uZGl0aW9uLmNwcCAqLywKKwkJCQlBRENFQkJBNTFEOTlENENGMDAyRTI4M0EgLyogQ29u
c3VtZS5jcHAgKi8sCiAJCQkJNTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENyb3NzVGhyZWFk
VGFzay5jcHAgKi8sCiAJCQkJMjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENTdHJpbmcuY3Bw
ICovLAogCQkJCTdBQTAyMUJBMUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCkBA
IC0yMjQwLDYgKzIyNDMsNyBAQAogCQkJCTdDODNERUY2MUQwQTU5MEMwMEZFQkNGMyAvKiBNZXRh
QWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUZFMUQwQTU5MEMwMEZFQkNG
MyAvKiBOYWtlZFB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYwMTFEMEE1OTBDMDBG
RUJDRjMgLyogT3B0aW9uYWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQURDRUJCQTYxRDlBRTIy
OTAwMkUyODNBIC8qIENvbnN1bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMDIxRDBB
NTkwQzAwRkVCQ0YzIC8qIE9TT2JqZWN0UHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNE
RjU5MUQwQTU5MEMwMEZFQkNGMyAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNERjEzMUQwQTU5MEMwMEZFQkNGMyAvKiBSZWRCbGFja1RyZWUuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN1bWUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MWNhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNwcApAQCAtMCwwICsxLDE0MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK05FVkVSX0lOTElORSBhdXRvIHRlc3RDb25zdW1lKGNv
bnN0IFQqIGxvY2F0aW9uKQoreworICAgIFdURjo6Y29tcGlsZXJGZW5jZSgpOyAvLyBQYXJhbm9p
ZCB0ZXN0aW5nLgorICAgIGF1dG8gcmV0ID0gV1RGOjpjb25zdW1lTG9hZChsb2NhdGlvbik7Cisg
ICAgV1RGOjpjb21waWxlckZlbmNlKCk7IC8vIFBhcmFub2lkIHRlc3RpbmcuCisgICAgcmV0dXJu
IHJldDsKK30KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURiwgQ29uc3Vt
ZWk4KQoreworICAgIHVpbnQ4X3QgaTggPSA0MjsKKyAgICBhdXRvIGk4X2NvbnN1bWVkID0gdGVz
dENvbnN1bWUoJmk4KTsKKyAgICBBU1NFUlRfRVEoaThfY29uc3VtZWQudmFsdWUsIDQydSk7Cisg
ICAgQVNTRVJUX0VRKGk4X2NvbnN1bWVkLmRlcGVuZGVuY3ksIDB1KTsKK30KKworVEVTVChXVEYs
IENvbnN1bWVpMTYpCit7CisgICAgdWludDE2X3QgaTE2ID0gNDI7CisgICAgYXV0byBpMTZfY29u
c3VtZWQgPSB0ZXN0Q29uc3VtZSgmaTE2KTsKKyAgICBBU1NFUlRfRVEoaTE2X2NvbnN1bWVkLnZh
bHVlLCA0MnUpOworICAgIEFTU0VSVF9FUShpMTZfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOwor
fQorCitURVNUKFdURiwgQ29uc3VtZWkzMikKK3sKKyAgICB1aW50MzJfdCBpMzIgPSA0MjsKKyAg
ICBhdXRvIGkzMl9jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZpMzIpOworICAgIEFTU0VSVF9FUShp
MzJfY29uc3VtZWQudmFsdWUsIDQydSk7CisgICAgQVNTRVJUX0VRKGkzMl9jb25zdW1lZC5kZXBl
bmRlbmN5LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBDb25zdW1laTY0KQoreworICAgIHVpbnQ2NF90
IGk2NCA9IDQyOworICAgIGF1dG8gaTY0X2NvbnN1bWVkID0gdGVzdENvbnN1bWUoJmk2NCk7Cisg
ICAgQVNTRVJUX0VRKGk2NF9jb25zdW1lZC52YWx1ZSwgNDJ1KTsKKyAgICBBU1NFUlRfRVEoaTY0
X2NvbnN1bWVkLmRlcGVuZGVuY3ksIDB1KTsKK30KKworVEVTVChXVEYsIENvbnN1bWVmMzIpCit7
CisgICAgZmxvYXQgZjMyID0gNDIuZjsKKyAgICBhdXRvIGYzMl9jb25zdW1lZCA9IHRlc3RDb25z
dW1lKCZmMzIpOworICAgIEFTU0VSVF9FUShmMzJfY29uc3VtZWQudmFsdWUsIDQyLmYpOworICAg
IEFTU0VSVF9FUShmMzJfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwg
Q29uc3VtZWY2NCkKK3sKKyAgICBkb3VibGUgZjY0ID0gNDIuOworICAgIGF1dG8gZjY0X2NvbnN1
bWVkID0gdGVzdENvbnN1bWUoJmY2NCk7CisgICAgQVNTRVJUX0VRKGY2NF9jb25zdW1lZC52YWx1
ZSwgNDIuKTsKKyAgICBBU1NFUlRfRVEoZjY0X2NvbnN1bWVkLmRlcGVuZGVuY3ksIDB1KTsKK30K
Kworc3RhdGljIGludCogZ2xvYmFsOworCitURVNUKFdURiwgQ29uc3VtZUdsb2JhbFB0cikKK3sK
KyAgICBhdXRvKiBwdHIgPSAmZ2xvYmFsOworICAgIGF1dG8gcHRyX2NvbnN1bWVkID0gdGVzdENv
bnN1bWUoJnB0cik7CisgICAgQVNTRVJUX0VRKHB0cl9jb25zdW1lZC52YWx1ZSwgJmdsb2JhbCk7
CisgICAgQVNTRVJUX0VRKHB0cl9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7Cit9CisKK3N0YXRp
YyBpbnQqIGdsb2JhbEFycmF5WzEyOF07CisKK1RFU1QoV1RGLCBDb25zdW1lR2xvYmFsQXJyYXlQ
dHIpCit7CisgICAgYXV0byogcHRyID0gJmdsb2JhbEFycmF5WzY0XTsKKyAgICBhdXRvIHB0cl9j
b25zdW1lZCA9IHRlc3RDb25zdW1lKCZwdHIpOworICAgIEFTU0VSVF9FUShwdHJfY29uc3VtZWQu
dmFsdWUsICZnbG9iYWxbNjRdKTsKKyAgICBBU1NFUlRfRVEocHRyX2NvbnN1bWVkLmRlcGVuZGVu
Y3ksIDB1KTsKK30KKworVEVTVChXVEYsIENvbnN1bWVTdGFja1B0cikKK3sKKyAgICBjaGFyKiBo
ZWxsbyA9IG51bGxwdHI7CisgICAgYXV0byogc3RhY2sgPSAmaGVsbG87CisgICAgYXV0byBzdGFj
a19jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZzdGFjayk7CisgICAgQVNTRVJUX0VRKHN0YWNrX2Nv
bnN1bWVkLnZhbHVlLCAmaGVsbG8pOworICAgIEFTU0VSVF9FUShzdGFja19jb25zdW1lZC5kZXBl
bmRlbmN5LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBDb25zdW1lV2l0aFRocmVhZCkKK3sKKyAgICBi
b29sIHJlYWR5ID0gZmFsc2U7CisgICAgY29uc3RleHByIHNpemVfdCBudW0gPSAxMDI0OworICAg
IHVpbnQzMl90KiB2ZWMgPSBuZXcgdWludDMyX3RbbnVtXTsKKyAgICBzdGQ6OnRocmVhZCB0KFsm
XSgpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbnVtOyArK2kpCisgICAgICAg
ICAgICB2ZWNbaV0gPSBpICogMjsKKyAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAg
ICAgICAgcmVhZHkgPSB0cnVlOworICAgIH0pOworICAgIGRvIHsKKyAgICAgICAgYXV0byBzdGFj
a19jb25zdW1lZCA9IHRlc3RDb25zdW1lKCZyZWFkeSk7CisgICAgICAgIGlmIChzdGFja19jb25z
dW1lZC52YWx1ZSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbnVtOyAr
K2kpCisgICAgICAgICAgICAgICAgQVNTRVJUX0VRKHZlY1tpICsgc3RhY2tfY29uc3VtZWQuZGVw
ZW5kZW5jeV0sIGkgKiAyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSB3
aGlsZSAodHJ1ZSk7CisgICAgdC5qb2luKCk7CisgICAgZGVsZXRlW10gdmVjOworfQorfQotLSAK
Mi45LjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290003</attachid>
            <date>2016-09-27 13:42:39 -0700</date>
            <delta_ts>2016-09-27 16:43:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-consume.patch</filename>
            <type>text/plain</type>
            <size>21440</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA4MjU4NDc4YmJjNGM2NTg0MmViM2U2NGQ4MzMyZTU5M2QwZTVmNTQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE2IFNlcCAyMDE2IDIyOjE4OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY29uc3Vt
ZQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICB8ICAxNCArKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCAgICAg
ICAgICAgfCAgMjQgKysrLQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgNDQgKysrKysrKwogU291cmNlL1dURi93dGYvQXRvbWljcy5oICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAxMTMgKysrKysrKysrKysrKysrKysKIFRvb2xzL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrCiBUb29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4v
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgICB8ICAgNCArCiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdW1lLmNwcCAgICAgICAgICB8IDE0MSAr
KysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMzQ5IGluc2VydGlvbnMoKyks
IDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ29uc3VtZS5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2NjIxZDM4
Li5mZjFmNjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ni0wOS0yNiAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3Bl
ZWQgdXAgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjA5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkIHVwIGlzTWFya2VkQ29uY3VycmVudGx5IGJ5
IHVzaW5nIFdURjo6Y29uc3VtZUxvYWQuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OmFyZU1hcmtzU3RhbGVXaXRoRGVwZW5kZW5jeSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjppc01hcmtlZENvbmN1cnJlbnRseSk6IGRvIGF3YXkgd2l0aCB0aGUg
bG9hZC1sb2FkIGZlbmNlCisKIDIwMTYtMDktMjcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRlcHJlY2F0ZWQgRU5DUllQVEVEX01FRElBIGltcGxl
bWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXgg
ZGQ5ZTg0NC4uYTY0NjlmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCkBAIC0yNjksOSArMjY5LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsK
ICAgICAgICAgCiAgICAgV2Vha1NldCYgd2Vha1NldCgpOwotICAgIAotICAgIGJvb2wgYXJlTWFy
a3NTdGFsZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7CisKICAgICBib29sIGFyZU1hcmtz
U3RhbGUoKTsKKyAgICBib29sIGFyZU1hcmtzU3RhbGUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24pOworICAgIHN0cnVjdCBNYXJrc1dpdGhEZXBlbmRlbmN5IHsKKyAgICAgICAgYm9vbCBhcmVT
dGFsZTsKKyAgICAgICAgQ29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeTsKKyAgICB9OworICAg
IE1hcmtzV2l0aERlcGVuZGVuY3kgYXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICAgICAgCkBAIC00NzQsNiArNDc5LDE1IEBAIGlubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjphcmVNYXJrc1N0YWxlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uKQogICAgIHJldHVybiBtYXJraW5nVmVyc2lvbiAhPSBtX21hcmtpbmdWZXJzaW9uOwogfQog
CitBTFdBWVNfSU5MSU5FIE1hcmtlZEJsb2NrOjpNYXJrc1dpdGhEZXBlbmRlbmN5IE1hcmtlZEJs
b2NrOjphcmVNYXJrc1N0YWxlV2l0aERlcGVuZGVuY3koSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24pCit7CisgICAgYXV0byBjb25zdW1lZCA9IGNvbnN1bWVMb2FkKCZtX21hcmtpbmdWZXJzaW9u
KTsKKyAgICBNYXJrc1dpdGhEZXBlbmRlbmN5IHJldDsKKyAgICByZXQuYXJlU3RhbGUgPSBjb25z
dW1lZC52YWx1ZSAhPSBtYXJraW5nVmVyc2lvbjsKKyAgICByZXQuZGVwZW5kZW5jeSA9IGNvbnN1
bWVkLmRlcGVuZGVuY3k7CisgICAgcmV0dXJuIHJldDsKK30KKwogaW5saW5lIHZvaWQgTWFya2Vk
QmxvY2s6OmFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQogewogICAgIGlm
IChVTkxJS0VMWShhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkpCkBAIC00OTksMTAgKzUx
MywxMCBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWQoSGVhcFZlcnNpb24gbWFy
a2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQqIHApCiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpp
c01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9p
ZCogcCkKIHsKLSAgICBpZiAoYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpCisgICAgYXV0
byBtYXJrc1dpdGhEZXBlbmRlbmN5ID0gYXJlTWFya3NTdGFsZVdpdGhEZXBlbmRlbmN5KG1hcmtp
bmdWZXJzaW9uKTsKKyAgICBpZiAobWFya3NXaXRoRGVwZW5kZW5jeS5hcmVTdGFsZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwotICAgIHJldHVybiBt
X21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51
bWJlcihwKSArIG1hcmtzV2l0aERlcGVuZGVuY3kuZGVwZW5kZW5jeSk7CiB9CiAKIGlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjp0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqIHApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhl
NjlmMWUuLmFhYTNmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTYtMDktMjYgIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwZWVkIHVwIEhlYXA6OmlzTWFy
a2VkQ29uY3VycmVudGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjIwOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseSBoYWQgYSBsb2FkLWxvYWQgZmVuY2Ug
d2hpY2ggaXMgZXhwZW5zaXZlIG9uIHdlYWsgbWVtb3J5IElTQXMgc3VjaCBhcyBBUk0uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpcyBmYWlybHkgcGVyZi1uZXV0cmFsIG92ZXJhbGwsIGJ1dCB0aGUg
R0MncyBpbnN0cnVtZW50YXRpb24gcmVwb3J0czoKKyAgICAgICAgICBHQzpFZGVuIGlzIDkzJSBh
dmVyYWdlIHJ1bnRpbWUgYWZ0ZXIgY2hhbmdlCisgICAgICAgICAgR0M6RnVsbCBpcyA3NiUgYXZl
cmFnZSBydW50aW1lIGFmdGVyIGNoYW5nZQorCisgICAgICAgIFRoZSBmZW5jZSB3YXMgdGhlcmUg
YmVjYXVzZToKKyAgICAgICAgIDEuIElmIHRoZSByZWFkIG9mIG1fbWFya2luZ1ZlcnNpb24gaW4g
TWFya2VkQmxvY2s6OmFyZU1hcmtzU3RhbGUgaXNuJ3Qgd2hhdCdzIGV4cGVjdGVkIHRoZW47Cisg
ICAgICAgICAyLiBUaGUgcmVhZCBvZiBtX21hcmtzIGluIE1hcmtlZEJsb2NrOjppc01hcmtlZCBu
ZWVkcyB0byBvYnNlcnZlIHRoZSB2YWx1ZSB0aGF0IHdhcyBzdG9yZWQgKmJlZm9yZSogbV9tYXJr
aW5nVmVyc2lvbiB3YXMgc3RvcmVkLgorCisgICAgICAgIFRoaXMgb3JkZXJpbmcgaXNuJ3QgZ3Vh
cmFudGVlZCBvbiBBUk0sIHdoaWNoIGhhcyBhIHdlYWsgbWVtb3J5IG1vZGVsLgorCisgICAgICAg
IFRoZXJlIGFyZSAzIHdheXMgdG8gZ3VhcmFudGVlIHRoaXMgb3JkZXJpbmc6CisgICAgICAgICBB
LiBVc2UgYSBiYXJyaWVyIGluc3RydWN0aW9uLgorICAgICAgICAgQi4gVXNlIGEgbG9hZC1hY3F1
aXJlIChuZXcgaW4gQVJNdjgpLgorICAgICAgICAgQy4gdXNlIEFSTSdzIGFkZHJlc3MgZGVwZW5k
ZW5jeSBydWxlLCB3aGljaCBDKysgY2FsbHMgbWVtb3J5X29yZGVyX2NvbnN1bWUuCisKKyAgICAg
ICAgSW4gZ2VuZXJhbDoKKyAgICAgICAgIEEuIGlzIHNsb3cgYnV0IG9yZGVycyBhbGwgb2YgbWVt
b3J5IGluIGFuIGludHVpdGl2ZSBtYW5uZXIuCisgICAgICAgICBCLiBpcyBmYXN0ZXItaXNoIGFu
ZCBoYXMgdGhlIHNhbWUgcHJvcGVydHktaXNoLgorICAgICAgICAgQy4gc2hvdWxkIGJlIGZhc3Rl
ciBzdGlsbCwgYnV0ICpvbmx5IG9yZGVycyBkZXBlbmRlbnQgbG9hZHMqLiBUaGlzIGxhc3QgcGFy
dCBpcyBjcml0aWNhbCEgQ29uc3VtZSBpc24ndCBhbiBhbGwtb3V0IHJlcGxhY2VtZW50IGZvciBh
Y3F1aXJlIChhY3F1aXJlIGlzIHJhdGhlciBhIHN1cGVyc2V0IG9mIGNvbnN1bWUpLgorCisgICAg
ICAgIEFSTSBleHBsYWlucyB0aGUgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUgaW4gdGhlaXIgZG9j
dW1lbnQgImJhcnJpZXIgbGl0bXVzIHRlc3RzIGFuZCBjb29rYm9vayI6CisKKyAgICAgICAgPiAq
UmVzb2x2aW5nIGJ5IHRoZSB1c2Ugb2YgYmFycmllcnMgYW5kIGFkZHJlc3MgZGVwZW5kZW5jeSoK
KyAgICAgICAgPgorICAgICAgICA+IFRoZXJlIGlzIGEgcnVsZSB3aXRoaW4gdGhlIEFSTSBhcmNo
aXRlY3R1cmUgdGhhdDoKKyAgICAgICAgPiBXaGVyZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYSBy
ZWFkIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIGEgc3Vic2VxdWVu
dCByZWFkIG9yIHdyaXRlICh0aGlzIGlzIGtub3duIGFzIGFuIGFkZHJlc3MgZGVwZW5kZW5jeSks
IHRoZW4gdGhlc2UgdHdvIG1lbW9yeSBhY2Nlc3NlcyB3aWxsIGJlIG9ic2VydmVkIGluIHByb2dy
YW0gb3JkZXIuIEFuIGFkZHJlc3MgZGVwZW5kZW5jeSBleGlzdHMgZXZlbiBpZiB0aGUgdmFsdWUg
cmVhZCBieSB0aGUgZmlyc3QgcmVhZCBoYXMgbm8gZWZmZWN0IGluIGNoYW5naW5nIHRoZSB2aXJ0
dWFsIGFkZHJlc3MgKGFzIG1pZ2h0IGJlIHRoZSBjYXNlIGlmIHRoZSB2YWx1ZSByZXR1cm5lZCBp
cyBtYXNrZWQgb2ZmIGJlZm9yZSBpdCBpcyB1c2VkLCBvciBpZiBpdCBoYWQgbm8gZWZmZWN0IG9u
IGNoYW5naW5nIGEgcHJlZGljdGVkIGFkZHJlc3MgdmFsdWUpLgorICAgICAgICA+IFRoaXMgcmVz
dHJpY3Rpb24gYXBwbGllcyBvbmx5IHdoZW4gdGhlIGRhdGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBv
bmUgcmVhZCBpcyB1c2VkIGFzIGEgZGF0YSB2YWx1ZSB0byBjYWxjdWxhdGUgdGhlIGFkZHJlc3Mg
b2YgYSBzdWJzZXF1ZW50IHJlYWQgb3Igd3JpdGUuIFRoaXMgZG9lcyBub3QgYXBwbHkgaWYgdGhl
IGRhdGEgdmFsdWUgcmV0dXJuZWQgZnJvbSBvbmUgcmVhZCBpcyB1c2VkIHRvIGRldGVybWluZSB0
aGUgY29uZGl0aW9uIGNvZGUgZmxhZ3MsIGFuZCB0aGUgdmFsdWVzIG9mIHRoZSBmbGFncyBhcmUg
dXNlZCBmb3IgY29uZGl0aW9uIGNvZGUgZXZhbHVhdGlvbiB0byBkZXRlcm1pbmUgdGhlIGFkZHJl
c3Mgb2YgYSBzdWJzZXF1ZW50IHJlYWRzLCBlaXRoZXIgdGhyb3VnaCBjb25kaXRpb25hbCBleGVj
dXRpb24gb3IgdGhlIGV2YWx1YXRpb24gb2YgYSBicmFuY2guIFRoaXMgaXMga25vd24gYXMgYSBj
b250cm9sIGRlcGVuZGVuY3kuCisgICAgICAgID4gV2hlcmUgYm90aCBhIGNvbnRyb2wgYW5kIGFk
ZHJlc3MgZGVwZW5kZW5jeSBleGlzdCwgdGhlIG9yZGVyaW5nIGJlaGF2aW91ciBpcyBjb25zaXN0
ZW50IHdpdGggdGhlIGFkZHJlc3MgZGVwZW5kZW5jeS4KKworICAgICAgICBDKysncyBtZW1vcnlf
b3JkZXJfY29uc3VtZSBpcyB1bmZvcnR1bmF0ZWx5IHVuaW1wbGVtZW50ZWQgYnkgQysrIGNvbXBp
bGVycywgYW5kIG1heWJlIHVuaW1wbGVtZW50YWJsZSBhcyBzcGVjJ2QuIEknbSB3b3JraW5nIHdp
dGggaW50ZXJlc3RlZCBmb2xrcyBpbiB0aGUgY29tbWl0dGVlIHRvIGZpeCB0aGlzIHNpdHVhdGlv
bjogaHR0cDovL3dnMjEubGluay9wMDE5MHIyCisKKyAgICAgICAgKiB3dGYvQXRvbWljcy5oOgor
ICAgICAgICAoV1RGOjp6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KTogYSAwIHdoaWNoIGNhcnJp
ZXMgYSBkZXBlbmRlbmN5CisgICAgICAgIChXVEY6OmNvbnN1bWVMb2FkKTogcGl4aWUgbWFnaWMK
KwogMjAxNi0wOS0yNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQGFtLnNvbnkuY29tPgog
CiAgICAgICAgIFtDTWFrZV0gVXNlIENNYWtlIHRvIGRldGVybWluZSBIQVZFXyogZGVmaW5lcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXRvbWljcy5oIGIvU291cmNlL1dURi93dGYvQXRv
bWljcy5oCmluZGV4IGU0NmE0YmEuLjM4ODY3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0F0b21pY3MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKQEAgLTIwMiw4ICsyMDIs
MTIxIEBAIGlubGluZSB2b2lkIG1lbW9yeUJhcnJpZXJCZWZvcmVVbmxvY2soKSB7IHN0ZDo6YXRv
bWljX3RocmVhZF9mZW5jZShzdGQ6Om1lbW9yeV9vCiAKICNlbmRpZgogCit0eXBlZGVmIHNpemVf
dCBDb25zdW1lRGVwZW5kZW5jeTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHNpemVvZihUKSA9PSA4Pjo6dHlwZSogPSBudWxscHRyPgorQUxXQVlTX0lO
TElORSBDb25zdW1lRGVwZW5kZW5jeSB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KFQgdmFsdWUp
Cit7CisgICAgdWludDY0X3QgZGVwZW5kZW5jeTsKKyAgICB1aW50NjRfdCBjb3B5ID0gYml0d2lz
ZV9jYXN0PHVpbnQ2NF90Pih2YWx1ZSk7CisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIENyZWF0ZSBh
IG1hZ2ljYWwgemVybyB2YWx1ZSB0aHJvdWdoIGlubGluZSBhc3NlbWJseSwgd2hvc2UgY29tcHV0
YXRpb24KKyAgICAvLyBpc24ndCB2aXNpYmxlIHRvIHRoZSBvcHRpbWl6ZXIuIFRoaXMgemVybyBp
cyB0aGVuIHVzYWJsZSBhcyBhbiBvZmZzZXQgaW4KKyAgICAvLyBmdXJ0aGVyIGFkZHJlc3MgY29t
cHV0YXRpb25zOiBhZGRpbmcgemVybyBkb2VzIG5vdGhpbmcsIGJ1dCB0aGUgY29tcGlsZXIKKyAg
ICAvLyBkb2Vzbid0IGtub3cgaXQuIEl0J3MgbWFnaWNhbCBiZWNhdXNlIGl0IGNyZWF0ZXMgYW4g
YWRkcmVzcyBkZXBlbmRlbmN5CisgICAgLy8gZnJvbSB0aGUgbG9hZCBvZiBgbG9jYXRpb25gIHRv
IHRoZSB1c2VzIG9mIHRoZSBkZXBlbmRlbmN5LCB3aGljaCB0cmlnZ2VycworICAgIC8vIHRoZSBB
Uk0gSVNBJ3MgYWRkcmVzcyBkZXBlbmRlbmN5IHJ1bGUsIGEuay5hLiB0aGUgbXl0aGljYWwgQysr
IGNvbnN1bWUKKyAgICAvLyBvcmRlcmluZy4gVGhpcyBmb3JjZXMgd2VhayBtZW1vcnkgb3JkZXIg
Q1BVcyB0byBvYnNlcnZlIGBsb2NhdGlvbmAgYW5kCisgICAgLy8gZGVwZW5kZW50IGxvYWRzIGlu
IHRoZWlyIHN0b3JlIG9yZGVyIHdpdGhvdXQgdGhlIHJlYWRlciB1c2luZyBhIGJhcnJpZXIKKyAg
ICAvLyBvciBhbiBhY3F1aXJlIGxvYWQuCisgICAgYXNtIHZvbGF0aWxlKCJlb3IgJXhbZGVwZW5k
ZW5jeV0sICV4W2luXSwgJXhbaW5dIgorICAgICAgICAgICAgICAgICA6IFtkZXBlbmRlbmN5XSAi
PXIiKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAgIDogW2luXSAiciIoY29weSkKKyAgICAg
ICAgICAgICAgICAgLy8gTGllIGFib3V0IHRvdWNoaW5nIG1lbW9yeS4gTm90IHN0cmljdGx5IG5l
ZWRlZCwgYnV0IGlzCisgICAgICAgICAgICAgICAgIC8vIGxpa2VseSB0byBhdm9pZCB1bndhbnRl
ZCBsb2FkL3N0b3JlIG1vdGlvbi4KKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CisjZWxp
ZiBDUFUoQVJNKQorICAgIGFzbSB2b2xhdGlsZSgiZW9yICVbZGVwZW5kZW5jeV0sICVbaW5dLCAl
W2luXSIKKyAgICAgICAgICAgICAgICAgOiBbZGVwZW5kZW5jeV0gIj1yIihkZXBlbmRlbmN5KQor
ICAgICAgICAgICAgICAgICA6IFtpbl0gInIiKGNvcHkpCisgICAgICAgICAgICAgICAgIDogIm1l
bW9yeSIpOworI2Vsc2UKKyAgICAvLyBObyBkZXBlbmRlbmN5IGlzIG5lZWRlZCBmb3IgdGhpcyBh
cmNoaXRlY3R1cmUuCisgICAgbG9hZExvYWRGZW5jZSgpOworICAgIGRlcGVuZGVuY3kgPSAwOwor
ICAgICh2b2lkKWNvcHk7CisjZW5kaWYKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3VtZURl
cGVuZGVuY3k+KGRlcGVuZGVuY3kpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDQ+Ojp0eXBlKiA9IG51bGxwdHI+CitBTFdB
WVNfSU5MSU5FIENvbnN1bWVEZXBlbmRlbmN5IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3koVCB2
YWx1ZSkKK3sKKyAgICB1aW50MzJfdCBkZXBlbmRlbmN5OworICAgIHVpbnQzMl90IGNvcHkgPSBi
aXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgYXNtIHZv
bGF0aWxlKCJlb3IgJXdbZGVwZW5kZW5jeV0sICV3W2luXSwgJXdbaW5dIgorICAgICAgICAgICAg
ICAgICA6IFtkZXBlbmRlbmN5XSAiPXIiKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAgIDog
W2luXSAiciIoY29weSkKKyAgICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CisjZWxpZiBDUFUo
QVJNKQorICAgIGFzbSB2b2xhdGlsZSgiZW9yICVbZGVwZW5kZW5jeV0sICVbaW5dLCAlW2luXSIK
KyAgICAgICAgICAgICAgICAgOiBbZGVwZW5kZW5jeV0gIj1yIihkZXBlbmRlbmN5KQorICAgICAg
ICAgICAgICAgICA6IFtpbl0gInIiKGNvcHkpCisgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIp
OworI2Vsc2UKKyAgICBsb2FkTG9hZEZlbmNlKCk7CisgICAgZGVwZW5kZW5jeSA9IDA7CisgICAg
KHZvaWQpY29weTsKKyNlbmRpZgorICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb25zdW1lRGVwZW5k
ZW5jeT4oZGVwZW5kZW5jeSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzaXplb2YoVCkgPT0gMj46OnR5cGUqID0gbnVsbHB0cj4KK0FMV0FZU19J
TkxJTkUgQ29uc3VtZURlcGVuZGVuY3kgemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShUIHZhbHVl
KQoreworICAgIHVpbnQxNl90IGNvcHkgPSBiaXR3aXNlX2Nhc3Q8dWludDE2X3Q+KHZhbHVlKTsK
KyAgICByZXR1cm4gemVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShzdGF0aWNfY2FzdDxzaXplX3Q+
KGNvcHkpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHNpemVvZihUKSA9PSAxPjo6dHlwZSogPSBudWxscHRyPgorQUxXQVlTX0lOTElORSBDb25z
dW1lRGVwZW5kZW5jeSB6ZXJvV2l0aENvbnN1bWVEZXBlbmRlbmN5KFQgdmFsdWUpCit7CisgICAg
dWludDhfdCBjb3B5ID0gYml0d2lzZV9jYXN0PHVpbnQ4X3Q+KHZhbHVlKTsKKyAgICByZXR1cm4g
emVyb1dpdGhDb25zdW1lRGVwZW5kZW5jeShzdGF0aWNfY2FzdDxzaXplX3Q+KGNvcHkpKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQ29uc3VtZWQgeworICAgIFQgdmFsdWU7
CisgICAgQ29uc3VtZURlcGVuZGVuY3kgZGVwZW5kZW5jeTsKK307CisKKy8vIENvbnN1bWUgbG9h
ZCwgcmV0dXJuaW5nIHRoZSBsb2FkZWQgYHZhbHVlYCBhdCBgbG9jYXRpb25gIGFuZCBhIGRlcGVu
ZGVudC16ZXJvCisvLyB3aGljaCBjcmVhdGVzIGFuIGFkZHJlc3MgZGVwZW5kZW5jeSBmcm9tIHRo
ZSBgbG9jYXRpb25gLgorLy8KKy8vIFVzYWdlIG5vdGVzOgorLy8KKy8vICAqIFJlZ2FyZGluZyBj
b250cm9sIGRlcGVuZGVuY2llczogbWVyZWx5IGJyYW5jaGluZyBiYXNlZCBvbiBgdmFsdWVgIG9y
CisvLyAgICBgZGVwZW5kZW5jeWAgaXNuJ3Qgc3VmZmljaWVudCB0byBpbXBvc2UgYSBkZXBlbmRl
bmN5IG9yZGVyaW5nOiB5b3UgbXVzdAorLy8gICAgdXNlIGBkZXBlbmRlbmN5YCBpbiB0aGUgYWRk
cmVzcyBjb21wdXRhdGlvbiBvZiBzdWJzZXF1ZW50IGxvYWRzIHdoaWNoCisvLyAgICBzaG91bGQg
b2JzZXJ2ZSB0aGUgc3RvcmUgb3JkZXIgdy5yLnQuIGBsb2NhdGlvbmAuCisvLyAqIFJlZ2FyZGlu
ZyBtZW1vcnkgb3JkZXJpbmc6IGNvbnN1bWUgbG9hZCBvcmRlcnMgdGhlIGBsb2NhdGlvbmAgbG9h
ZCB3aXRoCisvLyAgIHN1c2VxdWVudCBkZXBlbmRlbnQgbG9hZHMgKm9ubHkqLiBJdCBzYXlzIG5v
dGhpbmcgYWJvdXQgb3JkZXJpbmcgb2Ygb3RoZXIKKy8vICAgbG9hZHMhCisvLworLy8gQ2F2ZWF0
IGVtcHRvci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorQUxXQVlTX0lOTElORSBhdXRvIGNvbnN1
bWVMb2FkKGNvbnN0IFQqIGxvY2F0aW9uKQoreworICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY3Y8VD46OnR5cGUgUmV0dXJuZWQ7CisgICAgQ29uc3VtZWQ8UmV0dXJuZWQ+IHJldCB7
IH07CisgICAgLy8gRm9yY2UgdGhlIHJlYWQgb2YgYGxvY2F0aW9uYCB0byBvY2N1ciBleGFjdGx5
IG9uY2UgYW5kIHdpdGhvdXQgZnVzaW5nIG9yCisgICAgLy8gZm9yd2FyZGluZyB1c2luZyB2b2xh
dGlsZS4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgY29tcGlsZXIgY291bGQKKyAgICAv
LyBvdGhlcndpc2UgcmVtYXRlcmlhbGl6ZSBvciBmaW5kIGVxdWl2YWxlbnQgbG9hZHMsIG9yIHNp
bXBseSBmb3J3YXJkIGZyb20KKyAgICAvLyBhIHByZXZpb3VzIG9uZSwgYW5kIGxvc2UgdGhlIGRl
cGVuZGVuY3kgd2UncmUgdHJ5aW5nIHNvIGhhcmQgdG8KKyAgICAvLyBjcmVhdGUuIFByZXZlbnQg
dGVhcmluZyBieSB1c2luZyBhbiBhdG9taWMsIGJ1dCBsZXQgaXQgbW92ZSBhcm91bmQgYnkKKyAg
ICAvLyB1c2luZyByZWxheGVkLiBXZSBoYXZlIGF0IGxlYXN0IGEgbWVtb3J5IGZlbmNlIGFmdGVy
IHRoaXMgd2hpY2ggcHJldmVudHMKKyAgICAvLyB0aGUgbG9hZCBmcm9tIG1vdmluZyB0b28gbXVj
aC4KKyAgICByZXQudmFsdWUgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZvbGF0aWxlIHN0ZDo6
YXRvbWljPFJldHVybmVkPio+KGxvY2F0aW9uKS0+bG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9yZWxh
eGVkKTsKKyAgICByZXQuZGVwZW5kZW5jeSA9IHplcm9XaXRoQ29uc3VtZURlcGVuZGVuY3kocmV0
LnZhbHVlKTsKKyAgICByZXR1cm4gcmV0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNp
bmcgV1RGOjpBdG9taWM7Cit1c2luZyBXVEY6OkNvbnN1bWVEZXBlbmRlbmN5OwordXNpbmcgV1RG
Ojpjb25zdW1lTG9hZDsKIAogI2VuZGlmIC8vIEF0b21pY3NfaApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDVmOGNiODAuLjMwMTA5ZDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNi0wOS0yNiAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3BlZWQgdXAgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjA5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25z
dW1lLmNwcDogQWRkZWQuCisgICAgICAgICh0ZXN0Q29uc3VtZSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAxNi0wOS0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBVUkxQYXJzZXI6OnN5bnRheFZp
b2xhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggMmRhNGM4ZC4uZmEzODMx
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC00Miw2ICs0Miw3IEBAIHNldChU
ZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0F0b21pY1N0cmluZy5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQmxvb21GaWx0ZXIuY3BwCisgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbnN1bWUuY3BwCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvQ1N0cmluZy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAwZjFhYTA1Li5kMTcwNjcxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDMxLDYgKzQzMSw3IEBACiAJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNS
ZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVzLm1tICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJCMDBDMjUwMUYgLyogUGFn
ZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RjExNkFGNjlFMjAwQzI1
MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovOyB9Owog
CQlBNUUyMDI3NTE1QjIxRjZFMDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUUyMDI3MDE1QjIxODA2MDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEu
aHRtbCAqLzsgfTsKKwkJQURDRUJCQTYxRDlBRTIyOTAwMkUyODNBIC8qIENvbnN1bWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURDRUJCQTUxRDk5
RDRDRjAwMkUyODNBIC8qIENvbnN1bWUuY3BwICovOyB9OwogCQlCNTVBRDFENTE3OUYzQjMwMDBB
QzE0OTQgLyogUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NUFEMUQzMTc5RjNB
QkYwMEFDMTQ5NCAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZ19CdW5kbGUuY3Bw
ICovOyB9OwogCQlCNTVGMTFCNzE1MTdEMDMzMDA5MTU5MTYgLyogYXR0cmlidXRlZFN0cmluZ0N1
c3RvbUZvbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNTVGMTFCMDE1MTdBMkM0MDA5MTU5MTYgLyogYXR0cmlidXRlZFN0cmluZ0N1
c3RvbUZvbnQuaHRtbCAqLzsgfTsKIAkJQjU1RjExQkUxNTE5MUEwNjAwOTE1OTE2IC8qIEFoZW0u
dHRmIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEI1NUYxMUI5MTUxOTE2RTYwMDkxNTkxNiAvKiBBaGVtLnR0ZiAqLzsgfTsKQEAgLTEwNTYsNiAr
MTA1Nyw3IEBACiAJCUE1RTIwMjcwMTVCMjE4MDYwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmll
d1dpdGhNZWRpYS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV2luZG93bGVzc1dl
YlZpZXdXaXRoTWVkaWEuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVFMjAy
NzIxNUIyMTgxOTAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2luZG93bGVzc1dlYlZpZXdXaXRo
TWVkaWEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QTk2NkRBMTQwRUNDQzgw
MDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQURDRUJCQTUxRDk5RDRDRjAwMkUyODNBIC8q
IENvbnN1bWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3Vt
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI0MDM5RjlDMTVFNkQ4QjMwMDcy
NTVENiAvKiBNYXRoRXh0cmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1hdGhFeHRyYXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTVBRDFE
MTE3OUYzMzY2MDBBQzE0OTQgLyogUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmcubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5t
bTsgcGF0aCA9IFdlYktpdDJPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTVBRDFEMzE3OUYzQUJGMDBBQzE0OTQg
LyogUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdfQnVuZGxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6
aW5nX0J1bmRsZS5jcHA7IHBhdGggPSBXZWJLaXQyT2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1
dG9SZXNpemluZ19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcz
MCw2ICsxNzMyLDcgQEAKIAkJCQlFNDAwMTkzMDFBQ0U5QjVDMDAxQjBBMkEgLyogQmxvb21GaWx0
ZXIuY3BwICovLAogCQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGht
ZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJCTBGRUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAvKiBD
b25kaXRpb24uY3BwICovLAorCQkJCUFEQ0VCQkE1MUQ5OUQ0Q0YwMDJFMjgzQSAvKiBDb25zdW1l
LmNwcCAqLywKIAkJCQk1MTcxNEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNr
LmNwcCAqLywKIAkJCQkyNkEyQzcyRTE1RTJFNzNDMDA1QjFBMTQgLyogQ1N0cmluZy5jcHAgKi8s
CiAJCQkJN0FBMDIxQkExQUIwOUVBNzAwNTI5NTNGIC8qIERhdGVNYXRoLmNwcCAqLywKQEAgLTIy
NDIsNiArMjI0NSw3IEBACiAJCQkJN0M4M0RFRjYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ldGFBbGxv
Y2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRkUxRDBBNTkwQzAwRkVCQ0YzIC8q
IE5ha2VkUHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjAxMUQwQTU5MEMwMEZFQkNG
MyAvKiBPcHRpb25hbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRENFQkJBNjFEOUFFMjI5MDAy
RTI4M0EgLyogQ29uc3VtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYwMjFEMEE1OTBD
MDBGRUJDRjMgLyogT1NPYmplY3RQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGNTkx
RDBBNTkwQzAwRkVCQ0YzIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RGMTMxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZEJsYWNrVHJlZS5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN1bWUuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3VtZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTFhNWQ3YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN1bWUuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSA8dGhyZWFkPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorTkVWRVJfSU5MSU5FIGF1dG8gdGVzdENvbnN1bWUoY29uc3Qg
VCogbG9jYXRpb24pCit7CisgICAgV1RGOjpjb21waWxlckZlbmNlKCk7IC8vIFBhcmFub2lkIHRl
c3RpbmcuCisgICAgYXV0byByZXQgPSBXVEY6OmNvbnN1bWVMb2FkKGxvY2F0aW9uKTsKKyAgICBX
VEY6OmNvbXBpbGVyRmVuY2UoKTsgLy8gUGFyYW5vaWQgdGVzdGluZy4KKyAgICByZXR1cm4gcmV0
OworfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGLCBDb25zdW1laTgp
Cit7CisgICAgdWludDhfdCBpOCA9IDQyOworICAgIGF1dG8gaThfY29uc3VtZWQgPSB0ZXN0Q29u
c3VtZSgmaTgpOworICAgIEFTU0VSVF9FUShpOF9jb25zdW1lZC52YWx1ZSwgNDJ1KTsKKyAgICBB
U1NFUlRfRVEoaThfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29u
c3VtZWkxNikKK3sKKyAgICB1aW50MTZfdCBpMTYgPSA0MjsKKyAgICBhdXRvIGkxNl9jb25zdW1l
ZCA9IHRlc3RDb25zdW1lKCZpMTYpOworICAgIEFTU0VSVF9FUShpMTZfY29uc3VtZWQudmFsdWUs
IDQydSk7CisgICAgQVNTRVJUX0VRKGkxNl9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7Cit9CisK
K1RFU1QoV1RGLCBDb25zdW1laTMyKQoreworICAgIHVpbnQzMl90IGkzMiA9IDQyOworICAgIGF1
dG8gaTMyX2NvbnN1bWVkID0gdGVzdENvbnN1bWUoJmkzMik7CisgICAgQVNTRVJUX0VRKGkzMl9j
b25zdW1lZC52YWx1ZSwgNDJ1KTsKKyAgICBBU1NFUlRfRVEoaTMyX2NvbnN1bWVkLmRlcGVuZGVu
Y3ksIDB1KTsKK30KKworVEVTVChXVEYsIENvbnN1bWVpNjQpCit7CisgICAgdWludDY0X3QgaTY0
ID0gNDI7CisgICAgYXV0byBpNjRfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmaTY0KTsKKyAgICBB
U1NFUlRfRVEoaTY0X2NvbnN1bWVkLnZhbHVlLCA0MnUpOworICAgIEFTU0VSVF9FUShpNjRfY29u
c3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29uc3VtZWYzMikKK3sKKyAg
ICBmbG9hdCBmMzIgPSA0Mi5mOworICAgIGF1dG8gZjMyX2NvbnN1bWVkID0gdGVzdENvbnN1bWUo
JmYzMik7CisgICAgQVNTRVJUX0VRKGYzMl9jb25zdW1lZC52YWx1ZSwgNDIuZik7CisgICAgQVNT
RVJUX0VRKGYzMl9jb25zdW1lZC5kZXBlbmRlbmN5LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBDb25z
dW1lZjY0KQoreworICAgIGRvdWJsZSBmNjQgPSA0Mi47CisgICAgYXV0byBmNjRfY29uc3VtZWQg
PSB0ZXN0Q29uc3VtZSgmZjY0KTsKKyAgICBBU1NFUlRfRVEoZjY0X2NvbnN1bWVkLnZhbHVlLCA0
Mi4pOworICAgIEFTU0VSVF9FUShmNjRfY29uc3VtZWQuZGVwZW5kZW5jeSwgMHUpOworfQorCitz
dGF0aWMgaW50KiBnbG9iYWw7CisKK1RFU1QoV1RGLCBDb25zdW1lR2xvYmFsUHRyKQoreworICAg
IGF1dG8qIHB0ciA9ICZnbG9iYWw7CisgICAgYXV0byBwdHJfY29uc3VtZWQgPSB0ZXN0Q29uc3Vt
ZSgmcHRyKTsKKyAgICBBU1NFUlRfRVEocHRyX2NvbnN1bWVkLnZhbHVlLCAmZ2xvYmFsKTsKKyAg
ICBBU1NFUlRfRVEocHRyX2NvbnN1bWVkLmRlcGVuZGVuY3ksIDB1KTsKK30KKworc3RhdGljIGlu
dCogZ2xvYmFsQXJyYXlbMTI4XTsKKworVEVTVChXVEYsIENvbnN1bWVHbG9iYWxBcnJheVB0cikK
K3sKKyAgICBhdXRvKiBwdHIgPSAmZ2xvYmFsQXJyYXlbNjRdOworICAgIGF1dG8gcHRyX2NvbnN1
bWVkID0gdGVzdENvbnN1bWUoJnB0cik7CisgICAgQVNTRVJUX0VRKHB0cl9jb25zdW1lZC52YWx1
ZSwgJmdsb2JhbEFycmF5WzY0XSk7CisgICAgQVNTRVJUX0VRKHB0cl9jb25zdW1lZC5kZXBlbmRl
bmN5LCAwdSk7Cit9CisKK1RFU1QoV1RGLCBDb25zdW1lU3RhY2tQdHIpCit7CisgICAgY2hhciog
aGVsbG8gPSBudWxscHRyOworICAgIGF1dG8qIHN0YWNrID0gJmhlbGxvOworICAgIGF1dG8gc3Rh
Y2tfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmc3RhY2spOworICAgIEFTU0VSVF9FUShzdGFja19j
b25zdW1lZC52YWx1ZSwgJmhlbGxvKTsKKyAgICBBU1NFUlRfRVEoc3RhY2tfY29uc3VtZWQuZGVw
ZW5kZW5jeSwgMHUpOworfQorCitURVNUKFdURiwgQ29uc3VtZVdpdGhUaHJlYWQpCit7CisgICAg
Ym9vbCByZWFkeSA9IGZhbHNlOworICAgIGNvbnN0ZXhwciBzaXplX3QgbnVtID0gMTAyNDsKKyAg
ICB1aW50MzJfdCogdmVjID0gbmV3IHVpbnQzMl90W251bV07CisgICAgc3RkOjp0aHJlYWQgdChb
Jl0oKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG51bTsgKytpKQorICAgICAg
ICAgICAgdmVjW2ldID0gaSAqIDI7CisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Cisg
ICAgICAgIHJlYWR5ID0gdHJ1ZTsKKyAgICB9KTsKKyAgICBkbyB7CisgICAgICAgIGF1dG8gc3Rh
Y2tfY29uc3VtZWQgPSB0ZXN0Q29uc3VtZSgmcmVhZHkpOworICAgICAgICBpZiAoc3RhY2tfY29u
c3VtZWQudmFsdWUpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG51bTsg
KytpKQorICAgICAgICAgICAgICAgIEFTU0VSVF9FUSh2ZWNbaSArIHN0YWNrX2NvbnN1bWVkLmRl
cGVuZGVuY3ldLCBpICogMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0g
d2hpbGUgKHRydWUpOworICAgIHQuam9pbigpOworICAgIGRlbGV0ZVtdIHZlYzsKK30KK30KLS0g
CjIuOS4zCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>