<?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>143404</bug_id>
          
          <creation_ts>2015-04-04 12:32:58 -0700</creation_ts>
          <short_desc>[ES6] Implement Symbol.for and Symbol.keyFor</short_desc>
          <delta_ts>2015-04-16 20:21:42 -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>528+ (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>
          
          <blocked>143375</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1082806</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-04 12:32:58 -0700</bug_when>
    <thetext>To complete Symbol implementation before exposing it to web pages, we implement Symbol.for and Symbol.keyFor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082808</commentid>
    <comment_count>1</comment_count>
      <attachid>250134</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-04 12:59:22 -0700</bug_when>
    <thetext>Created attachment 250134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082809</commentid>
    <comment_count>2</comment_count>
      <attachid>250135</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-04 13:19:38 -0700</bug_when>
    <thetext>Created attachment 250135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082810</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-04 13:21:18 -0700</bug_when>
    <thetext>Attachment 250135 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SymbolConstructor.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 17 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>1082995</commentid>
    <comment_count>4</comment_count>
      <attachid>250183</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-05 18:07:33 -0700</bug_when>
    <thetext>Created attachment 250183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082997</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-05 18:10:02 -0700</bug_when>
    <thetext>Attachment 250183 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SymbolConstructor.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 17 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>1083404</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-07 13:31:29 -0700</bug_when>
    <thetext>Could anyone take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083429</commentid>
    <comment_count>7</comment_count>
      <attachid>250183</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-07 14:28:02 -0700</bug_when>
    <thetext>Comment on attachment 250183
Patch

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

&gt; Source/JavaScriptCore/runtime/SymbolRegistry.cpp:51
&gt; +    Symbol* symbol = Symbol::create(exec, key);

Is it spec-compliant that we&apos;ll return a new symbol object every time here? For example, is it spec-compliant that &apos;Symbol.for(&quot;a&quot;) !== Symbol.for(&quot;a&quot;)&apos;?

My reading of 19.4.2.1 says that it is not OK, and that we must return the same Symbol we returned last time, since the spec says &quot;If SameValue(e.[[key]], stringKey) is true, return e.[[symbol]]&quot;. Also, the MDN documentation provides the example, &quot;Symbol.for(&quot;bar&quot;) === Symbol.for(&quot;bar&quot;); // true&quot;.

Side question: If we are required to share a symbol across realms, how do we prevent information leakage across realms through the symbol prototype? I think this API might be broken by design, and not implementable in a web browser.

&gt; Source/JavaScriptCore/runtime/SymbolRegistry.h:39
&gt; +class SymbolRegistry {

This registry leaks memory because it has no way to remove UIDs once they are no longer in use:

for (var i = 0; i &lt; 10000000; ++i)
    Symbol.for(i);

// Lots of memory now in use.

You need a way to make the entries in this registry weak. WeakGCMap or HashMap&lt;Weak&lt;T&gt;&gt; might work for that purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083433</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-07 14:32:36 -0700</bug_when>
    <thetext>&gt; Is it spec-compliant that we&apos;ll return a new symbol object every time here?
&gt; For example, is it spec-compliant that &apos;Symbol.for(&quot;a&quot;) !== Symbol.for(&quot;a&quot;)&apos;?

Ah, I see that you&apos;ve modified ==, ===, Map, and Set to allow for equality across distinct symbol objects.

So, my only concern here is the memory leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083441</commentid>
    <comment_count>9</comment_count>
      <attachid>250183</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-07 14:38:49 -0700</bug_when>
    <thetext>Comment on attachment 250183
Patch

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

Thank you for your review.

&gt;&gt; Source/JavaScriptCore/runtime/SymbolRegistry.h:39
&gt;&gt; +class SymbolRegistry {
&gt; 
&gt; This registry leaks memory because it has no way to remove UIDs once they are no longer in use:
&gt; 
&gt; for (var i = 0; i &lt; 10000000; ++i)
&gt;     Symbol.for(i);
&gt; 
&gt; // Lots of memory now in use.
&gt; 
&gt; You need a way to make the entries in this registry weak. WeakGCMap or HashMap&lt;Weak&lt;T&gt;&gt; might work for that purpose.

Right.
Symbol.key always returns symbols. So users cannot determine that this symbols is newly created or looked up if users don&apos;t have reference to the previously registered symbol.
So I think we can hold symbols in SymbolRegistry as weak references.
I&apos;ll change it :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083611</commentid>
    <comment_count>10</comment_count>
      <attachid>250183</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-08 08:07:35 -0700</bug_when>
    <thetext>Comment on attachment 250183
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/SymbolRegistry.h:39
&gt;&gt;&gt; +class SymbolRegistry {
&gt;&gt; 
&gt;&gt; This registry leaks memory because it has no way to remove UIDs once they are no longer in use:
&gt;&gt; 
&gt;&gt; for (var i = 0; i &lt; 10000000; ++i)
&gt;&gt;     Symbol.for(i);
&gt;&gt; 
&gt;&gt; // Lots of memory now in use.
&gt;&gt; 
&gt;&gt; You need a way to make the entries in this registry weak. WeakGCMap or HashMap&lt;Weak&lt;T&gt;&gt; might work for that purpose.
&gt; 
&gt; Right.
&gt; Symbol.key always returns symbols. So users cannot determine that this symbols is newly created or looked up if users don&apos;t have reference to the previously registered symbol.
&gt; So I think we can hold symbols in SymbolRegistry as weak references.
&gt; I&apos;ll change it :D

After investigating it, I found difficult issues.
Weak &amp; WeakGCMap work for JSCell objects that&apos;s managed by GC, however, AtomicStringImpl is not GC-managed object. (Managed by RefCount)
And since distinct Symbols can be equal, we cannot deal with it by holding Weak&lt;Symbol&gt;.
For example,

AtomicStringImpl* uid = ...
Symbol* sym1 = Symbol::create(vm, uid);
Symbol* sym2 = Symbol::create(vm, uid);

// Now sym1 and sym2 are equal in JS context.
Weak&lt;Symbol&gt; weak(sym1)

// If weak becomes null, we can know sym1 is collected.
// However, sym2 still may exist.


We now allow for equality across distinct symbols to just store AtomicStringImpl* in PropertyTable.
If we don&apos;t allow it, we need to store Symbol* into PropertyTable and GC need to mark them (so adding visitChildren for PropertyTable becomes necessary)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083641</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-08 10:01:29 -0700</bug_when>
    <thetext>OK.
I&apos;ll integrate WeakPtrFactory into StringImpl only if StringImpl is unique.
This class may reside as if substringBuffer().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084037</commentid>
    <comment_count>12</comment_count>
      <attachid>250460</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-09 13:39:34 -0700</bug_when>
    <thetext>Created attachment 250460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084039</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-09 13:41:39 -0700</bug_when>
    <thetext>Attachment 250460 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SymbolConstructor.cpp:44:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
Total errors found: 1 in 21 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>1084042</commentid>
    <comment_count>14</comment_count>
      <attachid>250462</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-09 13:44:16 -0700</bug_when>
    <thetext>Created attachment 250462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084043</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-09 13:45:50 -0700</bug_when>
    <thetext>Attachment 250462 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SymbolConstructor.cpp:44:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
Total errors found: 1 in 21 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>1084093</commentid>
    <comment_count>16</comment_count>
      <attachid>250478</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-09 15:53:14 -0700</bug_when>
    <thetext>Created attachment 250478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084096</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-09 15:55:55 -0700</bug_when>
    <thetext>Attachment 250478 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SymbolConstructor.cpp:44:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
Total errors found: 1 in 23 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>1084102</commentid>
    <comment_count>18</comment_count>
      <attachid>250481</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-09 16:09:00 -0700</bug_when>
    <thetext>Created attachment 250481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084108</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-09 16:11:25 -0700</bug_when>
    <thetext>Attachment 250481 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SymbolConstructor.cpp:44:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
Total errors found: 1 in 23 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>1084120</commentid>
    <comment_count>20</comment_count>
      <attachid>250486</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-09 16:36:29 -0700</bug_when>
    <thetext>Created attachment 250486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084123</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-09 16:38:39 -0700</bug_when>
    <thetext>Attachment 250486 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SymbolConstructor.cpp:44:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
Total errors found: 1 in 23 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>1084125</commentid>
    <comment_count>22</comment_count>
      <attachid>250487</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-09 16:44:08 -0700</bug_when>
    <thetext>Created attachment 250487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084128</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-09 16:46:07 -0700</bug_when>
    <thetext>Attachment 250487 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SymbolConstructor.cpp:44:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
Total errors found: 1 in 23 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>1084129</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-09 16:48:50 -0700</bug_when>
    <thetext>OK, I&apos;ve confirmed the patch passes the JSC tests.
So the patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084210</commentid>
    <comment_count>25</comment_count>
      <attachid>250487</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-09 23:02:19 -0700</bug_when>
    <thetext>Comment on attachment 250487
Patch

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

Test coverage seems a bit light. Does it really exercise all the code paths?

Generally speaking, I think classes are easier to read if we keep function bodies out of them. We can still mark them inline, but the class itself is hard to read if it’s full of the function bodies and not just the declarations.

&gt; Source/JavaScriptCore/runtime/SymbolConstructor.cpp:117
&gt; +    JSValue sym = exec-&gt;argument(0);

I suggest calling this local variable argument, symbolValue, or even just symbol, rather than sym.

&gt; Source/JavaScriptCore/runtime/SymbolConstructor.cpp:122
&gt; +    Symbol* symbol = asSymbol(sym);
&gt; +    AtomicStringImpl* uid = symbol-&gt;privateName().uid();

I think this would read better in a single line rather than with a local variable.

&gt; Source/JavaScriptCore/runtime/VM.h:282
&gt; +    std::unique_ptr&lt;WTF::SymbolRegistry&gt; m_symbolRegistry;

Why a pointer to a symbol registry instead of an entire symbol registry? Just costs us an extra pointer dereference all the time.

&gt; Source/JavaScriptCore/runtime/VM.h:293
&gt; +    WTF::SymbolRegistry* symbolRegistry() { return m_symbolRegistry.get(); }

Should return a reference rather than a pointer, since it can never be null.

&gt; Source/WTF/wtf/text/StringImpl.cpp:295
&gt; +    RefPtr&lt;StringImpl&gt; rep = argRep;

I don’t understand why we need this change. It looks to me like everything here would have worked if we just left rep as before.

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:40
&gt; +    WTF_MAKE_NONCOPYABLE(SymbolRegistryLocker);

No needed. Deriving from SpinLockHolder already makes this non-copyable.

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:42
&gt; +    SymbolRegistryLocker(SymbolRegistry* symbolRegistry)

Should take a reference rather than a pointer.

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:53
&gt; +    SymbolRegistryLocker(SymbolRegistry*) { }

Should take a reference rather than a pointer.

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:59
&gt; +    : m_table()

Why is this necessary?

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:61
&gt; +    , m_spinLock()

Why is this necessary?

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:68
&gt; +    for (auto key : m_table)

Should use auto&amp; here instead of auto to avoid doing an extra ref/deref on every key.

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:72
&gt; +Ref&lt;StringImpl&gt; SymbolRegistry::symbolForKey(String rep)

This should take const String&amp;, not String. Also not sure why we are taking String here and StringImpl elsewhere in the class.

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:77
&gt; +    if (addResult.isNewEntry) {

I’d normally suggest putting the “not new” case first and doing an early return in that case.

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:86
&gt; +String SymbolRegistry::keyForSymbol(StringImpl* uid)

Should take a reference, not a pointer.

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:95
&gt; +void SymbolRegistry::remove(StringImpl* uid)

Should take a reference, not a pointer.

&gt; Source/WTF/wtf/text/SymbolRegistry.h:33
&gt; +#include &lt;wtf/HashSet.h&gt;
&gt; +#include &lt;wtf/WTFThreadData.h&gt;
&gt; +#include &lt;wtf/text/StringHash.h&gt;
&gt; +#include &lt;wtf/text/StringImpl.h&gt;
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Too many includes. Don’t need to include headers that are included by others that are already in the list.

&gt; Source/WTF/wtf/text/SymbolRegistry.h:48
&gt; +        : m_impl()
&gt; +        , m_hash()

Shouldn’t need to do either of these.

&gt; Source/WTF/wtf/text/SymbolRegistry.h:52
&gt; +    explicit SymbolRegistryKey(StringImpl* uid)

Should take a reference, not a pointer.

&gt; Source/WTF/wtf/text/SymbolRegistry.h:54
&gt; +        , m_hash(0)

Strange to use m_hash() above and m_hash(0) here. I suggest using neither.

&gt; Source/WTF/wtf/text/SymbolRegistry.h:88
&gt; +    StringImpl* m_impl;
&gt; +    unsigned m_hash;

Should initialize both of these here:

    StringImpl* m_impl { nullptr };
    unsigned m_hash { 0 };

&gt; Source/WTF/wtf/text/SymbolRegistry.h:93
&gt; +    struct Hash : public StringHash {

No need for public, since public is the default for struct inheritance.

&gt; Source/WTF/wtf/text/SymbolRegistry.h:114
&gt; +    WTF_MAKE_FAST_ALLOCATED;

Should not use this, and should not allocate this on the heap.

&gt; Source/WTF/wtf/text/SymbolRegistry.h:121
&gt; +    WTF_EXPORT_PRIVATE SymbolRegistry();
&gt; +    WTF_EXPORT_PRIVATE ~SymbolRegistry();
&gt; +
&gt; +    WTF_EXPORT_PRIVATE Ref&lt;StringImpl&gt; symbolForKey(String);
&gt; +    WTF_EXPORT_PRIVATE String keyForSymbol(StringImpl* uid);

Are you sure all of these need to be exported?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084505</commentid>
    <comment_count>26</comment_count>
      <attachid>250487</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-11 06:48:31 -0700</bug_when>
    <thetext>Comment on attachment 250487
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/SymbolConstructor.cpp:117
&gt;&gt; +    JSValue sym = exec-&gt;argument(0);
&gt; 
&gt; I suggest calling this local variable argument, symbolValue, or even just symbol, rather than sym.

OK, rename it to symbolValue.

&gt;&gt; Source/JavaScriptCore/runtime/SymbolConstructor.cpp:122
&gt;&gt; +    AtomicStringImpl* uid = symbol-&gt;privateName().uid();
&gt; 
&gt; I think this would read better in a single line rather than with a local variable.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/VM.h:282
&gt;&gt; +    std::unique_ptr&lt;WTF::SymbolRegistry&gt; m_symbolRegistry;
&gt; 
&gt; Why a pointer to a symbol registry instead of an entire symbol registry? Just costs us an extra pointer dereference all the time.

So, using SymbolRegistry directly instead of using a pointer.

&gt;&gt; Source/JavaScriptCore/runtime/VM.h:293
&gt;&gt; +    WTF::SymbolRegistry* symbolRegistry() { return m_symbolRegistry.get(); }
&gt; 
&gt; Should return a reference rather than a pointer, since it can never be null.

Fixed.

&gt;&gt; Source/WTF/wtf/text/StringImpl.cpp:295
&gt;&gt; +    RefPtr&lt;StringImpl&gt; rep = argRep;
&gt; 
&gt; I don’t understand why we need this change. It looks to me like everything here would have worked if we just left rep as before.

Oops, it&apos;s used for debugging purpose. I&apos;ll fix it.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:40
&gt;&gt; +    WTF_MAKE_NONCOPYABLE(SymbolRegistryLocker);
&gt; 
&gt; No needed. Deriving from SpinLockHolder already makes this non-copyable.

OK, dropped.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:42
&gt;&gt; +    SymbolRegistryLocker(SymbolRegistry* symbolRegistry)
&gt; 
&gt; Should take a reference rather than a pointer.

Changed.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:53
&gt;&gt; +    SymbolRegistryLocker(SymbolRegistry*) { }
&gt; 
&gt; Should take a reference rather than a pointer.

Changed.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:59
&gt;&gt; +    : m_table()
&gt; 
&gt; Why is this necessary?

OK, constructor is now dropped since there&apos;s no special construction.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:61
&gt;&gt; +    , m_spinLock()
&gt; 
&gt; Why is this necessary?

Ditto.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:68
&gt;&gt; +    for (auto key : m_table)
&gt; 
&gt; Should use auto&amp; here instead of auto to avoid doing an extra ref/deref on every key.

Since SymbolRegistryKey doesn&apos;t have ownership to StringImpl* (when StringImpl* is destructed, SymbolRegistryKey is removed by SymbolRegistry::remove), so ref/deref doesn&apos;t occur.
But, to align to the styles in WebKit, I&apos;ll use auto&amp; :D

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:72
&gt;&gt; +Ref&lt;StringImpl&gt; SymbolRegistry::symbolForKey(String rep)
&gt; 
&gt; This should take const String&amp;, not String. Also not sure why we are taking String here and StringImpl elsewhere in the class.

OK, use const String&amp;.

This is because String represents just String, but StringImpl is used as uid (unique id) (like in JSC::Identifier class).
SymbolRegistry::symbolForKey takes String and returnes Symbol (StringImpl uid).
SymbolRegistry::keyForSymbol takes Symbol (StringImpl* uid) and returns String.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:77
&gt;&gt; +    if (addResult.isNewEntry) {
&gt; 
&gt; I’d normally suggest putting the “not new” case first and doing an early return in that case.

Fixed :)

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:86
&gt;&gt; +String SymbolRegistry::keyForSymbol(StringImpl* uid)
&gt; 
&gt; Should take a reference, not a pointer.

Here, StringImpl* is used as uid (StringImpl* uid), not String.
So I think using StringImpl* is better (like in JSC::Identifier / JSC::PropertyName class).

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:95
&gt;&gt; +void SymbolRegistry::remove(StringImpl* uid)
&gt; 
&gt; Should take a reference, not a pointer.

Ditto.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.h:33
&gt;&gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; Too many includes. Don’t need to include headers that are included by others that are already in the list.

Dropped several headers.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.h:48
&gt;&gt; +        , m_hash()
&gt; 
&gt; Shouldn’t need to do either of these.

Replace it with SymbolRegistryKey() = default;

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.h:52
&gt;&gt; +    explicit SymbolRegistryKey(StringImpl* uid)
&gt; 
&gt; Should take a reference, not a pointer.

To align to the JSC::Identifier/JSC::PropertyName, use StringImpl* here (which represents uid).

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.h:54
&gt;&gt; +        , m_hash(0)
&gt; 
&gt; Strange to use m_hash() above and m_hash(0) here. I suggest using neither.

Use this style.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.h:88
&gt;&gt; +    unsigned m_hash;
&gt; 
&gt; Should initialize both of these here:
&gt; 
&gt;     StringImpl* m_impl { nullptr };
&gt;     unsigned m_hash { 0 };

Looks very nice.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.h:93
&gt;&gt; +    struct Hash : public StringHash {
&gt; 
&gt; No need for public, since public is the default for struct inheritance.

Dropped.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.h:114
&gt;&gt; +    WTF_MAKE_FAST_ALLOCATED;
&gt; 
&gt; Should not use this, and should not allocate this on the heap.

OK, dropped.

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.h:121
&gt;&gt; +    WTF_EXPORT_PRIVATE String keyForSymbol(StringImpl* uid);
&gt; 
&gt; Are you sure all of these need to be exported?

They are called from JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084658</commentid>
    <comment_count>27</comment_count>
      <attachid>250611</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-12 10:12:56 -0700</bug_when>
    <thetext>Created attachment 250611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084659</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-12 10:16:22 -0700</bug_when>
    <thetext>Attachment 250611 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/SymbolConstructor.cpp:44:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
Total errors found: 1 in 23 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>1085356</commentid>
    <comment_count>29</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-14 17:37:34 -0700</bug_when>
    <thetext>Could you review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086020</commentid>
    <comment_count>30</comment_count>
      <attachid>250611</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-16 12:39:14 -0700</bug_when>
    <thetext>Comment on attachment 250611
Patch

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

I&apos;m a bit worried about the WEB_THREAD thread safety here, but the rest of the patch looks good.

&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:55
&gt; +#if USE(WEB_THREAD)
&gt; +
&gt; +class SymbolRegistryLocker : public SpinLockHolder {
&gt; +public:
&gt; +    SymbolRegistryLocker(SymbolRegistry&amp; symbolRegistry)
&gt; +        : SpinLockHolder(symbolRegistry.spinLock())
&gt; +    {
&gt; +    }
&gt; +};
&gt; +
&gt; +#else
&gt; +
&gt; +class SymbolRegistryLocker {
&gt; +    WTF_MAKE_NONCOPYABLE(SymbolRegistryLocker);
&gt; +public:
&gt; +    SymbolRegistryLocker(SymbolRegistry&amp;) { }
&gt; +};
&gt; +
&gt; +#endif // USE(WEB_THREAD)

Why does the symbol registry need this locking, even though the identifier table does not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086087</commentid>
    <comment_count>31</comment_count>
      <attachid>250611</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-16 15:15:22 -0700</bug_when>
    <thetext>Comment on attachment 250611
Patch

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

Thank you for your review!

&gt;&gt; Source/WTF/wtf/text/SymbolRegistry.cpp:55
&gt;&gt; +#endif // USE(WEB_THREAD)
&gt; 
&gt; Why does the symbol registry need this locking, even though the identifier table does not?

Currently, AtomicString.cpp protects AtomicStringTable with AtomicStringTableLocker.
It seems that it is introduced since WebCore in iOS is executed in 2 threads, the main UI thread and the WebThread. https://bugs.webkit.org/show_bug.cgi?id=108139
So in this time, I followed the design. Since this function can be called at the same time to AtomicString::remove.

But seeing AtomicStringTable.cpp now, I think this gaurd for SymbolRegistry is not necessary because SymbolRegistry is owned by JSC VM and StringImpl* used for Symbol cannot be used outside the JSC world because it&apos;s hash value is special value.
So I think we can drop this lock, is it correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086097</commentid>
    <comment_count>32</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-16 15:30:51 -0700</bug_when>
    <thetext>&gt; So I think we can drop this lock, is it correct?

Yes, I think you are right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086099</commentid>
    <comment_count>33</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-16 15:34:35 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; &gt; So I think we can drop this lock, is it correct?
&gt; 
&gt; Yes, I think you are right.

Thanks! So I&apos;ll land it without locks ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086109</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-16 15:47:42 -0700</bug_when>
    <thetext>Committed r182915: &lt;http://trac.webkit.org/changeset/182915&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086138</commentid>
    <comment_count>35</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-16 16:10:27 -0700</bug_when>
    <thetext>This broke Windows build:

HeapInlines.h(234): error C2248: &apos;JSC::SymbolConstructor::StructureFlags&apos; : cannot access protected member declared in class &apos;JSC::SymbolConstructor&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086145</commentid>
    <comment_count>36</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-16 16:18:33 -0700</bug_when>
    <thetext>Oh, and Mac too. Is anyone available to fix now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086148</commentid>
    <comment_count>37</comment_count>
      <attachid>250972</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-16 16:22:08 -0700</bug_when>
    <thetext>Created attachment 250972
try to fix the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086155</commentid>
    <comment_count>38</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-16 16:29:22 -0700</bug_when>
    <thetext>Committed r182921: &lt;http://trac.webkit.org/changeset/182921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086241</commentid>
    <comment_count>39</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-16 20:21:42 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Committed r182921: &lt;http://trac.webkit.org/changeset/182921&gt;

Oops!!!! Thank you for notifying / fixing that.
I missed it. Sorry for troubling you.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250134</attachid>
            <date>2015-04-04 12:59:22 -0700</date>
            <delta_ts>2015-04-04 13:19:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143404-20150405045834.patch</filename>
            <type>text/plain</type>
            <size>21072</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZDA3YTI0MDQwZGJlODBlY2Y5ODdmNzQ5ZTA2YWM2OTc3ODliZDkzLi4xMzg1ZjdlMjQ0MDhmMjY3
ZGE3YTNlOGMxMDYyY2NmNjI3NWJmZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzOSBAQAogMjAxNS0wNC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtl
eUZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IuCisgICAgICAg
IFN5bWJvbFJlZ2lzdHJ5IG1haW50YWlucyBtYXBwaW5nCisgICAgICAgIGJldHdlZW4gU3RyaW5n
IGtleSBhbmQgU3ltYm9sJ3MgQXRvbWljU3RyaW5nSW1wbCouCisgICAgICAgIEFuZCB0byBtYWtl
IHRoaXMgbWFwcGluZyBlbmFibGVkIG92ZXIgcmVhbG1zLAorICAgICAgICBWTSBvd25zIHRoaXMg
bWFwcGluZyAobm90IEpTR2xvYmFsT2JqZWN0KS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIHJ1
bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xDb25zdHJ1
Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0
b3JGb3IpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvcktleUZvcik6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9s
UmVnaXN0cnkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xDb25zdHJ1Y3Rvci5oLgorICAgICAgICAoSlNDOjpTeW1ib2xSZWdpc3RyeTo6U3ltYm9s
UmVnaXN0cnkpOgorICAgICAgICAoSlNDOjpTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KToK
KyAgICAgICAgKEpTQzo6U3ltYm9sUmVnaXN0cnk6OmtleUZvclN5bWJvbCk6CisgICAgICAgICog
cnVudGltZS9TeW1ib2xSZWdpc3RyeS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3Bw
OgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAg
ICAgKEpTQzo6Vk06OnN5bWJvbFJlZ2lzdHJ5KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3lt
Ym9sLXJlZ2lzdHJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorCisyMDE1LTA0LTA0ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIEltcGxlbWVu
dCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCAxYmNiZTgwYjM2ZWFiYzFkZTQ2ODAwN2M4MWYxY2Q5ZTk0MThlNmM2
Li4yYzIxYWM1ZTcwNzZiNjIyY2JmNGY2MWVjYmYwOTMwYWJkMWEwNmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjUsOSArNTY1LDEwIEBAIHNldChKYXZhU2NyaXB0
Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCiAg
ICAgcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKICAgICBydW50aW1lL1N5bWJvbC5jcHAK
KyAgICBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sT2Jq
ZWN0LmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAotICAgIHJ1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9TeW1ib2xSZWdpc3RyeS5jcHAKICAgICBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcAog
ICAgIHJ1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuY3BwCkBAIC02MTEsNiArNjEyLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cAogICAgIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAog
ICAgIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY5OWFjN2VjMGVkNjA5M2UwYTgwZmM2Zjk3YzY1
MjU0ODE2OWY4ZjkuLjE4NWRjN2UzMWQwN2NkOGQ3NDM5NjgwZjE3MjllNzYxZGYzMjJkZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01OCw2ICs1OCw3
IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0LmggXAogICAgIFN0cmluZ0NvbnN0cnVj
dG9yLmx1dC5oIFwKICAgICBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5sdXQuaCBcCisgICAgU3lt
Ym9sQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN5bWJvbFByb3RvdHlwZS5sdXQuaCBcCiAgICAg
dWRpczg2X2l0YWIuaCBcCiAgICAgQnl0ZWNvZGVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKaW5kZXggNzQzMzBlNzAzZGFjNGQzNjAwZWFiMjdhMGFkOGViNGFmMDBl
MGIzMi4uZDlkYzYxZGMxYzViMmQyMWQ5MTM1MmM5OWM4MDRhODVjZTZiYTlmZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC04MzUsNiArODM1LDcgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sQ29uc3RydWN0b3IuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xPYmplY3QuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xQcm90b3R5cGUuY3BwIiAv
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xSZWdpc3RyeS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFRhYmxlLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVGVzdFJ1bm5lclV0aWxzLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVHlwZWRBcnJheUNvbnRy
b2xsZXIuY3BwIiAvPgpAQCAtMTY2OCw2ICsxNjY5LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sQ29uc3RydWN0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXFN5bWJvbFByb3RvdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxTeW1ib2xSZWdpc3RyeS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxTeW1ib2xUYWJsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxUZXN0UnVubmVyVXRpbHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcVHJhY2luZy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDk5YzhhN2ZjMWNhNDk0ZTBhODE0MTAxMmYy
ZjcwMDQ4ODdjOTQ5MmIuLjhlNDIzOWNmNmFiM2U4MGRlZGY0MjM3N2QyOWQyMmIxZjg2YzVkZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
QEAgLTg3MCw2ICs4NzAsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxT
eW1ib2xQcm90b3R5cGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xS
ZWdpc3RyeS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFRhYmxlLmNw
cCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTI5MzMsNiArMjkzNiw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5
bWJvbFByb3RvdHlwZS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xSZWdp
c3RyeS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xUYWJsZS5oIj4KICAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCmluZGV4
IGFhOTRmYTMxZjFhMDk1YmUzODg0YzQxNzgwMjQ0YjcxODhiMzAyODkuLmEwNTRmNzJhNWYzZDk5
Y2VhNTg5MWNiNjg0OTYwNjliZGJkN2I0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTMwLDcgKzMwLDE4IEBACiAj
aW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTeW1ib2wuaCIKICNpbmNsdWRlICJTeW1ib2xQcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJTeW1ib2xSZWdpc3RyeS5oIgorCituYW1lc3BhY2UgSlNDIHsK
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JG
b3IoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1i
b2xDb25zdHJ1Y3RvcktleUZvcihFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiU3ltYm9s
Q29uc3RydWN0b3IubHV0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zOCw2ICs0OSwxMyBA
QAogCiBjb25zdCBDbGFzc0luZm8gU3ltYm9sQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTeW1ib2xDb25zdHJ1
Y3RvcikgfTsKIAorLyogU291cmNlIGZvciBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2lu
IHN5bWJvbENvbnN0cnVjdG9yVGFibGUKKyAgZm9yICAgICAgIHN5bWJvbENvbnN0cnVjdG9yRm9y
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAga2V5Rm9yICAgIHN5bWJvbENvbnN0cnVjdG9y
S2V5Rm9yICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKIFN5bWJvbENvbnN0cnVj
dG9yOjpTeW1ib2xDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQogewpAQCAtNTUsNiArNzMsMTMgQEAg
dm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTeW1ib2xQcm90
b3R5cGUqIHByb3RvdHlwZSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX1dFTExfS05PV05fU1lNQk9MUykKIH0KIAor
Ym9vbCBTeW1ib2xDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhl
Yywgc3ltYm9sQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PFN5bWJvbENvbnN0cnVjdG9yKj4ob2Jq
ZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN5bWJvbChFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgSlNWYWx1ZSBkZXNjcmlwdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtNzQs
NCArOTksMjAgQEAgQ2FsbFR5cGUgU3ltYm9sQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yRm9yKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBKU1N0cmluZyogc3RyaW5nS2V5ID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+dm0oKS5zeW1ib2xSZWdpc3RyeSgpLT5zeW1ib2xGb3JLZXkoZXhlYywg
c3RyaW5nS2V5KSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29u
c3RydWN0b3JLZXlGb3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgc3ltID0gZXhl
Yy0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFzeW0uaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShleGVjLT52bSgpLnN5bWJvbFJlZ2lzdHJ5KCktPmtleUZvclN5bWJvbChleGVj
LCBhc1N5bWJvbChzeW0pKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgKaW5kZXggMGFlMTJk
N2ZkZDVjNDI0YmI2OWEyNmQxZGMxM2FlMDgwODRhNjgzOS4uZTU2MzcxMzMwMThmMmQ1YTI3NzE3
YzViYjk0YjdhMjYzOTRjOTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oCkBAIC01NSwxMCArNTUsMTMgQEAgY2xhc3MgU3ltYm9s
Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN5bWJvbFByb3RvdHlwZSopOwogCisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKIHByaXZhdGU6CiAgICAgU3ltYm9sQ29uc3Ry
dWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xSZWdpc3RyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUwOGFkYjAyNWY2
MWM2MmM5ZmI1OTRlMjU5OWYzZjRiY2ExZjI5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTeW1i
b2xSZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJTeW1ib2wu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1N5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xSZWdpc3RyeSgp
CisgICAgOiBtX2tleVRvU3ltYm9sKCkKKyAgICAsIG1fc3ltYm9sVG9LZXkoKQoreworfQorCitK
U1ZhbHVlIFN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkoRXhlY1N0YXRlKiBleGVjLCBKU1N0
cmluZyoga2V5KQoreworICAgIFN0cmluZyBzdHJpbmcgPSBrZXktPnZhbHVlKGV4ZWMpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgYXV0byByZXN1bHQgPSBtX2tleVRvU3ltYm9sLmFkZChzdHJpbmcsIG51bGxwdHIpOwor
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBTeW1ib2w6OmNyZWF0
ZShleGVjLT52bSgpLCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKKworICAgIFN5bWJv
bCogc3ltYm9sID0gU3ltYm9sOjpjcmVhdGUoZXhlYywga2V5KTsKKyAgICBSZWZQdHI8QXRvbWlj
U3RyaW5nSW1wbD4gdWlkID0gc3ltYm9sLT5wcml2YXRlTmFtZSgpLnVpZCgpOworICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSB1aWQ7CisgICAgbV9zeW1ib2xUb0tleS5hZGQodWlkLCBzdHJp
bmcpOworICAgIHJldHVybiBzeW1ib2w7Cit9CisKK0pTVmFsdWUgU3ltYm9sUmVnaXN0cnk6Omtl
eUZvclN5bWJvbChFeGVjU3RhdGUqIGV4ZWMsIFN5bWJvbCogc3ltYm9sKQoreworICAgIGF1dG8g
aXRlcmF0b3IgPSBtX3N5bWJvbFRvS2V5LmZpbmQoc3ltYm9sLT5wcml2YXRlTmFtZSgpLnVpZCgp
KTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9zeW1ib2xUb0tleS5lbmQoKSkKKyAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBpdGVyYXRvci0+dmFsdWUpOworICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFJlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxYjJkNjU3
ZTNkY2E2YzRkYTJlNWFiYTA5N2ZmZGQwN2RjNmUzNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xSZWdpc3RyeS5oCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTeW1ib2xSZWdpc3RyeV9oCisjZGVmaW5l
IFN5bWJvbFJlZ2lzdHJ5X2gKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBTeW1ib2w7CisKK2NsYXNzIFN5bWJvbFJlZ2lzdHJ5IHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTeW1ib2xSZWdpc3RyeSk7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIFN5bWJvbFJlZ2lzdHJ5KCk7CisgICAgSlNWYWx1ZSBzeW1i
b2xGb3JLZXkoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKKyAgICBKU1ZhbHVlIGtleUZvclN5bWJv
bChFeGVjU3RhdGUqLCBTeW1ib2wqKTsKKworcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4+IEtleVRvU3ltYm9sOworICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4sIFN0cmluZz4gU3ltYm9sVG9LZXk7
CisKKyAgICBLZXlUb1N5bWJvbCBtX2tleVRvU3ltYm9sOworICAgIFN5bWJvbFRvS2V5IG1fc3lt
Ym9sVG9LZXk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFN5bWJvbFJl
Z2lzdHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBlNzYzOTQ3NWMz
MmFlZTFkZDFlOTUzOGRjYjhhMmY1ZWRkYTFiMmUyLi4wNDUyNmYzOGI2N2I1NjIxNjMwMjdkZjc2
NjM0ZDQ3YTg5N2UxY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC04
Miw2ICs4Miw3IEBACiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRl
ICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorI2luY2x1
ZGUgIlN5bWJvbFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVk
ZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKQEAg
LTE5Niw2ICsxOTcsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFs
bG9jYXRvciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKICAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVz
KHN0ZDo6bWFrZV91bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCiAgICAgLCBtX3R5
cGVQcm9maWxlckVuYWJsZWRDb3VudCgwKQogICAgICwgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5h
YmxlZENvdW50KDApCisgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8U3lt
Ym9sUmVnaXN0cnk+KCkpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRo
aXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBhNDZhMzc2MGQ0ZmVhMTlkYTk0ODUyNzg1
NmU2YTYzZjZmYzA4ZWFjLi5kNTQ0Y2ZjMjRjNWM0NGZkOTMwNDlmNjNlOGIxMDUzNTM0ZmUwODk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTk1LDYgKzk1LDcgQEAKIHN0cnVj
dCBTdGFja0ZyYW1lOwogY2xhc3MgU3RyaW5naWZpZXI7CiBjbGFzcyBTdHJ1Y3R1cmU7CitjbGFz
cyBTeW1ib2xSZWdpc3RyeTsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiBjbGFzcyBSZWdF
eHA7CiAjZW5kaWYKQEAgLTUyMSw2ICs1MjIsOCBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4gewogICAgIGJvb2wgZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigp
OwogICAgIGJvb2wgZGlzYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIAorICAgIFN5bWJvbFJl
Z2lzdHJ5KiBzeW1ib2xSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnkuZ2V0KCk7
IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4Y2VwdGlvblNjb3BlOwpAQCAtNTc1LDYgKzU3OCw3IEBA
IGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgRnVuY3Rp
b25IYXNFeGVjdXRlZENhY2hlIG1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb250cm9sRmxvd1Byb2ZpbGVyPiBtX2NvbnRyb2xGbG93UHJvZmlsZXI7CiAg
ICAgdW5zaWduZWQgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxTeW1ib2xSZWdpc3RyeT4gbV9zeW1ib2xSZWdpc3RyeTsKIH07CiAKICNpZiBF
TkFCTEUoR0NfVkFMSURBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3Mvc3ltYm9sLXJlZ2lzdHJ5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI3MGI3MjA2MmMxMTlm
NWJiMDNmN2M1NmZlNTY3ZDdmMzlkMjY5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXJlZ2lzdHJ5LmpzCkBAIC0wLDAgKzEsNzAg
QEAKK2Z1bmN0aW9uIHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZTogIiArIGFjdHVh
bCk7Cit9CisKK3ZhciBoZWxsbyA9IFN5bWJvbCgiSGVsbG8iKTsKK3ZhciBwcm90byA9IFN5bWJv
bCgiX19wcm90b19fIik7CisKK2ZvciAodmFyIHN5bSBvZiBbIGhlbGxvLCBwcm90bywgU3ltYm9s
Lml0ZXJhdG9yIF0pIHsKKyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZvcihzeW0pOworICAgIHRl
c3Qoa2V5LCB1bmRlZmluZWQpOworICAgIC8vIHR3aWNlCisgICAgdmFyIGtleSA9IFN5bWJvbC5r
ZXlGb3Ioc3ltKTsKKyAgICB0ZXN0KGtleSwgdW5kZWZpbmVkKTsKK30KKworZm9yICh2YXIga2V5
IG9mIFsgIkhlbGxvIiwgIl9fcHJvdG9fXyIsICJTeW1ib2wuaXRlcmF0b3IiLCBudWxsLCB1bmRl
ZmluZWQsIDQyLCAyMC41LCB0cnVlLCBmYWxzZSwge30sIGZ1bmN0aW9uICgpIHt9LCBbXSBdKSB7
CisgICAgdmFyIHN5bSA9IFN5bWJvbC5mb3Ioa2V5KTsKKyAgICB0ZXN0KHR5cGVvZiBzeW0sICJz
eW1ib2wiKTsKKyAgICB0ZXN0KHN5bS50b1N0cmluZygpLCAiU3ltYm9sKCIgKyBTdHJpbmcoa2V5
KSArICIpIik7CisKKyAgICB2YXIgc3ltMiA9IFN5bWJvbC5mb3Ioa2V5KTsKKyAgICB0ZXN0KHN5
bSA9PT0gc3ltMiwgdHJ1ZSk7CisKKyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZvcihzeW0pOwor
ICAgIHRlc3Qoa2V5LCBrZXkpOworICAgIHZhciBrZXkgPSBTeW1ib2wua2V5Rm9yKHN5bTIpOwor
ICAgIHRlc3Qoa2V5LCBrZXkpOworfQorCit2YXIgZXJyb3IgPSBudWxsOwordHJ5IHsKKyAgICB2
YXIga2V5ID0geworICAgICAgICB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigndG9TdHJpbmcnKTsKKyAgICAgICAgfQorICAgIH07CisgICAgU3ltYm9sLmZvcihrZXkp
OworfSBjYXRjaCAoZSkgeworICAgIGVycm9yID0gZTsKK30KK2lmICghZXJyb3IpCisgICAgdGhy
b3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CitpZiAoU3RyaW5nKGVycm9yKSAhPT0gJ0Vycm9y
OiB0b1N0cmluZycpCisgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgZXJyb3I6ICcgKyBTdHJpbmco
ZXJyb3IpKTsKKwordmFyIGVsZW1lbnRzID0gWworICAgIG51bGwsCisgICAgdW5kZWZpbmVkLAor
ICAgIDQyLAorICAgIDIwLjUsCisgICAgdHJ1ZSwKKyAgICBmYWxzZSwKKyAgICAnc3RyaW5nJywK
KyAgICB7fSwKKyAgICBmdW5jdGlvbiAoKSB7fSwKKyAgICBbXSwKK107Citmb3IgKHZhciBpdGVt
IG9mIGVsZW1lbnRzKSB7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAg
ICBTeW1ib2wua2V5Rm9yKGl0ZW0pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3Ig
PSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25v
dCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gJ1R5cGVFcnJvcjogVHlwZSBl
cnJvcicpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIGVycm9yOiAnICsgU3RyaW5nKGVy
cm9yKSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggY2FiNTA0M2VmY2M2NWYwMGJlOTY4MjFjOWVlMTJmMzkyYmJmZDMw
Ni4uZGQwNGY2MmQwODBhYzU0YjgxMWNmZGU5NzlhZDY2OGQ1MjFjYjdmNSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE4IEBACiAyMDE1LTA0LTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgogCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBTeW1ib2wuZm9yIGFuZCBTeW1ib2wua2V5
Rm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0
MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
dGVzdHMgdG8gY2hlY2sgU3ltYm9sJ3MgaWRlbnRpdHkgb3ZlciBkaWZmZXJlbnQgcmVhbG1zLgor
CisgICAgICAgICoganMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9kb20vc2NyaXB0LXRlc3RzL2Nyb3NzLWZyYW1lLXN5bWJvbHMuanM6IEFkZGVk
LgorCisyMDE1LTA0LTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CiAgICAgICAgIEltcGxlbWVudCBFUzYgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTA2CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zY2JhMWE5OWFkNWE3MDhiMTY1N2FjMDBkODcxMTgxNDUxNWY1NDcwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIFN5bWJvbCBhbmQgZ2xvYmFsIHN5
bWJvbCByZWdpc3RyeSBpZGVudGl0eQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBmcmFtZS5TeW1ib2wuaXRlcmF0b3IgaXMgU3ltYm9sLml0ZXJhdG9yCitQQVNTIGZyYW1l
LlN5bWJvbCgnSGVsbG8nKSBpcyBub3QgU3ltYm9sKCdIZWxsbycpCitQQVNTIFN5bWJvbC5rZXlG
b3Ioc3ltKSBpcyAnSGVsbG8nCitQQVNTIGZyYW1lLlN5bWJvbC5rZXlGb3Ioc3ltKSBpcyAnSGVs
bG8nCitQQVNTIFN5bWJvbC5mb3IoJ0hlbGxvJykgaXMgc3ltCitQQVNTIGZyYW1lLlN5bWJvbC5m
b3IoJ0hlbGxvJykgaXMgc3ltCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZyYW1l
LXN5bWJvbHMuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGIzNjI3YzFjZjVkZGQyMjQwMDliY2RmYzFiNzIyZThiMGY5NjVkNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xz
Lmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lPjwv
aWZyYW1lPgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1ib2xzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9zY3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qcyBiL0xheW91dFRlc3RzL2pz
L2RvbS9zY3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzhl
YWYzN2YxZjA3ZjkzYWNjOTUxZDE5OTg2OGQ2MGRlZjQ4Y2UwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1ib2xzLmpzCkBA
IC0wLDAgKzEsMTIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBTeW1ib2wgYW5kIGdsb2JhbCBzeW1i
b2wgcmVnaXN0cnkgaWRlbnRpdHkiKTsKKwordmFyIGZyYW1lID0gZnJhbWVzWzBdOworCitzaG91
bGRCZSgiZnJhbWUuU3ltYm9sLml0ZXJhdG9yIiwgIlN5bWJvbC5pdGVyYXRvciIpOworc2hvdWxk
Tm90QmUoImZyYW1lLlN5bWJvbCgnSGVsbG8nKSIsICJTeW1ib2woJ0hlbGxvJykiKTsKKwordmFy
IHN5bSA9IFN5bWJvbC5mb3IoIkhlbGxvIik7CitzaG91bGRCZSgiU3ltYm9sLmtleUZvcihzeW0p
IiwgIidIZWxsbyciKTsKK3Nob3VsZEJlKCJmcmFtZS5TeW1ib2wua2V5Rm9yKHN5bSkiLCAiJ0hl
bGxvJyIpOworc2hvdWxkQmUoIlN5bWJvbC5mb3IoJ0hlbGxvJykiLCAic3ltIik7CitzaG91bGRC
ZSgiZnJhbWUuU3ltYm9sLmZvcignSGVsbG8nKSIsICJzeW0iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250135</attachid>
            <date>2015-04-04 13:19:38 -0700</date>
            <delta_ts>2015-04-05 18:07:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143404-20150405051852.patch</filename>
            <type>text/plain</type>
            <size>25849</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZDA3YTI0MDQwZGJlODBlY2Y5ODdmNzQ5ZTA2YWM2OTc3ODliZDkzLi5kOTMxMmRmNzFjNGEzYmQw
NDU3MTM1YmU3MGMwYmYwYzljYTQ0MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0MCBAQAogMjAxNS0wNC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtl
eUZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IuCisgICAgICAg
IFN5bWJvbFJlZ2lzdHJ5IG1haW50YWlucyBtYXBwaW5nCisgICAgICAgIGJldHdlZW4gU3RyaW5n
IGtleSBhbmQgU3ltYm9sJ3MgQXRvbWljU3RyaW5nSW1wbCouCisgICAgICAgIEFuZCB0byBtYWtl
IHRoaXMgbWFwcGluZyBlbmFibGVkIG92ZXIgcmVhbG1zLAorICAgICAgICBWTSBvd25zIHRoaXMg
bWFwcGluZyAobm90IEpTR2xvYmFsT2JqZWN0KS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGlt
ZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbENvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvckZv
cik6CisgICAgICAgIChKU0M6OnN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKToKKyAgICAgICAgKiBy
dW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9TeW1ib2xSZWdp
c3RyeS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmguCisgICAgICAgIChKU0M6OlN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xSZWdp
c3RyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xSZWdpc3RyeTo6a2V5Rm9yU3ltYm9sKToKKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbFJlZ2lzdHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmguCisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAo
SlNDOjpWTTo6c3ltYm9sUmVnaXN0cnkpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wt
cmVnaXN0cnkuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKKzIwMTUtMDQtMDQgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgSW1wbGVtZW50IEVT
NiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDFiY2JlODBiMzZlYWJjMWRlNDY4MDA3YzgxZjFjZDllOTQxOGU2YzYuLjJj
MjFhYzVlNzA3NmI2MjJjYmY0ZjYxZWNiZjA5MzBhYmQxYTA2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2NSw5ICs1NjUsMTAgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAKICAgICBy
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sLmNwcAorICAg
IHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TeW1ib2xPYmplY3Qu
Y3BwCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCi0gICAgcnVudGltZS9TeW1ib2xD
b25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1N5bWJvbFJlZ2lzdHJ5LmNwcAogICAgIHJ1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCiAgICAg
cnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKQEAgLTYxMSw2ICs2MTIsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAgICAg
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjk5YWM3ZWMwZWQ2MDkzZTBhODBmYzZmOTdjNjUyNTQ4
MTY5ZjhmOS4uMTg1ZGM3ZTMxZDA3Y2Q4ZDc0Mzk2ODBmMTcyOWU3NjFkZjMyMmRlYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU4LDYgKzU4LDcgQEAg
YWxsIDogXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3Iu
bHV0LmggXAogICAgIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBTeW1ib2xD
b25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3ltYm9sUHJvdG90eXBlLmx1dC5oIFwKICAgICB1ZGlz
ODZfaXRhYi5oIFwKICAgICBCeXRlY29kZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagppbmRleCA3NDMzMGU3MDNkYWM0ZDM2MDBlYWIyN2EwYWQ4ZWI0YWYwMGUwYjMy
Li5kOWRjNjFkYzFjNWIyZDIxZDkxMzUyYzk5YzgwNGE4NWNlNmJhOWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTgzNSw2ICs4MzUsNyBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xDb25zdHJ1Y3Rvci5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbE9iamVjdC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFByb3RvdHlwZS5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFJlZ2lzdHJ5LmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUZXN0UnVubmVyVXRpbHMuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUeXBlZEFycmF5Q29udHJvbGxl
ci5jcHAiIC8+CkBAIC0xNjY4LDYgKzE2NjksNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxTeW1ib2xDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTeW1ib2xPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcU3ltYm9sUHJvdG90eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXFN5bWJvbFJlZ2lzdHJ5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXFN5bWJvbFRhYmxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFRlc3RSdW5uZXJVdGlscy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxUcmFjaW5nLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggOTljOGE3ZmMxY2E0OTRlMGE4MTQxMDEyZjJmNzAw
NDg4N2M5NDkyYi4uOGU0MjM5Y2Y2YWIzZTgwZGVkZjQyMzc3ZDI5ZDIyYjFmODZjNWRlYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
ODcwLDYgKzg3MCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJv
bFByb3RvdHlwZS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFJlZ2lz
dHJ5LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjkz
Myw2ICsyOTM2LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9s
UHJvdG90eXBlLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFJlZ2lzdHJ5
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFRhYmxlLmgiPgogICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGJhMmQxMzZlYjk1YjVhOWZkMzU0YWIzMGE4ZjM2OTFiZjc4Y2Vi
ODYuLmRiNGJjNzU4YWEyOTJjYjdmMzhkNTI2ZDNkNGVjNjJjOTFkZDY5ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NzMsNiArOTczLDggQEAKIAkJNkFEMkNCNEQxOUI5MTQw
MTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBRDJDQjRDMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1
Z2dlckV2YWxFbmFibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzAxMTNENEIxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9u
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDEx
M0Q0OTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmNwcCAqLzsgfTsKIAkJ
NzAxMTNENEMxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzAxMTNENEExQThEQjA5MzAw
Mzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwMTI1NDQxMUFEMDdCODYwMDg4QTk1RiAvKiBTeW1i
b2xSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzAxMjU0M0YxQUQwN0I4NjAwODhBOTVGIC8qIFN5bWJvbFJlZ2lzdHJ5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzAxMjU0NDIxQUQwN0I4
NjAwODhBOTVGIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwMTI1NDQwMUFEMDdCODYwMDg4QTk1RiAvKiBTeW1ib2xS
ZWdpc3RyeS5jcHAgKi87IH07CiAJCTcwNUI0MUFCMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2wu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQx
QTMxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbC5jcHAgKi87IH07CiAJCTcwNUI0MUFDMUE2RTUw
MUUwMDcxNjc1NyAvKiBTeW1ib2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwNUI0MUE0MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2wuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MDVCNDFBRDFBNkU1
MDFFMDA3MTY3NTcgLyogU3ltYm9sQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQxQTUxQTZFNTAxRTAwNzE2NzU3IC8qIFN5
bWJvbENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKQEAgLTI2ODksNiArMjY5MSw4IEBACiAJCTZBRDJD
QjRDMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyRXZhbEVuYWJsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzAxMTNENDkxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3Bl
cmF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJdGVyYXRv
ck9wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDExM0Q0QTFB
OERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEl0ZXJhdG9yT3BlcmF0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MDEyNTQzRjFBRDA3Qjg2MDA4OEE5NUYgLyogU3ltYm9sUmVnaXN0cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sUmVnaXN0cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzAxMjU0NDAxQUQwN0I4NjAwODhBOTVGIC8qIFN5bWJv
bFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJv
bFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5
N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTcwNUI0MUEzMUE2RTUwMUUwMDcxNjc1NyAv
KiBTeW1ib2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9s
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA1QjQxQTQxQTZFNTAxRTAwNzE2
NzU3IC8qIFN5bWJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2wu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2OTAsNiArNDY5NCw4IEBACiAJCQkJ
NzA1QjQxQTgxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbE9iamVjdC5oICovLAogCQkJCTcwNUI0
MUE5MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwICovLAogCQkJCTcwNUI0
MUFBMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCAqLywKKwkJCQk3MDEyNTQz
RjFBRDA3Qjg2MDA4OEE5NUYgLyogU3ltYm9sUmVnaXN0cnkuaCAqLywKKwkJCQk3MDEyNTQ0MDFB
RDA3Qjg2MDA4OEE5NUYgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovLAogCQkJCTBGOTE5RDI3MTU4
NTY3NzAwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgKi8sCiAJCQkJMTRBMzk2QTYwQ0QyOTMz
MTAwQjVCNEZGIC8qIFN5bWJvbFRhYmxlLmggKi8sCiAJCQkJMEZBMkMxNzkxN0Q3Q0Y4NDAwOUQw
MTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgKi8sCkBAIC02NDM4LDYgKzY0NDQsNyBAQAogCQkJ
CTE0QkU3RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdDQTNBRUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRh
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MDEyNTQ0MTFBRDA3Qjg2MDA4OEE5NUYgLyogU3ltYm9s
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUU2MTdEQTQxQUUwMDY1MzhBRiAv
KiBXZWFrTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDIwQkU3QjEwQUE2RERC
MDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNDJEQTcxM0Yz
QjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtNzE3NSw2ICs3MTgyLDcgQEAKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMgLyogRlRM
U3RhY2tNYXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIy
QyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2
OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwMTI1NDQyMUFEMDdC
ODYwMDg4QTk1RiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZC
MUNDNTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjIzNUJFMzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVmFsdWVGb3JtYXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY1QTEyNzMxOTJEOUZERjAwODc2NEEzIC8qIERGR0RvZXNHQy5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbENvbnN0cnVjdG9yLmNwcAppbmRleCBhYTk0ZmEzMWYxYTA5NWJlMzg4NGM0MTc4MDI0NGI3
MTg4YjMwMjg5Li5hMDU0ZjcyYTVmM2Q5OWNlYTU4OTFjYjY4NDk2MDY5YmRiZDdiNDMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3Iu
Y3BwCkBAIC0zMCw3ICszMCwxOCBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU3ltYm9s
LmgiCiAjaW5jbHVkZSAiU3ltYm9sUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiU3ltYm9sUmVnaXN0
cnkuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yRm9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IoRXhlY1N0YXRlKik7
CisKK30KKworI2luY2x1ZGUgIlN5bWJvbENvbnN0cnVjdG9yLmx1dC5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtMzgsNiArNDksMTMgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKFN5bWJvbENvbnN0cnVjdG9yKTsKIAogY29uc3QgQ2xhc3NJbmZvIFN5bWJvbENv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoU3ltYm9sQ29uc3RydWN0b3IpIH07CiAKKy8qIFNvdXJjZSBmb3IgU3lt
Ym9sQ29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBzeW1ib2xDb25zdHJ1Y3RvclRhYmxlCisgIGZv
ciAgICAgICBzeW1ib2xDb25zdHJ1Y3RvckZvciAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
IGtleUZvciAgICBzeW1ib2xDb25zdHJ1Y3RvcktleUZvciAgICBEb250RW51bXxGdW5jdGlvbiAx
CitAZW5kCisqLworCiBTeW1ib2xDb25zdHJ1Y3Rvcjo6U3ltYm9sQ29uc3RydWN0b3IoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVj
dHVyZSkKIHsKQEAgLTU1LDYgKzczLDEzIEBAIHZvaWQgU3ltYm9sQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU3ltYm9sUHJvdG90eXBlKiBwcm90b3R5cGUpCiAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTEla
RV9XRUxMX0tOT1dOX1NZTUJPTFMpCiB9CiAKK2Jvb2wgU3ltYm9sQ29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25TbG90PEJhc2U+KGV4ZWMsIHN5bWJvbENvbnN0cnVjdG9yVGFibGUsIGpz
Q2FzdDxTeW1ib2xDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxTeW1ib2woRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgZGVzY3JpcHRpb24g
PSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTc0LDQgKzk5LDIwIEBAIENhbGxUeXBlIFN5bWJvbENv
bnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiAgICAg
cmV0dXJuIENhbGxUeXBlSG9zdDsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
eW1ib2xDb25zdHJ1Y3RvckZvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNTdHJpbmcqIHN0
cmluZ0tleSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkuc3ltYm9sUmVn
aXN0cnkoKS0+c3ltYm9sRm9yS2V5KGV4ZWMsIHN0cmluZ0tleSkpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICBKU1ZhbHVlIHN5bSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICghc3lt
LmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS5zeW1ib2xS
ZWdpc3RyeSgpLT5rZXlGb3JTeW1ib2woZXhlYywgYXNTeW1ib2woc3ltKSkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xDb25zdHJ1Y3Rvci5oCmluZGV4IDBhZTEyZDdmZGQ1YzQyNGJiNjlhMjZkMWRjMTNhZTA4MDg0
YTY4MzkuLmU1NjM3MTMzMDE4ZjJkNWEyNzcxN2M1YmI5NGI3YTI2Mzk0YzkzNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaApAQCAt
NTUsMTAgKzU1LDEzIEBAIGNsYXNzIFN5bWJvbENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24gewogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTeW1i
b2xQcm90b3R5cGUqKTsKIAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwor
CiBwcml2YXRlOgogICAgIFN5bWJvbENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CiAgICAg
c3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUmVn
aXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUmVnaXN0cnku
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhlMDhhZGIwMjVmNjFjNjJjOWZiNTk0ZTI1OTlmM2Y0YmNhMWYyOWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xS
ZWdpc3RyeS5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3ltYm9sUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTeW1i
b2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkoKQorICAgIDogbV9rZXlUb1N5bWJvbCgpCisgICAg
LCBtX3N5bWJvbFRvS2V5KCkKK3sKK30KKworSlNWYWx1ZSBTeW1ib2xSZWdpc3RyeTo6c3ltYm9s
Rm9yS2V5KEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIGtleSkKK3sKKyAgICBTdHJpbmcgc3Ry
aW5nID0ga2V5LT52YWx1ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGF1dG8gcmVzdWx0ID0gbV9rZXlUb1N5
bWJvbC5hZGQoc3RyaW5nLCBudWxscHRyKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQor
ICAgICAgICByZXR1cm4gU3ltYm9sOjpjcmVhdGUoZXhlYy0+dm0oKSwgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5nZXQoKSk7CisKKyAgICBTeW1ib2wqIHN5bWJvbCA9IFN5bWJvbDo6Y3JlYXRlKGV4
ZWMsIGtleSk7CisgICAgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IHVpZCA9IHN5bWJvbC0+cHJp
dmF0ZU5hbWUoKS51aWQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gdWlkOworICAg
IG1fc3ltYm9sVG9LZXkuYWRkKHVpZCwgc3RyaW5nKTsKKyAgICByZXR1cm4gc3ltYm9sOworfQor
CitKU1ZhbHVlIFN5bWJvbFJlZ2lzdHJ5OjprZXlGb3JTeW1ib2woRXhlY1N0YXRlKiBleGVjLCBT
eW1ib2wqIHN5bWJvbCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9zeW1ib2xUb0tleS5maW5k
KHN5bWJvbC0+cHJpdmF0ZU5hbWUoKS51aWQoKSk7CisgICAgaWYgKGl0ZXJhdG9yICE9IG1fc3lt
Ym9sVG9LZXkuZW5kKCkpCisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
aXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUmVn
aXN0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MWIyZDY1N2UzZGNhNmM0ZGEyZTVhYmEwOTdmZmRkMDdkYzZl
MzRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sUmVnaXN0cnkuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU3ltYm9sUmVnaXN0cnlfaAorI2RlZmluZSBTeW1ib2xSZWdpc3RyeV9oCisKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3ltYm9sOwor
CitjbGFzcyBTeW1ib2xSZWdpc3RyeSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3ltYm9s
UmVnaXN0cnkpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTeW1ib2xS
ZWdpc3RyeSgpOworICAgIEpTVmFsdWUgc3ltYm9sRm9yS2V5KEV4ZWNTdGF0ZSosIEpTU3RyaW5n
Kik7CisgICAgSlNWYWx1ZSBrZXlGb3JTeW1ib2woRXhlY1N0YXRlKiwgU3ltYm9sKik7CisKK3By
aXZhdGU6CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEF0b21pY1N0cmluZ0lt
cGw+PiBLZXlUb1N5bWJvbDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEF0b21pY1N0cmlu
Z0ltcGw+LCBTdHJpbmc+IFN5bWJvbFRvS2V5OworCisgICAgS2V5VG9TeW1ib2wgbV9rZXlUb1N5
bWJvbDsKKyAgICBTeW1ib2xUb0tleSBtX3N5bWJvbFRvS2V5OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBTeW1ib2xSZWdpc3RyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKaW5kZXggZTc2Mzk0NzVjMzJhZWUxZGQxZTk1MzhkY2I4YTJmNWVkZGExYjJl
Mi4uMDQ1MjZmMzhiNjdiNTYyMTYzMDI3ZGY3NjYzNGQ0N2E4OTdlMWNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODIsNiArODIsNyBAQAogI2luY2x1ZGUgIlN0cmlj
dEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJTeW1ib2xSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1
ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCkBAIC0xOTYsNiArMTk3LDcgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMo
c3RkOjptYWtlX3VuaXF1ZTxCdWlsdGluRXhlY3V0YWJsZXM+KCp0aGlzKSkKICAgICAsIG1fdHlw
ZVByb2ZpbGVyRW5hYmxlZENvdW50KDApCiAgICAgLCBtX2NvbnRyb2xGbG93UHJvZmlsZXJFbmFi
bGVkQ291bnQoMCkKKyAgICAsIG1fc3ltYm9sUmVnaXN0cnkoc3RkOjptYWtlX3VuaXF1ZTxTeW1i
b2xSZWdpc3RyeT4oKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhp
cyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGE0NmEzNzYwZDRmZWExOWRhOTQ4NTI3ODU2
ZTZhNjNmNmZjMDhlYWMuLmQ1NDRjZmMyNGM1YzQ0ZmQ5MzA0OWY2M2U4YjEwNTM1MzRmZTA4OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtOTUsNiArOTUsNyBAQCBjbGFzcyBT
b3VyY2VQcm92aWRlckNhY2hlOwogc3RydWN0IFN0YWNrRnJhbWU7CiBjbGFzcyBTdHJpbmdpZmll
cjsKIGNsYXNzIFN0cnVjdHVyZTsKK2NsYXNzIFN5bWJvbFJlZ2lzdHJ5OwogI2lmIEVOQUJMRShS
RUdFWFBfVFJBQ0lORykKIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgpAQCAtNTIxLDYgKzUyMiw4IEBA
IGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgYm9vbCBl
bmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAgICAgYm9vbCBkaXNhYmxlQ29udHJvbEZsb3dQ
cm9maWxlcigpOwogCisgICAgU3ltYm9sUmVnaXN0cnkqIHN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1
cm4gbV9zeW1ib2xSZWdpc3RyeS5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJpZW5kIGNsYXNzIENsZWFyRXhjZXB0aW9u
U2NvcGU7CkBAIC01NzUsNiArNTc4LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+IHsKICAgICBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUgbV9mdW5jdGlvbkhh
c0V4ZWN1dGVkQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRyb2xGbG93UHJvZmlsZXI+
IG1fY29udHJvbEZsb3dQcm9maWxlcjsKICAgICB1bnNpZ25lZCBtX2NvbnRyb2xGbG93UHJvZmls
ZXJFbmFibGVkQ291bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN5bWJvbFJlZ2lzdHJ5PiBtX3N5
bWJvbFJlZ2lzdHJ5OwogfTsKIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1yZWdpc3RyeS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYjcwYjcyMDYyYzExOWY1YmIwM2Y3YzU2ZmU1NjdkN2YzOWQyNjllCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wt
cmVnaXN0cnkuanMKQEAgLTAsMCArMSw3MCBAQAorZnVuY3Rpb24gdGVzdChhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiYmFkIHZhbHVlOiAiICsgYWN0dWFsKTsKK30KKwordmFyIGhlbGxvID0gU3ltYm9sKCJI
ZWxsbyIpOwordmFyIHByb3RvID0gU3ltYm9sKCJfX3Byb3RvX18iKTsKKworZm9yICh2YXIgc3lt
IG9mIFsgaGVsbG8sIHByb3RvLCBTeW1ib2wuaXRlcmF0b3IgXSkgeworICAgIHZhciBrZXkgPSBT
eW1ib2wua2V5Rm9yKHN5bSk7CisgICAgdGVzdChrZXksIHVuZGVmaW5lZCk7CisgICAgLy8gdHdp
Y2UKKyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZvcihzeW0pOworICAgIHRlc3Qoa2V5LCB1bmRl
ZmluZWQpOworfQorCitmb3IgKHZhciBrZXkgb2YgWyAiSGVsbG8iLCAiX19wcm90b19fIiwgIlN5
bWJvbC5pdGVyYXRvciIsIG51bGwsIHVuZGVmaW5lZCwgNDIsIDIwLjUsIHRydWUsIGZhbHNlLCB7
fSwgZnVuY3Rpb24gKCkge30sIFtdIF0pIHsKKyAgICB2YXIgc3ltID0gU3ltYm9sLmZvcihrZXkp
OworICAgIHRlc3QodHlwZW9mIHN5bSwgInN5bWJvbCIpOworICAgIHRlc3Qoc3ltLnRvU3RyaW5n
KCksICJTeW1ib2woIiArIFN0cmluZyhrZXkpICsgIikiKTsKKworICAgIHZhciBzeW0yID0gU3lt
Ym9sLmZvcihrZXkpOworICAgIHRlc3Qoc3ltID09PSBzeW0yLCB0cnVlKTsKKworICAgIHZhciBr
ZXkgPSBTeW1ib2wua2V5Rm9yKHN5bSk7CisgICAgdGVzdChrZXksIGtleSk7CisgICAgdmFyIGtl
eSA9IFN5bWJvbC5rZXlGb3Ioc3ltMik7CisgICAgdGVzdChrZXksIGtleSk7Cit9CisKK3ZhciBl
cnJvciA9IG51bGw7Cit0cnkgeworICAgIHZhciBrZXkgPSB7CisgICAgICAgIHRvU3RyaW5nKCkg
eworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0b1N0cmluZycpOworICAgICAgICB9Cisg
ICAgfTsKKyAgICBTeW1ib2wuZm9yKGtleSk7Cit9IGNhdGNoIChlKSB7CisgICAgZXJyb3IgPSBl
OworfQoraWYgKCFlcnJvcikKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKK2lm
IChTdHJpbmcoZXJyb3IpICE9PSAnRXJyb3I6IHRvU3RyaW5nJykKKyAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCBlcnJvcjogJyArIFN0cmluZyhlcnJvcikpOworCit2YXIgZWxlbWVudHMgPSBbCisg
ICAgbnVsbCwKKyAgICB1bmRlZmluZWQsCisgICAgNDIsCisgICAgMjAuNSwKKyAgICB0cnVlLAor
ICAgIGZhbHNlLAorICAgICdzdHJpbmcnLAorICAgIHt9LAorICAgIGZ1bmN0aW9uICgpIHt9LAor
ICAgIFtdLAorXTsKK2ZvciAodmFyIGl0ZW0gb2YgZWxlbWVudHMpIHsKKyAgICB2YXIgZXJyb3Ig
PSBudWxsOworICAgIHRyeSB7CisgICAgICAgIFN5bWJvbC5rZXlGb3IoaXRlbSk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSAnVHlwZUVycm9yOiBUeXBlIGVycm9yJykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgZXJyb3I6ICcgKyBTdHJpbmcoZXJyb3IpKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNzc3OWU1OGY4YjI0
NmM1NjhhOGYwMGMyOWI0MTg0NzQ5OGQ2MDAzLi43NmIwMDA2NDEzMTVkYjNiNjc5ZGE4NDAwNWRl
ZDY3YmJiMWEyZjUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDQtMDQgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50
IFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byBjaGVjayBTeW1ib2wncyBpZGVudGl0
eSBvdmVyIGRpZmZlcmVudCByZWFsbXMuCisKKyAgICAgICAgKiBqcy9kb20vY3Jvc3MtZnJhbWUt
c3ltYm9scy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9jcm9zcy1mcmFt
ZS1zeW1ib2xzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9zY3JpcHQtdGVzdHMvY3Jv
c3MtZnJhbWUtc3ltYm9scy5qczogQWRkZWQuCisKIDIwMTUtMDQtMDQgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRGlmZmVyZW50aWF0ZSBiZXR3ZWVu
IGNvbXBvc2l0ZWQgc2Nyb2xsaW5nLCBhbmQgYXN5bmMgc2Nyb2xsaW5nCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2NiYTFhOTlhZDVhNzA4YjE2NTdhYzAwZDg3MTE4MTQ1MTVmNTQ3MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE1IEBACitUZXN0cyBTeW1ib2wgYW5kIGdsb2JhbCBzeW1ib2wgcmVnaXN0
cnkgaWRlbnRpdHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZnJhbWUu
U3ltYm9sLml0ZXJhdG9yIGlzIFN5bWJvbC5pdGVyYXRvcgorUEFTUyBmcmFtZS5TeW1ib2woJ0hl
bGxvJykgaXMgbm90IFN5bWJvbCgnSGVsbG8nKQorUEFTUyBTeW1ib2wua2V5Rm9yKHN5bSkgaXMg
J0hlbGxvJworUEFTUyBmcmFtZS5TeW1ib2wua2V5Rm9yKHN5bSkgaXMgJ0hlbGxvJworUEFTUyBT
eW1ib2wuZm9yKCdIZWxsbycpIGlzIHN5bQorUEFTUyBmcmFtZS5TeW1ib2wuZm9yKCdIZWxsbycp
IGlzIHN5bQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLmh0
bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhiMzYyN2MxY2Y1ZGRkMjI0MDA5YmNkZmMxYjcyMmU4YjBmOTY1ZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy5odG1sCkBAIC0w
LDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZT48L2lmcmFtZT4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0
LXRlc3RzL2Nyb3NzLWZyYW1lLXN5bWJvbHMuanMgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0
LXRlc3RzL2Nyb3NzLWZyYW1lLXN5bWJvbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc4ZWFmMzdmMWYwN2Y5
M2FjYzk1MWQxOTk4NjhkNjBkZWY0OGNlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL2RvbS9zY3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qcwpAQCAtMCwwICsxLDEy
IEBACitkZXNjcmlwdGlvbigiVGVzdHMgU3ltYm9sIGFuZCBnbG9iYWwgc3ltYm9sIHJlZ2lzdHJ5
IGlkZW50aXR5Iik7CisKK3ZhciBmcmFtZSA9IGZyYW1lc1swXTsKKworc2hvdWxkQmUoImZyYW1l
LlN5bWJvbC5pdGVyYXRvciIsICJTeW1ib2wuaXRlcmF0b3IiKTsKK3Nob3VsZE5vdEJlKCJmcmFt
ZS5TeW1ib2woJ0hlbGxvJykiLCAiU3ltYm9sKCdIZWxsbycpIik7CisKK3ZhciBzeW0gPSBTeW1i
b2wuZm9yKCJIZWxsbyIpOworc2hvdWxkQmUoIlN5bWJvbC5rZXlGb3Ioc3ltKSIsICInSGVsbG8n
Iik7CitzaG91bGRCZSgiZnJhbWUuU3ltYm9sLmtleUZvcihzeW0pIiwgIidIZWxsbyciKTsKK3No
b3VsZEJlKCJTeW1ib2wuZm9yKCdIZWxsbycpIiwgInN5bSIpOworc2hvdWxkQmUoImZyYW1lLlN5
bWJvbC5mb3IoJ0hlbGxvJykiLCAic3ltIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250183</attachid>
            <date>2015-04-05 18:07:33 -0700</date>
            <delta_ts>2015-04-09 13:39:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143404-20150406100644.patch</filename>
            <type>text/plain</type>
            <size>25756</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OWM3NzZmOGEwNGYwZjk5NTg1YWFlZGZmYTQ5NTc4ZDk1NzAxZjA1Li5hMTg4MjQyYjNlZjhlNGRi
NDA2MGFjMjU5YjY0NzNhOGU3ZDE2ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNS0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtl
eUZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IuCisgICAgICAg
IFN5bWJvbFJlZ2lzdHJ5IG1haW50YWlucyBtYXBwaW5nCisgICAgICAgIGJldHdlZW4gU3RyaW5n
IGtleSBhbmQgU3ltYm9sJ3MgQXRvbWljU3RyaW5nSW1wbCouCisgICAgICAgIEFuZCB0byBtYWtl
IHRoaXMgbWFwcGluZyBlbmFibGVkIG92ZXIgcmVhbG1zLAorICAgICAgICBWTSBvd25zIHRoaXMg
bWFwcGluZyAobm90IEpTR2xvYmFsT2JqZWN0KS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGlt
ZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbENvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvckZv
cik6CisgICAgICAgIChKU0M6OnN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKToKKyAgICAgICAgKiBy
dW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9TeW1ib2xSZWdp
c3RyeS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmguCisgICAgICAgIChKU0M6OlN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xSZWdp
c3RyeSk6CisgICAgICAgIChKU0M6OlN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkpOgorICAg
ICAgICAoSlNDOjpTeW1ib2xSZWdpc3RyeTo6a2V5Rm9yU3ltYm9sKToKKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbFJlZ2lzdHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmguCisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAo
SlNDOjpWTTo6c3ltYm9sUmVnaXN0cnkpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wt
cmVnaXN0cnkuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTUtMDQtMDQgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIExvZ2ljYWxseSBlbXB0eSBX
ZWFrQmxvY2tzIHNob3VsZCBub3QgcGluIGRvd24gdGhlaXIgTWFya2VkQmxvY2tzIGluZGVmaW5p
dGVseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxYmNiZTgwYjM2ZWFi
YzFkZTQ2ODAwN2M4MWYxY2Q5ZTk0MThlNmM2Li4yYzIxYWM1ZTcwNzZiNjIyY2JmNGY2MWVjYmYw
OTMwYWJkMWEwNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjUs
OSArNTY1LDEwIEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50
aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5j
cHAKICAgICBydW50aW1lL1N5bWJvbC5jcHAKKyAgICBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9y
LmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sUHJv
dG90eXBlLmNwcAotICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGlt
ZS9TeW1ib2xSZWdpc3RyeS5jcHAKICAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNwcAogICAgIHJ1
bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcAogICAgIHJ1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUu
Y3BwCkBAIC02MTEsNiArNjEyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAg
IHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuY3BwCiAgICAgcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAKKyAgICBydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNw
cAogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY5
OWFjN2VjMGVkNjA5M2UwYTgwZmM2Zjk3YzY1MjU0ODE2OWY4ZjkuLjE4NWRjN2UzMWQwN2NkOGQ3
NDM5NjgwZjE3MjllNzYxZGYzMjJkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC01OCw2ICs1OCw3IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3Qu
bHV0LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTdHJpbmdJdGVyYXRv
clByb3RvdHlwZS5sdXQuaCBcCisgICAgU3ltYm9sQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN5
bWJvbFByb3RvdHlwZS5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCiAgICAgQnl0ZWNvZGVz
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNzQzMzBlNzAz
ZGFjNGQzNjAwZWFiMjdhMGFkOGViNGFmMDBlMGIzMi4uZDlkYzYxZGMxYzViMmQyMWQ5MTM1MmM5
OWM4MDRhODVjZTZiYTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CkBAIC04MzUsNiArODM1LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3ltYm9sQ29uc3RydWN0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxTeW1ib2xPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxTeW1ib2xQcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxTeW1ib2xSZWdpc3RyeS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXFN5bWJvbFRhYmxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVGVzdFJ1bm5lclV0aWxzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIiAvPgpAQCAtMTY2OCw2ICsxNjY5
LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sQ29uc3RydWN0
b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sT2JqZWN0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFByb3RvdHlw
ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xSZWdpc3Ry
eS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xUYWJsZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxUZXN0UnVubmVyVXRpbHMu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVHJhY2luZy5oIiAvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4
IDk5YzhhN2ZjMWNhNDk0ZTBhODE0MTAxMmYyZjcwMDQ4ODdjOTQ5MmIuLjhlNDIzOWNmNmFiM2U4
MGRlZGY0MjM3N2QyOWQyMmIxZjg2YzVkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTg3MCw2ICs4NzAsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xQcm90b3R5cGUuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xSZWdpc3RyeS5jcHAiPgorICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXFN5bWJvbFRhYmxlLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI5MzMsNiArMjkzNiw5IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFByb3RvdHlwZS5oIj4KICAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxTeW1ib2xSZWdpc3RyeS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxTeW1ib2xUYWJsZS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYTJkMTM2
ZWI5NWI1YTlmZDM1NGFiMzBhOGYzNjkxYmY3OGNlYjg2Li5kYjRiYzc1OGFhMjkyY2I3ZjM4ZDUy
NmQzZDRlYzYyYzkxZGQ2OTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTcz
LDYgKzk3Myw4IEBACiAJCTZBRDJDQjREMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxF
bmFibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
QUQyQ0I0QzE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwMTEzRDRCMUE4REIw
OTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzAxMTNENDkxQThEQjA5MzAwMzg0OEM0IC8qIEl0
ZXJhdG9yT3BlcmF0aW9ucy5jcHAgKi87IH07CiAJCTcwMTEzRDRDMUE4REIwOTMwMDM4NDhDNCAv
KiBJdGVyYXRvck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwMTEzRDRBMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3
MDEyNTQ0MTFBRDA3Qjg2MDA4OEE5NUYgLyogU3ltYm9sUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwMTI1NDNGMUFEMDdCODYwMDg4QTk1
RiAvKiBTeW1ib2xSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTcwMTI1NDQyMUFEMDdCODYwMDg4QTk1RiAvKiBTeW1ib2xSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDEy
NTQ0MDFBRDA3Qjg2MDA4OEE5NUYgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MDVC
NDFBQjFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwNUI0MUEzMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1i
b2wuY3BwICovOyB9OwogCQk3MDVCNDFBQzFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVCNDFBNDFBNkU1
MDFFMDA3MTY3NTcgLyogU3ltYm9sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzA1QjQxQUQxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbENvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwNUI0MUE1MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xDb25zdHJ1Y3Rvci5jcHAgKi87IH07
CkBAIC0yNjg5LDYgKzI2OTEsOCBAQAogCQk2QUQyQ0I0QzE5QjkxNDAxMDAwNjU3MTkgLyogRGVi
dWdnZXJFdmFsRW5hYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWJ1
Z2dlckV2YWxFbmFibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwMTEzRDQ5
MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JPcGVyYXRpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzAxMTNENEExQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9y
T3BlcmF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRvck9w
ZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzAxMjU0M0YxQUQwN0I4
NjAwODhBOTVGIC8qIFN5bWJvbFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN5bWJvbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcw
MTI1NDQwMUFEMDdCODYwMDg4QTk1RiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcwNEZEMzUzMDU2OTdFNkQwMDNEQkVEOSAvKiBCb29sZWFuT2Jq
ZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJvb2xlYW5PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9
OwogCQk3MDVCNDFBMzFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcwNUI0MUE0MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2wuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00NjkwLDYgKzQ2OTQsOCBAQAogCQkJCTcwNUI0MUE4MUE2RTUwMUUwMDcxNjc1NyAv
KiBTeW1ib2xPYmplY3QuaCAqLywKIAkJCQk3MDVCNDFBOTFBNkU1MDFFMDA3MTY3NTcgLyogU3lt
Ym9sUHJvdG90eXBlLmNwcCAqLywKIAkJCQk3MDVCNDFBQTFBNkU1MDFFMDA3MTY3NTcgLyogU3lt
Ym9sUHJvdG90eXBlLmggKi8sCisJCQkJNzAxMjU0M0YxQUQwN0I4NjAwODhBOTVGIC8qIFN5bWJv
bFJlZ2lzdHJ5LmggKi8sCisJCQkJNzAxMjU0NDAxQUQwN0I4NjAwODhBOTVGIC8qIFN5bWJvbFJl
Z2lzdHJ5LmNwcCAqLywKIAkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRFN0QgLyogU3ltYm9sVGFi
bGUuY3BwICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5o
ICovLAogCQkJCTBGQTJDMTc5MTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3Bw
ICovLApAQCAtNjQzOCw2ICs2NDQ0LDcgQEAKIAkJCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgwN0Eg
LyogV2Vha0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUU0MTdEQTQxQUUwMDY1
MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUVD
MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzAx
MjU0NDExQUQwN0I4NjAwODhBOTVGIC8qIFN5bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0NBM0FFNjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQyMEJFN0IxMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJl
bmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTcxNzUsNiArNzE4Miw3IEBACiAJCQkJ
MEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3MDEyNTQ0MjFBRDA3Qjg2MDA4OEE5NUYgLyogU3ltYm9sUmVnaXN0
cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZU
TFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTMxNzE3OEUxQzAwNjkw
QzdGIC8qIEZUTFZhbHVlRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUExMjczMTky
RDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YWE5NGZhMzFmMWEwOTViZTM4ODRjNDE3ODAyNDRiNzE4OGIzMDI4OS4uYTA1NGY3MmE1ZjNkOTlj
ZWE1ODkxY2I2ODQ5NjA2OWJkYmQ3YjQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtMzAsNyArMzAsMTggQEAKICNp
bmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlN5bWJvbC5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3Rv
dHlwZS5oIgorI2luY2x1ZGUgIlN5bWJvbFJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZv
cihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJv
bENvbnN0cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJTeW1ib2xD
b25zdHJ1Y3Rvci5sdXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM4LDYgKzQ5LDEzIEBA
CiAKIGNvbnN0IENsYXNzSW5mbyBTeW1ib2xDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rp
b24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN5bWJvbENvbnN0cnVj
dG9yKSB9OwogCisvKiBTb3VyY2UgZm9yIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4g
c3ltYm9sQ29uc3RydWN0b3JUYWJsZQorICBmb3IgICAgICAgc3ltYm9sQ29uc3RydWN0b3JGb3Ig
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBrZXlGb3IgICAgc3ltYm9sQ29uc3RydWN0b3JL
ZXlGb3IgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwogU3ltYm9sQ29uc3RydWN0
b3I6OlN5bWJvbENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCiB7CkBAIC01NSw2ICs3MywxMyBAQCB2
b2lkIFN5bWJvbENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN5bWJvbFByb3Rv
dHlwZSogcHJvdG90eXBlKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNI
X1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfV0VMTF9LTk9XTl9TWU1CT0xTKQogfQogCiti
b29sIFN5bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QgJnNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVj
LCBzeW1ib2xDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8U3ltYm9sQ29uc3RydWN0b3IqPihvYmpl
Y3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBKU1ZhbHVlIGRlc2NyaXB0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7CkBAIC03NCw0
ICs5OSwyMCBAQCBDYWxsVHlwZSBTeW1ib2xDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTU3RyaW5nKiBzdHJpbmdLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShleGVjLT52bSgpLnN5bWJvbFJlZ2lzdHJ5KCktPnN5bWJvbEZvcktleShleGVjLCBz
dHJpbmdLZXkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25z
dHJ1Y3RvcktleUZvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSBzeW0gPSBleGVj
LT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXN5bS5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKS0+a2V5Rm9yU3ltYm9sKGV4ZWMs
IGFzU3ltYm9sKHN5bSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaAppbmRleCAwYWUxMmQ3
ZmRkNWM0MjRiYjY5YTI2ZDFkYzEzYWUwODA4NGE2ODM5Li5lNTYzNzEzMzAxOGYyZDVhMjc3MTdj
NWJiOTRiN2EyNjM5NGM5MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgKQEAgLTU1LDEwICs1NSwxMyBAQCBjbGFzcyBTeW1ib2xD
b25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3ltYm9sUHJvdG90eXBlKik7CiAKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwogcHJpdmF0ZToKICAgICBTeW1ib2xDb25zdHJ1
Y3RvcihWTSYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTY1MDVlZjU3NTUy
OTAxNDE1MmQ2ODBkNjBjNWI3OGI2MzhlZTA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUmVnaXN0cnkuY3BwCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN5bWJv
bFJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIlN5bWJvbC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworU3ltYm9sUmVnaXN0cnk6OlN5bWJvbFJlZ2lzdHJ5KCkK
KyAgICA6IG1fa2V5VG9TeW1ib2woKQorICAgICwgbV9zeW1ib2xUb0tleSgpCit7Cit9CisKK0pT
VmFsdWUgU3ltYm9sUmVnaXN0cnk6OnN5bWJvbEZvcktleShFeGVjU3RhdGUqIGV4ZWMsIEpTU3Ry
aW5nKiBrZXkpCit7CisgICAgU3RyaW5nIHN0cmluZyA9IGtleS0+dmFsdWUoZXhlYyk7CisgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1fa2V5VG9TeW1ib2wuYWRkKHN0cmluZywgbnVsbHB0cik7Cisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFN5bWJvbDo6Y3JlYXRl
KGV4ZWMtPnZtKCksIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOworCisgICAgU3ltYm9s
KiBzeW1ib2wgPSBTeW1ib2w6OmNyZWF0ZShleGVjLCBrZXkpOworICAgIFJlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiB1aWQgPSBzeW1ib2wtPnByaXZhdGVOYW1lKCkudWlkKCk7CisgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IHVpZDsKKyAgICBtX3N5bWJvbFRvS2V5LmFkZCh1aWQsIHN0cmlu
Zyk7CisgICAgcmV0dXJuIHN5bWJvbDsKK30KKworSlNWYWx1ZSBTeW1ib2xSZWdpc3RyeTo6a2V5
Rm9yU3ltYm9sKEV4ZWNTdGF0ZSogZXhlYywgU3ltYm9sKiBzeW1ib2wpCit7CisgICAgYXV0byBp
dGVyYXRvciA9IG1fc3ltYm9sVG9LZXkuZmluZChzeW1ib2wtPnByaXZhdGVOYW1lKCkudWlkKCkp
OworICAgIGlmIChpdGVyYXRvciAhPSBtX3N5bWJvbFRvS2V5LmVuZCgpKQorICAgICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgaXRlcmF0b3ItPnZhbHVlKTsKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sUmVnaXN0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWIyZDY1N2UzZGNhNmM0ZGEy
ZTVhYmEwOTdmZmRkMDdkYzZlMzRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sUmVnaXN0cnkuaApAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgU3ltYm9sUmVnaXN0cnlfaAorI2RlZmluZSBTeW1ib2xSZWdp
c3RyeV9oCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgU3ltYm9sOworCitjbGFzcyBTeW1ib2xSZWdpc3RyeSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU3ltYm9sUmVnaXN0cnkpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBTeW1ib2xSZWdpc3RyeSgpOworICAgIEpTVmFsdWUgc3ltYm9sRm9yS2V5KEV4
ZWNTdGF0ZSosIEpTU3RyaW5nKik7CisgICAgSlNWYWx1ZSBrZXlGb3JTeW1ib2woRXhlY1N0YXRl
KiwgU3ltYm9sKik7CisKK3ByaXZhdGU6CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVm
UHRyPEF0b21pY1N0cmluZ0ltcGw+PiBLZXlUb1N5bWJvbDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+LCBTdHJpbmc+IFN5bWJvbFRvS2V5OworCisgICAgS2V5
VG9TeW1ib2wgbV9rZXlUb1N5bWJvbDsKKyAgICBTeW1ib2xUb0tleSBtX3N5bWJvbFRvS2V5Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBTeW1ib2xSZWdpc3RyeV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZTc2Mzk0NzVjMzJhZWUxZGQxZTk1
MzhkY2I4YTJmNWVkZGExYjJlMi4uMDQ1MjZmMzhiNjdiNTYyMTYzMDI3ZGY3NjYzNGQ0N2E4OTdl
MWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODIsNiArODIsNyBA
QAogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJTeW1ib2xS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIlR5cGVQcm9m
aWxlckxvZy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCkBAIC0xOTYsNiArMTk3
LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4
ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhzdGQ6Om1ha2Vf
dW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4oKnRoaXMpKQogICAgICwgbV90eXBlUHJvZmlsZXJF
bmFibGVkQ291bnQoMCkKICAgICAsIG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudCgw
KQorICAgICwgbV9zeW1ib2xSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFJlZ2lzdHJ5
PigpKQogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlzKTsKICAgICBT
dGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggYTQ2YTM3NjBkNGZlYTE5ZGE5NDg1Mjc4NTZlNmE2M2Y2ZmMw
OGVhYy4uZDU0NGNmYzI0YzVjNDRmZDkzMDQ5ZjYzZThiMTA1MzUzNGZlMDg5NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC05NSw2ICs5NSw3IEBACiBzdHJ1Y3QgU3RhY2tGcmFt
ZTsKIGNsYXNzIFN0cmluZ2lmaWVyOwogY2xhc3MgU3RydWN0dXJlOworY2xhc3MgU3ltYm9sUmVn
aXN0cnk7CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogY2xhc3MgUmVnRXhwOwogI2VuZGlm
CkBAIC01MjEsNiArNTIyLDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Vk0+IHsKICAgICBib29sIGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKICAgICBib29s
IGRpc2FibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAKKyAgICBTeW1ib2xSZWdpc3RyeSogc3lt
Ym9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3N5bWJvbFJlZ2lzdHJ5LmdldCgpOyB9CisKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQg
Y2xhc3MgQ2xlYXJFeGNlcHRpb25TY29wZTsKQEAgLTU3NSw2ICs1NzgsNyBAQCBjbGFzcyBWTSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIEZ1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZSBtX2Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q29udHJvbEZsb3dQcm9maWxlcj4gbV9jb250cm9sRmxvd1Byb2ZpbGVyOwogICAgIHVuc2lnbmVk
IG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3ltYm9sUmVnaXN0cnk+IG1fc3ltYm9sUmVnaXN0cnk7CiB9OwogCiAjaWYgRU5BQkxFKEdDX1ZB
TElEQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3N5bWJvbC1yZWdpc3RyeS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
c3ltYm9sLXJlZ2lzdHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiNzBiNzIwNjJjMTE5ZjViYjAzZjdjNTZm
ZTU2N2Q3ZjM5ZDI2OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL3N5bWJvbC1yZWdpc3RyeS5qcwpAQCAtMCwwICsxLDcwIEBACitmdW5jdGlv
biB0ZXN0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWU6ICIgKyBhY3R1YWwpOworfQorCit2
YXIgaGVsbG8gPSBTeW1ib2woIkhlbGxvIik7Cit2YXIgcHJvdG8gPSBTeW1ib2woIl9fcHJvdG9f
XyIpOworCitmb3IgKHZhciBzeW0gb2YgWyBoZWxsbywgcHJvdG8sIFN5bWJvbC5pdGVyYXRvciBd
KSB7CisgICAgdmFyIGtleSA9IFN5bWJvbC5rZXlGb3Ioc3ltKTsKKyAgICB0ZXN0KGtleSwgdW5k
ZWZpbmVkKTsKKyAgICAvLyB0d2ljZQorICAgIHZhciBrZXkgPSBTeW1ib2wua2V5Rm9yKHN5bSk7
CisgICAgdGVzdChrZXksIHVuZGVmaW5lZCk7Cit9CisKK2ZvciAodmFyIGtleSBvZiBbICJIZWxs
byIsICJfX3Byb3RvX18iLCAiU3ltYm9sLml0ZXJhdG9yIiwgbnVsbCwgdW5kZWZpbmVkLCA0Miwg
MjAuNSwgdHJ1ZSwgZmFsc2UsIHt9LCBmdW5jdGlvbiAoKSB7fSwgW10gXSkgeworICAgIHZhciBz
eW0gPSBTeW1ib2wuZm9yKGtleSk7CisgICAgdGVzdCh0eXBlb2Ygc3ltLCAic3ltYm9sIik7Cisg
ICAgdGVzdChzeW0udG9TdHJpbmcoKSwgIlN5bWJvbCgiICsgU3RyaW5nKGtleSkgKyAiKSIpOwor
CisgICAgdmFyIHN5bTIgPSBTeW1ib2wuZm9yKGtleSk7CisgICAgdGVzdChzeW0gPT09IHN5bTIs
IHRydWUpOworCisgICAgdmFyIGtleSA9IFN5bWJvbC5rZXlGb3Ioc3ltKTsKKyAgICB0ZXN0KGtl
eSwga2V5KTsKKyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZvcihzeW0yKTsKKyAgICB0ZXN0KGtl
eSwga2V5KTsKK30KKwordmFyIGVycm9yID0gbnVsbDsKK3RyeSB7CisgICAgdmFyIGtleSA9IHsK
KyAgICAgICAgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvU3Ry
aW5nJyk7CisgICAgICAgIH0KKyAgICB9OworICAgIFN5bWJvbC5mb3Ioa2V5KTsKK30gY2F0Y2gg
KGUpIHsKKyAgICBlcnJvciA9IGU7Cit9CitpZiAoIWVycm9yKQorICAgIHRocm93IG5ldyBFcnJv
cignbm90IHRocm93bicpOworaWYgKFN0cmluZyhlcnJvcikgIT09ICdFcnJvcjogdG9TdHJpbmcn
KQorICAgIHRocm93IG5ldyBFcnJvcignYmFkIGVycm9yOiAnICsgU3RyaW5nKGVycm9yKSk7CisK
K3ZhciBlbGVtZW50cyA9IFsKKyAgICBudWxsLAorICAgIHVuZGVmaW5lZCwKKyAgICA0MiwKKyAg
ICAyMC41LAorICAgIHRydWUsCisgICAgZmFsc2UsCisgICAgJ3N0cmluZycsCisgICAge30sCisg
ICAgZnVuY3Rpb24gKCkge30sCisgICAgW10sCitdOworZm9yICh2YXIgaXRlbSBvZiBlbGVtZW50
cykgeworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgU3ltYm9sLmtl
eUZvcihpdGVtKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9
CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09ICdUeXBlRXJyb3I6IFR5cGUgZXJyb3InKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBlcnJvcjogJyArIFN0cmluZyhlcnJvcikpOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDdlNTg5YjlmZmJiZTY3M2YxNTg1NGQ0ZjgzZDY0YzRiZDQxZDI1ZmQuLjViNjFlNmNi
YmIxZTA3MjgxYTVmM2RiM2RkNDU1NWUzNzNkMDgyNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxNS0wNC0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtleUZvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNDA0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGNo
ZWNrIFN5bWJvbCdzIGlkZW50aXR5IG92ZXIgZGlmZmVyZW50IHJlYWxtcy4KKworICAgICAgICAq
IGpzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICoganMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
ZG9tL3NjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1ib2xzLmpzOiBBZGRlZC4KKwogMjAxNS0w
NC0wNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W0VGTF0gR2FyZGVuaW5nIG9uIDV0aCBBcHJpbC4gTWFyayAyIHRlc3RzIHRvIEltYWdlT25seUZh
aWx1cmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9s
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiYTFhOTlhZDVhNzA4YjE2NTdhYzAwZDg3MTE4MTQ1
MTVmNTQ3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFt
ZS1zeW1ib2xzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0cyBTeW1ib2wgYW5k
IGdsb2JhbCBzeW1ib2wgcmVnaXN0cnkgaWRlbnRpdHkKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgZnJhbWUuU3ltYm9sLml0ZXJhdG9yIGlzIFN5bWJvbC5pdGVyYXRvcgor
UEFTUyBmcmFtZS5TeW1ib2woJ0hlbGxvJykgaXMgbm90IFN5bWJvbCgnSGVsbG8nKQorUEFTUyBT
eW1ib2wua2V5Rm9yKHN5bSkgaXMgJ0hlbGxvJworUEFTUyBmcmFtZS5TeW1ib2wua2V5Rm9yKHN5
bSkgaXMgJ0hlbGxvJworUEFTUyBTeW1ib2wuZm9yKCdIZWxsbycpIGlzIHN5bQorUEFTUyBmcmFt
ZS5TeW1ib2wuZm9yKCdIZWxsbycpIGlzIHN5bQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9j
cm9zcy1mcmFtZS1zeW1ib2xzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUt
c3ltYm9scy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMzYyN2MxY2Y1ZGRkMjI0MDA5YmNkZmMxYjcyMmU4
YjBmOTY1ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJh
bWUtc3ltYm9scy5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGlmcmFtZT48L2lmcmFtZT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUt
c3ltYm9scy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2Nyb3NzLWZyYW1lLXN5bWJvbHMuanMgYi9MYXlv
dXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2Nyb3NzLWZyYW1lLXN5bWJvbHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDc4ZWFmMzdmMWYwN2Y5M2FjYzk1MWQxOTk4NjhkNjBkZWY0OGNlMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3lt
Ym9scy5qcwpAQCAtMCwwICsxLDEyIEBACitkZXNjcmlwdGlvbigiVGVzdHMgU3ltYm9sIGFuZCBn
bG9iYWwgc3ltYm9sIHJlZ2lzdHJ5IGlkZW50aXR5Iik7CisKK3ZhciBmcmFtZSA9IGZyYW1lc1sw
XTsKKworc2hvdWxkQmUoImZyYW1lLlN5bWJvbC5pdGVyYXRvciIsICJTeW1ib2wuaXRlcmF0b3Ii
KTsKK3Nob3VsZE5vdEJlKCJmcmFtZS5TeW1ib2woJ0hlbGxvJykiLCAiU3ltYm9sKCdIZWxsbycp
Iik7CisKK3ZhciBzeW0gPSBTeW1ib2wuZm9yKCJIZWxsbyIpOworc2hvdWxkQmUoIlN5bWJvbC5r
ZXlGb3Ioc3ltKSIsICInSGVsbG8nIik7CitzaG91bGRCZSgiZnJhbWUuU3ltYm9sLmtleUZvcihz
eW0pIiwgIidIZWxsbyciKTsKK3Nob3VsZEJlKCJTeW1ib2wuZm9yKCdIZWxsbycpIiwgInN5bSIp
Oworc2hvdWxkQmUoImZyYW1lLlN5bWJvbC5mb3IoJ0hlbGxvJykiLCAic3ltIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250460</attachid>
            <date>2015-04-09 13:39:34 -0700</date>
            <delta_ts>2015-04-09 13:44:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143404-20150410053841.patch</filename>
            <type>text/plain</type>
            <size>38342</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDhhYzlhNDAwYmQ0NjFlNTU4ZDBkNzQ1MGFjZWRiNjI4MzRlNDg2Li4wMTY5Y2NjZDQyZDgyYzMz
MTM3ZTA0NGY3YWFkMTA3YTRiOGYyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxNS0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtl
eUZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IuCisgICAgICAg
IFN5bWJvbFJlZ2lzdHJ5IG1haW50YWlucyByZWdpc3RlcmVkIFN0cmluZ0ltcGwqIHN5bWJvbHMu
CisgICAgICAgIEFuZCB0byBtYWtlIHRoaXMgbWFwcGluZyBlbmFibGVkIG92ZXIgcmVhbG1zLAor
ICAgICAgICBWTSBvd25zIHRoaXMgbWFwcGluZyAobm90IEpTR2xvYmFsT2JqZWN0KS4KKworICAg
ICAgICBXaGlsZSB0aGVyZSdzIERlZmF1bHQgQXRvbWljU3RyaW5nVGFibGUgcGVyIHRocmVhZCwK
KyAgICAgICAgU3ltYm9sUmVnaXN0cnkgc2hvdWxkIG5vdCBleGlzdCBvdmVyIFZNcy4KKyAgICAg
ICAgU28gZXZlcnl0aW1lIFZNIGlzIGNyZWF0ZWQsIFN5bWJvbFJlZ2lzdHJ5IGlzIGFsc28gY3Jl
YXRlZC4KKworICAgICAgICBJbiBTeW1ib2xSZWdpc3RyeSBpbXBsZW1lbnRhdGlvbiwgd2UgZG9u
J3QgbGV2ZXJhZ2UgV2Vha0dDTWFwIChvciB3ZWFrIHJlZmVyZW5jZSBkZXNpZ24pLgorICAgICAg
ICBUaGVyZXMgYXJlIHNldmVyYWwgcmVhc29ucy4KKyAgICAgICAgMS4gU3RyaW5nSW1wbCogd2hp
Y2ggcmVwcmVzZW50cyBpZGVudGl0eSBvZiBTeW1ib2xzIGlzIG5vdCBHQy1tYW5hZ2VkIG9iamVj
dC4KKyAgICAgICAgICAgU28gd2UgY2Fubm90IHVzZSBXZWFrR0NNYXAgZGlyZWN0bHkuCisgICAg
ICAgICAgIFdoaWxlIFN5bWJvbCogaXMgR0MtbWFuYWdlZCBvYmplY3QsIGhvbGRpbmcgd2VhayBy
ZWZlcmVuY2UgdG8gU3ltYm9sKiBkb2Vzbid0IG1haW50YWluIEpTIHN5bWJvbHMgKGV4cG9zZWQg
cHJpbWl0aXZlIHZhbHVlcyB0byB1c2VycykgbGl2ZW5lc3MsCisgICAgICAgICAgIGJlY2F1c2Ug
ZGlzdGluY3QgU3ltYm9sKiBjYW4gZXhpc3QuCisgICAgICAgICAgIERpc3RpbmN0IFN5bWJvbCog
bWVhbnMgdGhlIFN5bWJvbCogb2JqZWN0IHRoYXQgcG9pbnRlciB2YWx1ZSAoU3ltYm9sKikgaXMg
ZGlmZmVyZW50IGZyb20gd2Vha2x5IHJlZmVyZW5jZWQgU3ltYm9sKiBidXQgaGVsZCBTdHJpbmdJ
bXBsKiBpcyB0aGUgc2FtZS4KKworICAgICAgICAyLiBXZSBkb24ndCB1c2UgV1RGOjpXZWFrUHRy
LiBJZiB3ZSBhZGQgV2Vha1B0ckZhY3RvcnkgaW50byBTdHJpbmdJbXBsJ3MgbWVtYmVyLCB3ZSBj
YW4gdHJhY2sgU3RyaW5nSW1wbConcyBsaXZlbmVzcyBieSBXZWFrUHRyLgorICAgICAgICAgICBI
b3dldmVyIHRoZXJlJ3MgcHJvYmxlbSBhYm91dCB3aGVuIHdlIHBydW5lIHN0YWxlZCBlbnRyaWVz
IGluIFN5bWJvbFJlZ2lzdHJ5LgorICAgICAgICAgICBTaW5jZSB0aGUgbWVtb3J5IGFsbG9jYXRl
ZCBmb3IgdGhlIFN5bWJvbCBpcyB0eXBpY2FsbHkgb2NjdXBpZWQgYnkgYWxsb2NhdGVkIHN5bWJv
bGl6ZWQgU3RyaW5nSW1wbConcyBjb250ZW50LAorICAgICAgICAgICBhbmQgaXQgaXMgbm90IGlu
IEdDLWhlYXAuCisgICAgICAgICAgIFdoaWxlIGhlYXZpbHkgcmVnaXN0ZXJpbmcgU3ltYm9scyBh
bmQgc3RvcmluZyBTdHJpbmdJbXBsKiBpbnRvIFN5bWJvbFJlZ2lzdHJ5LCBIZWFwJ3MgRWRlblNw
YWNlIGlzIG5vdCBzbyBvY2N1cGllZC4KKyAgICAgICAgICAgU28gR0MgdHlwaWNhbGx5IGF0dGVt
cHQgdG8gcGVyZm9ybSBFZGVuQ29sbGVjdGlvbiwgYW5kIGl0IGRvZXNuJ3QgY2FsbCBXZWFrR0NN
YXAncyBwcnVsZVN0YWxlRW50cmllcyBjYWxsYmFjay4KKyAgICAgICAgICAgQXMgYSByZXN1bHQs
IGJlZm9yZSBwcnVuaW5nIHN0YWxlZCBlbnRyaWVzIGluIFN5bWJvbFJlZ2lzdHJ5LCBmYXN0IG1h
bGxvYy1lZCBtZW1vcnkgZmlsbHMgdXAgdGhlIHN5c3RlbSBtZW1vcnkuCisKKyAgICAgICAgU28g
aW5zdGVhZCBvZiB1c2luZyBXZWFrIHJlZmVyZW5jZSwgd2UgdGFrZSByZWxhdGl2ZWx5IGVhc3kg
ZGVzaWduLgorICAgICAgICBXaGVuIHdlIHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCog
aW50byBTeW1ib2xSZWdpc3RyeSwgc3ltYm9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0
aGF0LgorICAgICAgICBBbmQgd2hlbiBkZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVm
ZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28g
d2l0aCBBdG9taWNTdHJpbmdUYWJsZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvckZvcik6CisgICAgICAg
IChKU0M6OnN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6c3lt
Ym9sUmVnaXN0cnkpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanM6
IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTUtMDQtMDggIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UganNOb250cml2aWFsU3RyaW5nIGlu
IG1vcmUgcGxhY2VzIGlmIHRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSAyIG9yIG1vcmUg
Y2hhcmFjdGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBlYzc5NjkxNDllOWNiMGJiNDJiZTQzOWQ2MzliY2MxNGEzMWE5NTk3
Li4xMDVmZjU0OWU2MTg2ZDU3N2ZjMWFhOGI1MmUyNWM5OWZkMWUwOWZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ4IEBACisyMDE1LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBTeW1ib2wuZm9yIGFuZCBTeW1ib2wua2V5Rm9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0MDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHdl
IHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCogaW50byBTeW1ib2xSZWdpc3RyeSwgc3lt
Ym9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0aGF0LgorICAgICAgICBBbmQgd2hlbiBk
ZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVmZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0
cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28gd2l0aCBBdG9taWNTdHJpbmdUYWJsZS4K
KyAgICAgICAgV2hpbGUgQXRvbWljU3RyaW5nVGFibGUgKGluIFdlYkNvcmUgY2FzZSkgZXhpc3Rz
IGluIHRocmVhZCBsb2NhbCBzdG9yYWdlLAorICAgICAgICBTeW1ib2xSZWdpc3RyeSBleGlzdHMg
cGVyIFZNIGFuZCBTdHJpbmdJbXBsKiBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHJlZ2lzdGVyZWQg
U3ltYm9sUmVnaXN0cnkuCisKKyAgICAgICAgU2luY2UgU3RyaW5nSW1wbCBoYXMgaXNTeW1ib2wg
ZXRjLiBtZW1iZXJzLCBpdCdzIGNsYXNzIGlzIGF3YXJlIG9mIFN5bWJvbCB1c2UgY2FzZXMuCisg
ICAgICAgIFNvIGludHJvZHVjZSBTeW1ib2xSZWdpc3RyeSBpbiBXVEYgbGF5ZXJzIGFzIGlmIEF0
b21pY1N0cmluZ1RhYmxlLgorCisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6Cisg
ICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmlu
Z0ltcGw6On5TdHJpbmdJbXBsKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3lt
Ym9sKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkpOgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
U3RyaW5nSW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmV4dHJhY3RGb2xkZWRTdHJp
bmdJblN5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN5bWJvbFJlZ2lzdHJ5KToK
KyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkpOiBEZWxldGVkLgor
ICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChX
VEY6OlN5bWJvbFJlZ2lzdHJ5TG9ja2VyOjpTeW1ib2xSZWdpc3RyeUxvY2tlcik6CisgICAgICAg
IChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xSZWdpc3RyeSk6CisgICAgICAgIChXVEY6OlN5
bWJvbFJlZ2lzdHJ5Ojp+U3ltYm9sUmVnaXN0cnkpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdp
c3RyeTo6c3ltYm9sRm9yS2V5KToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6OmtleUZv
clN5bWJvbCk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpyZW1vdmUpOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpTeW1i
b2xSZWdpc3RyeTo6SGFzaGVyOjpoYXNoKToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6
Okhhc2hlcjo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6SGFzaFRyYWl0
czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6
Okhhc2hUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0
cnk6OlN5bWJvbEtleTo6U3ltYm9sS2V5KToKKyAgICAgICAgKFdURjo6ZXF1YWwpOgorICAgICAg
ICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6b3BlcmF0b3IhPSk6CisKIDIwMTUt
MDQtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50
IEZpbHRlcmluZ10gQWRkIGEgSEFWRShQQVJFTlRBTF9DT05UUk9MUykgYW5kIHVzZSBpdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc5MTk2Mjg0NzYyYjMwMDM0NDE3ZmE0
ZjE0ZjFmYjI4MzgxYzQ1ZTkuLjEyNDU2MWVjYTUzYTMzODhiNzYxNDUzMWU4Mjg5YWQwY2JhZWJj
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2NSw5ICs1NjUsOSBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCiAgICAgcnVu
dGltZS9TeW1ib2wuY3BwCisgICAgcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKICAgICBy
dW50aW1lL1N5bWJvbE9iamVjdC5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAK
LSAgICBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCiAgICAgcnVudGltZS9UeXBl
TG9jYXRpb25DYWNoZS5jcHAKQEAgLTYxMSw2ICs2MTEsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
TFVUX0ZJTEVTCiAgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmNwcAorICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TeW1i
b2xQcm90b3R5cGUuY3BwCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggNjk5YWM3ZWMwZWQ2MDkzZTBhODBmYzZmOTdjNjUyNTQ4MTY5ZjhmOS4uMTg1
ZGM3ZTMxZDA3Y2Q4ZDc0Mzk2ODBmMTcyOWU3NjFkZjMyMmRlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU4LDYgKzU4LDcgQEAgYWxsIDogXAogICAg
IFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAg
IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBTeW1ib2xDb25zdHJ1Y3Rvci5s
dXQuaCBcCiAgICAgU3ltYm9sUHJvdG90eXBlLmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwK
ICAgICBCeXRlY29kZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWE5NGZhMzFmMWEwOTViZTM4ODRjNDE3ODAy
NDRiNzE4OGIzMDI4OS4uYmVkNDA1YWRmYjc3YjdkYjhjMGYyOTU0ZDVlMTdiM2I2ZDUyNTE5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVj
dG9yLmNwcApAQCAtMzAsNyArMzAsMTggQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlN5
bWJvbC5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N5bWJvbFJlZ2lzdHJ5Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihFeGVjU3RhdGUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9y
KEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM4LDYgKzQ5LDEzIEBACiAKIGNvbnN0IENsYXNzSW5m
byBTeW1ib2xDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN5bWJvbENvbnN0cnVjdG9yKSB9OwogCisvKiBTb3Vy
Y2UgZm9yIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gc3ltYm9sQ29uc3RydWN0b3JU
YWJsZQorICBmb3IgICAgICAgc3ltYm9sQ29uc3RydWN0b3JGb3IgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICBrZXlGb3IgICAgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IgICAgRG9udEVudW18
RnVuY3Rpb24gMQorQGVuZAorKi8KKwogU3ltYm9sQ29uc3RydWN0b3I6OlN5bWJvbENvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KHZtLCBzdHJ1Y3R1cmUpCiB7CkBAIC01NSw2ICs3MywxMyBAQCB2b2lkIFN5bWJvbENvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSogcHJvdG90eXBlKQog
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9M
KElOSVRJQUxJWkVfV0VMTF9LTk9XTl9TWU1CT0xTKQogfQogCitib29sIFN5bWJvbENvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBzeW1ib2xDb25zdHJ1Y3Rv
clRhYmxlLCBqc0Nhc3Q8U3ltYm9sQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIGRl
c2NyaXB0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7CkBAIC03NCw0ICs5OSwzMyBAQCBDYWxsVHlw
ZSBTeW1ib2xDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxE
YXRhKQogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpT
U3RyaW5nKiBzdHJpbmdLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgU3RyaW5nIHN0cmluZyA9IHN0cmluZ0tleS0+dmFsdWUo
ZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgUmVmPFN0cmluZ0ltcGw+IHVpZCA9
IGV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKS0+c3ltYm9sRm9yS2V5KHN0cmluZyk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBzdGF0aWNf
Y2FzdDxBdG9taWNTdHJpbmdJbXBsKj4oJnVpZC5nZXQoKSkpKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgSlNWYWx1ZSBzeW0gPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXN5bS5p
c1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMpKTsKKworICAgIFN5bWJvbCogc3ltYm9sID0gYXNTeW1ib2woc3ltKTsKKyAgICBBdG9t
aWNTdHJpbmdJbXBsKiB1aWQgPSBzeW1ib2wtPnByaXZhdGVOYW1lKCkudWlkKCk7CisgICAgQVNT
RVJUKHVpZC0+aXNTeW1ib2woKSk7CisgICAgaWYgKCF1aWQtPnN5bWJvbFJlZ2lzdHJ5KCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBBU1NF
UlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpID09IGV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCB1aWQtPnN5bWJvbFJl
Z2lzdHJ5KCktPmtleUZvclN5bWJvbCh1aWQpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgK
aW5kZXggMGFlMTJkN2ZkZDVjNDI0YmI2OWEyNmQxZGMxM2FlMDgwODRhNjgzOS4uZTU2MzcxMzMw
MThmMmQ1YTI3NzE3YzViYjk0YjdhMjYzOTRjOTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oCkBAIC01NSwxMCArNTUsMTMgQEAg
Y2xhc3MgU3ltYm9sQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN5bWJvbFByb3RvdHlwZSopOwog
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKIHByaXZhdGU6CiAgICAg
U3ltYm9sQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0
aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNjFlNDU4MmNmMjYxYjYzNmQxZWJlMzJmMDQ0YTJi
Mjg3M2UxZDFlNy4uODExNTQwMWFiMzFjNDY0MzQyZDhhYWE3MDMyMmVmYWJlM2E2NDA1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODcsMTMgKzg3LDE0IEBACiAjaW5j
bHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ1RhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQog
I2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCkBAIC0xNTQsNiArMTU1LDcgQEAgc3RhdGlj
IGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxv
Y2F0b3IpCiAgICAgLCB0b3BWTUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFt
ZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCiAgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlw
ZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcg
QXRvbWljU3RyaW5nVGFibGUpCisgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlx
dWU8V1RGOjpTeW1ib2xSZWdpc3RyeT4oKSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikK
ICAgICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCiAgICAgLCBzdHJpbmdD
YWNoZSgqdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGE0NmEzNzYwZDRm
ZWExOWRhOTQ4NTI3ODU2ZTZhNjNmNmZjMDhlYWMuLjdjZjY5MDAzNmUyNTU2MmJkNGY1MjdkM2Vl
ZTg3ZGIyYTY0ODlmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNjQsNiAr
NjQsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAjaW5jbHVkZSA8d3RmL0xp
c3RIYXNoU2V0Lmg+CkBAIC0yNzgsNiArMjc5LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3BlcnR5TmFt
ZUVudW1lcmF0b3I7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9hdG9taWNTdHJpbmdUYWJs
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpTeW1ib2xSZWdpc3RyeT4gbV9zeW1ib2xSZWdp
c3RyeTsKICAgICBDb21tb25JZGVudGlmaWVycyogcHJvcGVydHlOYW1lczsKICAgICBjb25zdCBN
YXJrZWRBcmd1bWVudEJ1ZmZlciogZW1wdHlMaXN0OyAvLyBMaXN0cyBhcmUgc3VwcG9zZWQgdG8g
YmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayB0byBoYXZlIHRoZWlyIGVsZW1lbnRzIHByb3Blcmx5
IG1hcmtlZCwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUgLSBidXQgdGhpcyBsaXN0IGhhcyBu
b3RoaW5nIHRvIG1hcmsuCiAgICAgU21hbGxTdHJpbmdzIHNtYWxsU3RyaW5nczsKQEAgLTI4OCw2
ICsyOTAsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewog
ICAgIFN0cm9uZzxKU1N0cmluZz4gbGFzdENhY2hlZFN0cmluZzsKIAogICAgIEF0b21pY1N0cmlu
Z1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXRvbWljU3RyaW5n
VGFibGU7IH0KKyAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5KiBzeW1ib2xSZWdpc3RyeSgpIHsgcmV0
dXJuIG1fc3ltYm9sUmVnaXN0cnkuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0SW5EZWZpbmVPd25Q
cm9wZXJ0eShib29sIGluRGVmaW5lT3duUHJvcGVydHkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1yZWdpc3RyeS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MjVjYTFmNWUyMDJhYjhiNzJjZmMxZDc2ZTVjNDA1MjdkMGFjNTQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0
cnkuanMKQEAgLTAsMCArMSw3MSBAQAorZnVuY3Rpb24gdGVzdChhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YmFkIHZhbHVlOiAiICsgYWN0dWFsKTsKK30KKwordmFyIGhlbGxvID0gU3ltYm9sKCJIZWxsbyIp
OwordmFyIHByb3RvID0gU3ltYm9sKCJfX3Byb3RvX18iKTsKKworZm9yICh2YXIgc3ltIG9mIFsg
aGVsbG8sIHByb3RvLCBTeW1ib2wuaXRlcmF0b3IgXSkgeworICAgIHZhciBrZXkgPSBTeW1ib2wu
a2V5Rm9yKHN5bSk7CisgICAgdGVzdChrZXksIHVuZGVmaW5lZCk7CisgICAgLy8gdHdpY2UKKyAg
ICB2YXIga2V5ID0gU3ltYm9sLmtleUZvcihzeW0pOworICAgIHRlc3Qoa2V5LCB1bmRlZmluZWQp
OworfQorCitmb3IgKHZhciBrZXkgb2YgWyAiSGVsbG8iLCAiX19wcm90b19fIiwgIlN5bWJvbC5p
dGVyYXRvciIsIG51bGwsIHVuZGVmaW5lZCwgNDIsIDIwLjUsIHRydWUsIGZhbHNlLCB7fSwgZnVu
Y3Rpb24gKCkge30sIFtdLCAnJyBdKSB7CisgICAgdmFyIHN5bSA9IFN5bWJvbC5mb3Ioa2V5KTsK
KyAgICB0ZXN0KHR5cGVvZiBzeW0sICJzeW1ib2wiKTsKKyAgICB0ZXN0KHN5bS50b1N0cmluZygp
LCAiU3ltYm9sKCIgKyBTdHJpbmcoa2V5KSArICIpIik7CisKKyAgICB2YXIgc3ltMiA9IFN5bWJv
bC5mb3Ioa2V5KTsKKyAgICB0ZXN0KHN5bSA9PT0gc3ltMiwgdHJ1ZSk7CisKKyAgICB2YXIga2V5
ID0gU3ltYm9sLmtleUZvcihzeW0pOworICAgIHRlc3Qoa2V5LCBrZXkpOworICAgIHZhciBrZXkg
PSBTeW1ib2wua2V5Rm9yKHN5bTIpOworICAgIHRlc3Qoa2V5LCBrZXkpOworfQorCit2YXIgZXJy
b3IgPSBudWxsOwordHJ5IHsKKyAgICB2YXIga2V5ID0geworICAgICAgICB0b1N0cmluZygpIHsK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndG9TdHJpbmcnKTsKKyAgICAgICAgfQorICAg
IH07CisgICAgU3ltYm9sLmZvcihrZXkpOworfSBjYXRjaCAoZSkgeworICAgIGVycm9yID0gZTsK
K30KK2lmICghZXJyb3IpCisgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CitpZiAo
U3RyaW5nKGVycm9yKSAhPT0gJ0Vycm9yOiB0b1N0cmluZycpCisgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgZXJyb3I6ICcgKyBTdHJpbmcoZXJyb3IpKTsKKwordmFyIGVsZW1lbnRzID0gWworICAg
IG51bGwsCisgICAgdW5kZWZpbmVkLAorICAgIDQyLAorICAgIDIwLjUsCisgICAgdHJ1ZSwKKyAg
ICBmYWxzZSwKKyAgICAnc3RyaW5nJywKKyAgICB7fSwKKyAgICBmdW5jdGlvbiAoKSB7fSwKKyAg
ICBbXSwKK107Citmb3IgKHZhciBpdGVtIG9mIGVsZW1lbnRzKSB7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBTeW1ib2wua2V5Rm9yKGl0ZW0pOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9y
KSAhPT0gJ1R5cGVFcnJvcjogVHlwZSBlcnJvcicpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIGVycm9yOiAnICsgU3RyaW5nKGVycm9yKSk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52
Y3hwcm9qCmluZGV4IDVkMWRiN2RhMDlmN2Q4Y2U3YmNlNWE1ZmU4OTRlYWE4YzRlZWZkZDcuLmM3
OGE4MTE1MmY0NzNhMzMzMTY2MDYwZmI4YzcyNjliYTBlZWQ0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKKysrIGIvU291cmNlL1dURi9XVEYudmN4cHJv
ai9XVEYudmN4cHJvagpAQCAtMTM0LDYgKzEzNCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlx3dGZcdGV4dFxTdHJpbmdJbXBsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHd0Zlx0ZXh0XFN0cmluZ1N0YXRpY3MuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cd3RmXHRleHRcU3RyaW5nVmlldy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlx3dGZcdGV4dFxTeW1ib2xSZWdpc3RyeS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cd3RmXHRleHRcY2ZcQXRvbWljU3RyaW5nQ0YuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cd3RmXHRleHRcY2ZcU3RyaW5nQ0YuY3BwIiAvPgpAQCAtMjk1LDYgKzI5Niw3
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdJbXBsLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdPcGVyYXRvcnMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ1ZpZXcuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN5bWJvbFJlZ2lzdHJ5LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxUaHJlYWRpbmcuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHd0ZlxUaHJlYWRpbmdQcmltaXRpdmVzLmgiIC8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV1RG
L1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKaW5kZXggNTYxOTcyNjBlNzQ3YzIyMDc1
NTg2NTczNWY3MWQxMmNlNzM2MzkyMS4uZWYwM2I1NzBmZjMwNTc3OGFmODI2MGU0M2ZjNjc5MDA4
Y2M3MmE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5m
aWx0ZXJzCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwpA
QCAtNzgsNiArNzgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3Ry
aW5nSW1wbC5jcHAiPgogICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTeW1ib2xSZWdpc3RyeS5j
cHAiPgorICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcuY3BwIj4KICAgICAgIDxG
aWx0ZXI+dGV4dDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMzQyLDYgKzM0NSw5IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdWaWV3LmgiPgogICAg
ICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN5bWJvbFJlZ2lzdHJ5LmgiPgorICAgICAgPEZpbHRlcj50
ZXh0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3dGZcdGV4dFxXVEZTdHJpbmcuaCI+CiAgICAgICA8RmlsdGVyPnRleHQ8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM3MTYyNGQ4NzliZjQ4YTA5Mjg0MDY3MTUzMzFmZDQ0MDIzNmFlNWMuLjc4ZTVlZjlhZGE4
ZDNlOTliYzAxNjljNzBhMDczMzZkYTZlNTZhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNzQsNiArNzQsOCBAQAogCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0
REJBNzAgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgKi87IH07
CiAJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMjE4MTE1Qzg1MDA0REJBNzAg
LyogUnVuTG9vcC5oICovOyB9OwogCQk0MzBCNDc4OTFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5n
Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggKi87IH07CisJCTcwQTk5
M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIg
LyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OworCQk3MEE5OTNGRjFBRDcxNTEzMDBGQTYxNUIg
LyogU3ltYm9sUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oICov
OyB9OwogCQk3Q0JCQTA3NDE5QkI3RkRDMDBCQkYwMjUgLyogT1NPYmplY3RQdHIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQkJBMDczMTlCQjdGREMw
MEJCRjAyNSAvKiBPU09iamVjdFB0ci5oICovOyB9OwogCQk3Q0REN0ZGODE4NkQyOTFFMDA3NDMz
Q0QgLyogSXRlcmF0b3JBZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0NERDdGRjcxODZEMjkxRTAwNzQzM0NEIC8qIEl0ZXJhdG9yQWRhcHRv
cnMuaCAqLzsgfTsKIAkJN0NERDdGRkExODZEMkE1NDAwNzQzM0NEIC8qIEl0ZXJhdG9yUmFuZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDREQ3RkY5
MTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmggKi87IH07CkBAIC0zNjIsNiArMzY0
LDggQEAKIAkJNUQyNDdCNzAxNDY4OUM0NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVEMjQ3QjczMTQ2ODlDNDcwMEU3OEI3NiAvKiBXVEYueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29u
ZmlnOyBwYXRoID0gV1RGLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTQxQ0FGNDE2MzBEQjI2MDA2RDBERUMgLyogQ29weVdURkhlYWRlcnMueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29weVdURkhlYWRlcnMueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQTk5M0ZDMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1i
b2xSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1i
b2xSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQTk5M0ZEMUFE
NzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTeW1ib2xSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3Q0JCQTA3MzE5QkI3RkRDMDBCQkYwMjUgLyogT1NPYmplY3RQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT1NPYmplY3RQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0NERDdGRjcxODZEMjkxRTAwNzQzM0NEIC8qIEl0ZXJhdG9yQWRhcHRvcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0b3JBZGFwdG9ycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0REN0ZGOTE4NkQyQTU0MDA3NDMzQ0QgLyogSXRl
cmF0b3JSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRvclJh
bmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTQsNiArOTU4LDggQEAKIAkJ
CQk5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgKi8sCiAJCQkJQThB
NDczMkExNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ09wZXJhdG9ycy5oICovLAogCQkJCUE4QTQ3
MzJCMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdTdGF0aWNzLmNwcCAqLywKKwkJCQk3MEE5OTNG
QzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovLAorCQkJCTcwQTk5M0ZE
MUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oICovLAogCQkJCUE4QTQ3MzJDMTUx
QTgyNUIwMDQxMjNGRiAvKiBUZXh0UG9zaXRpb24uaCAqLywKIAkJCQlBOEE0NzMyRDE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGU3RyaW5nLmNwcCAqLywKIAkJCQlBOEE0NzMyRTE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGU3RyaW5nLmggKi8sCkBAIC0xMTI3LDYgKzExMzMsNyBAQAogCQkJCUE4QTQ3M0VF
MTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9ySGFuZGxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTQ2NTE2RTE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwRDg1QjQxNzIzNENDMTAwMzM4MjEwIC8qIE5vTG9jay5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRjE1MUE4MjVCMDA0MTIzRkYgLyogTm9uY29weWFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Y1MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1i
ZXJPZkNvcmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTI5QzMzRTE1RkZENzlCMDA1MTZENjEg
LyogT2JqY1J1bnRpbWVFeHRyYXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTM3OCw2ICsxMzg1LDcg
QEAKIAkJCQlBNUJBMTVGQzE4MjQzNUE2MDBBODJFNjkgLyogU3RyaW5nSW1wbENGLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1QkExNUY1MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJpbmdJbXBsTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RjMxODI0MzNBOTAwQTgyRTY5IC8qIFN0cmlu
Z01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBT
eW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkREQkZBNzE2NjZERkEzMDBD
NTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0
NDMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ1N0YXRpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZGMxOTA1NTQ2YzVlZjA1ZTFlMTFhMWQ3YzVj
ODNhYzM2NDA5OWYwZS4uOWQ5M2FkNTk3ZDQ0MjAyYTk4OGQxZWYyMTcyY2ViN2FiMDQyOTBjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTEzMiw2ICsxMzIsNyBAQCBzZXQoV1RGX0hFQURFUlMK
ICAgICB0ZXh0L1N0cmluZ0hhc2guaAogICAgIHRleHQvU3RyaW5nSW1wbC5oCiAgICAgdGV4dC9T
dHJpbmdWaWV3LmgKKyAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKICAgICB0ZXh0L1dURlN0cmlu
Zy5oCiAKICAgICB0aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCkBAIC0xOTksNiArMjAwLDcgQEAg
c2V0KFdURl9TT1VSQ0VTCiAgICAgdGV4dC9TdHJpbmdJbXBsLmNwcAogICAgIHRleHQvU3RyaW5n
U3RhdGljcy5jcHAKICAgICB0ZXh0L1N0cmluZ1ZpZXcuY3BwCisgICAgdGV4dC9TeW1ib2xSZWdp
c3RyeS5jcHAKICAgICB0ZXh0L1dURlN0cmluZy5jcHAKIAogICAgIHRocmVhZHMvQmluYXJ5U2Vt
YXBob3JlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggOWZhYmYyYmFiMmVh
NmMxYmRmNzI4MGJjNjY2NTdlZDA2Zjk5OWY0OS4uZjU2OTkwMjBiOGYyOTM4ZTg2NTNlZTQzNzJk
ZGRkODRlOGIwN2Q0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Lmg+CiAKQEAgLTExMiw2ICsx
MTMsOSBAQCB2b2lkIFN0cmluZ1N0YXRzOjpwcmludFN0YXRzKCkKICAgICBpZiAoaXNBdG9taWMo
KSAmJiBsZW5ndGgoKSAmJiAhaXNTeW1ib2woKSkKICAgICAgICAgQXRvbWljU3RyaW5nOjpyZW1v
dmUodGhpcyk7CiAKKyAgICBpZiAoaXNTeW1ib2woKSAmJiBzeW1ib2xSZWdpc3RyeSgpKQorICAg
ICAgICBzeW1ib2xSZWdpc3RyeSgpLT5yZW1vdmUodGhpcyk7CisKICAgICBCdWZmZXJPd25lcnNo
aXAgb3duZXJzaGlwID0gYnVmZmVyT3duZXJzaGlwKCk7CiAKICAgICBpZiAob3duZXJzaGlwID09
IEJ1ZmZlckludGVybmFsKQpAQCAtMjg4LDEzICsyOTIsMjEgQEAgdm9pZCBTdHJpbmdJbXBsOjpk
ZXN0cm95KFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiAKIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjcmVhdGVTeW1ib2woUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApCiB7Ci0gICAgdW5z
aWduZWQgbGVuZ3RoID0gcmVwLT5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAg
cmV0dXJuIGNyZWF0ZVN5bWJvbEVtcHR5KCk7Ci0gICAgUmVmPFN0cmluZ0ltcGw+IHN0cmluZyA9
IGNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKHJlcCwgMCwgbGVuZ3RoKTsKLSAgICBBU1NFUlQo
IXN0cmluZy0+aXNBdG9taWMoKSk7Ci0gICAgc3RyaW5nLT5tX2hhc2hBbmRGbGFncyA9IGhhc2hB
bmRGbGFnc0ZvclN5bWJvbChzdHJpbmctPm1faGFzaEFuZEZsYWdzKTsKLSAgICByZXR1cm4gc3Ry
aW5nOworICAgIFN0cmluZ0ltcGwqIG93bmVyUmVwID0gKHJlcC0+YnVmZmVyT3duZXJzaGlwKCkg
PT0gQnVmZmVyU3Vic3RyaW5nKSA/IHJlcC0+c3Vic3RyaW5nQnVmZmVyKCkgOiByZXAuZ2V0KCk7
CisKKyAgICAvLyBXZSBhbGxvY2F0ZSBhIGJ1ZmZlciB0aGF0IGNvbnRhaW5zCisgICAgLy8gMS4g
dGhlIFN0cmluZ0ltcGwgc3RydWN0CisgICAgLy8gMi4gdGhlIHBvaW50ZXIgdG8gdGhlIG93bmVy
IHN0cmluZworICAgIC8vIDMuIHRoZSBwb2ludGVyIHRvIHRoZSBzeW1ib2wgcmVnaXN0cnkKKyAg
ICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KGZhc3RN
YWxsb2MoYWxsb2NhdGlvblNpemU8U3RyaW5nSW1wbCo+KDIpKSk7CisgICAgaWYgKHJlcC0+aXM4
Qml0KCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJbXBs
KSBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbCwgcmVwLT5tX2RhdGE4LCBvd25lclJlcCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKENy
ZWF0ZVN5bWJvbCwgcmVwLT5tX2RhdGExNiwgb3duZXJSZXApKTsKK30KKworUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbEVtcHR5KCkKK3sKKyAgICByZXR1cm4gY3JlYXRl
U3ltYm9sKGVtcHR5KCkpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OmNvbnRhaW5zT25seVdoaXRl
c3BhY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBlMTRkNDUwOTA1YTYxNjYyZjdi
NTcyODFmMjJiMDA1NzQ3NzcyZTAyLi45MDQwZjI3MGU5ZjU2ZDVmMTllOTY3NDRhMjFiYTQwZGVm
Y2Q1N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNTcsNiArNTcsNyBAQAogc3Ry
dWN0IFN1YnN0cmluZ1RyYW5zbGF0b3I7CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9yOwog
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKK2NsYXNzIFN5bWJvbFJlZ2lzdHJ5
OwogCiBlbnVtIFRleHRDYXNlU2Vuc2l0aXZpdHkgewogICAgIFRleHRDYXNlU2Vuc2l0aXZlLApA
QCAtMjkyLDE4ICsyOTMsMzkgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIFNUUklOR19T
VEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgZW51
bSBDcmVhdGVTeW1ib2xFbXB0eVRhZyB7IENyZWF0ZVN5bWJvbEVtcHR5IH07Ci0gICAgU3RyaW5n
SW1wbChDcmVhdGVTeW1ib2xFbXB0eVRhZykKKyAgICBlbnVtIENyZWF0ZVN5bWJvbFRhZyB7IENy
ZWF0ZVN5bWJvbCB9OworICAgIC8vIFVzZWQgdG8gY3JlYXRlIG5ldyBzeW1ib2wgc3RyaW5ncyB0
aGF0IGhvbGRzIGV4aXN0aW5nIDgtYml0IFtbRGVzY3JpcHRpb25dXSBzdHJpbmcgYXMgYSBzdWJz
dHJpbmcgYnVmZmVyIChCdWZmZXJTdWJzdHJpbmcpLgorICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3lt
Ym9sVGFnLCBjb25zdCBMQ2hhciogY2hhcmFjdGVycywgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBi
YXNlKQogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKLSAgICAgICAg
LCBtX2xlbmd0aCgwKQotICAgICAgICAvLyBXZSBleHBlY3QgbV9sZW5ndGggdG8gYmUgaW5pdGlh
bGl6ZWQgdG8gMCBhcyB3ZSB1c2UgaXQKLSAgICAgICAgLy8gdG8gcmVwcmVzZW50IGEgbnVsbCB0
ZXJtaW5hdGVkIGJ1ZmZlci4KLSAgICAgICAgLCBtX2RhdGE4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigmbV9sZW5ndGgpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRG
bGFnc0ZvclN5bWJvbChzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKSkKKyAg
ICAgICAgLCBtX2xlbmd0aChiYXNlLT5sZW5ndGgoKSkKKyAgICAgICAgLCBtX2RhdGE4KGNoYXJh
Y3RlcnMpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yU3ltYm9sKHNf
aGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nU3ltYm9sIHwgQnVmZmVyU3Vic3RyaW5nKSkKICAg
ICB7CisgICAgICAgIEFTU0VSVChpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsK
KyAgICAgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmlu
Zyk7CiAKLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0aCk7Cisg
ICAgICAgIHN1YnN0cmluZ0J1ZmZlcigpID0gYmFzZS5sZWFrUmVmKCk7CisgICAgICAgIHN5bWJv
bFJlZ2lzdHJ5KCkgPSBudWxscHRyOworCisgICAgICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9T
VFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKKyAgICB9CisKKyAgICAvLyBVc2VkIHRvIGNyZWF0ZSBu
ZXcgc3ltYm9sIHN0cmluZ3MgdGhhdCBob2xkcyBleGlzdGluZyAxNi1iaXQgW1tEZXNjcmlwdGlv
bl1dIHN0cmluZyBhcyBhIHN1YnN0cmluZyBidWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCisgICAg
U3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGJhc2UpCisgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50
SW5jcmVtZW50KQorICAgICAgICAsIG1fbGVuZ3RoKGJhc2UtPmxlbmd0aCgpKQorICAgICAgICAs
IG1fZGF0YTE2KGNoYXJhY3RlcnMpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZs
YWdzRm9yU3ltYm9sKFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykpCisgICAgeworICAg
ICAgICBBU1NFUlQoIWlzOEJpdCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKKyAgICAg
ICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CisK
KyAgICAgICAgc3Vic3RyaW5nQnVmZmVyKCkgPSBiYXNlLmxlYWtSZWYoKTsKKyAgICAgICAgc3lt
Ym9sUmVnaXN0cnkoKSA9IG51bGxwdHI7CisKKyAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJ
VF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKICAgICB9CiAKICAgICB+U3RyaW5nSW1wbCgpOwpA
QCAtMzk3LDExICs0MTksNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdEludGVybmFsPFQ+KHJlc3VsdEltcGwsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbEVtcHR5KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9s
RW1wdHkpKTsKLSAgICB9Ci0KKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGVTeW1ib2xFbXB0eSgpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbChQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHJlcCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBsLiBUaGUgb3JpZ2lu
YWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBQYXNzUmVmUHRyLApAQCAtNzQzLDcg
Kzc2MSw2IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogCiAgICAgU3RyaW5nSW1wbCYgZXh0cmFjdEZv
bGRlZFN0cmluZ0luU3ltYm9sKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChsZW5ndGgoKSk7CiAg
ICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICAgICAgQVNTRVJUKGJ1ZmZlck93bmVyc2hp
cCgpID09IEJ1ZmZlclN1YnN0cmluZyk7CiAgICAgICAgIEFTU0VSVChzdWJzdHJpbmdCdWZmZXIo
KSk7CkBAIC03NTEsNiArNzY4LDE4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICByZXR1
cm4gKnN1YnN0cmluZ0J1ZmZlcigpOwogICAgIH0KIAorICAgIFN5bWJvbFJlZ2lzdHJ5KiBjb25z
dCYgc3ltYm9sUmVnaXN0cnkoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU3ltYm9s
KCkpOworICAgICAgICByZXR1cm4gKih0YWlsUG9pbnRlcjxTeW1ib2xSZWdpc3RyeSo+KCkgKyAx
KTsKKyAgICB9CisKKyAgICBTeW1ib2xSZWdpc3RyeSomIHN5bWJvbFJlZ2lzdHJ5KCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKKyAgICAgICAgcmV0dXJuICoodGFpbFBvaW50
ZXI8U3ltYm9sUmVnaXN0cnkqPigpICsgMSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wg
cmVxdWlyZXNDb3B5KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0
cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJiNTc2NzZkNjQ1MmQxZDhiN2U2N2EyZTc3ZjcyNDE5ZGRmYzQ2
NDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5
LmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAy
MDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3ltYm9sUmVnaXN0cnkuaCIKKworI2luY2x1ZGUg
Ikhhc2hTZXQuaCIKKyNpbmNsdWRlICJJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgiCisjaW5j
bHVkZSAiU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgIlRocmVhZGluZy5oIgorI2luY2x1ZGUgIldU
RlRocmVhZERhdGEuaCIKKyNpbmNsdWRlICJkdG9hLmgiCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
VVRGOC5oPgorCisjaWYgVVNFKFdFQl9USFJFQUQpCisjaW5jbHVkZSAiU3BpbkxvY2suaCIKKyNl
bmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworI2lmIFVTRShXRUJfVEhSRUFEKQorCitjbGFzcyBT
eW1ib2xSZWdpc3RyeUxvY2tlciA6IHB1YmxpYyBTcGluTG9ja0hvbGRlciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoU3ltYm9sUmVnaXN0cnlMb2NrZXIpOworcHVibGljOgorICAgIFN5bWJv
bFJlZ2lzdHJ5TG9ja2VyKFN5bWJvbFJlZ2lzdHJ5KiBzeW1ib2xSZWdpc3RyeSkKKyAgICAgICAg
OiBTcGluTG9ja0hvbGRlcigmc3ltYm9sUmVnaXN0cnktPm1fc3BpbkxvY2spCisgICAgeworICAg
IH0KK307CisKK1N0YXRpY1NwaW5Mb2NrIFN5bWJvbFJlZ2lzdHJ5TG9ja2VyOjpzX3N0cmluZ1Rh
YmxlTG9jazsKKworI2Vsc2UKKworY2xhc3MgU3ltYm9sUmVnaXN0cnlMb2NrZXIgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFN5bWJvbFJlZ2lzdHJ5TG9ja2VyKTsKK3B1YmxpYzoKKyAgICBT
eW1ib2xSZWdpc3RyeUxvY2tlcihTeW1ib2xSZWdpc3RyeSopIHsgfQorfTsKKworI2VuZGlmIC8v
IFVTRShXRUJfVEhSRUFEKQorCitTeW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkoKQorICAg
IDogbV90YWJsZSgpCisjaWYgVVNFKFdFQl9USFJFQUQpCisgICAgLCBtX3NwaW5Mb2NrKCkKKyNl
bmRpZgoreworfQorCitTeW1ib2xSZWdpc3RyeTo6flN5bWJvbFJlZ2lzdHJ5KCkKK3sKKyAgICBm
b3IgKGF1dG8gc3RyaW5nIDogbV90YWJsZSkKKyAgICAgICAgc3RyaW5nLmltcGwtPnN5bWJvbFJl
Z2lzdHJ5KCkgPSBudWxscHRyOworfQorCitSZWY8U3RyaW5nSW1wbD4gU3ltYm9sUmVnaXN0cnk6
OnN5bWJvbEZvcktleShTdHJpbmcgcmVwKQoreworICAgIFN5bWJvbFJlZ2lzdHJ5TG9ja2VyIGxv
Y2tlcih0aGlzKTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90YWJsZS5hZGQoU3ltYm9sS2V5
KHJlcC5pbXBsKCkpKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAg
UmVmPFN0cmluZ0ltcGw+IHN5bWJvbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChyZXAuaW1w
bCgpKTsKKyAgICAgICAgc3ltYm9sLT5zeW1ib2xSZWdpc3RyeSgpID0gdGhpczsKKyAgICAgICAg
YWRkUmVzdWx0Lml0ZXJhdG9yLT5pbXBsID0gJnN5bWJvbC5nZXQoKTsKKyAgICAgICAgcmV0dXJu
IHN5bWJvbDsKKyAgICB9CisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPmltcGw7Cit9
CisKK1N0cmluZyBTeW1ib2xSZWdpc3RyeTo6a2V5Rm9yU3ltYm9sKFN0cmluZ0ltcGwqIHVpZCkK
K3sKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tlciBsb2NrZXIodGhpcyk7CisKKyAgICBBU1NFUlQo
dWlkLT5pc1N5bWJvbCgpKTsKKyAgICBBU1NFUlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpKTsKKyAg
ICByZXR1cm4gdWlkLT5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKTsKK30KKwordm9pZCBT
eW1ib2xSZWdpc3RyeTo6cmVtb3ZlKFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTeW1ib2xSZWdp
c3RyeUxvY2tlciBsb2NrZXIodGhpcyk7CisKKyAgICBBU1NFUlQodWlkLT5pc1N5bWJvbCgpKTsK
KyAgICBBU1NFUlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpID09IHRoaXMpOworICAgIGF1dG8gaXRl
cmF0b3IgPSBtX3RhYmxlLmZpbmQoU3ltYm9sS2V5KHVpZCkpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoaXRlcmF0b3IgIT0gbV90YWJsZS5lbmQoKSwgIlRoZSBzdHJpbmcgYmVpbmcgcmVtb3Zl
ZCBpcyByZWdpc3RlcmVkIGluIHRoZSBzdHJpbmcgdGFibGUgb2YgYW4gb3RoZXIgdGhyZWFkISIp
OworICAgIG1fdGFibGUucmVtb3ZlKGl0ZXJhdG9yKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMzYyOTM1YWU2NWZlMThiODRlYWNkMWUwOTYx
YzU2M2JiMGFlMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJv
bFJlZ2lzdHJ5LmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFy
b2dhLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaWZuZGVmIFdURl9TeW1ib2xSZWdpc3RyeV9oCisjZGVmaW5lIFdU
Rl9TeW1ib2xSZWdpc3RyeV9oCisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9XVEZUaHJlYWREYXRhLmg+CisjaWYgVVNFKFdFQl9USFJFQUQpCisjaW5jbHVkZSA8d3Rm
L1NwaW5Mb2NrLmg+CisjZW5kaWYKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFz
cyBTdHJpbmdJbXBsOworCitjbGFzcyBTeW1ib2xSZWdpc3RyeSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3ltYm9sUmVnaXN0cnkpOwor
cHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTeW1ib2xSZWdpc3RyeSgpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB+U3ltYm9sUmVnaXN0cnkoKTsKKworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBSZWY8U3RyaW5nSW1wbD4gc3ltYm9sRm9yS2V5KFN0cmluZyk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBrZXlGb3JTeW1ib2woU3RyaW5nSW1wbCogdWlkKTsKKworICAgIHZv
aWQgcmVtb3ZlKFN0cmluZ0ltcGwqIHVpZCk7CisKKyAgICAvLyBTaW5jZSBTdHJpbmdJbXBsKiB1
c2VkIGZvciBTeW1ib2wgdWlkIGRvZXNuJ3QgaGF2ZSBhIGhhc2ggdmFsdWUgcmVmbGVjdGluZyB0
aGUgc3RyaW5nIGNvbnRlbnQuCisgICAgLy8gVG8gY29tcGFyZSB3aXRoIGFuIGV4dGVybmFsIHN0
cmluZyBpbiBzdHJpbmcgY29udGVudHMsIGludHJvZHVjZSBTeW1ib2xLZXksCisgICAgLy8gdGhh
dCBob2xkcyBhIGhhc2ggdmFsdWUgcmVmbGVjdGluZyB0aGUgc3RyaW5nIGNvbnRlbnQgYWRkaXRp
b25hbGx5LgorICAgIHN0cnVjdCBTeW1ib2xLZXkgeworICAgICAgICBTeW1ib2xLZXkoKTsKKyAg
ICAgICAgZXhwbGljaXQgU3ltYm9sS2V5KFN0cmluZ0ltcGwqKTsKKworICAgICAgICBTdHJpbmdJ
bXBsKiBpbXBsOworICAgICAgICB1bnNpZ25lZCBoYXNoOworICAgIH07CisKKyAgICBzdHJ1Y3Qg
SGFzaGVyIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3ltYm9sS2V5JiBr
ZXkpIHsgcmV0dXJuIGtleS5oYXNoOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFN5bWJvbEtleSYgYSwgY29uc3QgU3ltYm9sS2V5JiBiKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gV1RGOjplcXVhbChhLmltcGwsIGIuaW1wbCk7CisgICAgICAgIH0KKworICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNl
OworICAgIH07CisKKyAgICBzdHJ1Y3QgSGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPFN5
bWJvbEtleT4geworICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0g
dHJ1ZTsKKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFN5bWJvbEtl
eSYga2V5KQorICAgICAgICB7CisgICAgICAgICAgICBrZXkuaW1wbCA9IG51bGxwdHI7CisgICAg
ICAgICAgICBrZXkuaGFzaCA9IDB4ZGVhZGJlZWZVOworICAgICAgICB9CisgICAgICAgIHN0YXRp
YyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFN5bWJvbEtleSYga2V5KQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4ga2V5LmltcGwgPT0gbnVsbHB0ciAmJiBrZXkuaGFzaCA9PSAweGRl
YWRiZWVmVTsKKyAgICAgICAgfQorICAgIH07CisKK3ByaXZhdGU6CisgICAgSGFzaFNldDxTeW1i
b2xLZXksIEhhc2hlciwgSGFzaFRyYWl0cz4gbV90YWJsZTsKKyNpZiBVU0UoV0VCX1RIUkVBRCkK
KyAgICBTcGluTG9jayBtX3NwaW5Mb2NrOworI2VuZGlmCit9OworCitpbmxpbmUgU3ltYm9sUmVn
aXN0cnk6OlN5bWJvbEtleTo6U3ltYm9sS2V5KCkKKyAgICA6IGltcGwobnVsbHB0cikKKyAgICAs
IGhhc2goMCkKK3sKK30KKworaW5saW5lIFN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xLZXk6OlN5bWJv
bEtleShTdHJpbmdJbXBsKiBpbXBsKQorICAgIDogaW1wbChpbXBsKQorICAgICwgaGFzaCgwKQor
eworICAgIGlmIChpbXBsLT5pc1N5bWJvbCgpKQorICAgICAgICBoYXNoID0gaW1wbC0+ZXh0cmFj
dEZvbGRlZFN0cmluZ0luU3ltYm9sKCkuaGFzaCgpOworICAgIGVsc2UKKyAgICAgICAgaGFzaCA9
IGltcGwtPmhhc2goKTsKK30KKworaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3ltYm9sUmVnaXN0
cnk6OlN5bWJvbEtleSYgYSwgY29uc3QgU3ltYm9sUmVnaXN0cnk6OlN5bWJvbEtleSYgYikKK3sK
KyAgICByZXR1cm4gZXF1YWwoYS5pbXBsLCBiLmltcGwpOworfQorCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xLZXkmIGEsIGNvbnN0IFN5bWJvbFJl
Z2lzdHJ5OjpTeW1ib2xLZXkmIGIpCit7CisgICAgcmV0dXJuIGVxdWFsKGEsIGIpOworfQorCitp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xLZXkmIGEs
IGNvbnN0IFN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xLZXkmIGIpCit7CisgICAgcmV0dXJuICFlcXVh
bChhLCBiKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MGQ0YjhmNGRjZmRkYTJlZGRmZGZl
NWQ4ZWUwZTg3NmE0ZDE4MDc0Li5hYTg0MjRhYTQyNzViNTgwNDc2ZDgxODRlOGFiYThmNjZmNzBk
Y2Y2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDQtMDkgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVtZW50IFN5bWJvbC5m
b3IgYW5kIFN5bWJvbC5rZXlGb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0cyB0byBjaGVjayBTeW1ib2wncyBpZGVudGl0eSBvdmVyIGRp
ZmZlcmVudCByZWFsbXMuCisKKyAgICAgICAgKiBqcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9zY3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUt
c3ltYm9scy5qczogQWRkZWQuCisKIDIwMTUtMDQtMDkgIEh1bnNlb3AgSmVvbmcgIDxoczg1Lmpl
b25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIGZhc3QvY3NzL3ZlcnRpY2FsLXRleHQt
b3ZlcmZsb3ctZWxsaXBzaXMtdGV4dC1hbGlnbi1jZW50ZXIuaHRtbCBpcyBmYWlsaW5nIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNjYmExYTk5YWQ1YTcwOGIxNjU3YWMwMGQ4NzExODE0NTE1ZjU0NzAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgU3ltYm9sIGFuZCBnbG9iYWwgc3lt
Ym9sIHJlZ2lzdHJ5IGlkZW50aXR5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGZyYW1lLlN5bWJvbC5pdGVyYXRvciBpcyBTeW1ib2wuaXRlcmF0b3IKK1BBU1MgZnJhbWUu
U3ltYm9sKCdIZWxsbycpIGlzIG5vdCBTeW1ib2woJ0hlbGxvJykKK1BBU1MgU3ltYm9sLmtleUZv
cihzeW0pIGlzICdIZWxsbycKK1BBU1MgZnJhbWUuU3ltYm9sLmtleUZvcihzeW0pIGlzICdIZWxs
bycKK1BBU1MgU3ltYm9sLmZvcignSGVsbG8nKSBpcyBzeW0KK1BBU1MgZnJhbWUuU3ltYm9sLmZv
cignSGVsbG8nKSBpcyBzeW0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUt
c3ltYm9scy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YjM2MjdjMWNmNWRkZDIyNDAwOWJjZGZjMWI3MjJlOGIwZjk2NWQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMu
aHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWU+PC9p
ZnJhbWU+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Nyb3NzLWZyYW1lLXN5bWJvbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
ZG9tL3NjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1ib2xzLmpzIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL3NjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1ib2xzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3OGVh
ZjM3ZjFmMDdmOTNhY2M5NTFkMTk5ODY4ZDYwZGVmNDhjZTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2Nyb3NzLWZyYW1lLXN5bWJvbHMuanMKQEAg
LTAsMCArMSwxMiBAQAorZGVzY3JpcHRpb24oIlRlc3RzIFN5bWJvbCBhbmQgZ2xvYmFsIHN5bWJv
bCByZWdpc3RyeSBpZGVudGl0eSIpOworCit2YXIgZnJhbWUgPSBmcmFtZXNbMF07CisKK3Nob3Vs
ZEJlKCJmcmFtZS5TeW1ib2wuaXRlcmF0b3IiLCAiU3ltYm9sLml0ZXJhdG9yIik7CitzaG91bGRO
b3RCZSgiZnJhbWUuU3ltYm9sKCdIZWxsbycpIiwgIlN5bWJvbCgnSGVsbG8nKSIpOworCit2YXIg
c3ltID0gU3ltYm9sLmZvcigiSGVsbG8iKTsKK3Nob3VsZEJlKCJTeW1ib2wua2V5Rm9yKHN5bSki
LCAiJ0hlbGxvJyIpOworc2hvdWxkQmUoImZyYW1lLlN5bWJvbC5rZXlGb3Ioc3ltKSIsICInSGVs
bG8nIik7CitzaG91bGRCZSgiU3ltYm9sLmZvcignSGVsbG8nKSIsICJzeW0iKTsKK3Nob3VsZEJl
KCJmcmFtZS5TeW1ib2wuZm9yKCdIZWxsbycpIiwgInN5bSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250462</attachid>
            <date>2015-04-09 13:44:16 -0700</date>
            <delta_ts>2015-04-09 15:53:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143404-20150410054324.patch</filename>
            <type>text/plain</type>
            <size>38423</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDhhYzlhNDAwYmQ0NjFlNTU4ZDBkNzQ1MGFjZWRiNjI4MzRlNDg2Li4wMTY5Y2NjZDQyZDgyYzMz
MTM3ZTA0NGY3YWFkMTA3YTRiOGYyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxNS0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtl
eUZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IuCisgICAgICAg
IFN5bWJvbFJlZ2lzdHJ5IG1haW50YWlucyByZWdpc3RlcmVkIFN0cmluZ0ltcGwqIHN5bWJvbHMu
CisgICAgICAgIEFuZCB0byBtYWtlIHRoaXMgbWFwcGluZyBlbmFibGVkIG92ZXIgcmVhbG1zLAor
ICAgICAgICBWTSBvd25zIHRoaXMgbWFwcGluZyAobm90IEpTR2xvYmFsT2JqZWN0KS4KKworICAg
ICAgICBXaGlsZSB0aGVyZSdzIERlZmF1bHQgQXRvbWljU3RyaW5nVGFibGUgcGVyIHRocmVhZCwK
KyAgICAgICAgU3ltYm9sUmVnaXN0cnkgc2hvdWxkIG5vdCBleGlzdCBvdmVyIFZNcy4KKyAgICAg
ICAgU28gZXZlcnl0aW1lIFZNIGlzIGNyZWF0ZWQsIFN5bWJvbFJlZ2lzdHJ5IGlzIGFsc28gY3Jl
YXRlZC4KKworICAgICAgICBJbiBTeW1ib2xSZWdpc3RyeSBpbXBsZW1lbnRhdGlvbiwgd2UgZG9u
J3QgbGV2ZXJhZ2UgV2Vha0dDTWFwIChvciB3ZWFrIHJlZmVyZW5jZSBkZXNpZ24pLgorICAgICAg
ICBUaGVyZXMgYXJlIHNldmVyYWwgcmVhc29ucy4KKyAgICAgICAgMS4gU3RyaW5nSW1wbCogd2hp
Y2ggcmVwcmVzZW50cyBpZGVudGl0eSBvZiBTeW1ib2xzIGlzIG5vdCBHQy1tYW5hZ2VkIG9iamVj
dC4KKyAgICAgICAgICAgU28gd2UgY2Fubm90IHVzZSBXZWFrR0NNYXAgZGlyZWN0bHkuCisgICAg
ICAgICAgIFdoaWxlIFN5bWJvbCogaXMgR0MtbWFuYWdlZCBvYmplY3QsIGhvbGRpbmcgd2VhayBy
ZWZlcmVuY2UgdG8gU3ltYm9sKiBkb2Vzbid0IG1haW50YWluIEpTIHN5bWJvbHMgKGV4cG9zZWQg
cHJpbWl0aXZlIHZhbHVlcyB0byB1c2VycykgbGl2ZW5lc3MsCisgICAgICAgICAgIGJlY2F1c2Ug
ZGlzdGluY3QgU3ltYm9sKiBjYW4gZXhpc3QuCisgICAgICAgICAgIERpc3RpbmN0IFN5bWJvbCog
bWVhbnMgdGhlIFN5bWJvbCogb2JqZWN0IHRoYXQgcG9pbnRlciB2YWx1ZSAoU3ltYm9sKikgaXMg
ZGlmZmVyZW50IGZyb20gd2Vha2x5IHJlZmVyZW5jZWQgU3ltYm9sKiBidXQgaGVsZCBTdHJpbmdJ
bXBsKiBpcyB0aGUgc2FtZS4KKworICAgICAgICAyLiBXZSBkb24ndCB1c2UgV1RGOjpXZWFrUHRy
LiBJZiB3ZSBhZGQgV2Vha1B0ckZhY3RvcnkgaW50byBTdHJpbmdJbXBsJ3MgbWVtYmVyLCB3ZSBj
YW4gdHJhY2sgU3RyaW5nSW1wbConcyBsaXZlbmVzcyBieSBXZWFrUHRyLgorICAgICAgICAgICBI
b3dldmVyIHRoZXJlJ3MgcHJvYmxlbSBhYm91dCB3aGVuIHdlIHBydW5lIHN0YWxlZCBlbnRyaWVz
IGluIFN5bWJvbFJlZ2lzdHJ5LgorICAgICAgICAgICBTaW5jZSB0aGUgbWVtb3J5IGFsbG9jYXRl
ZCBmb3IgdGhlIFN5bWJvbCBpcyB0eXBpY2FsbHkgb2NjdXBpZWQgYnkgYWxsb2NhdGVkIHN5bWJv
bGl6ZWQgU3RyaW5nSW1wbConcyBjb250ZW50LAorICAgICAgICAgICBhbmQgaXQgaXMgbm90IGlu
IEdDLWhlYXAuCisgICAgICAgICAgIFdoaWxlIGhlYXZpbHkgcmVnaXN0ZXJpbmcgU3ltYm9scyBh
bmQgc3RvcmluZyBTdHJpbmdJbXBsKiBpbnRvIFN5bWJvbFJlZ2lzdHJ5LCBIZWFwJ3MgRWRlblNw
YWNlIGlzIG5vdCBzbyBvY2N1cGllZC4KKyAgICAgICAgICAgU28gR0MgdHlwaWNhbGx5IGF0dGVt
cHQgdG8gcGVyZm9ybSBFZGVuQ29sbGVjdGlvbiwgYW5kIGl0IGRvZXNuJ3QgY2FsbCBXZWFrR0NN
YXAncyBwcnVsZVN0YWxlRW50cmllcyBjYWxsYmFjay4KKyAgICAgICAgICAgQXMgYSByZXN1bHQs
IGJlZm9yZSBwcnVuaW5nIHN0YWxlZCBlbnRyaWVzIGluIFN5bWJvbFJlZ2lzdHJ5LCBmYXN0IG1h
bGxvYy1lZCBtZW1vcnkgZmlsbHMgdXAgdGhlIHN5c3RlbSBtZW1vcnkuCisKKyAgICAgICAgU28g
aW5zdGVhZCBvZiB1c2luZyBXZWFrIHJlZmVyZW5jZSwgd2UgdGFrZSByZWxhdGl2ZWx5IGVhc3kg
ZGVzaWduLgorICAgICAgICBXaGVuIHdlIHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCog
aW50byBTeW1ib2xSZWdpc3RyeSwgc3ltYm9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0
aGF0LgorICAgICAgICBBbmQgd2hlbiBkZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVm
ZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28g
d2l0aCBBdG9taWNTdHJpbmdUYWJsZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvckZvcik6CisgICAgICAg
IChKU0M6OnN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6c3lt
Ym9sUmVnaXN0cnkpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanM6
IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTUtMDQtMDggIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UganNOb250cml2aWFsU3RyaW5nIGlu
IG1vcmUgcGxhY2VzIGlmIHRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSAyIG9yIG1vcmUg
Y2hhcmFjdGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBlYzc5NjkxNDllOWNiMGJiNDJiZTQzOWQ2MzliY2MxNGEzMWE5NTk3
Li5jMDVhZDIwYzUyM2JkMmU4M2Y2ZGJiNDIyNmU2ZmU2Y2FmZDg4NWM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ5IEBACisyMDE1LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBTeW1ib2wuZm9yIGFuZCBTeW1ib2wua2V5Rm9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0MDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHdl
IHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCogaW50byBTeW1ib2xSZWdpc3RyeSwgc3lt
Ym9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0aGF0LgorICAgICAgICBBbmQgd2hlbiBk
ZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVmZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0
cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28gd2l0aCBBdG9taWNTdHJpbmdUYWJsZS4K
KyAgICAgICAgV2hpbGUgQXRvbWljU3RyaW5nVGFibGUgKGluIFdlYkNvcmUgY2FzZSkgZXhpc3Rz
IGluIHRocmVhZCBsb2NhbCBzdG9yYWdlLAorICAgICAgICBTeW1ib2xSZWdpc3RyeSBleGlzdHMg
cGVyIFZNIGFuZCBTdHJpbmdJbXBsKiBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHJlZ2lzdGVyZWQg
U3ltYm9sUmVnaXN0cnkuCisKKyAgICAgICAgU2luY2UgU3RyaW5nSW1wbCBoYXMgaXNTeW1ib2wg
ZXRjLiBtZW1iZXJzLCBpdCdzIGNsYXNzIGlzIGF3YXJlIG9mIFN5bWJvbCB1c2UgY2FzZXMuCisg
ICAgICAgIFNvIGludHJvZHVjZSBTeW1ib2xSZWdpc3RyeSBpbiBXVEYgbGF5ZXJzIGFzIGlmIEF0
b21pY1N0cmluZ1RhYmxlLgorCisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6Cisg
ICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmlu
Z0ltcGw6On5TdHJpbmdJbXBsKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3lt
Ym9sKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkpOgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
U3RyaW5nSW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmV4dHJhY3RGb2xkZWRTdHJp
bmdJblN5bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN5bWJvbFJlZ2lzdHJ5KToK
KyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkpOiBEZWxldGVkLgor
ICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChX
VEY6OlN5bWJvbFJlZ2lzdHJ5TG9ja2VyOjpTeW1ib2xSZWdpc3RyeUxvY2tlcik6CisgICAgICAg
IChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xSZWdpc3RyeSk6CisgICAgICAgIChXVEY6OlN5
bWJvbFJlZ2lzdHJ5Ojp+U3ltYm9sUmVnaXN0cnkpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdp
c3RyeTo6c3ltYm9sRm9yS2V5KToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6OmtleUZv
clN5bWJvbCk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpyZW1vdmUpOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpTeW1i
b2xSZWdpc3RyeTo6SGFzaGVyOjpoYXNoKToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6
Okhhc2hlcjo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6SGFzaFRyYWl0
czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6
Okhhc2hUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0
cnk6OnNwaW5Mb2NrKToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6OlN5bWJvbEtleTo6
U3ltYm9sS2V5KToKKyAgICAgICAgKFdURjo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdURjo6b3BlcmF0b3IhPSk6CisKIDIwMTUtMDQtMDkgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50IEZpbHRlcmluZ10gQWRk
IGEgSEFWRShQQVJFTlRBTF9DT05UUk9MUykgYW5kIHVzZSBpdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDc5MTk2Mjg0NzYyYjMwMDM0NDE3ZmE0ZjE0ZjFmYjI4MzgxYzQ1
ZTkuLjEyNDU2MWVjYTUzYTMzODhiNzYxNDUzMWU4Mjg5YWQwY2JhZWJjMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2NSw5ICs1NjUsOSBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAog
ICAgIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCiAgICAgcnVudGltZS9TeW1ib2wuY3Bw
CisgICAgcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N5bWJvbE9i
amVjdC5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKLSAgICBydW50aW1lL1N5
bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVu
dGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCiAgICAgcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5j
cHAKQEAgLTYxMSw2ICs2MTEsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfTFVUX0ZJTEVTCiAgICAg
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRp
bWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3Bw
CiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjk5
YWM3ZWMwZWQ2MDkzZTBhODBmYzZmOTdjNjUyNTQ4MTY5ZjhmOS4uMTg1ZGM3ZTMxZDA3Y2Q4ZDc0
Mzk2ODBmMTcyOWU3NjFkZjMyMmRlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTU4LDYgKzU4LDcgQEAgYWxsIDogXAogICAgIFJlZ0V4cE9iamVjdC5s
dXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmx1dC5oIFwKKyAgICBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3lt
Ym9sUHJvdG90eXBlLmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwKICAgICBCeXRlY29kZXMu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggYWE5NGZhMzFmMWEwOTViZTM4ODRjNDE3ODAyNDRiNzE4OGIzMDI4OS4u
YmVkNDA1YWRmYjc3YjdkYjhjMGYyOTU0ZDVlMTdiM2I2ZDUyNTE5NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtMzAs
NyArMzAsMTggQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlN5bWJvbC5oIgogI2luY2x1
ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSopOwor
Cit9CisKKyNpbmNsdWRlICJTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTM4LDYgKzQ5LDEzIEBACiAKIGNvbnN0IENsYXNzSW5mbyBTeW1ib2xDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFN5bWJvbENvbnN0cnVjdG9yKSB9OwogCisvKiBTb3VyY2UgZm9yIFN5bWJvbENv
bnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gc3ltYm9sQ29uc3RydWN0b3JUYWJsZQorICBmb3IgICAg
ICAgc3ltYm9sQ29uc3RydWN0b3JGb3IgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBrZXlG
b3IgICAgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVu
ZAorKi8KKwogU3ltYm9sQ29uc3RydWN0b3I6OlN5bWJvbENvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUp
CiB7CkBAIC01NSw2ICs3MywxMyBAQCB2b2lkIFN5bWJvbENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSogcHJvdG90eXBlKQogICAgIEpTQ19DT01NT05f
UFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfV0VM
TF9LTk9XTl9TWU1CT0xTKQogfQogCitib29sIFN5bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBzeW1ib2xDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8
U3ltYm9sQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
U3ltYm9sKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIGRlc2NyaXB0aW9uID0gZXhl
Yy0+YXJndW1lbnQoMCk7CkBAIC03NCw0ICs5OSwzMyBAQCBDYWxsVHlwZSBTeW1ib2xDb25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVy
biBDYWxsVHlwZUhvc3Q7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9s
Q29uc3RydWN0b3JGb3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTU3RyaW5nKiBzdHJpbmdL
ZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgU3RyaW5nIHN0cmluZyA9IHN0cmluZ0tleS0+dmFsdWUoZXhlYyk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworCisgICAgUmVmPFN0cmluZ0ltcGw+IHVpZCA9IGV4ZWMtPnZtKCkuc3lt
Ym9sUmVnaXN0cnkoKS0+c3ltYm9sRm9yS2V5KHN0cmluZyk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBzdGF0aWNfY2FzdDxBdG9taWNTdHJp
bmdJbXBsKj4oJnVpZC5nZXQoKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1
ZSBzeW0gPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXN5bS5pc1N5bWJvbCgpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAg
IFN5bWJvbCogc3ltYm9sID0gYXNTeW1ib2woc3ltKTsKKyAgICBBdG9taWNTdHJpbmdJbXBsKiB1
aWQgPSBzeW1ib2wtPnByaXZhdGVOYW1lKCkudWlkKCk7CisgICAgQVNTRVJUKHVpZC0+aXNTeW1i
b2woKSk7CisgICAgaWYgKCF1aWQtPnN5bWJvbFJlZ2lzdHJ5KCkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBBU1NFUlQodWlkLT5zeW1ib2xS
ZWdpc3RyeSgpID09IGV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCB1aWQtPnN5bWJvbFJlZ2lzdHJ5KCktPmtleUZv
clN5bWJvbCh1aWQpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgKaW5kZXggMGFlMTJkN2Zk
ZDVjNDI0YmI2OWEyNmQxZGMxM2FlMDgwODRhNjgzOS4uZTU2MzcxMzMwMThmMmQ1YTI3NzE3YzVi
Yjk0YjdhMjYzOTRjOTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xDb25zdHJ1Y3Rvci5oCkBAIC01NSwxMCArNTUsMTMgQEAgY2xhc3MgU3ltYm9sQ29u
c3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN5bWJvbFByb3RvdHlwZSopOwogCisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKIHByaXZhdGU6CiAgICAgU3ltYm9sQ29uc3RydWN0
b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKaW5kZXggNjFlNDU4MmNmMjYxYjYzNmQxZWJlMzJmMDQ0YTJiMjg3M2UxZDFlNy4uODEx
NTQwMWFiMzFjNDY0MzQyZDhhYWE3MDMyMmVmYWJlM2E2NDA1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcApAQCAtODcsMTMgKzg3LDE0IEBACiAjaW5jbHVkZSAiVW5saW5rZWRD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vh
a01hcERhdGEuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRl
IDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1Rh
YmxlLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3ltYm9sUmVnaXN0cnkuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQogI2luY2x1ZGUgIkNvbnNl
cnZhdGl2ZVJvb3RzLmgiCkBAIC0xNTQsNiArMTU1LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNz
ZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgLCB0
b3BWTUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5v
Q2FsbGVyKCkpCiAgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8g
d3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFi
bGUpCisgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpTeW1ib2xS
ZWdpc3RyeT4oKSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlz
dChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCiAgICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGE0NmEzNzYwZDRmZWExOWRhOTQ4NTI3ODU2
ZTZhNjNmNmZjMDhlYWMuLjdjZjY5MDAzNmUyNTU2MmJkNGY1MjdkM2VlZTg3ZGIyYTY0ODlmMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVj
aWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNp
ZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBA
IC0yNzgsNiArMjc5LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Vk0+IHsKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAK
ICAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9hdG9taWNTdHJpbmdUYWJsZTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V1RGOjpTeW1ib2xSZWdpc3RyeT4gbV9zeW1ib2xSZWdpc3RyeTsKICAgICBDb21t
b25JZGVudGlmaWVycyogcHJvcGVydHlOYW1lczsKICAgICBjb25zdCBNYXJrZWRBcmd1bWVudEJ1
ZmZlciogZW1wdHlMaXN0OyAvLyBMaXN0cyBhcmUgc3VwcG9zZWQgdG8gYmUgYWxsb2NhdGVkIG9u
IHRoZSBzdGFjayB0byBoYXZlIHRoZWlyIGVsZW1lbnRzIHByb3Blcmx5IG1hcmtlZCwgd2hpY2gg
aXMgbm90IHRoZSBjYXNlIGhlcmUgLSBidXQgdGhpcyBsaXN0IGhhcyBub3RoaW5nIHRvIG1hcmsu
CiAgICAgU21hbGxTdHJpbmdzIHNtYWxsU3RyaW5nczsKQEAgLTI4OCw2ICsyOTAsNyBAQCBjbGFz
cyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxKU1N0
cmluZz4gbGFzdENhY2hlZFN0cmluZzsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNT
dHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXRvbWljU3RyaW5nVGFibGU7IH0KKyAgICBX
VEY6OlN5bWJvbFJlZ2lzdHJ5KiBzeW1ib2xSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVn
aXN0cnkuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0SW5EZWZpbmVPd25Qcm9wZXJ0eShib29sIGlu
RGVmaW5lT3duUHJvcGVydHkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1yZWdpc3RyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjVjYTFmNWUy
MDJhYjhiNzJjZmMxZDc2ZTVjNDA1MjdkMGFjNTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanMKQEAgLTAsMCAr
MSw3MSBAQAorZnVuY3Rpb24gdGVzdChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsg
YWN0dWFsKTsKK30KKwordmFyIGhlbGxvID0gU3ltYm9sKCJIZWxsbyIpOwordmFyIHByb3RvID0g
U3ltYm9sKCJfX3Byb3RvX18iKTsKKworZm9yICh2YXIgc3ltIG9mIFsgaGVsbG8sIHByb3RvLCBT
eW1ib2wuaXRlcmF0b3IgXSkgeworICAgIHZhciBrZXkgPSBTeW1ib2wua2V5Rm9yKHN5bSk7Cisg
ICAgdGVzdChrZXksIHVuZGVmaW5lZCk7CisgICAgLy8gdHdpY2UKKyAgICB2YXIga2V5ID0gU3lt
Ym9sLmtleUZvcihzeW0pOworICAgIHRlc3Qoa2V5LCB1bmRlZmluZWQpOworfQorCitmb3IgKHZh
ciBrZXkgb2YgWyAiSGVsbG8iLCAiX19wcm90b19fIiwgIlN5bWJvbC5pdGVyYXRvciIsIG51bGws
IHVuZGVmaW5lZCwgNDIsIDIwLjUsIHRydWUsIGZhbHNlLCB7fSwgZnVuY3Rpb24gKCkge30sIFtd
LCAnJyBdKSB7CisgICAgdmFyIHN5bSA9IFN5bWJvbC5mb3Ioa2V5KTsKKyAgICB0ZXN0KHR5cGVv
ZiBzeW0sICJzeW1ib2wiKTsKKyAgICB0ZXN0KHN5bS50b1N0cmluZygpLCAiU3ltYm9sKCIgKyBT
dHJpbmcoa2V5KSArICIpIik7CisKKyAgICB2YXIgc3ltMiA9IFN5bWJvbC5mb3Ioa2V5KTsKKyAg
ICB0ZXN0KHN5bSA9PT0gc3ltMiwgdHJ1ZSk7CisKKyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZv
cihzeW0pOworICAgIHRlc3Qoa2V5LCBrZXkpOworICAgIHZhciBrZXkgPSBTeW1ib2wua2V5Rm9y
KHN5bTIpOworICAgIHRlc3Qoa2V5LCBrZXkpOworfQorCit2YXIgZXJyb3IgPSBudWxsOwordHJ5
IHsKKyAgICB2YXIga2V5ID0geworICAgICAgICB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigndG9TdHJpbmcnKTsKKyAgICAgICAgfQorICAgIH07CisgICAgU3ltYm9s
LmZvcihrZXkpOworfSBjYXRjaCAoZSkgeworICAgIGVycm9yID0gZTsKK30KK2lmICghZXJyb3Ip
CisgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CitpZiAoU3RyaW5nKGVycm9yKSAh
PT0gJ0Vycm9yOiB0b1N0cmluZycpCisgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgZXJyb3I6ICcg
KyBTdHJpbmcoZXJyb3IpKTsKKwordmFyIGVsZW1lbnRzID0gWworICAgIG51bGwsCisgICAgdW5k
ZWZpbmVkLAorICAgIDQyLAorICAgIDIwLjUsCisgICAgdHJ1ZSwKKyAgICBmYWxzZSwKKyAgICAn
c3RyaW5nJywKKyAgICB7fSwKKyAgICBmdW5jdGlvbiAoKSB7fSwKKyAgICBbXSwKK107Citmb3Ig
KHZhciBpdGVtIG9mIGVsZW1lbnRzKSB7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkg
eworICAgICAgICBTeW1ib2wua2V5Rm9yKGl0ZW0pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gJ1R5cGVFcnJv
cjogVHlwZSBlcnJvcicpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIGVycm9yOiAnICsg
U3RyaW5nKGVycm9yKSk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ov
V1RGLnZjeHByb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCmluZGV4IDVk
MWRiN2RhMDlmN2Q4Y2U3YmNlNWE1ZmU4OTRlYWE4YzRlZWZkZDcuLmM3OGE4MTE1MmY0NzNhMzMz
MTY2MDYwZmI4YzcyNjliYTBlZWQ0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjeHBy
b2ovV1RGLnZjeHByb2oKKysrIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagpA
QCAtMTM0LDYgKzEzNCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxT
dHJpbmdJbXBsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0
cmluZ1N0YXRpY3MuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRc
U3RyaW5nVmlldy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxT
eW1ib2xSZWdpc3RyeS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4
dFxXVEZTdHJpbmcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRc
Y2ZcQXRvbWljU3RyaW5nQ0YuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3Rm
XHRleHRcY2ZcU3RyaW5nQ0YuY3BwIiAvPgpAQCAtMjk1LDYgKzI5Niw3IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdJbXBsLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdPcGVyYXRvcnMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ1ZpZXcuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN5bWJvbFJlZ2lzdHJ5LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHd0ZlxUaHJlYWRpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHd0ZlxUaHJlYWRpbmdQcmltaXRpdmVzLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dU
Ri52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dU
Ri52Y3hwcm9qLmZpbHRlcnMKaW5kZXggNTYxOTcyNjBlNzQ3YzIyMDc1NTg2NTczNWY3MWQxMmNl
NzM2MzkyMS4uZWYwM2I1NzBmZjMwNTc3OGFmODI2MGU0M2ZjNjc5MDA4Y2M3MmE0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwpAQCAtNzgsNiArNzgsOSBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3RyaW5nSW1wbC5jcHAiPgog
ICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTeW1ib2xSZWdpc3RyeS5jcHAiPgorICAgICAgPEZp
bHRlcj50ZXh0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcuY3BwIj4KICAgICAgIDxGaWx0ZXI+dGV4dDwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMzQyLDYgKzM0NSw5IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdWaWV3LmgiPgogICAgICAgPEZpbHRlcj53dGY8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
Zlx0ZXh0XFN5bWJvbFJlZ2lzdHJ5LmgiPgorICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+Cisg
ICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZT
dHJpbmcuaCI+CiAgICAgICA8RmlsdGVyPnRleHQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM3MTYyNGQ4Nzli
ZjQ4YTA5Mjg0MDY3MTUzMzFmZDQ0MDIzNmFlNWMuLjc4ZTVlZjlhZGE4ZDNlOTliYzAxNjljNzBh
MDczMzZkYTZlNTZhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNzQsNiArNzQsOCBAQAogCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9v
cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RF
RDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgKi87IH07CiAJCTJDREVEMEY0MTgx
MTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMjE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oICov
OyB9OwogCQk0MzBCNDc4OTFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzBCNDc4NzFBQUFBQzFB
MDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmggKi87IH07CisJCTcwQTk5M0ZFMUFENzE1MTMwMEZB
NjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0
cnkuY3BwICovOyB9OworCQk3MEE5OTNGRjFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQTk5
M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oICovOyB9OwogCQk3Q0JCQTA3
NDE5QkI3RkRDMDBCQkYwMjUgLyogT1NPYmplY3RQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQkJBMDczMTlCQjdGREMwMEJCRjAyNSAvKiBPU09i
amVjdFB0ci5oICovOyB9OwogCQk3Q0REN0ZGODE4NkQyOTFFMDA3NDMzQ0QgLyogSXRlcmF0b3JB
ZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NERDdGRjcxODZEMjkxRTAwNzQzM0NEIC8qIEl0ZXJhdG9yQWRhcHRvcnMuaCAqLzsgfTsKIAkJ
N0NERDdGRkExODZEMkE1NDAwNzQzM0NEIC8qIEl0ZXJhdG9yUmFuZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDREQ3RkY5MTg2RDJBNTQwMDc0MzND
RCAvKiBJdGVyYXRvclJhbmdlLmggKi87IH07CkBAIC0zNjIsNiArMzY0LDggQEAKIAkJNUQyNDdC
NzAxNDY4OUM0NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
MjQ3QjczMTQ2ODlDNDcwMEU3OEI3NiAvKiBXVEYueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV1RG
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTQxQ0FGNDE2MzBEQjI2
MDA2RDBERUMgLyogQ29weVdURkhlYWRlcnMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29u
ZmlnOyBwYXRoID0gQ29weVdURkhlYWRlcnMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcwQTk5M0ZDMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xSZWdpc3RyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAv
KiBTeW1ib2xSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1i
b2xSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQTA3MzE5QkI3
RkRDMDBCQkYwMjUgLyogT1NPYmplY3RQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gT1NPYmplY3RQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NERDdG
RjcxODZEMjkxRTAwNzQzM0NEIC8qIEl0ZXJhdG9yQWRhcHRvcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0b3JBZGFwdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3Q0REN0ZGOTE4NkQyQTU0MDA3NDMzQ0QgLyogSXRlcmF0b3JSYW5nZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRvclJhbmdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTQsNiArOTU4LDggQEAKIAkJCQk5M0YxOTkzRDE5RDc5
NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgKi8sCiAJCQkJQThBNDczMkExNTFBODI1QjAw
NDEyM0ZGIC8qIFN0cmluZ09wZXJhdG9ycy5oICovLAogCQkJCUE4QTQ3MzJCMTUxQTgyNUIwMDQx
MjNGRiAvKiBTdHJpbmdTdGF0aWNzLmNwcCAqLywKKwkJCQk3MEE5OTNGQzFBRDcxNTEzMDBGQTYx
NUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovLAorCQkJCTcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1
QiAvKiBTeW1ib2xSZWdpc3RyeS5oICovLAogCQkJCUE4QTQ3MzJDMTUxQTgyNUIwMDQxMjNGRiAv
KiBUZXh0UG9zaXRpb24uaCAqLywKIAkJCQlBOEE0NzMyRDE1MUE4MjVCMDA0MTIzRkYgLyogV1RG
U3RyaW5nLmNwcCAqLywKIAkJCQlBOEE0NzMyRTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5n
LmggKi8sCkBAIC0xMTI3LDYgKzExMzMsNyBAQAogCQkJCUE4QTQ3M0VFMTUxQTgyNUIwMDQxMjNG
RiAvKiBNZXRhQWxsb2NhdG9ySGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTQ2NTE2RTE5
REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
RDg1QjQxNzIzNENDMTAwMzM4MjEwIC8qIE5vTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBB
OTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNFRjE1MUE4MjVCMDA0MTIzRkYgLyogTm9uY29weWFibGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3M0Y1MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3RTI5QzMzRTE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVF
eHRyYXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTM3OCw2ICsxMzg1LDcgQEAKIAkJCQlBNUJBMTVG
QzE4MjQzNUE2MDBBODJFNjkgLyogU3RyaW5nSW1wbENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE1QkExNUY1MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJpbmdJbXBsTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTVCQTE1RjMxODI0MzNBOTAwQTgyRTY5IC8qIFN0cmluZ01hYy5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkREQkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5n
UHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDMxNTFBODI1QjAwNDEy
M0ZGIC8qIFN0cmluZ1N0YXRpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEEx
RjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKaW5kZXggZGMxOTA1NTQ2YzVlZjA1ZTFlMTFhMWQ3YzVjODNhYzM2NDA5OWYwZS4u
OWQ5M2FkNTk3ZDQ0MjAyYTk4OGQxZWYyMTcyY2ViN2FiMDQyOTBjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKQEAgLTEzMiw2ICsxMzIsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICB0ZXh0L1N0cmlu
Z0hhc2guaAogICAgIHRleHQvU3RyaW5nSW1wbC5oCiAgICAgdGV4dC9TdHJpbmdWaWV3LmgKKyAg
ICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKICAgICB0ZXh0L1dURlN0cmluZy5oCiAKICAgICB0aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5oCkBAIC0xOTksNiArMjAwLDcgQEAgc2V0KFdURl9TT1VSQ0VT
CiAgICAgdGV4dC9TdHJpbmdJbXBsLmNwcAogICAgIHRleHQvU3RyaW5nU3RhdGljcy5jcHAKICAg
ICB0ZXh0L1N0cmluZ1ZpZXcuY3BwCisgICAgdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKICAgICB0
ZXh0L1dURlN0cmluZy5jcHAKIAogICAgIHRocmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggOWZhYmYyYmFiMmVhNmMxYmRmNzI4MGJjNjY2
NTdlZDA2Zjk5OWY0OS4uZjU2OTkwMjBiOGYyOTM4ZTg2NTNlZTQzNzJkZGRkODRlOGIwN2Q0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJv
bFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KICNp
bmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Lmg+CiAKQEAgLTExMiw2ICsxMTMsOSBAQCB2b2lkIFN0
cmluZ1N0YXRzOjpwcmludFN0YXRzKCkKICAgICBpZiAoaXNBdG9taWMoKSAmJiBsZW5ndGgoKSAm
JiAhaXNTeW1ib2woKSkKICAgICAgICAgQXRvbWljU3RyaW5nOjpyZW1vdmUodGhpcyk7CiAKKyAg
ICBpZiAoaXNTeW1ib2woKSAmJiBzeW1ib2xSZWdpc3RyeSgpKQorICAgICAgICBzeW1ib2xSZWdp
c3RyeSgpLT5yZW1vdmUodGhpcyk7CisKICAgICBCdWZmZXJPd25lcnNoaXAgb3duZXJzaGlwID0g
YnVmZmVyT3duZXJzaGlwKCk7CiAKICAgICBpZiAob3duZXJzaGlwID09IEJ1ZmZlckludGVybmFs
KQpAQCAtMjg4LDEzICsyOTIsMjEgQEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0lt
cGwqIHN0cmluZ0ltcGwpCiAKIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVTeW1i
b2woUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0g
cmVwLT5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVN5
bWJvbEVtcHR5KCk7Ci0gICAgUmVmPFN0cmluZ0ltcGw+IHN0cmluZyA9IGNyZWF0ZVN1YnN0cmlu
Z1NoYXJpbmdJbXBsKHJlcCwgMCwgbGVuZ3RoKTsKLSAgICBBU1NFUlQoIXN0cmluZy0+aXNBdG9t
aWMoKSk7Ci0gICAgc3RyaW5nLT5tX2hhc2hBbmRGbGFncyA9IGhhc2hBbmRGbGFnc0ZvclN5bWJv
bChzdHJpbmctPm1faGFzaEFuZEZsYWdzKTsKLSAgICByZXR1cm4gc3RyaW5nOworICAgIFN0cmlu
Z0ltcGwqIG93bmVyUmVwID0gKHJlcC0+YnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3Ry
aW5nKSA/IHJlcC0+c3Vic3RyaW5nQnVmZmVyKCkgOiByZXAuZ2V0KCk7CisKKyAgICAvLyBXZSBh
bGxvY2F0ZSBhIGJ1ZmZlciB0aGF0IGNvbnRhaW5zCisgICAgLy8gMS4gdGhlIFN0cmluZ0ltcGwg
c3RydWN0CisgICAgLy8gMi4gdGhlIHBvaW50ZXIgdG8gdGhlIG93bmVyIHN0cmluZworICAgIC8v
IDMuIHRoZSBwb2ludGVyIHRvIHRoZSBzeW1ib2wgcmVnaXN0cnkKKyAgICBTdHJpbmdJbXBsKiBz
dHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KGZhc3RNYWxsb2MoYWxsb2NhdGlv
blNpemU8U3RyaW5nSW1wbCo+KDIpKSk7CisgICAgaWYgKHJlcC0+aXM4Qml0KCkpCisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKENy
ZWF0ZVN5bWJvbCwgcmVwLT5tX2RhdGE4LCBvd25lclJlcCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IChOb3ROdWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbCwgcmVw
LT5tX2RhdGExNiwgb3duZXJSZXApKTsKK30KKworUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0ZVN5bWJvbEVtcHR5KCkKK3sKKyAgICByZXR1cm4gY3JlYXRlU3ltYm9sKGVtcHR5KCkp
OwogfQogCiBib29sIFN0cmluZ0ltcGw6OmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBlMTRkNDUwOTA1YTYxNjYyZjdiNTcyODFmMjJiMDA1NzQ3
NzcyZTAyLi45MDQwZjI3MGU5ZjU2ZDVmMTllOTY3NDRhMjFiYTQwZGVmY2Q1N2RlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNTcsNiArNTcsNyBAQAogc3RydWN0IFN1YnN0cmluZ1Ry
YW5zbGF0b3I7CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogdGVtcGxhdGU8dHlwZW5h
bWU+IGNsYXNzIFJldGFpblB0cjsKK2NsYXNzIFN5bWJvbFJlZ2lzdHJ5OwogCiBlbnVtIFRleHRD
YXNlU2Vuc2l0aXZpdHkgewogICAgIFRleHRDYXNlU2Vuc2l0aXZlLApAQCAtMjkyLDE4ICsyOTMs
MzkgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRf
U1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgZW51bSBDcmVhdGVTeW1ib2xF
bXB0eVRhZyB7IENyZWF0ZVN5bWJvbEVtcHR5IH07Ci0gICAgU3RyaW5nSW1wbChDcmVhdGVTeW1i
b2xFbXB0eVRhZykKKyAgICBlbnVtIENyZWF0ZVN5bWJvbFRhZyB7IENyZWF0ZVN5bWJvbCB9Owor
ICAgIC8vIFVzZWQgdG8gY3JlYXRlIG5ldyBzeW1ib2wgc3RyaW5ncyB0aGF0IGhvbGRzIGV4aXN0
aW5nIDgtYml0IFtbRGVzY3JpcHRpb25dXSBzdHJpbmcgYXMgYSBzdWJzdHJpbmcgYnVmZmVyIChC
dWZmZXJTdWJzdHJpbmcpLgorICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBjb25zdCBM
Q2hhciogY2hhcmFjdGVycywgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBiYXNlKQogICAgICAgICA6
IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKLSAgICAgICAgLCBtX2xlbmd0aCgwKQot
ICAgICAgICAvLyBXZSBleHBlY3QgbV9sZW5ndGggdG8gYmUgaW5pdGlhbGl6ZWQgdG8gMCBhcyB3
ZSB1c2UgaXQKLSAgICAgICAgLy8gdG8gcmVwcmVzZW50IGEgbnVsbCB0ZXJtaW5hdGVkIGJ1ZmZl
ci4KLSAgICAgICAgLCBtX2RhdGE4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9s
ZW5ndGgpKQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclN5bWJvbChz
X2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKSkKKyAgICAgICAgLCBtX2xlbmd0
aChiYXNlLT5sZW5ndGgoKSkKKyAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMpCisgICAgICAg
ICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yU3ltYm9sKHNfaGFzaEZsYWc4Qml0QnVm
ZmVyIHwgU3RyaW5nU3ltYm9sIHwgQnVmZmVyU3Vic3RyaW5nKSkKICAgICB7CisgICAgICAgIEFT
U0VSVChpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKKyAgICAgICAgQVNTRVJU
KGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CiAKLSAgICAgICAg
U1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0aCk7CisgICAgICAgIHN1YnN0cmlu
Z0J1ZmZlcigpID0gYmFzZS5sZWFrUmVmKCk7CisgICAgICAgIHN5bWJvbFJlZ2lzdHJ5KCkgPSBu
dWxscHRyOworCisgICAgICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJTkcyKG1fbGVuZ3Ro
LCB0cnVlKTsKKyAgICB9CisKKyAgICAvLyBVc2VkIHRvIGNyZWF0ZSBuZXcgc3ltYm9sIHN0cmlu
Z3MgdGhhdCBob2xkcyBleGlzdGluZyAxNi1iaXQgW1tEZXNjcmlwdGlvbl1dIHN0cmluZyBhcyBh
IHN1YnN0cmluZyBidWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCisgICAgU3RyaW5nSW1wbChDcmVh
dGVTeW1ib2xUYWcsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGJhc2UpCisgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQorICAg
ICAgICAsIG1fbGVuZ3RoKGJhc2UtPmxlbmd0aCgpKQorICAgICAgICAsIG1fZGF0YTE2KGNoYXJh
Y3RlcnMpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yU3ltYm9sKFN0
cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykpCisgICAgeworICAgICAgICBBU1NFUlQoIWlz
OEJpdCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKKyAgICAgICAgQVNTRVJUKGJhc2Ut
PmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CisKKyAgICAgICAgc3Vic3Ry
aW5nQnVmZmVyKCkgPSBiYXNlLmxlYWtSZWYoKTsKKyAgICAgICAgc3ltYm9sUmVnaXN0cnkoKSA9
IG51bGxwdHI7CisKKyAgICAgICAgU1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVu
Z3RoLCB0cnVlKTsKICAgICB9CiAKICAgICB+U3RyaW5nSW1wbCgpOwpAQCAtMzk3LDExICs0MTks
NyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEludGVybmFs
PFQ+KHJlc3VsdEltcGwsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbEVtcHR5KCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sRW1wdHkpKTsKLSAgICB9
Ci0KKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGVTeW1ib2xFbXB0eSgpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0
cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcCk7CiAKICAg
ICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBsLiBUaGUgb3JpZ2luYWxTdHJpbmcgbXVzdCBi
ZSBvbmx5IG93bmVkIGJ5IHRoZSBQYXNzUmVmUHRyLApAQCAtNzQzLDcgKzc2MSw2IEBAIGNsYXNz
IFN0cmluZ0ltcGwgewogCiAgICAgU3RyaW5nSW1wbCYgZXh0cmFjdEZvbGRlZFN0cmluZ0luU3lt
Ym9sKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChsZW5ndGgoKSk7CiAgICAgICAgIEFTU0VSVChp
c1N5bWJvbCgpKTsKICAgICAgICAgQVNTRVJUKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1
YnN0cmluZyk7CiAgICAgICAgIEFTU0VSVChzdWJzdHJpbmdCdWZmZXIoKSk7CkBAIC03NTEsNiAr
NzY4LDE4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICByZXR1cm4gKnN1YnN0cmluZ0J1
ZmZlcigpOwogICAgIH0KIAorICAgIFN5bWJvbFJlZ2lzdHJ5KiBjb25zdCYgc3ltYm9sUmVnaXN0
cnkoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOworICAgICAgICBy
ZXR1cm4gKih0YWlsUG9pbnRlcjxTeW1ib2xSZWdpc3RyeSo+KCkgKyAxKTsKKyAgICB9CisKKyAg
ICBTeW1ib2xSZWdpc3RyeSomIHN5bWJvbFJlZ2lzdHJ5KCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChpc1N5bWJvbCgpKTsKKyAgICAgICAgcmV0dXJuICoodGFpbFBvaW50ZXI8U3ltYm9sUmVnaXN0
cnkqPigpICsgMSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkg
Y29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY3Y2NhNTZlMjIwYWNjY2E4N2RiZGU4OTg3MWZmN2Y3ZTFjYmY3NGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcApAQCAtMCwwICsx
LDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEzLTIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sg
R2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU3ltYm9sUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIkhhc2hTZXQuaCIKKyNp
bmNsdWRlICJJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFz
aC5oIgorI2luY2x1ZGUgIlRocmVhZGluZy5oIgorI2luY2x1ZGUgIldURlRocmVhZERhdGEuaCIK
KyNpbmNsdWRlICJkdG9hLmgiCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgorCisjaWYg
VVNFKFdFQl9USFJFQUQpCisjaW5jbHVkZSAiU3BpbkxvY2suaCIKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV1RGIHsKKworI2lmIFVTRShXRUJfVEhSRUFEKQorCitjbGFzcyBTeW1ib2xSZWdpc3RyeUxv
Y2tlciA6IHB1YmxpYyBTcGluTG9ja0hvbGRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U3ltYm9sUmVnaXN0cnlMb2NrZXIpOworcHVibGljOgorICAgIFN5bWJvbFJlZ2lzdHJ5TG9ja2Vy
KFN5bWJvbFJlZ2lzdHJ5KiBzeW1ib2xSZWdpc3RyeSkKKyAgICAgICAgOiBTcGluTG9ja0hvbGRl
cihzeW1ib2xSZWdpc3RyeS0+c3BpbkxvY2soKSkKKyAgICB7CisgICAgfQorfTsKKworI2Vsc2UK
KworY2xhc3MgU3ltYm9sUmVnaXN0cnlMb2NrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFN5bWJvbFJlZ2lzdHJ5TG9ja2VyKTsKK3B1YmxpYzoKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tl
cihTeW1ib2xSZWdpc3RyeSopIHsgfQorfTsKKworI2VuZGlmIC8vIFVTRShXRUJfVEhSRUFEKQor
CitTeW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkoKQorICAgIDogbV90YWJsZSgpCisjaWYg
VVNFKFdFQl9USFJFQUQpCisgICAgLCBtX3NwaW5Mb2NrKCkKKyNlbmRpZgoreworfQorCitTeW1i
b2xSZWdpc3RyeTo6flN5bWJvbFJlZ2lzdHJ5KCkKK3sKKyAgICBmb3IgKGF1dG8gc3RyaW5nIDog
bV90YWJsZSkKKyAgICAgICAgc3RyaW5nLmltcGwtPnN5bWJvbFJlZ2lzdHJ5KCkgPSBudWxscHRy
OworfQorCitSZWY8U3RyaW5nSW1wbD4gU3ltYm9sUmVnaXN0cnk6OnN5bWJvbEZvcktleShTdHJp
bmcgcmVwKQoreworICAgIFN5bWJvbFJlZ2lzdHJ5TG9ja2VyIGxvY2tlcih0aGlzKTsKKworICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV90YWJsZS5hZGQoU3ltYm9sS2V5KHJlcC5pbXBsKCkpKTsKKyAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgUmVmPFN0cmluZ0ltcGw+IHN5
bWJvbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChyZXAuaW1wbCgpKTsKKyAgICAgICAgc3lt
Ym9sLT5zeW1ib2xSZWdpc3RyeSgpID0gdGhpczsKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT5pbXBsID0gJnN5bWJvbC5nZXQoKTsKKyAgICAgICAgcmV0dXJuIHN5bWJvbDsKKyAgICB9Cisg
ICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPmltcGw7Cit9CisKK1N0cmluZyBTeW1ib2xS
ZWdpc3RyeTo6a2V5Rm9yU3ltYm9sKFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTeW1ib2xSZWdp
c3RyeUxvY2tlciBsb2NrZXIodGhpcyk7CisKKyAgICBBU1NFUlQodWlkLT5pc1N5bWJvbCgpKTsK
KyAgICBBU1NFUlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpKTsKKyAgICByZXR1cm4gdWlkLT5leHRy
YWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKTsKK30KKwordm9pZCBTeW1ib2xSZWdpc3RyeTo6cmVt
b3ZlKFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tlciBsb2NrZXIo
dGhpcyk7CisKKyAgICBBU1NFUlQodWlkLT5pc1N5bWJvbCgpKTsKKyAgICBBU1NFUlQodWlkLT5z
eW1ib2xSZWdpc3RyeSgpID09IHRoaXMpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3RhYmxlLmZp
bmQoU3ltYm9sS2V5KHVpZCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0g
bV90YWJsZS5lbmQoKSwgIlRoZSBzdHJpbmcgYmVpbmcgcmVtb3ZlZCBpcyByZWdpc3RlcmVkIGlu
IHRoZSBzdHJpbmcgdGFibGUgb2YgYW4gb3RoZXIgdGhyZWFkISIpOworICAgIG1fdGFibGUucmVt
b3ZlKGl0ZXJhdG9yKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xSZWdpc3RyeS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjExOWUzMjk3ZjQ5YmUwNDNhMjE0ODdhNDQ4MWIwZTU0MzViZDc5ZTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKQEAgLTAs
MCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aWZuZGVmIFdURl9TeW1ib2xSZWdpc3RyeV9oCisjZGVmaW5lIFdURl9TeW1ib2xSZWdpc3RyeV9o
CisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRh
Lmg+CisjaWYgVVNFKFdFQl9USFJFQUQpCisjaW5jbHVkZSA8d3RmL1NwaW5Mb2NrLmg+CisjZW5k
aWYKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBTdHJpbmdJbXBsOworCitj
bGFzcyBTeW1ib2xSZWdpc3RyeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU3ltYm9sUmVnaXN0cnkpOworcHVibGljOgorICAgIFdURl9F
WFBPUlRfUFJJVkFURSBTeW1ib2xSZWdpc3RyeSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+
U3ltYm9sUmVnaXN0cnkoKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1w
bD4gc3ltYm9sRm9yS2V5KFN0cmluZyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBr
ZXlGb3JTeW1ib2woU3RyaW5nSW1wbCogdWlkKTsKKworICAgIHZvaWQgcmVtb3ZlKFN0cmluZ0lt
cGwqIHVpZCk7CisKKyAgICAvLyBTaW5jZSBTdHJpbmdJbXBsKiB1c2VkIGZvciBTeW1ib2wgdWlk
IGRvZXNuJ3QgaGF2ZSBhIGhhc2ggdmFsdWUgcmVmbGVjdGluZyB0aGUgc3RyaW5nIGNvbnRlbnQu
CisgICAgLy8gVG8gY29tcGFyZSB3aXRoIGFuIGV4dGVybmFsIHN0cmluZyBpbiBzdHJpbmcgY29u
dGVudHMsIGludHJvZHVjZSBTeW1ib2xLZXksCisgICAgLy8gdGhhdCBob2xkcyBhIGhhc2ggdmFs
dWUgcmVmbGVjdGluZyB0aGUgc3RyaW5nIGNvbnRlbnQgYWRkaXRpb25hbGx5LgorICAgIHN0cnVj
dCBTeW1ib2xLZXkgeworICAgICAgICBTeW1ib2xLZXkoKTsKKyAgICAgICAgZXhwbGljaXQgU3lt
Ym9sS2V5KFN0cmluZ0ltcGwqKTsKKworICAgICAgICBTdHJpbmdJbXBsKiBpbXBsOworICAgICAg
ICB1bnNpZ25lZCBoYXNoOworICAgIH07CisKKyAgICBzdHJ1Y3QgSGFzaGVyIHsKKyAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3ltYm9sS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5o
YXNoOyB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN5bWJvbEtleSYgYSwgY29u
c3QgU3ltYm9sS2V5JiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjplcXVh
bChhLmltcGwsIGIuaW1wbCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3QgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKKyAgICBz
dHJ1Y3QgSGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPFN5bWJvbEtleT4geworICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFN5bWJvbEtleSYga2V5KQorICAgICAgICB7
CisgICAgICAgICAgICBrZXkuaW1wbCA9IG51bGxwdHI7CisgICAgICAgICAgICBrZXkuaGFzaCA9
IDB4ZGVhZGJlZWZVOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKGNvbnN0IFN5bWJvbEtleSYga2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
a2V5LmltcGwgPT0gbnVsbHB0ciAmJiBrZXkuaGFzaCA9PSAweGRlYWRiZWVmVTsKKyAgICAgICAg
fQorICAgIH07CisKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyAgICBTcGluTG9jayYgc3BpbkxvY2so
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3BpbkxvY2s7CisgICAgfQorI2VuZGlmCisKK3By
aXZhdGU6CisgICAgSGFzaFNldDxTeW1ib2xLZXksIEhhc2hlciwgSGFzaFRyYWl0cz4gbV90YWJs
ZTsKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyAgICBTcGluTG9jayBtX3NwaW5Mb2NrOworI2VuZGlm
Cit9OworCitpbmxpbmUgU3ltYm9sUmVnaXN0cnk6OlN5bWJvbEtleTo6U3ltYm9sS2V5KCkKKyAg
ICA6IGltcGwobnVsbHB0cikKKyAgICAsIGhhc2goMCkKK3sKK30KKworaW5saW5lIFN5bWJvbFJl
Z2lzdHJ5OjpTeW1ib2xLZXk6OlN5bWJvbEtleShTdHJpbmdJbXBsKiBpbXBsKQorICAgIDogaW1w
bChpbXBsKQorICAgICwgaGFzaCgwKQoreworICAgIGlmIChpbXBsLT5pc1N5bWJvbCgpKQorICAg
ICAgICBoYXNoID0gaW1wbC0+ZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKCkuaGFzaCgpOwor
ICAgIGVsc2UKKyAgICAgICAgaGFzaCA9IGltcGwtPmhhc2goKTsKK30KKworaW5saW5lIGJvb2wg
ZXF1YWwoY29uc3QgU3ltYm9sUmVnaXN0cnk6OlN5bWJvbEtleSYgYSwgY29uc3QgU3ltYm9sUmVn
aXN0cnk6OlN5bWJvbEtleSYgYikKK3sKKyAgICByZXR1cm4gZXF1YWwoYS5pbXBsLCBiLmltcGwp
OworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN5bWJvbFJlZ2lzdHJ5OjpTeW1i
b2xLZXkmIGEsIGNvbnN0IFN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xLZXkmIGIpCit7CisgICAgcmV0
dXJuIGVxdWFsKGEsIGIpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN5bWJv
bFJlZ2lzdHJ5OjpTeW1ib2xLZXkmIGEsIGNvbnN0IFN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xLZXkm
IGIpCit7CisgICAgcmV0dXJuICFlcXVhbChhLCBiKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA5MGQ0YjhmNGRjZmRkYTJlZGRmZGZlNWQ4ZWUwZTg3NmE0ZDE4MDc0Li5hYTg0MjRhYTQyNzVi
NTgwNDc2ZDgxODRlOGFiYThmNjZmNzBkY2Y2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUt
MDQtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0VTNl0gSW1wbGVtZW50IFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQwNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byBjaGVjayBT
eW1ib2wncyBpZGVudGl0eSBvdmVyIGRpZmZlcmVudCByZWFsbXMuCisKKyAgICAgICAgKiBqcy9k
b20vY3Jvc3MtZnJhbWUtc3ltYm9scy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpz
L2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9z
Y3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qczogQWRkZWQuCisKIDIwMTUtMDQtMDkg
IEh1bnNlb3AgSmVvbmcgIDxoczg1Lmplb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxd
IGZhc3QvY3NzL3ZlcnRpY2FsLXRleHQtb3ZlcmZsb3ctZWxsaXBzaXMtdGV4dC1hbGlnbi1jZW50
ZXIuaHRtbCBpcyBmYWlsaW5nIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3Nz
LWZyYW1lLXN5bWJvbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZy
YW1lLXN5bWJvbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYmExYTk5YWQ1YTcwOGIxNjU3
YWMwMGQ4NzExODE0NTE1ZjU0NzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9k
b20vY3Jvc3MtZnJhbWUtc3ltYm9scy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVz
dHMgU3ltYm9sIGFuZCBnbG9iYWwgc3ltYm9sIHJlZ2lzdHJ5IGlkZW50aXR5CisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZyYW1lLlN5bWJvbC5pdGVyYXRvciBpcyBTeW1i
b2wuaXRlcmF0b3IKK1BBU1MgZnJhbWUuU3ltYm9sKCdIZWxsbycpIGlzIG5vdCBTeW1ib2woJ0hl
bGxvJykKK1BBU1MgU3ltYm9sLmtleUZvcihzeW0pIGlzICdIZWxsbycKK1BBU1MgZnJhbWUuU3lt
Ym9sLmtleUZvcihzeW0pIGlzICdIZWxsbycKK1BBU1MgU3ltYm9sLmZvcignSGVsbG8nKSBpcyBz
eW0KK1BBU1MgZnJhbWUuU3ltYm9sLmZvcignSGVsbG8nKSBpcyBzeW0KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9t
L2Nyb3NzLWZyYW1lLXN5bWJvbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjM2MjdjMWNmNWRkZDIyNDAw
OWJjZGZjMWI3MjJlOGIwZjk2NWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxpZnJhbWU+PC9pZnJhbWU+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L2Nyb3NzLWZyYW1lLXN5bWJvbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1i
b2xzLmpzIGIvTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1i
b2xzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ3OGVhZjM3ZjFmMDdmOTNhY2M5NTFkMTk5ODY4ZDYwZGVmNDhj
ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2Ny
b3NzLWZyYW1lLXN5bWJvbHMuanMKQEAgLTAsMCArMSwxMiBAQAorZGVzY3JpcHRpb24oIlRlc3Rz
IFN5bWJvbCBhbmQgZ2xvYmFsIHN5bWJvbCByZWdpc3RyeSBpZGVudGl0eSIpOworCit2YXIgZnJh
bWUgPSBmcmFtZXNbMF07CisKK3Nob3VsZEJlKCJmcmFtZS5TeW1ib2wuaXRlcmF0b3IiLCAiU3lt
Ym9sLml0ZXJhdG9yIik7CitzaG91bGROb3RCZSgiZnJhbWUuU3ltYm9sKCdIZWxsbycpIiwgIlN5
bWJvbCgnSGVsbG8nKSIpOworCit2YXIgc3ltID0gU3ltYm9sLmZvcigiSGVsbG8iKTsKK3Nob3Vs
ZEJlKCJTeW1ib2wua2V5Rm9yKHN5bSkiLCAiJ0hlbGxvJyIpOworc2hvdWxkQmUoImZyYW1lLlN5
bWJvbC5rZXlGb3Ioc3ltKSIsICInSGVsbG8nIik7CitzaG91bGRCZSgiU3ltYm9sLmZvcignSGVs
bG8nKSIsICJzeW0iKTsKK3Nob3VsZEJlKCJmcmFtZS5TeW1ib2wuZm9yKCdIZWxsbycpIiwgInN5
bSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250478</attachid>
            <date>2015-04-09 15:53:14 -0700</date>
            <delta_ts>2015-04-09 16:08:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143404-20150410075222.patch</filename>
            <type>text/plain</type>
            <size>43567</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDhhYzlhNDAwYmQ0NjFlNTU4ZDBkNzQ1MGFjZWRiNjI4MzRlNDg2Li4wMTY5Y2NjZDQyZDgyYzMz
MTM3ZTA0NGY3YWFkMTA3YTRiOGYyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxNS0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtl
eUZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IuCisgICAgICAg
IFN5bWJvbFJlZ2lzdHJ5IG1haW50YWlucyByZWdpc3RlcmVkIFN0cmluZ0ltcGwqIHN5bWJvbHMu
CisgICAgICAgIEFuZCB0byBtYWtlIHRoaXMgbWFwcGluZyBlbmFibGVkIG92ZXIgcmVhbG1zLAor
ICAgICAgICBWTSBvd25zIHRoaXMgbWFwcGluZyAobm90IEpTR2xvYmFsT2JqZWN0KS4KKworICAg
ICAgICBXaGlsZSB0aGVyZSdzIERlZmF1bHQgQXRvbWljU3RyaW5nVGFibGUgcGVyIHRocmVhZCwK
KyAgICAgICAgU3ltYm9sUmVnaXN0cnkgc2hvdWxkIG5vdCBleGlzdCBvdmVyIFZNcy4KKyAgICAg
ICAgU28gZXZlcnl0aW1lIFZNIGlzIGNyZWF0ZWQsIFN5bWJvbFJlZ2lzdHJ5IGlzIGFsc28gY3Jl
YXRlZC4KKworICAgICAgICBJbiBTeW1ib2xSZWdpc3RyeSBpbXBsZW1lbnRhdGlvbiwgd2UgZG9u
J3QgbGV2ZXJhZ2UgV2Vha0dDTWFwIChvciB3ZWFrIHJlZmVyZW5jZSBkZXNpZ24pLgorICAgICAg
ICBUaGVyZXMgYXJlIHNldmVyYWwgcmVhc29ucy4KKyAgICAgICAgMS4gU3RyaW5nSW1wbCogd2hp
Y2ggcmVwcmVzZW50cyBpZGVudGl0eSBvZiBTeW1ib2xzIGlzIG5vdCBHQy1tYW5hZ2VkIG9iamVj
dC4KKyAgICAgICAgICAgU28gd2UgY2Fubm90IHVzZSBXZWFrR0NNYXAgZGlyZWN0bHkuCisgICAg
ICAgICAgIFdoaWxlIFN5bWJvbCogaXMgR0MtbWFuYWdlZCBvYmplY3QsIGhvbGRpbmcgd2VhayBy
ZWZlcmVuY2UgdG8gU3ltYm9sKiBkb2Vzbid0IG1haW50YWluIEpTIHN5bWJvbHMgKGV4cG9zZWQg
cHJpbWl0aXZlIHZhbHVlcyB0byB1c2VycykgbGl2ZW5lc3MsCisgICAgICAgICAgIGJlY2F1c2Ug
ZGlzdGluY3QgU3ltYm9sKiBjYW4gZXhpc3QuCisgICAgICAgICAgIERpc3RpbmN0IFN5bWJvbCog
bWVhbnMgdGhlIFN5bWJvbCogb2JqZWN0IHRoYXQgcG9pbnRlciB2YWx1ZSAoU3ltYm9sKikgaXMg
ZGlmZmVyZW50IGZyb20gd2Vha2x5IHJlZmVyZW5jZWQgU3ltYm9sKiBidXQgaGVsZCBTdHJpbmdJ
bXBsKiBpcyB0aGUgc2FtZS4KKworICAgICAgICAyLiBXZSBkb24ndCB1c2UgV1RGOjpXZWFrUHRy
LiBJZiB3ZSBhZGQgV2Vha1B0ckZhY3RvcnkgaW50byBTdHJpbmdJbXBsJ3MgbWVtYmVyLCB3ZSBj
YW4gdHJhY2sgU3RyaW5nSW1wbConcyBsaXZlbmVzcyBieSBXZWFrUHRyLgorICAgICAgICAgICBI
b3dldmVyIHRoZXJlJ3MgcHJvYmxlbSBhYm91dCB3aGVuIHdlIHBydW5lIHN0YWxlZCBlbnRyaWVz
IGluIFN5bWJvbFJlZ2lzdHJ5LgorICAgICAgICAgICBTaW5jZSB0aGUgbWVtb3J5IGFsbG9jYXRl
ZCBmb3IgdGhlIFN5bWJvbCBpcyB0eXBpY2FsbHkgb2NjdXBpZWQgYnkgYWxsb2NhdGVkIHN5bWJv
bGl6ZWQgU3RyaW5nSW1wbConcyBjb250ZW50LAorICAgICAgICAgICBhbmQgaXQgaXMgbm90IGlu
IEdDLWhlYXAuCisgICAgICAgICAgIFdoaWxlIGhlYXZpbHkgcmVnaXN0ZXJpbmcgU3ltYm9scyBh
bmQgc3RvcmluZyBTdHJpbmdJbXBsKiBpbnRvIFN5bWJvbFJlZ2lzdHJ5LCBIZWFwJ3MgRWRlblNw
YWNlIGlzIG5vdCBzbyBvY2N1cGllZC4KKyAgICAgICAgICAgU28gR0MgdHlwaWNhbGx5IGF0dGVt
cHQgdG8gcGVyZm9ybSBFZGVuQ29sbGVjdGlvbiwgYW5kIGl0IGRvZXNuJ3QgY2FsbCBXZWFrR0NN
YXAncyBwcnVsZVN0YWxlRW50cmllcyBjYWxsYmFjay4KKyAgICAgICAgICAgQXMgYSByZXN1bHQs
IGJlZm9yZSBwcnVuaW5nIHN0YWxlZCBlbnRyaWVzIGluIFN5bWJvbFJlZ2lzdHJ5LCBmYXN0IG1h
bGxvYy1lZCBtZW1vcnkgZmlsbHMgdXAgdGhlIHN5c3RlbSBtZW1vcnkuCisKKyAgICAgICAgU28g
aW5zdGVhZCBvZiB1c2luZyBXZWFrIHJlZmVyZW5jZSwgd2UgdGFrZSByZWxhdGl2ZWx5IGVhc3kg
ZGVzaWduLgorICAgICAgICBXaGVuIHdlIHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCog
aW50byBTeW1ib2xSZWdpc3RyeSwgc3ltYm9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0
aGF0LgorICAgICAgICBBbmQgd2hlbiBkZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVm
ZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28g
d2l0aCBBdG9taWNTdHJpbmdUYWJsZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvckZvcik6CisgICAgICAg
IChKU0M6OnN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6c3lt
Ym9sUmVnaXN0cnkpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanM6
IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTUtMDQtMDggIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UganNOb250cml2aWFsU3RyaW5nIGlu
IG1vcmUgcGxhY2VzIGlmIHRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSAyIG9yIG1vcmUg
Y2hhcmFjdGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBlYzc5NjkxNDllOWNiMGJiNDJiZTQzOWQ2MzliY2MxNGEzMWE5NTk3
Li4wOWUwNTM1NGQ4NjhiN2UwYjFhN2ZhZGMxMDJjZmQ1N2E5YzgxNjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU2IEBACisyMDE1LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBTeW1ib2wuZm9yIGFuZCBTeW1ib2wua2V5Rm9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0MDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHdl
IHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCogaW50byBTeW1ib2xSZWdpc3RyeSwgc3lt
Ym9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0aGF0LgorICAgICAgICBBbmQgd2hlbiBk
ZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVmZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0
cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28gd2l0aCBBdG9taWNTdHJpbmdUYWJsZS4K
KyAgICAgICAgV2hpbGUgQXRvbWljU3RyaW5nVGFibGUgKGluIFdlYkNvcmUgY2FzZSkgZXhpc3Rz
IGluIHRocmVhZCBsb2NhbCBzdG9yYWdlLAorICAgICAgICBTeW1ib2xSZWdpc3RyeSBleGlzdHMg
cGVyIFZNIGFuZCBTdHJpbmdJbXBsKiBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHJlZ2lzdGVyZWQg
U3ltYm9sUmVnaXN0cnkuCisKKyAgICAgICAgU2luY2UgU3RyaW5nSW1wbCBoYXMgaXNTeW1ib2wg
ZXRjLiBtZW1iZXJzLCBpdCdzIGNsYXNzIGlzIGF3YXJlIG9mIFN5bWJvbCB1c2UgY2FzZXMuCisg
ICAgICAgIFNvIGludHJvZHVjZSBTeW1ib2xSZWdpc3RyeSBpbiBXVEYgbGF5ZXJzIGFzIGlmIEF0
b21pY1N0cmluZ1RhYmxlLgorCisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6Cisg
ICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nOjphZGRTbG93Q2FzZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6Zmlu
ZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpmaW5kSW50ZXJuYWwpOgor
ICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmQpOiBEZWxldGVkLgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmQp
OgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjp+U3RyaW5nSW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5
bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbEVtcHR5KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OlN0cmluZ0ltcGwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3Ry
aW5nSW5TeW1ib2wpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpzeW1ib2xSZWdpc3RyeSk6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbEVtcHR5KTogRGVsZXRlZC4K
KyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
V1RGOjpTeW1ib2xSZWdpc3RyeUxvY2tlcjo6U3ltYm9sUmVnaXN0cnlMb2NrZXIpOgorICAgICAg
ICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOgorICAgICAgICAoV1RGOjpT
eW1ib2xSZWdpc3RyeTo6flN5bWJvbFJlZ2lzdHJ5KToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVn
aXN0cnk6OnN5bWJvbEZvcktleSk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjprZXlG
b3JTeW1ib2wpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6cmVtb3ZlKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6U3lt
Ym9sUmVnaXN0cnk6Okhhc2hlcjo6aGFzaCk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5
OjpIYXNoZXI6OmVxdWFsKToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6Okhhc2hUcmFp
dHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5
OjpIYXNoVHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lz
dHJ5OjpzcGluTG9jayk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xLZXk6
OlN5bWJvbEtleSk6CisgICAgICAgIChXVEY6OmVxdWFsKToKKyAgICAgICAgKFdURjo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yIT0pOgorCiAyMDE1LTA0LTA5ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmddIEFk
ZCBhIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFMpIGFuZCB1c2UgaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA3OTE5NjI4NDc2MmIzMDAzNDQxN2ZhNGYxNGYxZmIyODM4MWM0
NWU5Li4xMjQ1NjFlY2E1M2EzMzg4Yjc2MTQ1MzFlODI4OWFkMGNiYWViYzBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjUsOSArNTY1LDkgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAK
ICAgICBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sLmNw
cAorICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TeW1ib2xP
YmplY3QuY3BwCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCi0gICAgcnVudGltZS9T
eW1ib2xDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNwcAogICAgIHJ1
bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcAogICAgIHJ1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUu
Y3BwCkBAIC02MTEsNiArNjExLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAg
IHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuY3BwCiAgICAgcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAKKyAgICBydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNw
cAogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY5
OWFjN2VjMGVkNjA5M2UwYTgwZmM2Zjk3YzY1MjU0ODE2OWY4ZjkuLjE4NWRjN2UzMWQwN2NkOGQ3
NDM5NjgwZjE3MjllNzYxZGYzMjJkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC01OCw2ICs1OCw3IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3Qu
bHV0LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTdHJpbmdJdGVyYXRv
clByb3RvdHlwZS5sdXQuaCBcCisgICAgU3ltYm9sQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN5
bWJvbFByb3RvdHlwZS5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCiAgICAgQnl0ZWNvZGVz
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGFhOTRmYTMxZjFhMDk1YmUzODg0YzQxNzgwMjQ0YjcxODhiMzAyODku
LmJlZDQwNWFkZmI3N2I3ZGI4YzBmMjk1NGQ1ZTE3YjNiNmQ1MjUxOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTMw
LDcgKzMwLDE4IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTeW1ib2wuaCIKICNpbmNs
dWRlICJTeW1ib2xQcm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3Ry
eS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihFeGVjU3RhdGUqKTsK
KworfQorCisjaW5jbHVkZSAiU3ltYm9sQ29uc3RydWN0b3IubHV0LmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC0zOCw2ICs0OSwxMyBAQAogCiBjb25zdCBDbGFzc0luZm8gU3ltYm9sQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShTeW1ib2xDb25zdHJ1Y3RvcikgfTsKIAorLyogU291cmNlIGZvciBTeW1ib2xD
b25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHN5bWJvbENvbnN0cnVjdG9yVGFibGUKKyAgZm9yICAg
ICAgIHN5bWJvbENvbnN0cnVjdG9yRm9yICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAga2V5
Rm9yICAgIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0Bl
bmQKKyovCisKIFN5bWJvbENvbnN0cnVjdG9yOjpTeW1ib2xDb25zdHJ1Y3RvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJl
KQogewpAQCAtNTUsNiArNzMsMTMgQEAgdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKICAgICBKU0NfQ09NTU9O
X1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX1dF
TExfS05PV05fU1lNQk9MUykKIH0KIAorYm9vbCBTeW1ib2xDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0
aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgc3ltYm9sQ29uc3RydWN0b3JUYWJsZSwganNDYXN0
PFN5bWJvbENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSBkZXNjcmlwdGlvbiA9IGV4
ZWMtPmFyZ3VtZW50KDApOwpAQCAtNzQsNCArOTksMzMgQEAgQ2FsbFR5cGUgU3ltYm9sQ29uc3Ry
dWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1
cm4gQ2FsbFR5cGVIb3N0OwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJv
bENvbnN0cnVjdG9yRm9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1N0cmluZyogc3RyaW5n
S2V5ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIFN0cmluZyBzdHJpbmcgPSBzdHJpbmdLZXktPnZhbHVlKGV4ZWMpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKworICAgIFJlZjxTdHJpbmdJbXBsPiB1aWQgPSBleGVjLT52bSgpLnN5
bWJvbFJlZ2lzdHJ5KCktPnN5bWJvbEZvcktleShzdHJpbmcpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoU3ltYm9sOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RhdGljX2Nhc3Q8QXRvbWljU3Ry
aW5nSW1wbCo+KCZ1aWQuZ2V0KCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFs
dWUgc3ltID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFzeW0uaXNTeW1ib2woKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAg
ICBTeW1ib2wqIHN5bWJvbCA9IGFzU3ltYm9sKHN5bSk7CisgICAgQXRvbWljU3RyaW5nSW1wbCog
dWlkID0gc3ltYm9sLT5wcml2YXRlTmFtZSgpLnVpZCgpOworICAgIEFTU0VSVCh1aWQtPmlzU3lt
Ym9sKCkpOworICAgIGlmICghdWlkLT5zeW1ib2xSZWdpc3RyeSgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgQVNTRVJUKHVpZC0+c3ltYm9s
UmVnaXN0cnkoKSA9PSBleGVjLT52bSgpLnN5bWJvbFJlZ2lzdHJ5KCkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgdWlkLT5zeW1ib2xSZWdpc3RyeSgpLT5rZXlG
b3JTeW1ib2wodWlkKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oCmluZGV4IDBhZTEyZDdm
ZGQ1YzQyNGJiNjlhMjZkMWRjMTNhZTA4MDg0YTY4MzkuLmU1NjM3MTMzMDE4ZjJkNWEyNzcxN2M1
YmI5NGI3YTI2Mzk0YzkzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sQ29uc3RydWN0b3IuaApAQCAtNTUsMTAgKzU1LDEzIEBAIGNsYXNzIFN5bWJvbENv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHJvdGVjdGVkOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTeW1ib2xQcm90b3R5cGUqKTsKIAorICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCiBwcml2YXRlOgogICAgIFN5bWJvbENvbnN0cnVj
dG9yKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDYxZTQ1ODJjZjI2MWI2MzZkMWViZTMyZjA0NGEyYjI4NzNlMWQxZTcuLjgx
MTU0MDFhYjMxYzQ2NDM0MmQ4YWFhNzAzMjJlZmFiZTNhNjQwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTg3LDEzICs4NywxNCBAQAogI2luY2x1ZGUgIlVubGlua2Vk
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIldl
YWtNYXBEYXRhLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdU
YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICNpbmNsdWRlICJDb25z
ZXJ2YXRpdmVSb290cy5oIgpAQCAtMTU0LDYgKzE1NSw3IEBAIHN0YXRpYyBib29sIGVuYWJsZUFz
c2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgICwg
dG9wVk1FbnRyeUZyYW1lKG51bGxwdHIpCiAgICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpu
b0NhbGxlcigpKQogICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/
IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpIDogbmV3IEF0b21pY1N0cmluZ1Rh
YmxlKQorICAgICwgbV9zeW1ib2xSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPFdURjo6U3ltYm9s
UmVnaXN0cnk+KCkpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxp
c3QobmV3IE1hcmtlZEFyZ3VtZW50QnVmZmVyKQogICAgICwgc3RyaW5nQ2FjaGUoKnRoaXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBhNDZhMzc2MGQ0ZmVhMTlkYTk0ODUyNzg1
NmU2YTYzZjZmYzA4ZWFjLi43Y2Y2OTAwMzZlMjU1NjJiZDRmNTI3ZDNlZWU4N2RiMmE2NDg5ZjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3Bl
Y2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAj
aWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpA
QCAtMjc4LDYgKzI3OSw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFZNPiB7CiAgICAgU3Ryb25nPEpTQ2VsbD4gZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwog
CiAgICAgQXRvbWljU3RyaW5nVGFibGUqIG1fYXRvbWljU3RyaW5nVGFibGU7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdURjo6U3ltYm9sUmVnaXN0cnk+IG1fc3ltYm9sUmVnaXN0cnk7CiAgICAgQ29t
bW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7CiAgICAgY29uc3QgTWFya2VkQXJndW1lbnRC
dWZmZXIqIGVtcHR5TGlzdDsgLy8gTGlzdHMgYXJlIHN1cHBvc2VkIHRvIGJlIGFsbG9jYXRlZCBv
biB0aGUgc3RhY2sgdG8gaGF2ZSB0aGVpciBlbGVtZW50cyBwcm9wZXJseSBtYXJrZWQsIHdoaWNo
IGlzIG5vdCB0aGUgY2FzZSBoZXJlIC0gYnV0IHRoaXMgbGlzdCBoYXMgbm90aGluZyB0byBtYXJr
LgogICAgIFNtYWxsU3RyaW5ncyBzbWFsbFN0cmluZ3M7CkBAIC0yODgsNiArMjkwLDcgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8SlNT
dHJpbmc+IGxhc3RDYWNoZWRTdHJpbmc7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogYXRvbWlj
U3RyaW5nVGFibGUoKSBjb25zdCB7IHJldHVybiBtX2F0b21pY1N0cmluZ1RhYmxlOyB9CisgICAg
V1RGOjpTeW1ib2xSZWdpc3RyeSogc3ltYm9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3N5bWJvbFJl
Z2lzdHJ5LmdldCgpOyB9CiAKICAgICB2b2lkIHNldEluRGVmaW5lT3duUHJvcGVydHkoYm9vbCBp
bkRlZmluZU93blByb3BlcnR5KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXJlZ2lzdHJ5LmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA4NDRhMTMy
NDVmZDg0MTE3YmRjMTA5Yjk5NGU0YTFlZjAzZTRlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXJlZ2lzdHJ5LmpzCkBAIC0wLDAg
KzEsNzQgQEAKK2Z1bmN0aW9uIHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZTogIiAr
IGFjdHVhbCk7Cit9CisKK3ZhciBoZWxsbyA9IFN5bWJvbCgiSGVsbG8iKTsKK3ZhciBwcm90byA9
IFN5bWJvbCgiX19wcm90b19fIik7CisKK2ZvciAodmFyIHN5bSBvZiBbIGhlbGxvLCBwcm90bywg
U3ltYm9sLml0ZXJhdG9yIF0pIHsKKyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZvcihzeW0pOwor
ICAgIHRlc3Qoa2V5LCB1bmRlZmluZWQpOworICAgIC8vIHR3aWNlCisgICAgdmFyIGtleSA9IFN5
bWJvbC5rZXlGb3Ioc3ltKTsKKyAgICB0ZXN0KGtleSwgdW5kZWZpbmVkKTsKK30KKworZm9yICh2
YXIga2V5IG9mIFsgIkhlbGxvIiwgIl9fcHJvdG9fXyIsICJTeW1ib2wuaXRlcmF0b3IiLCBudWxs
LCB1bmRlZmluZWQsIDQyLCAyMC41LCB0cnVlLCBmYWxzZSwge30sIGZ1bmN0aW9uICgpIHt9LCBb
XSwgJycgXSkgeworICAgIHZhciBzeW0gPSBTeW1ib2wuZm9yKGtleSk7CisgICAgdGVzdCh0eXBl
b2Ygc3ltLCAic3ltYm9sIik7CisgICAgdGVzdChzeW0udG9TdHJpbmcoKSwgIlN5bWJvbCgiICsg
U3RyaW5nKGtleSkgKyAiKSIpOworCisgICAgdmFyIHN5bTIgPSBTeW1ib2wuZm9yKGtleSk7Cisg
ICAgdGVzdChzeW0gPT09IHN5bTIsIHRydWUpOworCisgICAgdmFyIGtleSA9IFN5bWJvbC5rZXlG
b3Ioc3ltKTsKKyAgICB0ZXN0KGtleSwga2V5KTsKKyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZv
cihzeW0yKTsKKyAgICB0ZXN0KGtleSwga2V5KTsKK30KKwordmFyIGVycm9yID0gbnVsbDsKK3Ry
eSB7CisgICAgdmFyIGtleSA9IHsKKyAgICAgICAgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ3RvU3RyaW5nJyk7CisgICAgICAgIH0KKyAgICB9OworICAgIFN5bWJv
bC5mb3Ioa2V5KTsKK30gY2F0Y2ggKGUpIHsKKyAgICBlcnJvciA9IGU7Cit9CitpZiAoIWVycm9y
KQorICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworaWYgKFN0cmluZyhlcnJvcikg
IT09ICdFcnJvcjogdG9TdHJpbmcnKQorICAgIHRocm93IG5ldyBFcnJvcignYmFkIGVycm9yOiAn
ICsgU3RyaW5nKGVycm9yKSk7CisKK3ZhciBlbGVtZW50cyA9IFsKKyAgICBudWxsLAorICAgIHVu
ZGVmaW5lZCwKKyAgICA0MiwKKyAgICAyMC41LAorICAgIHRydWUsCisgICAgZmFsc2UsCisgICAg
J3N0cmluZycsCisgICAge30sCisgICAgZnVuY3Rpb24gKCkge30sCisgICAgW10sCitdOworZm9y
ICh2YXIgaXRlbSBvZiBlbGVtZW50cykgeworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5
IHsKKyAgICAgICAgU3ltYm9sLmtleUZvcihpdGVtKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09ICdUeXBlRXJy
b3I6IFR5cGUgZXJyb3InKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBlcnJvcjogJyAr
IFN0cmluZyhlcnJvcikpOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCisg
ICAgU3ltYm9sLmZvcihpKTsKK2djKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3hw
cm9qL1dURi52Y3hwcm9qIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagppbmRl
eCA1ZDFkYjdkYTA5ZjdkOGNlN2JjZTVhNWZlODk0ZWFhOGM0ZWVmZGQ3Li5jNzhhODExNTJmNDcz
YTMzMzE2NjA2MGZiOGM3MjY5YmEwZWVkNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52
Y3hwcm9qL1dURi52Y3hwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHBy
b2oKQEAgLTEzNCw2ICsxMzQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRl
eHRcU3RyaW5nSW1wbC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4
dFxTdHJpbmdTdGF0aWNzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0
ZXh0XFN0cmluZ1ZpZXcuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRl
eHRcU3ltYm9sUmVnaXN0cnkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3Rm
XHRleHRcV1RGU3RyaW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0
ZXh0XGNmXEF0b21pY1N0cmluZ0NGLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHd0Zlx0ZXh0XGNmXFN0cmluZ0NGLmNwcCIgLz4KQEAgLTI5NSw2ICsyOTYsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3RyaW5nSW1wbC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3RyaW5nT3BlcmF0b3JzLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdWaWV3LmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTeW1ib2xSZWdpc3RyeS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcV1RGU3RyaW5nLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcVGhyZWFkaW5nLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcVGhyZWFkaW5nUHJpbWl0aXZlcy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dURi9XVEYudmN4cHJv
ai9XVEYudmN4cHJvai5maWx0ZXJzCmluZGV4IDU2MTk3MjYwZTc0N2MyMjA3NTU4NjU3MzVmNzFk
MTJjZTczNjM5MjEuLmVmMDNiNTcwZmYzMDU3NzhhZjgyNjBlNDNmYzY3OTAwOGNjNzJhNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycworKysg
Yi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKQEAgLTc4LDYgKzc4
LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ0ltcGwuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+dGV4dDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3ltYm9sUmVnaXN0cnkuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+dGV4dDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cd3RmXHRleHRcV1RGU3RyaW5nLmNwcCI+CiAgICAgICA8RmlsdGVyPnRleHQ8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTM0Miw2ICszNDUsOSBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3RyaW5nVmlldy5oIj4KICAgICAgIDxGaWx0ZXI+
d3RmPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3dGZcdGV4dFxTeW1ib2xSZWdpc3RyeS5oIj4KKyAgICAgIDxGaWx0ZXI+dGV4dDwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRleHRc
V1RGU3RyaW5nLmgiPgogICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNzE2MjRk
ODc5YmY0OGEwOTI4NDA2NzE1MzMxZmQ0NDAyMzZhZTVjLi43OGU1ZWY5YWRhOGQzZTk5YmMwMTY5
YzcwYTA3MzM2ZGE2ZTU2YWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTc0LDYgKzc0LDggQEAKIAkJMkNERUQwRjMxODExNUM4NTAwNERCQTcwIC8qIFJ1
bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkNERUQwRjExODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwICovOyB9OwogCQkyQ0RFRDBG
NDE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkNERUQwRjIxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3Au
aCAqLzsgfTsKIAkJNDMwQjQ3ODkxQUFBQUMxQTAwMTIyM0RBIC8qIFN0cmluZ0NvbW1vbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMwQjQ3ODcxQUFB
QUMxQTAwMTIyM0RBIC8qIFN0cmluZ0NvbW1vbi5oICovOyB9OworCQk3MEE5OTNGRTFBRDcxNTEz
MDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJl
Z2lzdHJ5LmNwcCAqLzsgfTsKKwkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLzsgfTsKIAkJN0NC
QkEwNzQxOUJCN0ZEQzAwQkJGMDI1IC8qIE9TT2JqZWN0UHRyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0JCQTA3MzE5QkI3RkRDMDBCQkYwMjUgLyog
T1NPYmplY3RQdHIuaCAqLzsgfTsKIAkJN0NERDdGRjgxODZEMjkxRTAwNzQzM0NEIC8qIEl0ZXJh
dG9yQWRhcHRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDREQ3RkY3MTg2RDI5MUUwMDc0MzNDRCAvKiBJdGVyYXRvckFkYXB0b3JzLmggKi87IH07
CiAJCTdDREQ3RkZBMTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0REN0ZGOTE4NkQyQTU0MDA3
NDMzQ0QgLyogSXRlcmF0b3JSYW5nZS5oICovOyB9OwpAQCAtMzYyLDYgKzM2NCw4IEBACiAJCTVE
MjQ3QjcwMTQ2ODlDNDcwMEU3OEI3NiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1RDI0N0I3MzE0Njg5QzQ3MDBFNzhCNzYgLyogV1RGLnhjY29uZmlnICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IFdURi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0MUNBRjQxNjMw
REIyNjAwNkQwREVDIC8qIENvcHlXVEZIZWFkZXJzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54
Y2NvbmZpZzsgcGF0aCA9IENvcHlXVEZIZWFkZXJzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sUmVnaXN0cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEE5OTNGRDFBRDcxNTEzMDBGQTYx
NUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3ltYm9sUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkEwNzMx
OUJCN0ZEQzAwQkJGMDI1IC8qIE9TT2JqZWN0UHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9TT2JqZWN0UHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
REQ3RkY3MTg2RDI5MUUwMDc0MzNDRCAvKiBJdGVyYXRvckFkYXB0b3JzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdG9yQWRhcHRvcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0NERDdGRjkxODZEMkE1NDAwNzQzM0NEIC8qIEl0ZXJhdG9yUmFuZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0b3JSYW5nZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTU0LDYgKzk1OCw4IEBACiAJCQkJOTNGMTk5M0Qx
OUQ3OTU4RDAwQzIzOTBCIC8qIFN0cmluZ1ZpZXcuY3BwICovLAogCQkJCUE4QTQ3MzJBMTUxQTgy
NUIwMDQxMjNGRiAvKiBTdHJpbmdPcGVyYXRvcnMuaCAqLywKIAkJCQlBOEE0NzMyQjE1MUE4MjVC
MDA0MTIzRkYgLyogU3RyaW5nU3RhdGljcy5jcHAgKi8sCisJCQkJNzBBOTkzRkMxQUQ3MTUxMzAw
RkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLywKKwkJCQk3MEE5OTNGRDFBRDcxNTEzMDBG
QTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLywKIAkJCQlBOEE0NzMyQzE1MUE4MjVCMDA0MTIz
RkYgLyogVGV4dFBvc2l0aW9uLmggKi8sCiAJCQkJQThBNDczMkQxNTFBODI1QjAwNDEyM0ZGIC8q
IFdURlN0cmluZy5jcHAgKi8sCiAJCQkJQThBNDczMkUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0
cmluZy5oICovLApAQCAtMTEyNyw2ICsxMTMzLDcgQEAKIAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0
MTIzRkYgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0NjUx
NkUxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEQ4NUI0MTcyMzRDQzEwMDMzODIxMCAvKiBOb0xvY2suaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcwQTk5M0ZGMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczRUYxNTFBODI1QjAwNDEyM0ZGIC8qIE5vbmNvcHlhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzNGNTE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0UyOUMzM0UxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50
aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNzgsNiArMTM4NSw3IEBACiAJCQkJQTVC
QTE1RkMxODI0MzVBNjAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDRi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNUJBMTVGNTE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbE1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1QkExNUYzMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdNYWMubW0gaW4g
U291cmNlcyAqLywKKwkJCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0
cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEREJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0
cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQzMTUxQTgyNUIw
MDQxMjNGRiAvKiBTdHJpbmdTdGF0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTM0QkQ1
MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CmluZGV4IGRjMTkwNTU0NmM1ZWYwNWUxZTExYTFkN2M1YzgzYWMzNjQwOTlm
MGUuLjlkOTNhZDU5N2Q0NDIwMmE5ODhkMWVmMjE3MmNlYjdhYjA0MjkwY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CkBAIC0xMzIsNiArMTMyLDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgdGV4dC9T
dHJpbmdIYXNoLmgKICAgICB0ZXh0L1N0cmluZ0ltcGwuaAogICAgIHRleHQvU3RyaW5nVmlldy5o
CisgICAgdGV4dC9TeW1ib2xSZWdpc3RyeS5oCiAgICAgdGV4dC9XVEZTdHJpbmcuaAogCiAgICAg
dGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaApAQCAtMTk5LDYgKzIwMCw3IEBAIHNldChXVEZfU09V
UkNFUwogICAgIHRleHQvU3RyaW5nSW1wbC5jcHAKICAgICB0ZXh0L1N0cmluZ1N0YXRpY3MuY3Bw
CiAgICAgdGV4dC9TdHJpbmdWaWV3LmNwcAorICAgIHRleHQvU3ltYm9sUmVnaXN0cnkuY3BwCiAg
ICAgdGV4dC9XVEZTdHJpbmcuY3BwCiAKICAgICB0aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCBmYTdlNDM0N2ExMjNiZjZiMTc1
YjA2YTM4YzVlOWNhMjJiOGVkNDUwLi41YWI0ZTFlYjdkYmVkYTZlYTM3MzVkNTRkMmM1MDY3ODUy
NzMyODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBAIC00MDMsOCArNDAz
LDExIEBAIHN0cnVjdCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvciB7CiAgICAg
aWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAqU3RyaW5nSW1wbDo6ZW1wdHko
KTsKIAotICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIGFkZChzdHJp
bmcuZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKCkpOworICAgIGlmIChzdHJpbmcuaXNTeW1i
b2woKSkgeworICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJu
ICphZGQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJl
dHVybiAqYWRkKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICB9
CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0
cmluZyBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxyZWFk
eSBhdG9taWMuIik7CiAKQEAgLTQyNCw4ICs0MjcsMTEgQEAgc3RydWN0IENoYXJCdWZmZXJGcm9t
TGl0ZXJhbERhdGFUcmFuc2xhdG9yIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuICpTdHJpbmdJbXBsOjplbXB0eSgpOwogCi0gICAgaWYgKHN0cmluZy5pc1N5bWJv
bCgpKQotICAgICAgICByZXR1cm4gYWRkKHN0cmluZ1RhYmxlLCBzdHJpbmcuZXh0cmFjdEZvbGRl
ZFN0cmluZ0luU3ltYm9sKCkpOworICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkgeworICAgICAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuICphZGQoc3RyaW5nLmNo
YXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiAqYWRkKHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICB9CiAKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZyBzaG91bGQgbm90
IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBhdG9taWMuIik7CiAK
QEAgLTUxMiw4ICs1MTgsMTEgQEAgQXRvbWljU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjpmaW5k
U2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6
OmVtcHR5KCkpOwogCi0gICAgaWYgKHN0cmluZy5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4g
ZmluZCgmc3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpKTsKKyAgICBpZiAoc3Ry
aW5nLmlzU3ltYm9sKCkpIHsKKyAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmaW5kSW50ZXJuYWwoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSk7CisgICAgICAgIHJldHVybiBmaW5kSW50ZXJuYWwoc3RyaW5nLmNoYXJhY3RlcnMxNigp
LCBzdHJpbmcubGVuZ3RoKCkpOworICAgIH0KIAogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2Vy
IGxvY2tlcjsKICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgYXRvbWljU3RyaW5nVGFibGUgPSBz
dHJpbmdUYWJsZSgpOwpAQCAtNTUzLDcgKzU2Miw3IEBAIEF0b21pY1N0cmluZyBBdG9taWNTdHJp
bmc6Om51bWJlcihkb3VibGUgbnVtYmVyKQogICAgIHJldHVybiBTdHJpbmcobnVtYmVyVG9GaXhl
ZFByZWNpc2lvblN0cmluZyhudW1iZXIsIDYsIGJ1ZmZlciwgdHJ1ZSkpOwogfQogCi1BdG9taWNT
dHJpbmdJbXBsKiBBdG9taWNTdHJpbmc6OmZpbmQoTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKK0F0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZEludGVybmFsKGNv
bnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgQXRvbWljU3Ry
aW5nVGFibGVMb2NrZXIgbG9ja2VyOwogICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nVGFibGUoKTsK
QEAgLTU2NSw3ICs1NzQsNyBAQCBBdG9taWNTdHJpbmdJbXBsKiBBdG9taWNTdHJpbmc6OmZpbmQo
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotQXRvbWljU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjpmaW5kKFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitBdG9taWNTdHJpbmdJbXBsKiBBdG9taWNTdHJpbmc6OmZp
bmRJbnRlcm5hbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKICAgICBhdXRvJiB0YWJsZSA9IHN0
cmluZ1RhYmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCAzYTJmY2Y1ZjM1
ODJjYzA3NDBlMDQ1YTBiMzkyZmEwNmNlZmI5OTJkLi5iOTEwZDRlNzMyZGJkMDFlMTU3NDAxN2Fi
NTQxZWJhYWUwMDExY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0
cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTg2LDgg
Kzg2LDE0IEBAIGNsYXNzIEF0b21pY1N0cmluZyB7CiAgICAgQXRvbWljU3RyaW5nKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZSkgeyB9CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChMQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNTdHJp
bmdJbXBsKiBmaW5kKFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBmaW5kSW50ZXJuYWwoY2hh
cmFjdGVycywgbGVuZ3RoKTsKKyAgICB9CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRp
YyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kKFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpCisgICAgeworICAgICAgICByZXR1cm4gZmluZEludGVybmFsKGNoYXJhY3RlcnMsIGxlbmd0
aCk7CisgICAgfQogICAgIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kKFN0cmluZ0ltcGwq
IHN0cmluZykKICAgICB7CiAgICAgICAgIGlmICghc3RyaW5nIHx8IHN0cmluZy0+aXNBdG9taWMo
KSkKQEAgLTI0OSw2ICsyNTUsOSBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogCiAgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kU2xvd0Nhc2UoU3Ry
aW5nSW1wbCYpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5n
IGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKKworICAgIHN0YXRp
YyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kSW50ZXJuYWwoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kSW50ZXJuYWwoY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYS5p
bXBsKCkgPT0gYi5pbXBsKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDlm
YWJmMmJhYjJlYTZjMWJkZjcyODBiYzY2NjU3ZWQwNmY5OTlmNDkuLjY2Nzk0ZGI4YTBhM2JiMmEx
ZTYxMmEzM2U4MDFhNTgxMzFhOWYyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgogCkBA
IC0xMTIsNiArMTEzLDkgQEAgdm9pZCBTdHJpbmdTdGF0czo6cHJpbnRTdGF0cygpCiAgICAgaWYg
KGlzQXRvbWljKCkgJiYgbGVuZ3RoKCkgJiYgIWlzU3ltYm9sKCkpCiAgICAgICAgIEF0b21pY1N0
cmluZzo6cmVtb3ZlKHRoaXMpOwogCisgICAgaWYgKGlzU3ltYm9sKCkgJiYgc3ltYm9sUmVnaXN0
cnkoKSkKKyAgICAgICAgc3ltYm9sUmVnaXN0cnkoKS0+cmVtb3ZlKHRoaXMpOworCiAgICAgQnVm
ZmVyT3duZXJzaGlwIG93bmVyc2hpcCA9IGJ1ZmZlck93bmVyc2hpcCgpOwogCiAgICAgaWYgKG93
bmVyc2hpcCA9PSBCdWZmZXJJbnRlcm5hbCkKQEAgLTI4NiwxNSArMjkwLDI0IEBAIHZvaWQgU3Ry
aW5nSW1wbDo6ZGVzdHJveShTdHJpbmdJbXBsKiBzdHJpbmdJbXBsKQogICAgIHJldHVybiBjcmVh
dGUoc3RyaW5nLCBsZW5ndGgpOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3Jl
YXRlU3ltYm9sKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwKQorUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFyZ1JlcCkKIHsK
LSAgICB1bnNpZ25lZCBsZW5ndGggPSByZXAtPmxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoKQot
ICAgICAgICByZXR1cm4gY3JlYXRlU3ltYm9sRW1wdHkoKTsKLSAgICBSZWY8U3RyaW5nSW1wbD4g
c3RyaW5nID0gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwocmVwLCAwLCBsZW5ndGgpOwotICAg
IEFTU0VSVCghc3RyaW5nLT5pc0F0b21pYygpKTsKLSAgICBzdHJpbmctPm1faGFzaEFuZEZsYWdz
ID0gaGFzaEFuZEZsYWdzRm9yU3ltYm9sKHN0cmluZy0+bV9oYXNoQW5kRmxhZ3MpOwotICAgIHJl
dHVybiBzdHJpbmc7CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlcCA9IGFyZ1JlcDsKKyAgICBT
dHJpbmdJbXBsKiBvd25lclJlcCA9IChyZXAtPmJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1
YnN0cmluZykgPyByZXAtPnN1YnN0cmluZ0J1ZmZlcigpIDogcmVwLmdldCgpOworCisgICAgLy8g
V2UgYWxsb2NhdGUgYSBidWZmZXIgdGhhdCBjb250YWlucworICAgIC8vIDEuIHRoZSBTdHJpbmdJ
bXBsIHN0cnVjdAorICAgIC8vIDIuIHRoZSBwb2ludGVyIHRvIHRoZSBvd25lciBzdHJpbmcKKyAg
ICAvLyAzLiB0aGUgcG9pbnRlciB0byB0aGUgc3ltYm9sIHJlZ2lzdHJ5CisgICAgU3RyaW5nSW1w
bCogc3RyaW5nSW1wbCA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPihmYXN0TWFsbG9jKGFsbG9j
YXRpb25TaXplPFN0cmluZ0ltcGwqPigyKSkpOworICAgIGlmIChyZXAtPmlzOEJpdCgpKQorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5nSW1w
bChDcmVhdGVTeW1ib2wsIHJlcC0+bV9kYXRhOCwgcmVwLT5sZW5ndGgoKSwgb3duZXJSZXApKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5nSW1w
bChDcmVhdGVTeW1ib2wsIHJlcC0+bV9kYXRhMTYsIHJlcC0+bGVuZ3RoKCksIG93bmVyUmVwKSk7
Cit9CisKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVTeW1ib2xFbXB0eSgpCit7
CisgICAgcmV0dXJuIGNyZWF0ZVN5bWJvbChlbXB0eSgpKTsKIH0KIAogYm9vbCBTdHJpbmdJbXBs
Ojpjb250YWluc09ubHlXaGl0ZXNwYWNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXgg
ZTE0ZDQ1MDkwNWE2MTY2MmY3YjU3MjgxZjIyYjAwNTc0Nzc3MmUwMi4uOTM5OTAyOGVkMzcwMmZk
YTAxMThjNzY2MWNmOGFkZjAwZjNkMTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAg
LTU3LDYgKzU3LDcgQEAKIHN0cnVjdCBTdWJzdHJpbmdUcmFuc2xhdG9yOwogc3RydWN0IFVDaGFy
QnVmZmVyVHJhbnNsYXRvcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBSZXRhaW5QdHI7Citj
bGFzcyBTeW1ib2xSZWdpc3RyeTsKIAogZW51bSBUZXh0Q2FzZVNlbnNpdGl2aXR5IHsKICAgICBU
ZXh0Q2FzZVNlbnNpdGl2ZSwKQEAgLTI5MiwxOCArMjkzLDM5IEBAIGNsYXNzIFN0cmluZ0ltcGwg
ewogICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUp
OwogICAgIH0KIAotICAgIGVudW0gQ3JlYXRlU3ltYm9sRW1wdHlUYWcgeyBDcmVhdGVTeW1ib2xF
bXB0eSB9OwotICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sRW1wdHlUYWcpCisgICAgZW51bSBD
cmVhdGVTeW1ib2xUYWcgeyBDcmVhdGVTeW1ib2wgfTsKKyAgICAvLyBVc2VkIHRvIGNyZWF0ZSBu
ZXcgc3ltYm9sIHN0cmluZ3MgdGhhdCBob2xkcyBleGlzdGluZyA4LWJpdCBbW0Rlc2NyaXB0aW9u
XV0gc3RyaW5nIGFzIGEgc3Vic3RyaW5nIGJ1ZmZlciAoQnVmZmVyU3Vic3RyaW5nKS4KKyAgICBT
dHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBiYXNlKQogICAgICAgICA6IG1fcmVm
Q291bnQoc19yZWZDb3VudEluY3JlbWVudCkKLSAgICAgICAgLCBtX2xlbmd0aCgwKQotICAgICAg
ICAvLyBXZSBleHBlY3QgbV9sZW5ndGggdG8gYmUgaW5pdGlhbGl6ZWQgdG8gMCBhcyB3ZSB1c2Ug
aXQKLSAgICAgICAgLy8gdG8gcmVwcmVzZW50IGEgbnVsbCB0ZXJtaW5hdGVkIGJ1ZmZlci4KLSAg
ICAgICAgLCBtX2RhdGE4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9sZW5ndGgp
KQotICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclN5bWJvbChzX2hhc2hG
bGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKSkKKyAgICAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCisgICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzKQorICAgICAgICAsIG1faGFzaEFuZEZs
YWdzKGhhc2hBbmRGbGFnc0ZvclN5bWJvbChzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ1N5
bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykpCiAgICAgeworICAgICAgICBBU1NFUlQoaXM4Qml0KCkp
OwogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CisgICAgICAgIEFTU0VSVChiYXNlLT5idWZmZXJP
d25lcnNoaXAoKSAhPSBCdWZmZXJTdWJzdHJpbmcpOwogCi0gICAgICAgIFNUUklOR19TVEFUU19B
RERfOEJJVF9TVFJJTkcobV9sZW5ndGgpOworICAgICAgICBzdWJzdHJpbmdCdWZmZXIoKSA9IGJh
c2UubGVha1JlZigpOworICAgICAgICBzeW1ib2xSZWdpc3RyeSgpID0gbnVsbHB0cjsKKworICAg
ICAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7CisgICAg
fQorCisgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3IHN5bWJvbCBzdHJpbmdzIHRoYXQgaG9sZHMg
ZXhpc3RpbmcgMTYtYml0IFtbRGVzY3JpcHRpb25dXSBzdHJpbmcgYXMgYSBzdWJzdHJpbmcgYnVm
ZmVyIChCdWZmZXJTdWJzdHJpbmcpLgorICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGJhc2UpCisgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQor
ICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCBtX2RhdGExNihjaGFyYWN0ZXJz
KQorICAgICAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFnc0ZvclN5bWJvbChTdHJpbmdT
eW1ib2wgfCBCdWZmZXJTdWJzdHJpbmcpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpczhCaXQo
KSk7CisgICAgICAgIEFTU0VSVChtX2RhdGExNik7CisgICAgICAgIEFTU0VSVChiYXNlLT5idWZm
ZXJPd25lcnNoaXAoKSAhPSBCdWZmZXJTdWJzdHJpbmcpOworCisgICAgICAgIHN1YnN0cmluZ0J1
ZmZlcigpID0gYmFzZS5sZWFrUmVmKCk7CisgICAgICAgIHN5bWJvbFJlZ2lzdHJ5KCkgPSBudWxs
cHRyOworCisgICAgICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HMihtX2xlbmd0aCwg
dHJ1ZSk7CiAgICAgfQogCiAgICAgflN0cmluZ0ltcGwoKTsKQEAgLTM5NywxMSArNDE5LDcgQEAg
Y2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxUPihy
ZXN1bHRJbXBsLCBsZW5ndGgpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBjcmVhdGVTeW1ib2xFbXB0eSgpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbEVtcHR5KSk7Ci0gICAgfQotCisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3lt
Ym9sRW1wdHkoKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBjcmVhdGVTeW1ib2woUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXApOwogCiAgICAgLy8g
UmVhbGxvY2F0ZSB0aGUgU3RyaW5nSW1wbC4gVGhlIG9yaWdpbmFsU3RyaW5nIG11c3QgYmUgb25s
eSBvd25lZCBieSB0aGUgUGFzc1JlZlB0ciwKQEAgLTc0MSwxNCArNzU5LDI1IEBAIGNsYXNzIFN0
cmluZ0ltcGwgewogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBjb25zdCBVQ2hh
ciBsYXRpbjFDYXNlRm9sZFRhYmxlWzI1Nl07CiAKLSAgICBTdHJpbmdJbXBsJiBleHRyYWN0Rm9s
ZGVkU3RyaW5nSW5TeW1ib2woKQorICAgIFJlZjxTdHJpbmdJbXBsPiBleHRyYWN0Rm9sZGVkU3Ry
aW5nSW5TeW1ib2woKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGxlbmd0aCgpKTsKICAgICAgICAg
QVNTRVJUKGlzU3ltYm9sKCkpOwogICAgICAgICBBU1NFUlQoYnVmZmVyT3duZXJzaGlwKCkgPT0g
QnVmZmVyU3Vic3RyaW5nKTsKICAgICAgICAgQVNTRVJUKHN1YnN0cmluZ0J1ZmZlcigpKTsKICAg
ICAgICAgQVNTRVJUKCFzdWJzdHJpbmdCdWZmZXIoKS0+aXNTeW1ib2woKSk7Ci0gICAgICAgIHJl
dHVybiAqc3Vic3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBjcmVhdGVTdWJzdHJpbmdT
aGFyaW5nSW1wbCh0aGlzLCAwLCBsZW5ndGgoKSk7CisgICAgfQorCisgICAgU3ltYm9sUmVnaXN0
cnkqIGNvbnN0JiBzeW1ib2xSZWdpc3RyeSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
aXNTeW1ib2woKSk7CisgICAgICAgIHJldHVybiAqKHRhaWxQb2ludGVyPFN5bWJvbFJlZ2lzdHJ5
Kj4oKSArIDEpOworICAgIH0KKworICAgIFN5bWJvbFJlZ2lzdHJ5KiYgc3ltYm9sUmVnaXN0cnko
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOworICAgICAgICByZXR1cm4gKih0
YWlsUG9pbnRlcjxTeW1ib2xSZWdpc3RyeSo+KCkgKyAxKTsKICAgICB9CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0ZDBhNWFhNjll
MjAzNzRkYjc1ZjMzZjQ3YTg1NzA2ODIyOWMxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJv
Z2FAcGFyb2dhLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3lt
Ym9sUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIkhhc2hTZXQuaCIKKyNpbmNsdWRlICJJbnRlZ2Vy
VG9TdHJpbmdDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUg
IlRocmVhZGluZy5oIgorI2luY2x1ZGUgIldURlRocmVhZERhdGEuaCIKKyNpbmNsdWRlICJkdG9h
LmgiCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgorCisjaWYgVVNFKFdFQl9USFJFQUQp
CisjaW5jbHVkZSAiU3BpbkxvY2suaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworI2lm
IFVTRShXRUJfVEhSRUFEKQorCitjbGFzcyBTeW1ib2xSZWdpc3RyeUxvY2tlciA6IHB1YmxpYyBT
cGluTG9ja0hvbGRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3ltYm9sUmVnaXN0cnlM
b2NrZXIpOworcHVibGljOgorICAgIFN5bWJvbFJlZ2lzdHJ5TG9ja2VyKFN5bWJvbFJlZ2lzdHJ5
KiBzeW1ib2xSZWdpc3RyeSkKKyAgICAgICAgOiBTcGluTG9ja0hvbGRlcihzeW1ib2xSZWdpc3Ry
eS0+c3BpbkxvY2soKSkKKyAgICB7CisgICAgfQorfTsKKworI2Vsc2UKKworY2xhc3MgU3ltYm9s
UmVnaXN0cnlMb2NrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN5bWJvbFJlZ2lzdHJ5
TG9ja2VyKTsKK3B1YmxpYzoKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tlcihTeW1ib2xSZWdpc3Ry
eSopIHsgfQorfTsKKworI2VuZGlmIC8vIFVTRShXRUJfVEhSRUFEKQorCitTeW1ib2xSZWdpc3Ry
eTo6U3ltYm9sUmVnaXN0cnkoKQorICAgIDogbV90YWJsZSgpCisjaWYgVVNFKFdFQl9USFJFQUQp
CisgICAgLCBtX3NwaW5Mb2NrKCkKKyNlbmRpZgoreworfQorCitTeW1ib2xSZWdpc3RyeTo6flN5
bWJvbFJlZ2lzdHJ5KCkKK3sKKyAgICBmb3IgKGF1dG8gc3RyaW5nIDogbV90YWJsZSkKKyAgICAg
ICAgc3RyaW5nLmltcGwtPnN5bWJvbFJlZ2lzdHJ5KCkgPSBudWxscHRyOworfQorCitSZWY8U3Ry
aW5nSW1wbD4gU3ltYm9sUmVnaXN0cnk6OnN5bWJvbEZvcktleShTdHJpbmcgcmVwKQoreworICAg
IFN5bWJvbFJlZ2lzdHJ5TG9ja2VyIGxvY2tlcih0aGlzKTsKKworICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV90YWJsZS5hZGQoU3ltYm9sS2V5KHJlcC5pbXBsKCkpKTsKKyAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpIHsKKyAgICAgICAgUmVmPFN0cmluZ0ltcGw+IHN5bWJvbCA9IFN0cmluZ0lt
cGw6OmNyZWF0ZVN5bWJvbChyZXAuaW1wbCgpKTsKKyAgICAgICAgc3ltYm9sLT5zeW1ib2xSZWdp
c3RyeSgpID0gdGhpczsKKyAgICAgICAgKmFkZFJlc3VsdC5pdGVyYXRvciA9IFN5bWJvbEtleSgm
c3ltYm9sLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHN5bWJvbDsKKyAgICB9CisgICAgcmV0dXJu
ICphZGRSZXN1bHQuaXRlcmF0b3ItPmltcGw7Cit9CisKK1N0cmluZyBTeW1ib2xSZWdpc3RyeTo6
a2V5Rm9yU3ltYm9sKFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tl
ciBsb2NrZXIodGhpcyk7CisKKyAgICBBU1NFUlQodWlkLT5pc1N5bWJvbCgpKTsKKyAgICBBU1NF
UlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpID09IHRoaXMpOworICAgIHJldHVybiB1aWQtPmV4dHJh
Y3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpOworfQorCit2b2lkIFN5bWJvbFJlZ2lzdHJ5OjpyZW1v
dmUoU3RyaW5nSW1wbCogdWlkKQoreworICAgIFN5bWJvbFJlZ2lzdHJ5TG9ja2VyIGxvY2tlcih0
aGlzKTsKKworICAgIEFTU0VSVCh1aWQtPmlzU3ltYm9sKCkpOworICAgIEFTU0VSVCh1aWQtPnN5
bWJvbFJlZ2lzdHJ5KCkgPT0gdGhpcyk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fdGFibGUuZmlu
ZChTeW1ib2xLZXkodWlkKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyYXRvciAhPSBt
X3RhYmxlLmVuZCgpLCAiVGhlIHN0cmluZyBiZWluZyByZW1vdmVkIGlzIHJlZ2lzdGVyZWQgaW4g
dGhlIHN0cmluZyB0YWJsZSBvZiBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgbV90YWJsZS5yZW1v
dmUoaXRlcmF0b3IpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5
bWJvbFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2FmYWEzYmY1NmUwYjg5YmI5YWE5NzJmNDM3MDRmNzNlYTdiYzFkZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaApAQCAtMCww
ICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
Zm5kZWYgV1RGX1N5bWJvbFJlZ2lzdHJ5X2gKKyNkZWZpbmUgV1RGX1N5bWJvbFJlZ2lzdHJ5X2gK
KworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEu
aD4KKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyNpbmNsdWRlIDx3dGYvU3BpbkxvY2suaD4KKyNlbmRp
ZgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0cmluZ0ltcGw7CisKK2Ns
YXNzIFN5bWJvbFJlZ2lzdHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTeW1ib2xSZWdpc3RyeSk7CitwdWJsaWM6CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN5bWJvbFJlZ2lzdHJ5KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5T
eW1ib2xSZWdpc3RyeSgpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBs
PiBzeW1ib2xGb3JLZXkoU3RyaW5nKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGtl
eUZvclN5bWJvbChTdHJpbmdJbXBsKiB1aWQpOworCisgICAgdm9pZCByZW1vdmUoU3RyaW5nSW1w
bCogdWlkKTsKKworICAgIC8vIFNpbmNlIFN0cmluZ0ltcGwqIHVzZWQgZm9yIFN5bWJvbCB1aWQg
ZG9lc24ndCBoYXZlIGEgaGFzaCB2YWx1ZSByZWZsZWN0aW5nIHRoZSBzdHJpbmcgY29udGVudC4K
KyAgICAvLyBUbyBjb21wYXJlIHdpdGggYW4gZXh0ZXJuYWwgc3RyaW5nIGluIHN0cmluZyBjb250
ZW50cywgaW50cm9kdWNlIFN5bWJvbEtleSwKKyAgICAvLyB0aGF0IGhvbGRzIGEgaGFzaCB2YWx1
ZSByZWZsZWN0aW5nIHRoZSBzdHJpbmcgY29udGVudCBhZGRpdGlvbmFsbHkuCisgICAgc3RydWN0
IFN5bWJvbEtleSB7CisgICAgICAgIFN5bWJvbEtleSgpOworICAgICAgICBleHBsaWNpdCBTeW1i
b2xLZXkoU3RyaW5nSW1wbCopOworCisgICAgICAgIFN0cmluZ0ltcGwqIGltcGw7CisgICAgICAg
IHVuc2lnbmVkIGhhc2g7CisgICAgfTsKKworICAgIHN0cnVjdCBIYXNoZXIgeworICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTeW1ib2xLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhh
c2g7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3ltYm9sS2V5JiBhLCBjb25z
dCBTeW1ib2xLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmVxdWFs
KGEuaW1wbCwgYi5pbXBsKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CisgICAgfTsKKworICAgIHN0
cnVjdCBIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8U3ltYm9sS2V5PiB7CisgICAgICAg
IHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAgICAgICBzdGF0
aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoU3ltYm9sS2V5JiBrZXkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGtleS5pbXBsID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGtleS5oYXNoID0g
MHhkZWFkYmVlZlU7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFs
dWUoY29uc3QgU3ltYm9sS2V5JiBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBr
ZXkuaW1wbCA9PSBudWxscHRyICYmIGtleS5oYXNoID09IDB4ZGVhZGJlZWZVOworICAgICAgICB9
CisgICAgfTsKKworI2lmIFVTRShXRUJfVEhSRUFEKQorICAgIFNwaW5Mb2NrJiBzcGluTG9jaygp
CisgICAgeworICAgICAgICByZXR1cm4gbV9zcGluTG9jazsKKyAgICB9CisjZW5kaWYKKworcHJp
dmF0ZToKKyAgICBIYXNoU2V0PFN5bWJvbEtleSwgSGFzaGVyLCBIYXNoVHJhaXRzPiBtX3RhYmxl
OworI2lmIFVTRShXRUJfVEhSRUFEKQorICAgIFNwaW5Mb2NrIG1fc3BpbkxvY2s7CisjZW5kaWYK
K307CisKK2lubGluZSBTeW1ib2xSZWdpc3RyeTo6U3ltYm9sS2V5OjpTeW1ib2xLZXkoKQorICAg
IDogaW1wbChudWxscHRyKQorICAgICwgaGFzaCgwKQoreworfQorCitpbmxpbmUgU3ltYm9sUmVn
aXN0cnk6OlN5bWJvbEtleTo6U3ltYm9sS2V5KFN0cmluZ0ltcGwqIGltcGwpCisgICAgOiBpbXBs
KGltcGwpCisgICAgLCBoYXNoKDApCit7CisgICAgaWYgKGltcGwtPmlzU3ltYm9sKCkpIHsKKyAg
ICAgICAgaWYgKGltcGwtPmlzOEJpdCgpKQorICAgICAgICAgICAgaGFzaCA9IFN0cmluZ0hhc2hl
cjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoaW1wbC0+Y2hhcmFjdGVyczgoKSwgaW1wbC0+
bGVuZ3RoKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBoYXNoID0gU3RyaW5nSGFzaGVy
Ojpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhpbXBsLT5jaGFyYWN0ZXJzMTYoKSwgaW1wbC0+
bGVuZ3RoKCkpOworICAgIH0gZWxzZQorICAgICAgICBoYXNoID0gaW1wbC0+aGFzaCgpOworfQor
CitpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBTeW1ib2xSZWdpc3RyeTo6U3ltYm9sS2V5JiBhLCBj
b25zdCBTeW1ib2xSZWdpc3RyeTo6U3ltYm9sS2V5JiBiKQoreworICAgIHJldHVybiBlcXVhbChh
LmltcGwsIGIuaW1wbCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3ltYm9s
UmVnaXN0cnk6OlN5bWJvbEtleSYgYSwgY29uc3QgU3ltYm9sUmVnaXN0cnk6OlN5bWJvbEtleSYg
YikKK3sKKyAgICByZXR1cm4gZXF1YWwoYSwgYik7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3ltYm9sUmVnaXN0cnk6OlN5bWJvbEtleSYgYSwgY29uc3QgU3ltYm9sUmVnaXN0
cnk6OlN5bWJvbEtleSYgYikKK3sKKyAgICByZXR1cm4gIWVxdWFsKGEsIGIpOworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDkwZDRiOGY0ZGNmZGRhMmVkZGZkZmU1ZDhlZTBlODc2YTRkMTgwNzQu
LmFhODQyNGFhNDI3NWI1ODA0NzZkODE4NGU4YWJhOGY2NmY3MGRjZjYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxNS0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtleUZv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNDA0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRl
c3RzIHRvIGNoZWNrIFN5bWJvbCdzIGlkZW50aXR5IG92ZXIgZGlmZmVyZW50IHJlYWxtcy4KKwor
ICAgICAgICAqIGpzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICoganMvZG9tL3NjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1ib2xzLmpzOiBBZGRlZC4K
KwogMjAxNS0wNC0wOSAgSHVuc2VvcCBKZW9uZyAgPGhzODUuamVvbmdAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW0VGTF0gZmFzdC9jc3MvdmVydGljYWwtdGV4dC1vdmVyZmxvdy1lbGxpcHNpcy10
ZXh0LWFsaWduLWNlbnRlci5odG1sIGlzIGZhaWxpbmcgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiYTFh
OTlhZDVhNzA4YjE2NTdhYzAwZDg3MTE4MTQ1MTVmNTQ3MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitUZXN0cyBTeW1ib2wgYW5kIGdsb2JhbCBzeW1ib2wgcmVnaXN0cnkgaWRlbnRp
dHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZnJhbWUuU3ltYm9sLml0
ZXJhdG9yIGlzIFN5bWJvbC5pdGVyYXRvcgorUEFTUyBmcmFtZS5TeW1ib2woJ0hlbGxvJykgaXMg
bm90IFN5bWJvbCgnSGVsbG8nKQorUEFTUyBTeW1ib2wua2V5Rm9yKHN5bSkgaXMgJ0hlbGxvJwor
UEFTUyBmcmFtZS5TeW1ib2wua2V5Rm9yKHN5bSkgaXMgJ0hlbGxvJworUEFTUyBTeW1ib2wuZm9y
KCdIZWxsbycpIGlzIHN5bQorUEFTUyBmcmFtZS5TeW1ib2wuZm9yKCdIZWxsbycpIGlzIHN5bQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLmh0bWwgYi9MYXlv
dXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMzYy
N2MxY2Y1ZGRkMjI0MDA5YmNkZmMxYjcyMmU4YjBmOTY1ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy5odG1sCkBAIC0wLDAgKzEsMTEg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZT48L2lmcmFtZT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2Ny
b3NzLWZyYW1lLXN5bWJvbHMuanMgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2Ny
b3NzLWZyYW1lLXN5bWJvbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc4ZWFmMzdmMWYwN2Y5M2FjYzk1MWQx
OTk4NjhkNjBkZWY0OGNlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9z
Y3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qcwpAQCAtMCwwICsxLDEyIEBACitkZXNj
cmlwdGlvbigiVGVzdHMgU3ltYm9sIGFuZCBnbG9iYWwgc3ltYm9sIHJlZ2lzdHJ5IGlkZW50aXR5
Iik7CisKK3ZhciBmcmFtZSA9IGZyYW1lc1swXTsKKworc2hvdWxkQmUoImZyYW1lLlN5bWJvbC5p
dGVyYXRvciIsICJTeW1ib2wuaXRlcmF0b3IiKTsKK3Nob3VsZE5vdEJlKCJmcmFtZS5TeW1ib2wo
J0hlbGxvJykiLCAiU3ltYm9sKCdIZWxsbycpIik7CisKK3ZhciBzeW0gPSBTeW1ib2wuZm9yKCJI
ZWxsbyIpOworc2hvdWxkQmUoIlN5bWJvbC5rZXlGb3Ioc3ltKSIsICInSGVsbG8nIik7CitzaG91
bGRCZSgiZnJhbWUuU3ltYm9sLmtleUZvcihzeW0pIiwgIidIZWxsbyciKTsKK3Nob3VsZEJlKCJT
eW1ib2wuZm9yKCdIZWxsbycpIiwgInN5bSIpOworc2hvdWxkQmUoImZyYW1lLlN5bWJvbC5mb3Io
J0hlbGxvJykiLCAic3ltIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250481</attachid>
            <date>2015-04-09 16:09:00 -0700</date>
            <delta_ts>2015-04-09 16:36:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143404-20150410080807.patch</filename>
            <type>text/plain</type>
            <size>41166</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDhhYzlhNDAwYmQ0NjFlNTU4ZDBkNzQ1MGFjZWRiNjI4MzRlNDg2Li4wMTY5Y2NjZDQyZDgyYzMz
MTM3ZTA0NGY3YWFkMTA3YTRiOGYyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxNS0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtl
eUZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IuCisgICAgICAg
IFN5bWJvbFJlZ2lzdHJ5IG1haW50YWlucyByZWdpc3RlcmVkIFN0cmluZ0ltcGwqIHN5bWJvbHMu
CisgICAgICAgIEFuZCB0byBtYWtlIHRoaXMgbWFwcGluZyBlbmFibGVkIG92ZXIgcmVhbG1zLAor
ICAgICAgICBWTSBvd25zIHRoaXMgbWFwcGluZyAobm90IEpTR2xvYmFsT2JqZWN0KS4KKworICAg
ICAgICBXaGlsZSB0aGVyZSdzIERlZmF1bHQgQXRvbWljU3RyaW5nVGFibGUgcGVyIHRocmVhZCwK
KyAgICAgICAgU3ltYm9sUmVnaXN0cnkgc2hvdWxkIG5vdCBleGlzdCBvdmVyIFZNcy4KKyAgICAg
ICAgU28gZXZlcnl0aW1lIFZNIGlzIGNyZWF0ZWQsIFN5bWJvbFJlZ2lzdHJ5IGlzIGFsc28gY3Jl
YXRlZC4KKworICAgICAgICBJbiBTeW1ib2xSZWdpc3RyeSBpbXBsZW1lbnRhdGlvbiwgd2UgZG9u
J3QgbGV2ZXJhZ2UgV2Vha0dDTWFwIChvciB3ZWFrIHJlZmVyZW5jZSBkZXNpZ24pLgorICAgICAg
ICBUaGVyZXMgYXJlIHNldmVyYWwgcmVhc29ucy4KKyAgICAgICAgMS4gU3RyaW5nSW1wbCogd2hp
Y2ggcmVwcmVzZW50cyBpZGVudGl0eSBvZiBTeW1ib2xzIGlzIG5vdCBHQy1tYW5hZ2VkIG9iamVj
dC4KKyAgICAgICAgICAgU28gd2UgY2Fubm90IHVzZSBXZWFrR0NNYXAgZGlyZWN0bHkuCisgICAg
ICAgICAgIFdoaWxlIFN5bWJvbCogaXMgR0MtbWFuYWdlZCBvYmplY3QsIGhvbGRpbmcgd2VhayBy
ZWZlcmVuY2UgdG8gU3ltYm9sKiBkb2Vzbid0IG1haW50YWluIEpTIHN5bWJvbHMgKGV4cG9zZWQg
cHJpbWl0aXZlIHZhbHVlcyB0byB1c2VycykgbGl2ZW5lc3MsCisgICAgICAgICAgIGJlY2F1c2Ug
ZGlzdGluY3QgU3ltYm9sKiBjYW4gZXhpc3QuCisgICAgICAgICAgIERpc3RpbmN0IFN5bWJvbCog
bWVhbnMgdGhlIFN5bWJvbCogb2JqZWN0IHRoYXQgcG9pbnRlciB2YWx1ZSAoU3ltYm9sKikgaXMg
ZGlmZmVyZW50IGZyb20gd2Vha2x5IHJlZmVyZW5jZWQgU3ltYm9sKiBidXQgaGVsZCBTdHJpbmdJ
bXBsKiBpcyB0aGUgc2FtZS4KKworICAgICAgICAyLiBXZSBkb24ndCB1c2UgV1RGOjpXZWFrUHRy
LiBJZiB3ZSBhZGQgV2Vha1B0ckZhY3RvcnkgaW50byBTdHJpbmdJbXBsJ3MgbWVtYmVyLCB3ZSBj
YW4gdHJhY2sgU3RyaW5nSW1wbConcyBsaXZlbmVzcyBieSBXZWFrUHRyLgorICAgICAgICAgICBI
b3dldmVyIHRoZXJlJ3MgcHJvYmxlbSBhYm91dCB3aGVuIHdlIHBydW5lIHN0YWxlZCBlbnRyaWVz
IGluIFN5bWJvbFJlZ2lzdHJ5LgorICAgICAgICAgICBTaW5jZSB0aGUgbWVtb3J5IGFsbG9jYXRl
ZCBmb3IgdGhlIFN5bWJvbCBpcyB0eXBpY2FsbHkgb2NjdXBpZWQgYnkgYWxsb2NhdGVkIHN5bWJv
bGl6ZWQgU3RyaW5nSW1wbConcyBjb250ZW50LAorICAgICAgICAgICBhbmQgaXQgaXMgbm90IGlu
IEdDLWhlYXAuCisgICAgICAgICAgIFdoaWxlIGhlYXZpbHkgcmVnaXN0ZXJpbmcgU3ltYm9scyBh
bmQgc3RvcmluZyBTdHJpbmdJbXBsKiBpbnRvIFN5bWJvbFJlZ2lzdHJ5LCBIZWFwJ3MgRWRlblNw
YWNlIGlzIG5vdCBzbyBvY2N1cGllZC4KKyAgICAgICAgICAgU28gR0MgdHlwaWNhbGx5IGF0dGVt
cHQgdG8gcGVyZm9ybSBFZGVuQ29sbGVjdGlvbiwgYW5kIGl0IGRvZXNuJ3QgY2FsbCBXZWFrR0NN
YXAncyBwcnVsZVN0YWxlRW50cmllcyBjYWxsYmFjay4KKyAgICAgICAgICAgQXMgYSByZXN1bHQs
IGJlZm9yZSBwcnVuaW5nIHN0YWxlZCBlbnRyaWVzIGluIFN5bWJvbFJlZ2lzdHJ5LCBmYXN0IG1h
bGxvYy1lZCBtZW1vcnkgZmlsbHMgdXAgdGhlIHN5c3RlbSBtZW1vcnkuCisKKyAgICAgICAgU28g
aW5zdGVhZCBvZiB1c2luZyBXZWFrIHJlZmVyZW5jZSwgd2UgdGFrZSByZWxhdGl2ZWx5IGVhc3kg
ZGVzaWduLgorICAgICAgICBXaGVuIHdlIHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCog
aW50byBTeW1ib2xSZWdpc3RyeSwgc3ltYm9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0
aGF0LgorICAgICAgICBBbmQgd2hlbiBkZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVm
ZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28g
d2l0aCBBdG9taWNTdHJpbmdUYWJsZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvckZvcik6CisgICAgICAg
IChKU0M6OnN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6c3lt
Ym9sUmVnaXN0cnkpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanM6
IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTUtMDQtMDggIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UganNOb250cml2aWFsU3RyaW5nIGlu
IG1vcmUgcGxhY2VzIGlmIHRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSAyIG9yIG1vcmUg
Y2hhcmFjdGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBlYzc5NjkxNDllOWNiMGJiNDJiZTQzOWQ2MzliY2MxNGEzMWE5NTk3
Li43NTFlN2YzYzVjNmE3OTg2ODE4MWM4ZDcwNTUwZWE4ODgzYWM1MjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ4IEBACisyMDE1LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBTeW1ib2wuZm9yIGFuZCBTeW1ib2wua2V5Rm9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0MDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHdl
IHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCogaW50byBTeW1ib2xSZWdpc3RyeSwgc3lt
Ym9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0aGF0LgorICAgICAgICBBbmQgd2hlbiBk
ZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVmZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0
cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28gd2l0aCBBdG9taWNTdHJpbmdUYWJsZS4K
KyAgICAgICAgV2hpbGUgQXRvbWljU3RyaW5nVGFibGUgKGluIFdlYkNvcmUgY2FzZSkgZXhpc3Rz
IGluIHRocmVhZCBsb2NhbCBzdG9yYWdlLAorICAgICAgICBTeW1ib2xSZWdpc3RyeSBleGlzdHMg
cGVyIFZNIGFuZCBTdHJpbmdJbXBsKiBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHJlZ2lzdGVyZWQg
U3ltYm9sUmVnaXN0cnkuCisKKyAgICAgICAgU2luY2UgU3RyaW5nSW1wbCBoYXMgaXNTeW1ib2wg
ZXRjLiBtZW1iZXJzLCBpdCdzIGNsYXNzIGlzIGF3YXJlIG9mIFN5bWJvbCB1c2UgY2FzZXMuCisg
ICAgICAgIFNvIGludHJvZHVjZSBTeW1ib2xSZWdpc3RyeSBpbiBXVEYgbGF5ZXJzIGFzIGlmIEF0
b21pY1N0cmluZ1RhYmxlLgorCisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6Cisg
ICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nOjphZGRTbG93Q2FzZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6Zmlu
ZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpmaW5kSW50ZXJuYWwpOgor
ICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmQpOiBEZWxldGVkLgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmQp
OgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjp+U3RyaW5nSW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5
bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbEVtcHR5KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OlN0cmluZ0ltcGwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3Ry
aW5nSW5TeW1ib2wpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpzeW1ib2xSZWdpc3RyeSk6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbEVtcHR5KTogRGVsZXRlZC4K
KyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
V1RGOjpTeW1ib2xSZWdpc3RyeUxvY2tlcjo6U3ltYm9sUmVnaXN0cnlMb2NrZXIpOgorICAgICAg
ICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOgorICAgICAgICAoV1RGOjpT
eW1ib2xSZWdpc3RyeTo6flN5bWJvbFJlZ2lzdHJ5KToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVn
aXN0cnk6OnN5bWJvbEZvcktleSk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjprZXlG
b3JTeW1ib2wpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6cmVtb3ZlKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6U3lt
Ym9sUmVnaXN0cnk6OnNwaW5Mb2NrKToKKwogMjAxNS0wNC0wOSAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBBZGQgYSBIQVZFKFBB
UkVOVEFMX0NPTlRST0xTKSBhbmQgdXNlIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggNzkxOTYyODQ3NjJiMzAwMzQ0MTdmYTRmMTRmMWZiMjgzODFjNDVlOS4uMTI0NTYx
ZWNhNTNhMzM4OGI3NjE0NTMxZTgyODlhZDBjYmFlYmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNTY1LDkgKzU2NSw5IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5U
SU1FX1NPVVJDRVMKICAgICBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCiAgICAgcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKICAgICBydW50aW1lL1N5bWJvbC5jcHAKKyAgICBydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sT2JqZWN0LmNwcAog
ICAgIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAotICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3Ry
dWN0b3IuY3BwCiAgICAgcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKICAgICBydW50aW1lL1Rlc3RS
dW5uZXJVdGlscy5jcHAKICAgICBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcApAQCAtNjEx
LDYgKzYxMSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9MVVRfRklMRVMKICAgICBydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAogICAg
IHJ1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9TeW1ib2xD
b25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKICkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2OTlhYzdlYzBlZDYw
OTNlMGE4MGZjNmY5N2M2NTI1NDgxNjlmOGY5Li4xODVkYzdlMzFkMDdjZDhkNzQzOTY4MGYxNzI5
ZTc2MWRmMzIyZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNTgsNiArNTgsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAg
ICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUu
bHV0LmggXAorICAgIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTeW1ib2xQcm90b3R5
cGUubHV0LmggXAogICAgIHVkaXM4Nl9pdGFiLmggXAogICAgIEJ5dGVjb2Rlcy5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcApp
bmRleCBhYTk0ZmEzMWYxYTA5NWJlMzg4NGM0MTc4MDI0NGI3MTg4YjMwMjg5Li5iZWQ0MDVhZGZi
NzdiN2RiOGMwZjI5NTRkNWUxN2IzYjZkNTI1MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBAIC0zMCw3ICszMCwxOCBA
QAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU3ltYm9sLmgiCiAjaW5jbHVkZSAiU3ltYm9s
UHJvdG90eXBlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJv
bENvbnN0cnVjdG9yRm9yKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3IoRXhlY1N0YXRlKik7CisKK30KKworI2lu
Y2x1ZGUgIlN5bWJvbENvbnN0cnVjdG9yLmx1dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MzgsNiArNDksMTMgQEAKIAogY29uc3QgQ2xhc3NJbmZvIFN5bWJvbENvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
U3ltYm9sQ29uc3RydWN0b3IpIH07CiAKKy8qIFNvdXJjZSBmb3IgU3ltYm9sQ29uc3RydWN0b3Iu
bHV0LmgKK0BiZWdpbiBzeW1ib2xDb25zdHJ1Y3RvclRhYmxlCisgIGZvciAgICAgICBzeW1ib2xD
b25zdHJ1Y3RvckZvciAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGtleUZvciAgICBzeW1i
b2xDb25zdHJ1Y3RvcktleUZvciAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCiBT
eW1ib2xDb25zdHJ1Y3Rvcjo6U3ltYm9sQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKIHsKQEAgLTU1
LDYgKzczLDEzIEBAIHZvaWQgU3ltYm9sQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU3ltYm9sUHJvdG90eXBlKiBwcm90b3R5cGUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9XRUxMX0tOT1dOX1NZ
TUJPTFMpCiB9CiAKK2Jvb2wgU3ltYm9sQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCAmc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25T
bG90PEJhc2U+KGV4ZWMsIHN5bWJvbENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxTeW1ib2xDb25z
dHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTeW1ib2woRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgZGVzY3JpcHRpb24gPSBleGVjLT5hcmd1bWVu
dCgwKTsKQEAgLTc0LDQgKzk5LDMzIEBAIENhbGxUeXBlIFN5bWJvbENvbnN0cnVjdG9yOjpnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiAgICAgcmV0dXJuIENhbGxUeXBl
SG9zdDsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3Rv
ckZvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNTdHJpbmcqIHN0cmluZ0tleSA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBT
dHJpbmcgc3RyaW5nID0gc3RyaW5nS2V5LT52YWx1ZShleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisKKyAgICBSZWY8U3RyaW5nSW1wbD4gdWlkID0gZXhlYy0+dm0oKS5zeW1ib2xSZWdpc3Ry
eSgpLT5zeW1ib2xGb3JLZXkoc3RyaW5nKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5
bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPigm
dWlkLmdldCgpKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENv
bnN0cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHN5bSA9IGV4
ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICghc3ltLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgU3ltYm9sKiBz
eW1ib2wgPSBhc1N5bWJvbChzeW0pOworICAgIEF0b21pY1N0cmluZ0ltcGwqIHVpZCA9IHN5bWJv
bC0+cHJpdmF0ZU5hbWUoKS51aWQoKTsKKyAgICBBU1NFUlQodWlkLT5pc1N5bWJvbCgpKTsKKyAg
ICBpZiAoIXVpZC0+c3ltYm9sUmVnaXN0cnkoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEFTU0VSVCh1aWQtPnN5bWJvbFJlZ2lzdHJ5KCkg
PT0gZXhlYy0+dm0oKS5zeW1ib2xSZWdpc3RyeSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIHVpZC0+c3ltYm9sUmVnaXN0cnkoKS0+a2V5Rm9yU3ltYm9sKHVp
ZCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaAppbmRleCAwYWUxMmQ3ZmRkNWM0MjRiYjY5
YTI2ZDFkYzEzYWUwODA4NGE2ODM5Li5lNTYzNzEzMzAxOGYyZDVhMjc3MTdjNWJiOTRiN2EyNjM5
NGM5MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xD
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENv
bnN0cnVjdG9yLmgKQEAgLTU1LDEwICs1NSwxMyBAQCBjbGFzcyBTeW1ib2xDb25zdHJ1Y3RvciA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgU3ltYm9sUHJvdG90eXBlKik7CiAKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKKwogcHJpdmF0ZToKICAgICBTeW1ib2xDb25zdHJ1Y3RvcihWTSYsIFN0
cnVjdHVyZSopOwogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlND
ZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRl
eCA2MWU0NTgyY2YyNjFiNjM2ZDFlYmUzMmYwNDRhMmIyODczZTFkMWU3Li44MTE1NDAxYWIzMWM0
NjQzNDJkOGFhYTcwMzIyZWZhYmUzYTY0MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCkBAIC04NywxMyArODcsMTQgQEAKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5o
IgogI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5o
IgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZU
aHJlYWREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nVGFibGUuaD4KLSNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdp
c3RyeS5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9v
dHMuaCIKQEAgLTE1NCw2ICsxNTUsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhl
Y3V0YWJsZUFsbG9jYXRvciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKICAgICAsIHRvcFZNRW50cnlG
cmFtZShudWxscHRyKQogICAgICwgdG9wQ2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkK
ICAgICAsIG1fYXRvbWljU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWRE
YXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9taWNTdHJpbmdUYWJsZSkKKyAgICAs
IG1fc3ltYm9sUmVnaXN0cnkoc3RkOjptYWtlX3VuaXF1ZTxXVEY6OlN5bWJvbFJlZ2lzdHJ5Pigp
KQogICAgICwgcHJvcGVydHlOYW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBNYXJr
ZWRBcmd1bWVudEJ1ZmZlcikKICAgICAsIHN0cmluZ0NhY2hlKCp0aGlzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggYTQ2YTM3NjBkNGZlYTE5ZGE5NDg1Mjc4NTZlNmE2M2Y2ZmMw
OGVhYy4uN2NmNjkwMDM2ZTI1NTYyYmQ0ZjUyN2QzZWVlODdkYjJhNjQ4OWYxMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAj
aW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xS
ZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lmIEVOQUJMRShS
RUdFWFBfVFJBQ0lORykKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTI3OCw2ICsy
NzksNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAg
IFN0cm9uZzxKU0NlbGw+IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKIAogICAgIEF0b21p
Y1N0cmluZ1RhYmxlKiBtX2F0b21pY1N0cmluZ1RhYmxlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
VEY6OlN5bWJvbFJlZ2lzdHJ5PiBtX3N5bWJvbFJlZ2lzdHJ5OwogICAgIENvbW1vbklkZW50aWZp
ZXJzKiBwcm9wZXJ0eU5hbWVzOwogICAgIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyKiBlbXB0
eUxpc3Q7IC8vIExpc3RzIGFyZSBzdXBwb3NlZCB0byBiZSBhbGxvY2F0ZWQgb24gdGhlIHN0YWNr
IHRvIGhhdmUgdGhlaXIgZWxlbWVudHMgcHJvcGVybHkgbWFya2VkLCB3aGljaCBpcyBub3QgdGhl
IGNhc2UgaGVyZSAtIGJ1dCB0aGlzIGxpc3QgaGFzIG5vdGhpbmcgdG8gbWFyay4KICAgICBTbWFs
bFN0cmluZ3Mgc21hbGxTdHJpbmdzOwpAQCAtMjg4LDYgKzI5MCw3IEBAIGNsYXNzIFZNIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPEpTU3RyaW5nPiBsYXN0
Q2FjaGVkU3RyaW5nOwogCiAgICAgQXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9hdG9taWNTdHJpbmdUYWJsZTsgfQorICAgIFdURjo6U3ltYm9s
UmVnaXN0cnkqIHN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zeW1ib2xSZWdpc3RyeS5nZXQo
KTsgfQogCiAgICAgdm9pZCBzZXRJbkRlZmluZU93blByb3BlcnR5KGJvb2wgaW5EZWZpbmVPd25Q
cm9wZXJ0eSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3N5bWJvbC1yZWdpc3RyeS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3Mvc3ltYm9sLXJlZ2lzdHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwODQ0YTEzMjQ1ZmQ4NDExN2Jk
YzEwOWI5OTRlNGExZWYwM2U0ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1yZWdpc3RyeS5qcwpAQCAtMCwwICsxLDc0IEBACitm
dW5jdGlvbiB0ZXN0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWU6ICIgKyBhY3R1YWwpOwor
fQorCit2YXIgaGVsbG8gPSBTeW1ib2woIkhlbGxvIik7Cit2YXIgcHJvdG8gPSBTeW1ib2woIl9f
cHJvdG9fXyIpOworCitmb3IgKHZhciBzeW0gb2YgWyBoZWxsbywgcHJvdG8sIFN5bWJvbC5pdGVy
YXRvciBdKSB7CisgICAgdmFyIGtleSA9IFN5bWJvbC5rZXlGb3Ioc3ltKTsKKyAgICB0ZXN0KGtl
eSwgdW5kZWZpbmVkKTsKKyAgICAvLyB0d2ljZQorICAgIHZhciBrZXkgPSBTeW1ib2wua2V5Rm9y
KHN5bSk7CisgICAgdGVzdChrZXksIHVuZGVmaW5lZCk7Cit9CisKK2ZvciAodmFyIGtleSBvZiBb
ICJIZWxsbyIsICJfX3Byb3RvX18iLCAiU3ltYm9sLml0ZXJhdG9yIiwgbnVsbCwgdW5kZWZpbmVk
LCA0MiwgMjAuNSwgdHJ1ZSwgZmFsc2UsIHt9LCBmdW5jdGlvbiAoKSB7fSwgW10sICcnIF0pIHsK
KyAgICB2YXIgc3ltID0gU3ltYm9sLmZvcihrZXkpOworICAgIHRlc3QodHlwZW9mIHN5bSwgInN5
bWJvbCIpOworICAgIHRlc3Qoc3ltLnRvU3RyaW5nKCksICJTeW1ib2woIiArIFN0cmluZyhrZXkp
ICsgIikiKTsKKworICAgIHZhciBzeW0yID0gU3ltYm9sLmZvcihrZXkpOworICAgIHRlc3Qoc3lt
ID09PSBzeW0yLCB0cnVlKTsKKworICAgIHZhciBrZXkgPSBTeW1ib2wua2V5Rm9yKHN5bSk7Cisg
ICAgdGVzdChrZXksIGtleSk7CisgICAgdmFyIGtleSA9IFN5bWJvbC5rZXlGb3Ioc3ltMik7Cisg
ICAgdGVzdChrZXksIGtleSk7Cit9CisKK3ZhciBlcnJvciA9IG51bGw7Cit0cnkgeworICAgIHZh
ciBrZXkgPSB7CisgICAgICAgIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCd0b1N0cmluZycpOworICAgICAgICB9CisgICAgfTsKKyAgICBTeW1ib2wuZm9yKGtleSk7
Cit9IGNhdGNoIChlKSB7CisgICAgZXJyb3IgPSBlOworfQoraWYgKCFlcnJvcikKKyAgICB0aHJv
dyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKK2lmIChTdHJpbmcoZXJyb3IpICE9PSAnRXJyb3I6
IHRvU3RyaW5nJykKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBlcnJvcjogJyArIFN0cmluZyhl
cnJvcikpOworCit2YXIgZWxlbWVudHMgPSBbCisgICAgbnVsbCwKKyAgICB1bmRlZmluZWQsCisg
ICAgNDIsCisgICAgMjAuNSwKKyAgICB0cnVlLAorICAgIGZhbHNlLAorICAgICdzdHJpbmcnLAor
ICAgIHt9LAorICAgIGZ1bmN0aW9uICgpIHt9LAorICAgIFtdLAorXTsKK2ZvciAodmFyIGl0ZW0g
b2YgZWxlbWVudHMpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAg
IFN5bWJvbC5rZXlGb3IoaXRlbSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9
IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90
IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSAnVHlwZUVycm9yOiBUeXBlIGVy
cm9yJykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgZXJyb3I6ICcgKyBTdHJpbmcoZXJy
b3IpKTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgIFN5bWJvbC5m
b3IoaSk7CitnYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4
cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKaW5kZXggNWQxZGI3ZGEw
OWY3ZDhjZTdiY2U1YTVmZTg5NGVhYThjNGVlZmRkNy4uYzc4YTgxMTUyZjQ3M2EzMzMxNjYwNjBm
YjhjNzI2OWJhMGVlZDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYu
dmN4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCkBAIC0xMzQs
NiArMTM0LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ0lt
cGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3RyaW5nU3Rh
dGljcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdW
aWV3LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN5bWJvbFJl
Z2lzdHJ5LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFdURlN0
cmluZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxjZlxBdG9t
aWNTdHJpbmdDRi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxj
ZlxTdHJpbmdDRi5jcHAiIC8+CkBAIC0yOTUsNiArMjk2LDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ0ltcGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ09wZXJhdG9ycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cd3RmXHRleHRcU3RyaW5nVmlldy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cd3RmXHRleHRcU3ltYm9sUmVnaXN0cnkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0Zlx0ZXh0XFdURlN0cmluZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cd3RmXFRocmVhZGluZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFRo
cmVhZGluZ1ByaW1pdGl2ZXMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHBy
b2ovV1RGLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHBy
b2ouZmlsdGVycwppbmRleCA1NjE5NzI2MGU3NDdjMjIwNzU1ODY1NzM1ZjcxZDEyY2U3MzYzOTIx
Li5lZjAzYjU3MGZmMzA1Nzc4YWY4MjYwZTQzZmM2NzkwMDhjYzcyYTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dU
Ri9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCkBAIC03OCw2ICs3OCw5IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdJbXBsLmNwcCI+CiAgICAgICA8
RmlsdGVyPnRleHQ8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN5bWJvbFJlZ2lzdHJ5LmNwcCI+CisgICAgICA8RmlsdGVyPnRl
eHQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHd0Zlx0ZXh0XFdURlN0cmluZy5jcHAiPgogICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CkBAIC0zNDIsNiArMzQ1LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ1ZpZXcuaCI+CiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRleHRc
U3ltYm9sUmVnaXN0cnkuaCI+CisgICAgICA8RmlsdGVyPnRleHQ8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFdURlN0cmluZy5o
Ij4KICAgICAgIDxGaWx0ZXI+dGV4dDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzcxNjI0ZDg3OWJmNDhhMDky
ODQwNjcxNTMzMWZkNDQwMjM2YWU1Yy4uNzhlNWVmOWFkYThkM2U5OWJjMDE2OWM3MGEwNzMzNmRh
NmU1NmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03
NCw2ICs3NCw4IEBACiAJCTJDREVEMEYzMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJDREVEMEYxMTgx
MTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCAqLzsgfTsKIAkJMkNERUQwRjQxODExNUM4NTAw
NERCQTcwIC8qIFJ1bkxvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJDREVEMEYyMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmggKi87IH07CiAJ
CTQzMEI0Nzg5MUFBQUFDMUEwMDEyMjNEQSAvKiBTdHJpbmdDb21tb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzMEI0Nzg3MUFBQUFDMUEwMDEyMjNE
QSAvKiBTdHJpbmdDb21tb24uaCAqLzsgfTsKKwkJNzBBOTkzRkUxQUQ3MTUxMzAwRkE2MTVCIC8q
IFN5bWJvbFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQTk5M0ZDMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAg
Ki87IH07CisJCTcwQTk5M0ZGMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkQxQUQ3
MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggKi87IH07CiAJCTdDQkJBMDc0MTlCQjdG
REMwMEJCRjAyNSAvKiBPU09iamVjdFB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0NCQkEwNzMxOUJCN0ZEQzAwQkJGMDI1IC8qIE9TT2JqZWN0UHRy
LmggKi87IH07CiAJCTdDREQ3RkY4MTg2RDI5MUUwMDc0MzNDRCAvKiBJdGVyYXRvckFkYXB0b3Jz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0REN0ZG
NzE4NkQyOTFFMDA3NDMzQ0QgLyogSXRlcmF0b3JBZGFwdG9ycy5oICovOyB9OwogCQk3Q0REN0ZG
QTE4NkQyQTU0MDA3NDMzQ0QgLyogSXRlcmF0b3JSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NERDdGRjkxODZEMkE1NDAwNzQzM0NEIC8qIEl0
ZXJhdG9yUmFuZ2UuaCAqLzsgfTsKQEAgLTM2Miw2ICszNjQsOCBAQAogCQk1RDI0N0I3MDE0Njg5
QzQ3MDBFNzhCNzYgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVn
UmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNzMx
NDY4OUM0NzAwRTc4Qjc2IC8qIFdURi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXVEYueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NDFDQUY0MTYzMERCMjYwMDZEMERF
QyAvKiBDb3B5V1RGSGVhZGVycy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBDb3B5V1RGSGVhZGVycy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFJlZ2lzdHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBBOTkzRkQxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJv
bFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbFJlZ2lz
dHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJBMDczMTlCQjdGREMwMEJC
RjAyNSAvKiBPU09iamVjdFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBP
U09iamVjdFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0REN0ZGNzE4NkQy
OTFFMDA3NDMzQ0QgLyogSXRlcmF0b3JBZGFwdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJdGVyYXRvckFkYXB0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDREQ3RkY5MTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdG9yUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTk1NCw2ICs5NTgsOCBAQAogCQkJCTkzRjE5OTNEMTlENzk1OEQwMEMy
MzkwQiAvKiBTdHJpbmdWaWV3LmNwcCAqLywKIAkJCQlBOEE0NzMyQTE1MUE4MjVCMDA0MTIzRkYg
LyogU3RyaW5nT3BlcmF0b3JzLmggKi8sCiAJCQkJQThBNDczMkIxNTFBODI1QjAwNDEyM0ZGIC8q
IFN0cmluZ1N0YXRpY3MuY3BwICovLAorCQkJCTcwQTk5M0ZDMUFENzE1MTMwMEZBNjE1QiAvKiBT
eW1ib2xSZWdpc3RyeS5jcHAgKi8sCisJCQkJNzBBOTkzRkQxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmggKi8sCiAJCQkJQThBNDczMkMxNTFBODI1QjAwNDEyM0ZGIC8qIFRleHRQ
b3NpdGlvbi5oICovLAogCQkJCUE4QTQ3MzJEMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcu
Y3BwICovLAogCQkJCUE4QTQ3MzJFMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuaCAqLywK
QEAgLTExMjcsNiArMTEzMyw3IEBACiAJCQkJQThBNDczRUUxNTFBODI1QjAwNDEyM0ZGIC8qIE1l
dGFBbGxvY2F0b3JIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNDY1MTZFMTlEQjFGQjQw
MDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBEODVCNDE3
MjM0Q0MxMDAzMzgyMTAgLyogTm9Mb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEE5OTNGRjFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3M0VGMTUxQTgyNUIwMDQxMjNGRiAvKiBOb25jb3B5YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDczRjUxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdFMjlDMzNFMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMzc4LDYgKzEzODUsNyBAQAogCQkJCUE1QkExNUZDMTgyNDM1
QTYwMEE4MkU2OSAvKiBTdHJpbmdJbXBsQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1
RjUxODI0MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlBNUJBMTVGMzE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNzBBOTkzRkUxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRERCRkE3MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0MzE1MUE4MjVCMDA0MTIzRkYgLyog
U3RyaW5nU3RhdGljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJENTE4QTFGMTY5MDBE
MEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAppbmRleCBkYzE5MDU1NDZjNWVmMDVlMWUxMWExZDdjNWM4M2FjMzY0MDk5ZjBlLi45ZDkzYWQ1
OTdkNDQyMDJhOTg4ZDFlZjIxNzJjZWI3YWIwNDI5MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApA
QCAtMTMyLDYgKzEzMiw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIHRleHQvU3RyaW5nSGFzaC5o
CiAgICAgdGV4dC9TdHJpbmdJbXBsLmgKICAgICB0ZXh0L1N0cmluZ1ZpZXcuaAorICAgIHRleHQv
U3ltYm9sUmVnaXN0cnkuaAogICAgIHRleHQvV1RGU3RyaW5nLmgKIAogICAgIHRocmVhZHMvQmlu
YXJ5U2VtYXBob3JlLmgKQEAgLTE5OSw2ICsyMDAsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICB0
ZXh0L1N0cmluZ0ltcGwuY3BwCiAgICAgdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAogICAgIHRleHQv
U3RyaW5nVmlldy5jcHAKKyAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcAogICAgIHRleHQvV1RG
U3RyaW5nLmNwcAogCiAgICAgdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggZmE3ZTQzNDdhMTIzYmY2YjE3NWIwNmEzOGM1ZTlj
YTIyYjhlZDQ1MC4uNWFiNGUxZWI3ZGJlZGE2ZWEzNzM1ZDU0ZDJjNTA2Nzg1MjczMjg0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtNDAzLDggKzQwMywxMSBAQCBzdHJ1
Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3IgewogICAgIGlmICghc3RyaW5n
Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7CiAKLSAgICBp
ZiAoc3RyaW5nLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBhZGQoc3RyaW5nLmV4dHJhY3RG
b2xkZWRTdHJpbmdJblN5bWJvbCgpKTsKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpIHsKKyAg
ICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiAqYWRkKHN0cmlu
Zy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gKmFkZChz
dHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgfQogCiAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJpbmcgc2hvdWxk
IG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkgYXRvbWljLiIp
OwogCkBAIC00MjQsOCArNDI3LDExIEBAIHN0cnVjdCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRh
VHJhbnNsYXRvciB7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAq
U3RyaW5nSW1wbDo6ZW1wdHkoKTsKIAotICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkKLSAgICAg
ICAgcmV0dXJuIGFkZChzdHJpbmdUYWJsZSwgc3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5
bWJvbCgpKTsKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpIHsKKyAgICAgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiAqYWRkKHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFjdGVy
czE2KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgfQogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJpbmcgc2hvdWxkIG5vdCBoaXQgdGhlIHNs
b3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkgYXRvbWljLiIpOwogCkBAIC01MTIsOCAr
NTE4LDExIEBAIEF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZFNsb3dDYXNlKFN0
cmluZ0ltcGwmIHN0cmluZykKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsK
IAotICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIGZpbmQoJnN0cmlu
Zy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKSk7CisgICAgaWYgKHN0cmluZy5pc1N5bWJv
bCgpKSB7CisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4g
ZmluZEludGVybmFsKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAg
ICAgICByZXR1cm4gZmluZEludGVybmFsKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpKTsKKyAgICB9CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CiAg
ICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0cmluZ1RhYmxlID0gc3RyaW5nVGFibGUo
KTsKQEAgLTU1Myw3ICs1NjIsNyBAQCBBdG9taWNTdHJpbmcgQXRvbWljU3RyaW5nOjpudW1iZXIo
ZG91YmxlIG51bWJlcikKICAgICByZXR1cm4gU3RyaW5nKG51bWJlclRvRml4ZWRQcmVjaXNpb25T
dHJpbmcobnVtYmVyLCA2LCBidWZmZXIsIHRydWUpKTsKIH0KIAotQXRvbWljU3RyaW5nSW1wbCog
QXRvbWljU3RyaW5nOjpmaW5kKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitB
dG9taWNTdHJpbmdJbXBsKiBBdG9taWNTdHJpbmc6OmZpbmRJbnRlcm5hbChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9j
a2VyIGxvY2tlcjsKICAgICBhdXRvJiB0YWJsZSA9IHN0cmluZ1RhYmxlKCk7CkBAIC01NjUsNyAr
NTc0LDcgQEAgQXRvbWljU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjpmaW5kKExDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUF0b21p
Y1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZChVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQorQXRvbWljU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjpmaW5kSW50ZXJuYWwo
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBdG9taWNT
dHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CiAgICAgYXV0byYgdGFibGUgPSBzdHJpbmdUYWJsZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggM2EyZmNmNWYzNTgyY2MwNzQwZTA0
NWEwYjM5MmZhMDZjZWZiOTkyZC4uYjkxMGQ0ZTczMmRiZDAxZTE1NzQwMTdhYjU0MWViYWFlMDAx
MWNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCkBAIC04Niw4ICs4NiwxNCBAQCBj
bGFzcyBBdG9taWNTdHJpbmcgewogICAgIEF0b21pY1N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQog
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Zy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmlu
ZChVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0
YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgeworICAgICAgICByZXR1cm4gZmluZEludGVybmFsKGNoYXJhY3RlcnMsIGxl
bmd0aCk7CisgICAgfQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3Ry
aW5nSW1wbCogZmluZChVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZpbmRJbnRlcm5hbChjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIH0K
ICAgICBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChTdHJpbmdJbXBsKiBzdHJpbmcpCiAg
ICAgewogICAgICAgICBpZiAoIXN0cmluZyB8fCBzdHJpbmctPmlzQXRvbWljKCkpCkBAIC0yNDks
NiArMjU1LDkgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZFNsb3dDYXNlKFN0cmluZ0ltcGwmKTsK
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOElu
dGVybmFsKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7CisKKyAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nSW1wbCogZmluZEludGVybmFsKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZEludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoKTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWlj
U3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIu
aW1wbCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA5ZmFiZjJiYWIyZWE2
YzFiZGY3MjgwYmM2NjY1N2VkMDZmOTk5ZjQ5Li42Njc5NGRiOGEwYTNiYjJhMWU2MTJhMzNlODAx
YTU4MTMxYTlmMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIApAQCAtMTEyLDYgKzEx
Myw5IEBAIHZvaWQgU3RyaW5nU3RhdHM6OnByaW50U3RhdHMoKQogICAgIGlmIChpc0F0b21pYygp
ICYmIGxlbmd0aCgpICYmICFpc1N5bWJvbCgpKQogICAgICAgICBBdG9taWNTdHJpbmc6OnJlbW92
ZSh0aGlzKTsKIAorICAgIGlmIChpc1N5bWJvbCgpICYmIHN5bWJvbFJlZ2lzdHJ5KCkpCisgICAg
ICAgIHN5bWJvbFJlZ2lzdHJ5KCktPnJlbW92ZSh0aGlzKTsKKwogICAgIEJ1ZmZlck93bmVyc2hp
cCBvd25lcnNoaXAgPSBidWZmZXJPd25lcnNoaXAoKTsKIAogICAgIGlmIChvd25lcnNoaXAgPT0g
QnVmZmVySW50ZXJuYWwpCkBAIC0yODYsMTUgKzI5MCwyNCBAQCB2b2lkIFN0cmluZ0ltcGw6OmRl
c3Ryb3koU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKICAgICByZXR1cm4gY3JlYXRlKHN0cmluZywg
bGVuZ3RoKTsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpj
cmVhdGVTeW1ib2woUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhcmdSZXApCiB7Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gcmVwLT5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZVN5bWJvbEVtcHR5KCk7Ci0gICAgUmVmPFN0cmluZ0ltcGw+IHN0cmluZyA9IGNy
ZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKHJlcCwgMCwgbGVuZ3RoKTsKLSAgICBBU1NFUlQoIXN0
cmluZy0+aXNBdG9taWMoKSk7Ci0gICAgc3RyaW5nLT5tX2hhc2hBbmRGbGFncyA9IGhhc2hBbmRG
bGFnc0ZvclN5bWJvbChzdHJpbmctPm1faGFzaEFuZEZsYWdzKTsKLSAgICByZXR1cm4gc3RyaW5n
OworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXAgPSBhcmdSZXA7CisgICAgU3RyaW5nSW1wbCog
b3duZXJSZXAgPSAocmVwLT5idWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpID8g
cmVwLT5zdWJzdHJpbmdCdWZmZXIoKSA6IHJlcC5nZXQoKTsKKworICAgIC8vIFdlIGFsbG9jYXRl
IGEgYnVmZmVyIHRoYXQgY29udGFpbnMKKyAgICAvLyAxLiB0aGUgU3RyaW5nSW1wbCBzdHJ1Y3QK
KyAgICAvLyAyLiB0aGUgcG9pbnRlciB0byB0aGUgb3duZXIgc3RyaW5nCisgICAgLy8gMy4gdGhl
IHBvaW50ZXIgdG8gdGhlIHN5bWJvbCByZWdpc3RyeQorICAgIFN0cmluZ0ltcGwqIHN0cmluZ0lt
cGwgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oZmFzdE1hbGxvYyhhbGxvY2F0aW9uU2l6ZTxT
dHJpbmdJbXBsKj4oMikpKTsKKyAgICBpZiAocmVwLT5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0cmluZ0ltcGwoQ3JlYXRlU3lt
Ym9sLCByZXAtPm1fZGF0YTgsIHJlcC0+bGVuZ3RoKCksIG93bmVyUmVwKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0cmluZ0ltcGwoQ3JlYXRlU3lt
Ym9sLCByZXAtPm1fZGF0YTE2LCByZXAtPmxlbmd0aCgpLCBvd25lclJlcCkpOworfQorCitSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkoKQoreworICAgIHJldHVy
biBjcmVhdGVTeW1ib2woZW1wdHkoKSk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6Y29udGFpbnNP
bmx5V2hpdGVzcGFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGUxNGQ0NTA5MDVh
NjE2NjJmN2I1NzI4MWYyMmIwMDU3NDc3NzJlMDIuLjkzOTkwMjhlZDM3MDJmZGEwMTE4Yzc2NjFj
ZjhhZGYwMGYzZDExY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC01Nyw2ICs1Nyw3
IEBACiBzdHJ1Y3QgU3Vic3RyaW5nVHJhbnNsYXRvcjsKIHN0cnVjdCBVQ2hhckJ1ZmZlclRyYW5z
bGF0b3I7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgUmV0YWluUHRyOworY2xhc3MgU3ltYm9s
UmVnaXN0cnk7CiAKIGVudW0gVGV4dENhc2VTZW5zaXRpdml0eSB7CiAgICAgVGV4dENhc2VTZW5z
aXRpdmUsCkBAIC0yOTIsMTggKzI5MywzOSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAg
U1RSSU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKICAgICB9CiAK
LSAgICBlbnVtIENyZWF0ZVN5bWJvbEVtcHR5VGFnIHsgQ3JlYXRlU3ltYm9sRW1wdHkgfTsKLSAg
ICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbEVtcHR5VGFnKQorICAgIGVudW0gQ3JlYXRlU3ltYm9s
VGFnIHsgQ3JlYXRlU3ltYm9sIH07CisgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3IHN5bWJvbCBz
dHJpbmdzIHRoYXQgaG9sZHMgZXhpc3RpbmcgOC1iaXQgW1tEZXNjcmlwdGlvbl1dIHN0cmluZyBh
cyBhIHN1YnN0cmluZyBidWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCisgICAgU3RyaW5nSW1wbChD
cmVhdGVTeW1ib2xUYWcsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYmFzZSkKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVm
Q291bnRJbmNyZW1lbnQpCi0gICAgICAgICwgbV9sZW5ndGgoMCkKLSAgICAgICAgLy8gV2UgZXhw
ZWN0IG1fbGVuZ3RoIHRvIGJlIGluaXRpYWxpemVkIHRvIDAgYXMgd2UgdXNlIGl0Ci0gICAgICAg
IC8vIHRvIHJlcHJlc2VudCBhIG51bGwgdGVybWluYXRlZCBidWZmZXIuCi0gICAgICAgICwgbV9k
YXRhOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fbGVuZ3RoKSkKLSAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3NGb3JTeW1ib2woc19oYXNoRmxhZzhCaXRCdWZm
ZXIgfCBCdWZmZXJJbnRlcm5hbCkpCisgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgICAg
ICAsIG1fZGF0YTgoY2hhcmFjdGVycykKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5k
RmxhZ3NGb3JTeW1ib2woc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdTeW1ib2wgfCBCdWZm
ZXJTdWJzdHJpbmcpKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGlzOEJpdCgpKTsKICAgICAgICAg
QVNTRVJUKG1fZGF0YTgpOworICAgICAgICBBU1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlwKCkg
IT0gQnVmZmVyU3Vic3RyaW5nKTsKIAotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RS
SU5HKG1fbGVuZ3RoKTsKKyAgICAgICAgc3Vic3RyaW5nQnVmZmVyKCkgPSBiYXNlLmxlYWtSZWYo
KTsKKyAgICAgICAgc3ltYm9sUmVnaXN0cnkoKSA9IG51bGxwdHI7CisKKyAgICAgICAgU1RSSU5H
X1NUQVRTX0FERF84QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOworICAgIH0KKworICAgIC8v
IFVzZWQgdG8gY3JlYXRlIG5ldyBzeW1ib2wgc3RyaW5ncyB0aGF0IGhvbGRzIGV4aXN0aW5nIDE2
LWJpdCBbW0Rlc2NyaXB0aW9uXV0gc3RyaW5nIGFzIGEgc3Vic3RyaW5nIGJ1ZmZlciAoQnVmZmVy
U3Vic3RyaW5nKS4KKyAgICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBiYXNl
KQorICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKKyAgICAgICAgLCBt
X2xlbmd0aChsZW5ndGgpCisgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKKyAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3NGb3JTeW1ib2woU3RyaW5nU3ltYm9sIHwgQnVm
ZmVyU3Vic3RyaW5nKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXM4Qml0KCkpOworICAgICAg
ICBBU1NFUlQobV9kYXRhMTYpOworICAgICAgICBBU1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlw
KCkgIT0gQnVmZmVyU3Vic3RyaW5nKTsKKworICAgICAgICBzdWJzdHJpbmdCdWZmZXIoKSA9IGJh
c2UubGVha1JlZigpOworICAgICAgICBzeW1ib2xSZWdpc3RyeSgpID0gbnVsbHB0cjsKKworICAg
ICAgICBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwogICAg
IH0KIAogICAgIH5TdHJpbmdJbXBsKCk7CkBAIC0zOTcsMTEgKzQxOSw3IEBAIGNsYXNzIFN0cmlu
Z0ltcGwgewogICAgICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8VD4ocmVzdWx0SW1wbCwg
bGVuZ3RoKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlU3ltYm9sRW1wdHkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xFbXB0eSkpOwotICAgIH0KLQorICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbEVtcHR5KCk7
CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRl
U3ltYm9sKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwKTsKIAogICAgIC8vIFJlYWxsb2NhdGUg
dGhlIFN0cmluZ0ltcGwuIFRoZSBvcmlnaW5hbFN0cmluZyBtdXN0IGJlIG9ubHkgb3duZWQgYnkg
dGhlIFBhc3NSZWZQdHIsCkBAIC03NDEsMTQgKzc1OSwyNSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsK
IAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgY29uc3QgVUNoYXIgbGF0aW4xQ2Fz
ZUZvbGRUYWJsZVsyNTZdOwogCi0gICAgU3RyaW5nSW1wbCYgZXh0cmFjdEZvbGRlZFN0cmluZ0lu
U3ltYm9sKCkKKyAgICBSZWY8U3RyaW5nSW1wbD4gZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9s
KCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChsZW5ndGgoKSk7CiAgICAgICAgIEFTU0VSVChpc1N5
bWJvbCgpKTsKICAgICAgICAgQVNTRVJUKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0
cmluZyk7CiAgICAgICAgIEFTU0VSVChzdWJzdHJpbmdCdWZmZXIoKSk7CiAgICAgICAgIEFTU0VS
VCghc3Vic3RyaW5nQnVmZmVyKCktPmlzU3ltYm9sKCkpOwotICAgICAgICByZXR1cm4gKnN1YnN0
cmluZ0J1ZmZlcigpOworICAgICAgICByZXR1cm4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwo
dGhpcywgMCwgbGVuZ3RoKCkpOworICAgIH0KKworICAgIFN5bWJvbFJlZ2lzdHJ5KiBjb25zdCYg
c3ltYm9sUmVnaXN0cnkoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU3ltYm9sKCkp
OworICAgICAgICByZXR1cm4gKih0YWlsUG9pbnRlcjxTeW1ib2xSZWdpc3RyeSo+KCkgKyAxKTsK
KyAgICB9CisKKyAgICBTeW1ib2xSZWdpc3RyeSomIHN5bWJvbFJlZ2lzdHJ5KCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKKyAgICAgICAgcmV0dXJuICoodGFpbFBvaW50ZXI8
U3ltYm9sUmVnaXN0cnkqPigpICsgMSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzQ4NjUzNjkxZDMxMjQ2NzFlOWVk
ZjIzMTJmZmQ4NWI4YjFlMTAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TeW1ib2xSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQtMjAwOCwgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5j
b20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN5bWJvbFJlZ2lzdHJ5
LmgiCisKKyNpbmNsdWRlICJIYXNoU2V0LmgiCisjaW5jbHVkZSAiSW50ZWdlclRvU3RyaW5nQ29u
dmVyc2lvbi5oIgorI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKKyNpbmNsdWRlICJUaHJlYWRpbmcu
aCIKKyNpbmNsdWRlICJXVEZUaHJlYWREYXRhLmgiCisjaW5jbHVkZSAiZHRvYS5oIgorI2luY2x1
ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KKworI2lmIFVTRShXRUJfVEhSRUFEKQorI2luY2x1ZGUg
IlNwaW5Mb2NrLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiBVU0UoV0VCX1RI
UkVBRCkKKworY2xhc3MgU3ltYm9sUmVnaXN0cnlMb2NrZXIgOiBwdWJsaWMgU3BpbkxvY2tIb2xk
ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN5bWJvbFJlZ2lzdHJ5TG9ja2VyKTsKK3B1
YmxpYzoKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tlcihTeW1ib2xSZWdpc3RyeSogc3ltYm9sUmVn
aXN0cnkpCisgICAgICAgIDogU3BpbkxvY2tIb2xkZXIoc3ltYm9sUmVnaXN0cnktPnNwaW5Mb2Nr
KCkpCisgICAgeworICAgIH0KK307CisKKyNlbHNlCisKK2NsYXNzIFN5bWJvbFJlZ2lzdHJ5TG9j
a2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTeW1ib2xSZWdpc3RyeUxvY2tlcik7Citw
dWJsaWM6CisgICAgU3ltYm9sUmVnaXN0cnlMb2NrZXIoU3ltYm9sUmVnaXN0cnkqKSB7IH0KK307
CisKKyNlbmRpZiAvLyBVU0UoV0VCX1RIUkVBRCkKKworU3ltYm9sUmVnaXN0cnk6OlN5bWJvbFJl
Z2lzdHJ5KCkKKyAgICA6IG1fdGFibGUoKQorI2lmIFVTRShXRUJfVEhSRUFEKQorICAgICwgbV9z
cGluTG9jaygpCisjZW5kaWYKK3sKK30KKworU3ltYm9sUmVnaXN0cnk6On5TeW1ib2xSZWdpc3Ry
eSgpCit7CisgICAgZm9yIChhdXRvIHBhaXIgOiBtX3RhYmxlKQorICAgICAgICBwYWlyLnZhbHVl
LT5zeW1ib2xSZWdpc3RyeSgpID0gbnVsbHB0cjsKK30KKworUmVmPFN0cmluZ0ltcGw+IFN5bWJv
bFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXkoU3RyaW5nIHJlcCkKK3sKKyAgICBTeW1ib2xSZWdpc3Ry
eUxvY2tlciBsb2NrZXIodGhpcyk7CisKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdGFibGUuYWRk
KHJlcCwgbnVsbHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAg
IFJlZjxTdHJpbmdJbXBsPiBzeW1ib2wgPSBTdHJpbmdJbXBsOjpjcmVhdGVTeW1ib2wocmVwLmlt
cGwoKSk7CisgICAgICAgIHN5bWJvbC0+c3ltYm9sUmVnaXN0cnkoKSA9IHRoaXM7CisgICAgICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSAmc3ltYm9sLmdldCgpOworICAgICAgICByZXR1
cm4gc3ltYm9sOworICAgIH0KKyAgICByZXR1cm4gKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
Cit9CisKK1N0cmluZyBTeW1ib2xSZWdpc3RyeTo6a2V5Rm9yU3ltYm9sKFN0cmluZ0ltcGwqIHVp
ZCkKK3sKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tlciBsb2NrZXIodGhpcyk7CisKKyAgICBBU1NF
UlQodWlkLT5pc1N5bWJvbCgpKTsKKyAgICBBU1NFUlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpID09
IHRoaXMpOworICAgIHJldHVybiB1aWQtPmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpOwor
fQorCit2b2lkIFN5bWJvbFJlZ2lzdHJ5OjpyZW1vdmUoU3RyaW5nSW1wbCogdWlkKQoreworICAg
IFN5bWJvbFJlZ2lzdHJ5TG9ja2VyIGxvY2tlcih0aGlzKTsKKworICAgIEFTU0VSVCh1aWQtPmlz
U3ltYm9sKCkpOworICAgIEFTU0VSVCh1aWQtPnN5bWJvbFJlZ2lzdHJ5KCkgPT0gdGhpcyk7Cisg
ICAgYXV0byBpdGVyYXRvciA9IG1fdGFibGUuZmluZCh1aWQtPmV4dHJhY3RGb2xkZWRTdHJpbmdJ
blN5bWJvbCgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXJhdG9yICE9IG1fdGFibGUu
ZW5kKCksICJUaGUgc3RyaW5nIGJlaW5nIHJlbW92ZWQgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgc3Ry
aW5nIHRhYmxlIG9mIGFuIG90aGVyIHRocmVhZCEiKTsKKyAgICBtX3RhYmxlLnJlbW92ZShpdGVy
YXRvcik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVn
aXN0cnkuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZjU1ODBlZWI0NmQ0YWZhZWYyMDBiNDViZmJmYTJiZmZmZjE5NDE1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
IFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFdU
Rl9TeW1ib2xSZWdpc3RyeV9oCisjZGVmaW5lIFdURl9TeW1ib2xSZWdpc3RyeV9oCisKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CisjaWYg
VVNFKFdFQl9USFJFQUQpCisjaW5jbHVkZSA8d3RmL1NwaW5Mb2NrLmg+CisjZW5kaWYKKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBTdHJpbmdJbXBsOworCitjbGFzcyBTeW1i
b2xSZWdpc3RyeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU3ltYm9sUmVnaXN0cnkpOworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTeW1ib2xSZWdpc3RyeSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+U3ltYm9sUmVn
aXN0cnkoKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gc3ltYm9s
Rm9yS2V5KFN0cmluZyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBrZXlGb3JTeW1i
b2woU3RyaW5nSW1wbCogdWlkKTsKKworICAgIHZvaWQgcmVtb3ZlKFN0cmluZ0ltcGwqIHVpZCk7
CisKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyAgICBTcGluTG9jayYgc3BpbkxvY2soKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fc3BpbkxvY2s7CisgICAgfQorI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZ0ltcGwqPiBtX3RhYmxlOworI2lmIFVTRShXRUJfVEhS
RUFEKQorICAgIFNwaW5Mb2NrIG1fc3BpbkxvY2s7CisjZW5kaWYKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggOTBkNGI4ZjRkY2ZkZGEyZWRkZmRmZTVkOGVlMGU4NzZhNGQxODA3NC4uYWE4NDI0
YWE0Mjc1YjU4MDQ3NmQ4MTg0ZThhYmE4ZjY2ZjcwZGNmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDE1LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtFUzZdIEltcGxlbWVudCBTeW1ib2wuZm9yIGFuZCBTeW1ib2wua2V5Rm9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0MDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdG8g
Y2hlY2sgU3ltYm9sJ3MgaWRlbnRpdHkgb3ZlciBkaWZmZXJlbnQgcmVhbG1zLgorCisgICAgICAg
ICoganMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9kb20vc2NyaXB0LXRlc3RzL2Nyb3NzLWZyYW1lLXN5bWJvbHMuanM6IEFkZGVkLgorCiAyMDE1
LTA0LTA5ICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBbRUZMXSBmYXN0L2Nzcy92ZXJ0aWNhbC10ZXh0LW92ZXJmbG93LWVsbGlwc2lzLXRleHQtYWxp
Z24tY2VudGVyLmh0bWwgaXMgZmFpbGluZyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Rv
bS9jcm9zcy1mcmFtZS1zeW1ib2xzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9j
cm9zcy1mcmFtZS1zeW1ib2xzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2JhMWE5OWFkNWE3
MDhiMTY1N2FjMDBkODcxMTgxNDUxNWY1NDcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK1Rlc3RzIFN5bWJvbCBhbmQgZ2xvYmFsIHN5bWJvbCByZWdpc3RyeSBpZGVudGl0eQorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBmcmFtZS5TeW1ib2wuaXRlcmF0b3Ig
aXMgU3ltYm9sLml0ZXJhdG9yCitQQVNTIGZyYW1lLlN5bWJvbCgnSGVsbG8nKSBpcyBub3QgU3lt
Ym9sKCdIZWxsbycpCitQQVNTIFN5bWJvbC5rZXlGb3Ioc3ltKSBpcyAnSGVsbG8nCitQQVNTIGZy
YW1lLlN5bWJvbC5rZXlGb3Ioc3ltKSBpcyAnSGVsbG8nCitQQVNTIFN5bWJvbC5mb3IoJ0hlbGxv
JykgaXMgc3ltCitQQVNTIGZyYW1lLlN5bWJvbC5mb3IoJ0hlbGxvJykgaXMgc3ltCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMuaHRtbCBiL0xheW91dFRlc3Rz
L2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIzNjI3YzFjZjVk
ZGQyMjQwMDliY2RmYzFiNzIyZThiMGY5NjVkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lPjwvaWZyYW1lPgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1ib2xzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvY3Jvc3MtZnJh
bWUtc3ltYm9scy5qcyBiL0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvY3Jvc3MtZnJh
bWUtc3ltYm9scy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzhlYWYzN2YxZjA3ZjkzYWNjOTUxZDE5OTg2OGQ2
MGRlZjQ4Y2UwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10
ZXN0cy9jcm9zcy1mcmFtZS1zeW1ib2xzLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Rlc2NyaXB0aW9u
KCJUZXN0cyBTeW1ib2wgYW5kIGdsb2JhbCBzeW1ib2wgcmVnaXN0cnkgaWRlbnRpdHkiKTsKKwor
dmFyIGZyYW1lID0gZnJhbWVzWzBdOworCitzaG91bGRCZSgiZnJhbWUuU3ltYm9sLml0ZXJhdG9y
IiwgIlN5bWJvbC5pdGVyYXRvciIpOworc2hvdWxkTm90QmUoImZyYW1lLlN5bWJvbCgnSGVsbG8n
KSIsICJTeW1ib2woJ0hlbGxvJykiKTsKKwordmFyIHN5bSA9IFN5bWJvbC5mb3IoIkhlbGxvIik7
CitzaG91bGRCZSgiU3ltYm9sLmtleUZvcihzeW0pIiwgIidIZWxsbyciKTsKK3Nob3VsZEJlKCJm
cmFtZS5TeW1ib2wua2V5Rm9yKHN5bSkiLCAiJ0hlbGxvJyIpOworc2hvdWxkQmUoIlN5bWJvbC5m
b3IoJ0hlbGxvJykiLCAic3ltIik7CitzaG91bGRCZSgiZnJhbWUuU3ltYm9sLmZvcignSGVsbG8n
KSIsICJzeW0iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250486</attachid>
            <date>2015-04-09 16:36:29 -0700</date>
            <delta_ts>2015-04-09 16:44:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143404-20150410083537.patch</filename>
            <type>text/plain</type>
            <size>43256</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDhhYzlhNDAwYmQ0NjFlNTU4ZDBkNzQ1MGFjZWRiNjI4MzRlNDg2Li4wMTY5Y2NjZDQyZDgyYzMz
MTM3ZTA0NGY3YWFkMTA3YTRiOGYyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxNS0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtl
eUZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IuCisgICAgICAg
IFN5bWJvbFJlZ2lzdHJ5IG1haW50YWlucyByZWdpc3RlcmVkIFN0cmluZ0ltcGwqIHN5bWJvbHMu
CisgICAgICAgIEFuZCB0byBtYWtlIHRoaXMgbWFwcGluZyBlbmFibGVkIG92ZXIgcmVhbG1zLAor
ICAgICAgICBWTSBvd25zIHRoaXMgbWFwcGluZyAobm90IEpTR2xvYmFsT2JqZWN0KS4KKworICAg
ICAgICBXaGlsZSB0aGVyZSdzIERlZmF1bHQgQXRvbWljU3RyaW5nVGFibGUgcGVyIHRocmVhZCwK
KyAgICAgICAgU3ltYm9sUmVnaXN0cnkgc2hvdWxkIG5vdCBleGlzdCBvdmVyIFZNcy4KKyAgICAg
ICAgU28gZXZlcnl0aW1lIFZNIGlzIGNyZWF0ZWQsIFN5bWJvbFJlZ2lzdHJ5IGlzIGFsc28gY3Jl
YXRlZC4KKworICAgICAgICBJbiBTeW1ib2xSZWdpc3RyeSBpbXBsZW1lbnRhdGlvbiwgd2UgZG9u
J3QgbGV2ZXJhZ2UgV2Vha0dDTWFwIChvciB3ZWFrIHJlZmVyZW5jZSBkZXNpZ24pLgorICAgICAg
ICBUaGVyZXMgYXJlIHNldmVyYWwgcmVhc29ucy4KKyAgICAgICAgMS4gU3RyaW5nSW1wbCogd2hp
Y2ggcmVwcmVzZW50cyBpZGVudGl0eSBvZiBTeW1ib2xzIGlzIG5vdCBHQy1tYW5hZ2VkIG9iamVj
dC4KKyAgICAgICAgICAgU28gd2UgY2Fubm90IHVzZSBXZWFrR0NNYXAgZGlyZWN0bHkuCisgICAg
ICAgICAgIFdoaWxlIFN5bWJvbCogaXMgR0MtbWFuYWdlZCBvYmplY3QsIGhvbGRpbmcgd2VhayBy
ZWZlcmVuY2UgdG8gU3ltYm9sKiBkb2Vzbid0IG1haW50YWluIEpTIHN5bWJvbHMgKGV4cG9zZWQg
cHJpbWl0aXZlIHZhbHVlcyB0byB1c2VycykgbGl2ZW5lc3MsCisgICAgICAgICAgIGJlY2F1c2Ug
ZGlzdGluY3QgU3ltYm9sKiBjYW4gZXhpc3QuCisgICAgICAgICAgIERpc3RpbmN0IFN5bWJvbCog
bWVhbnMgdGhlIFN5bWJvbCogb2JqZWN0IHRoYXQgcG9pbnRlciB2YWx1ZSAoU3ltYm9sKikgaXMg
ZGlmZmVyZW50IGZyb20gd2Vha2x5IHJlZmVyZW5jZWQgU3ltYm9sKiBidXQgaGVsZCBTdHJpbmdJ
bXBsKiBpcyB0aGUgc2FtZS4KKworICAgICAgICAyLiBXZSBkb24ndCB1c2UgV1RGOjpXZWFrUHRy
LiBJZiB3ZSBhZGQgV2Vha1B0ckZhY3RvcnkgaW50byBTdHJpbmdJbXBsJ3MgbWVtYmVyLCB3ZSBj
YW4gdHJhY2sgU3RyaW5nSW1wbConcyBsaXZlbmVzcyBieSBXZWFrUHRyLgorICAgICAgICAgICBI
b3dldmVyIHRoZXJlJ3MgcHJvYmxlbSBhYm91dCB3aGVuIHdlIHBydW5lIHN0YWxlZCBlbnRyaWVz
IGluIFN5bWJvbFJlZ2lzdHJ5LgorICAgICAgICAgICBTaW5jZSB0aGUgbWVtb3J5IGFsbG9jYXRl
ZCBmb3IgdGhlIFN5bWJvbCBpcyB0eXBpY2FsbHkgb2NjdXBpZWQgYnkgYWxsb2NhdGVkIHN5bWJv
bGl6ZWQgU3RyaW5nSW1wbConcyBjb250ZW50LAorICAgICAgICAgICBhbmQgaXQgaXMgbm90IGlu
IEdDLWhlYXAuCisgICAgICAgICAgIFdoaWxlIGhlYXZpbHkgcmVnaXN0ZXJpbmcgU3ltYm9scyBh
bmQgc3RvcmluZyBTdHJpbmdJbXBsKiBpbnRvIFN5bWJvbFJlZ2lzdHJ5LCBIZWFwJ3MgRWRlblNw
YWNlIGlzIG5vdCBzbyBvY2N1cGllZC4KKyAgICAgICAgICAgU28gR0MgdHlwaWNhbGx5IGF0dGVt
cHQgdG8gcGVyZm9ybSBFZGVuQ29sbGVjdGlvbiwgYW5kIGl0IGRvZXNuJ3QgY2FsbCBXZWFrR0NN
YXAncyBwcnVsZVN0YWxlRW50cmllcyBjYWxsYmFjay4KKyAgICAgICAgICAgQXMgYSByZXN1bHQs
IGJlZm9yZSBwcnVuaW5nIHN0YWxlZCBlbnRyaWVzIGluIFN5bWJvbFJlZ2lzdHJ5LCBmYXN0IG1h
bGxvYy1lZCBtZW1vcnkgZmlsbHMgdXAgdGhlIHN5c3RlbSBtZW1vcnkuCisKKyAgICAgICAgU28g
aW5zdGVhZCBvZiB1c2luZyBXZWFrIHJlZmVyZW5jZSwgd2UgdGFrZSByZWxhdGl2ZWx5IGVhc3kg
ZGVzaWduLgorICAgICAgICBXaGVuIHdlIHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCog
aW50byBTeW1ib2xSZWdpc3RyeSwgc3ltYm9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0
aGF0LgorICAgICAgICBBbmQgd2hlbiBkZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVm
ZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28g
d2l0aCBBdG9taWNTdHJpbmdUYWJsZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvckZvcik6CisgICAgICAg
IChKU0M6OnN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6c3lt
Ym9sUmVnaXN0cnkpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanM6
IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTUtMDQtMDggIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UganNOb250cml2aWFsU3RyaW5nIGlu
IG1vcmUgcGxhY2VzIGlmIHRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSAyIG9yIG1vcmUg
Y2hhcmFjdGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBlYzc5NjkxNDllOWNiMGJiNDJiZTQzOWQ2MzliY2MxNGEzMWE5NTk3
Li5kMmFjZDNmODY0YWFmYTgwZTVmZTVkNGZiOWFiMDdiMzhmYjkwYjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU2IEBACisyMDE1LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBTeW1ib2wuZm9yIGFuZCBTeW1ib2wua2V5Rm9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0MDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHdl
IHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCogaW50byBTeW1ib2xSZWdpc3RyeSwgc3lt
Ym9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0aGF0LgorICAgICAgICBBbmQgd2hlbiBk
ZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVmZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0
cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28gd2l0aCBBdG9taWNTdHJpbmdUYWJsZS4K
KyAgICAgICAgV2hpbGUgQXRvbWljU3RyaW5nVGFibGUgKGluIFdlYkNvcmUgY2FzZSkgZXhpc3Rz
IGluIHRocmVhZCBsb2NhbCBzdG9yYWdlLAorICAgICAgICBTeW1ib2xSZWdpc3RyeSBleGlzdHMg
cGVyIFZNIGFuZCBTdHJpbmdJbXBsKiBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHJlZ2lzdGVyZWQg
U3ltYm9sUmVnaXN0cnkuCisKKyAgICAgICAgU2luY2UgU3RyaW5nSW1wbCBoYXMgaXNTeW1ib2wg
ZXRjLiBtZW1iZXJzLCBpdCdzIGNsYXNzIGlzIGF3YXJlIG9mIFN5bWJvbCB1c2UgY2FzZXMuCisg
ICAgICAgIFNvIGludHJvZHVjZSBTeW1ib2xSZWdpc3RyeSBpbiBXVEYgbGF5ZXJzIGFzIGlmIEF0
b21pY1N0cmluZ1RhYmxlLgorCisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6Cisg
ICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nOjphZGRTbG93Q2FzZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6Zmlu
ZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpmaW5kSW50ZXJuYWwpOgor
ICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmQpOiBEZWxldGVkLgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmQp
OgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjp+U3RyaW5nSW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5
bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbEVtcHR5KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OlN0cmluZ0ltcGwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3Ry
aW5nSW5TeW1ib2wpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpzeW1ib2xSZWdpc3RyeSk6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbEVtcHR5KTogRGVsZXRlZC4K
KyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
V1RGOjpTeW1ib2xSZWdpc3RyeUxvY2tlcjo6U3ltYm9sUmVnaXN0cnlMb2NrZXIpOgorICAgICAg
ICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOgorICAgICAgICAoV1RGOjpT
eW1ib2xSZWdpc3RyeTo6flN5bWJvbFJlZ2lzdHJ5KToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVn
aXN0cnk6OnN5bWJvbEZvcktleSk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjprZXlG
b3JTeW1ib2wpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6cmVtb3ZlKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6U3lt
Ym9sUmVnaXN0cnlLZXk6OlN5bWJvbFJlZ2lzdHJ5S2V5KToKKyAgICAgICAgKFdURjo6U3ltYm9s
UmVnaXN0cnlLZXk6Omhhc2gpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeUtleTo6aW1w
bCk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5S2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5S2V5OjpoYXNoVGFibGVEZWxldGVk
VmFsdWUpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxTeW1ib2xSZWdpc3RyeUtleT46Okhh
c2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxTeW1ib2xSZWdpc3RyeUtleT46
Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxTeW1ib2xSZWdpc3RyeUtl
eT46OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpzcGluTG9j
ayk6CisKIDIwMTUtMDQtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb250ZW50IEZpbHRlcmluZ10gQWRkIGEgSEFWRShQQVJFTlRBTF9DT05UUk9MUykgYW5k
IHVzZSBpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc5MTk2Mjg0NzYy
YjMwMDM0NDE3ZmE0ZjE0ZjFmYjI4MzgxYzQ1ZTkuLjEyNDU2MWVjYTUzYTMzODhiNzYxNDUzMWU4
Mjg5YWQwY2JhZWJjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2
NSw5ICs1NjUsOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVu
dGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEu
Y3BwCiAgICAgcnVudGltZS9TeW1ib2wuY3BwCisgICAgcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL1N5bWJvbE9iamVjdC5jcHAKICAgICBydW50aW1lL1N5bWJvbFBy
b3RvdHlwZS5jcHAKLSAgICBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCiAgICAg
cnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKQEAgLTYxMSw2ICs2MTEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAgICAg
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjk5YWM3ZWMwZWQ2MDkzZTBhODBmYzZmOTdjNjUyNTQ4
MTY5ZjhmOS4uMTg1ZGM3ZTMxZDA3Y2Q4ZDc0Mzk2ODBmMTcyOWU3NjFkZjMyMmRlYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU4LDYgKzU4LDcgQEAg
YWxsIDogXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3Iu
bHV0LmggXAogICAgIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBTeW1ib2xD
b25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3ltYm9sUHJvdG90eXBlLmx1dC5oIFwKICAgICB1ZGlz
ODZfaXRhYi5oIFwKICAgICBCeXRlY29kZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWE5NGZhMzFmMWEwOTVi
ZTM4ODRjNDE3ODAyNDRiNzE4OGIzMDI4OS4uYmVkNDA1YWRmYjc3YjdkYjhjMGYyOTU0ZDVlMTdi
M2I2ZDUyNTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtMzAsNyArMzAsMTggQEAKICNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIlN5bWJvbC5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0
cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJTeW1ib2xDb25zdHJ1
Y3Rvci5sdXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM4LDYgKzQ5LDEzIEBACiAKIGNv
bnN0IENsYXNzSW5mbyBTeW1ib2xDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN5bWJvbENvbnN0cnVjdG9yKSB9
OwogCisvKiBTb3VyY2UgZm9yIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gc3ltYm9s
Q29uc3RydWN0b3JUYWJsZQorICBmb3IgICAgICAgc3ltYm9sQ29uc3RydWN0b3JGb3IgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICBrZXlGb3IgICAgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3Ig
ICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwogU3ltYm9sQ29uc3RydWN0b3I6OlN5
bWJvbENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCiB7CkBAIC01NSw2ICs3MywxMyBAQCB2b2lkIFN5
bWJvbENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSog
cHJvdG90eXBlKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExf
S05PV05fU1lNQk9MKElOSVRJQUxJWkVfV0VMTF9LTk9XTl9TWU1CT0xTKQogfQogCitib29sIFN5
bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNs
b3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBzeW1i
b2xDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8U3ltYm9sQ29uc3RydWN0b3IqPihvYmplY3QpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBKU1ZhbHVlIGRlc2NyaXB0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7CkBAIC03NCw0ICs5OSwz
MyBAQCBDYWxsVHlwZSBTeW1ib2xDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIEpTU3RyaW5nKiBzdHJpbmdLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgU3RyaW5nIHN0cmluZyA9IHN0cmlu
Z0tleS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgUmVmPFN0cmlu
Z0ltcGw+IHVpZCA9IGV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKS0+c3ltYm9sRm9yS2V5KHN0
cmluZyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZShleGVjLT52
bSgpLCBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4oJnVpZC5nZXQoKSkpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSBzeW0gPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBpZiAoIXN5bS5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAgIFN5bWJvbCogc3ltYm9sID0gYXNTeW1ib2woc3lt
KTsKKyAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQgPSBzeW1ib2wtPnByaXZhdGVOYW1lKCkudWlk
KCk7CisgICAgQVNTRVJUKHVpZC0+aXNTeW1ib2woKSk7CisgICAgaWYgKCF1aWQtPnN5bWJvbFJl
Z2lzdHJ5KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisKKyAgICBBU1NFUlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpID09IGV4ZWMtPnZtKCkuc3ltYm9s
UmVnaXN0cnkoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCB1
aWQtPnN5bWJvbFJlZ2lzdHJ5KCktPmtleUZvclN5bWJvbCh1aWQpKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENv
bnN0cnVjdG9yLmgKaW5kZXggMGFlMTJkN2ZkZDVjNDI0YmI2OWEyNmQxZGMxM2FlMDgwODRhNjgz
OS4uZTU2MzcxMzMwMThmMmQ1YTI3NzE3YzViYjk0YjdhMjYzOTRjOTM1OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oCkBAIC01NSwx
MCArNTUsMTMgQEAgY2xhc3MgU3ltYm9sQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5j
dGlvbiB7CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN5bWJvbFBy
b3RvdHlwZSopOwogCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKIHBy
aXZhdGU6CiAgICAgU3ltYm9sQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0
aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
KTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
KyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNjFlNDU4MmNmMjYxYjYzNmQx
ZWJlMzJmMDQ0YTJiMjg3M2UxZDFlNy4uODExNTQwMWFiMzFjNDY0MzQyZDhhYWE3MDMyMmVmYWJl
M2E2NDA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODcsMTMgKzg3
LDE0IEBACiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrR0NN
YXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKKyNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KIAogI2lmIEVOQUJM
RShERkdfSklUKQogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCkBAIC0xNTQsNiArMTU1
LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4
ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgLCB0b3BWTUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAs
IHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCiAgICAgLCBtX2F0b21pY1N0cmlu
Z1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFibGUpCisgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KHN0
ZDo6bWFrZV91bmlxdWU8V1RGOjpTeW1ib2xSZWdpc3RyeT4oKSkKICAgICAsIHByb3BlcnR5TmFt
ZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCiAg
ICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IGE0NmEzNzYwZDRmZWExOWRhOTQ4NTI3ODU2ZTZhNjNmNmZjMDhlYWMuLjdjZjY5MDAzNmUyNTU2
MmJkNGY1MjdkM2VlZTg3ZGIyYTY0ODlmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJl
YWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC0yNzgsNiArMjc5LDcgQEAgY2xhc3MgVk0gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0
eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9hdG9t
aWNTdHJpbmdUYWJsZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpTeW1ib2xSZWdpc3RyeT4g
bV9zeW1ib2xSZWdpc3RyeTsKICAgICBDb21tb25JZGVudGlmaWVycyogcHJvcGVydHlOYW1lczsK
ICAgICBjb25zdCBNYXJrZWRBcmd1bWVudEJ1ZmZlciogZW1wdHlMaXN0OyAvLyBMaXN0cyBhcmUg
c3VwcG9zZWQgdG8gYmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayB0byBoYXZlIHRoZWlyIGVsZW1l
bnRzIHByb3Blcmx5IG1hcmtlZCwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUgLSBidXQgdGhp
cyBsaXN0IGhhcyBub3RoaW5nIHRvIG1hcmsuCiAgICAgU21hbGxTdHJpbmdzIHNtYWxsU3RyaW5n
czsKQEAgLTI4OCw2ICsyOTAsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxWTT4gewogICAgIFN0cm9uZzxKU1N0cmluZz4gbGFzdENhY2hlZFN0cmluZzsKIAogICAg
IEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXRvbWljU3RyaW5nVGFibGU7IH0KKyAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5KiBzeW1ib2xSZWdp
c3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnkuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0
SW5EZWZpbmVPd25Qcm9wZXJ0eShib29sIGluRGVmaW5lT3duUHJvcGVydHkpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0
cnkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1yZWdpc3Ry
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MDg0NGExMzI0NWZkODQxMTdiZGMxMDliOTk0ZTRhMWVmMDNlNGU1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9z
eW1ib2wtcmVnaXN0cnkuanMKQEAgLTAsMCArMSw3NCBAQAorZnVuY3Rpb24gdGVzdChhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsgYWN0dWFsKTsKK30KKwordmFyIGhlbGxvID0gU3lt
Ym9sKCJIZWxsbyIpOwordmFyIHByb3RvID0gU3ltYm9sKCJfX3Byb3RvX18iKTsKKworZm9yICh2
YXIgc3ltIG9mIFsgaGVsbG8sIHByb3RvLCBTeW1ib2wuaXRlcmF0b3IgXSkgeworICAgIHZhciBr
ZXkgPSBTeW1ib2wua2V5Rm9yKHN5bSk7CisgICAgdGVzdChrZXksIHVuZGVmaW5lZCk7CisgICAg
Ly8gdHdpY2UKKyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZvcihzeW0pOworICAgIHRlc3Qoa2V5
LCB1bmRlZmluZWQpOworfQorCitmb3IgKHZhciBrZXkgb2YgWyAiSGVsbG8iLCAiX19wcm90b19f
IiwgIlN5bWJvbC5pdGVyYXRvciIsIG51bGwsIHVuZGVmaW5lZCwgNDIsIDIwLjUsIHRydWUsIGZh
bHNlLCB7fSwgZnVuY3Rpb24gKCkge30sIFtdLCAnJyBdKSB7CisgICAgdmFyIHN5bSA9IFN5bWJv
bC5mb3Ioa2V5KTsKKyAgICB0ZXN0KHR5cGVvZiBzeW0sICJzeW1ib2wiKTsKKyAgICB0ZXN0KHN5
bS50b1N0cmluZygpLCAiU3ltYm9sKCIgKyBTdHJpbmcoa2V5KSArICIpIik7CisKKyAgICB2YXIg
c3ltMiA9IFN5bWJvbC5mb3Ioa2V5KTsKKyAgICB0ZXN0KHN5bSA9PT0gc3ltMiwgdHJ1ZSk7CisK
KyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZvcihzeW0pOworICAgIHRlc3Qoa2V5LCBrZXkpOwor
ICAgIHZhciBrZXkgPSBTeW1ib2wua2V5Rm9yKHN5bTIpOworICAgIHRlc3Qoa2V5LCBrZXkpOwor
fQorCit2YXIgZXJyb3IgPSBudWxsOwordHJ5IHsKKyAgICB2YXIga2V5ID0geworICAgICAgICB0
b1N0cmluZygpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndG9TdHJpbmcnKTsKKyAg
ICAgICAgfQorICAgIH07CisgICAgU3ltYm9sLmZvcihrZXkpOworfSBjYXRjaCAoZSkgeworICAg
IGVycm9yID0gZTsKK30KK2lmICghZXJyb3IpCisgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhy
b3duJyk7CitpZiAoU3RyaW5nKGVycm9yKSAhPT0gJ0Vycm9yOiB0b1N0cmluZycpCisgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgZXJyb3I6ICcgKyBTdHJpbmcoZXJyb3IpKTsKKwordmFyIGVsZW1l
bnRzID0gWworICAgIG51bGwsCisgICAgdW5kZWZpbmVkLAorICAgIDQyLAorICAgIDIwLjUsCisg
ICAgdHJ1ZSwKKyAgICBmYWxzZSwKKyAgICAnc3RyaW5nJywKKyAgICB7fSwKKyAgICBmdW5jdGlv
biAoKSB7fSwKKyAgICBbXSwKK107Citmb3IgKHZhciBpdGVtIG9mIGVsZW1lbnRzKSB7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBTeW1ib2wua2V5Rm9yKGl0ZW0p
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAo
IWVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAo
U3RyaW5nKGVycm9yKSAhPT0gJ1R5cGVFcnJvcjogVHlwZSBlcnJvcicpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIGVycm9yOiAnICsgU3RyaW5nKGVycm9yKSk7Cit9CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKKyAgICBTeW1ib2wuZm9yKGkpOworZ2MoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ogYi9Tb3VyY2UvV1RGL1dU
Ri52Y3hwcm9qL1dURi52Y3hwcm9qCmluZGV4IDVkMWRiN2RhMDlmN2Q4Y2U3YmNlNWE1ZmU4OTRl
YWE4YzRlZWZkZDcuLmM3OGE4MTE1MmY0NzNhMzMzMTY2MDYwZmI4YzcyNjliYTBlZWQ0YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKKysrIGIvU291cmNl
L1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagpAQCAtMTM0LDYgKzEzNCw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdJbXBsLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ1N0YXRpY3MuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3RyaW5nVmlldy5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTeW1ib2xSZWdpc3RyeS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcY2ZcQXRvbWljU3RyaW5nQ0YuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcY2ZcU3RyaW5nQ0YuY3BwIiAvPgpA
QCAtMjk1LDYgKzI5Niw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxT
dHJpbmdJbXBsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJp
bmdPcGVyYXRvcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0
cmluZ1ZpZXcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN5bWJv
bFJlZ2lzdHJ5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZT
dHJpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxUaHJlYWRpbmcuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxUaHJlYWRpbmdQcmltaXRpdmVzLmgi
IC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRl
cnMgYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKaW5kZXggNTYx
OTcyNjBlNzQ3YzIyMDc1NTg2NTczNWY3MWQxMmNlNzM2MzkyMS4uZWYwM2I1NzBmZjMwNTc3OGFm
ODI2MGU0M2ZjNjc5MDA4Y2M3MmE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmN4cHJv
ai9XVEYudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZj
eHByb2ouZmlsdGVycwpAQCAtNzgsNiArNzgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cd3RmXHRleHRcU3RyaW5nSW1wbC5jcHAiPgogICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxT
eW1ib2xSZWdpc3RyeS5jcHAiPgorICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+dGV4dDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAt
MzQyLDYgKzM0NSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJp
bmdWaWV3LmgiPgogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN5bWJvbFJlZ2lzdHJ5LmgiPgor
ICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcuaCI+CiAgICAgICA8RmlsdGVyPnRl
eHQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM3MTYyNGQ4NzliZjQ4YTA5Mjg0MDY3MTUzMzFmZDQ0MDIzNmFl
NWMuLjc4ZTVlZjlhZGE4ZDNlOTliYzAxNjljNzBhMDczMzZkYTZlNTZhZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQsNiArNzQsOCBAQAogCQkyQ0RF
RDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVu
TG9vcC5jcHAgKi87IH07CiAJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMjE4
MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oICovOyB9OwogCQk0MzBCNDc4OTFBQUFBQzFBMDAx
MjIzREEgLyogU3RyaW5nQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmgg
Ki87IH07CisJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OworCQk3MEE5OTNGRjFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1i
b2xSZWdpc3RyeS5oICovOyB9OwogCQk3Q0JCQTA3NDE5QkI3RkRDMDBCQkYwMjUgLyogT1NPYmpl
Y3RQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
QkJBMDczMTlCQjdGREMwMEJCRjAyNSAvKiBPU09iamVjdFB0ci5oICovOyB9OwogCQk3Q0REN0ZG
ODE4NkQyOTFFMDA3NDMzQ0QgLyogSXRlcmF0b3JBZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NERDdGRjcxODZEMjkxRTAwNzQzM0NEIC8q
IEl0ZXJhdG9yQWRhcHRvcnMuaCAqLzsgfTsKIAkJN0NERDdGRkExODZEMkE1NDAwNzQzM0NEIC8q
IEl0ZXJhdG9yUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDREQ3RkY5MTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmggKi87IH07
CkBAIC0zNjIsNiArMzY0LDggQEAKIAkJNUQyNDdCNzAxNDY4OUM0NzAwRTc4Qjc2IC8qIERlYnVn
UmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjczMTQ2ODlDNDcwMEU3OEI3NiAvKiBX
VEYueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV1RGLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTQxQ0FGNDE2MzBEQjI2MDA2RDBERUMgLyogQ29weVdURkhlYWRlcnMu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29weVdURkhlYWRlcnMu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQTk5M0ZDMUFENzE1MTMw
MEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTeW1ib2xSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0JCQTA3MzE5QkI3RkRDMDBCQkYwMjUgLyogT1NPYmplY3RQdHIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NPYmplY3RQdHIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NERDdGRjcxODZEMjkxRTAwNzQzM0NEIC8qIEl0ZXJh
dG9yQWRhcHRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0b3JB
ZGFwdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0REN0ZGOTE4NkQyQTU0
MDA3NDMzQ0QgLyogSXRlcmF0b3JSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJdGVyYXRvclJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTQs
NiArOTU4LDggQEAKIAkJCQk5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5j
cHAgKi8sCiAJCQkJQThBNDczMkExNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ09wZXJhdG9ycy5o
ICovLAogCQkJCUE4QTQ3MzJCMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdTdGF0aWNzLmNwcCAq
LywKKwkJCQk3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICov
LAorCQkJCTcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oICovLAog
CQkJCUE4QTQ3MzJDMTUxQTgyNUIwMDQxMjNGRiAvKiBUZXh0UG9zaXRpb24uaCAqLywKIAkJCQlB
OEE0NzMyRDE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmNwcCAqLywKIAkJCQlBOEE0NzMy
RTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggKi8sCkBAIC0xMTI3LDYgKzExMzMsNyBA
QAogCQkJCUE4QTQ3M0VFMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9ySGFuZGxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTQ2NTE2RTE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJs
ZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwRDg1QjQxNzIzNENDMTAwMzM4MjEwIC8qIE5v
TG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRjE1MUE4MjVCMDA0MTIz
RkYgLyogTm9uY29weWFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Y1MTUxQTgyNUIw
MDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTI5QzMzRTE1
RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBpbiBIZWFkZXJzICovLApAQCAt
MTM3OCw2ICsxMzg1LDcgQEAKIAkJCQlBNUJBMTVGQzE4MjQzNUE2MDBBODJFNjkgLyogU3RyaW5n
SW1wbENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1QkExNUY1MTgyNDM0ODAwMEE4MkU2OSAv
KiBTdHJpbmdJbXBsTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RjMxODI0MzNBOTAw
QTgyRTY5IC8qIFN0cmluZ01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTcwQTk5M0ZFMUFENzE1
MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRE
QkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDc0NDMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ1N0YXRpY3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdD
Ri5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZGMxOTA1NTQ2YzVl
ZjA1ZTFlMTFhMWQ3YzVjODNhYzM2NDA5OWYwZS4uOWQ5M2FkNTk3ZDQ0MjAyYTk4OGQxZWYyMTcy
Y2ViN2FiMDQyOTBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTEzMiw2ICsxMzIsNyBAQCBz
ZXQoV1RGX0hFQURFUlMKICAgICB0ZXh0L1N0cmluZ0hhc2guaAogICAgIHRleHQvU3RyaW5nSW1w
bC5oCiAgICAgdGV4dC9TdHJpbmdWaWV3LmgKKyAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKICAg
ICB0ZXh0L1dURlN0cmluZy5oCiAKICAgICB0aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCkBAIC0x
OTksNiArMjAwLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgdGV4dC9TdHJpbmdJbXBsLmNwcAog
ICAgIHRleHQvU3RyaW5nU3RhdGljcy5jcHAKICAgICB0ZXh0L1N0cmluZ1ZpZXcuY3BwCisgICAg
dGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKICAgICB0ZXh0L1dURlN0cmluZy5jcHAKIAogICAgIHRo
cmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3Bw
CmluZGV4IGZhN2U0MzQ3YTEyM2JmNmIxNzViMDZhMzhjNWU5Y2EyMmI4ZWQ0NTAuLjVhYjRlMWVi
N2RiZWRhNmVhMzczNWQ1NGQyYzUwNjc4NTI3MzI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5jcHAKQEAgLTQwMyw4ICs0MDMsMTEgQEAgc3RydWN0IENoYXJCdWZmZXJGcm9tTGl0
ZXJhbERhdGFUcmFuc2xhdG9yIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuICpTdHJpbmdJbXBsOjplbXB0eSgpOwogCi0gICAgaWYgKHN0cmluZy5pc1N5bWJvbCgp
KQotICAgICAgICByZXR1cm4gYWRkKHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2wo
KSk7CisgICAgaWYgKHN0cmluZy5pc1N5bWJvbCgpKSB7CisgICAgICAgIGlmIChzdHJpbmcuaXM4
Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuICphZGQoc3RyaW5nLmNoYXJhY3RlcnMxNigp
LCBzdHJpbmcubGVuZ3RoKCkpOworICAgIH0KIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0
cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNh
c2UgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGF0b21pYy4iKTsKIApAQCAtNDI0LDggKzQyNywx
MSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3IgewogICAgIGlm
ICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7
CiAKLSAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBhZGQoc3RyaW5n
VGFibGUsIHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKSk7CisgICAgaWYgKHN0
cmluZy5pc1N5bWJvbCgpKSB7CisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAg
ICAgICByZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsK
KyAgICAgICAgcmV0dXJuICphZGQoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCkpOworICAgIH0KIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygp
LCAiQXRvbWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmlu
ZyBpcyBhbHJlYWR5IGF0b21pYy4iKTsKIApAQCAtNTEyLDggKzUxOCwxMSBAQCBBdG9taWNTdHJp
bmdJbXBsKiBBdG9taWNTdHJpbmc6OmZpbmRTbG93Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiAg
ICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9t
aWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CiAKLSAgICBpZiAoc3RyaW5nLmlz
U3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBmaW5kKCZzdHJpbmcuZXh0cmFjdEZvbGRlZFN0cmlu
Z0luU3ltYm9sKCkpOworICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkgeworICAgICAgICBpZiAo
c3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGZpbmRJbnRlcm5hbChzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIGZpbmRJbnRl
cm5hbChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgfQogCiAg
ICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwogICAgIEhhc2hTZXQ8U3RyaW5nSW1w
bCo+JiBhdG9taWNTdHJpbmdUYWJsZSA9IHN0cmluZ1RhYmxlKCk7CkBAIC01NTMsNyArNTYyLDcg
QEAgQXRvbWljU3RyaW5nIEF0b21pY1N0cmluZzo6bnVtYmVyKGRvdWJsZSBudW1iZXIpCiAgICAg
cmV0dXJuIFN0cmluZyhudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKG51bWJlciwgNiwgYnVm
ZmVyLCB0cnVlKSk7CiB9CiAKLUF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZChM
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorQXRvbWljU3RyaW5nSW1wbCogQXRv
bWljU3RyaW5nOjpmaW5kSW50ZXJuYWwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CiAgICAgYXV0
byYgdGFibGUgPSBzdHJpbmdUYWJsZSgpOwpAQCAtNTY1LDcgKzU3NCw3IEBAIEF0b21pY1N0cmlu
Z0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZChMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BdG9taWNTdHJpbmdJbXBsKiBBdG9taWNT
dHJpbmc6OmZpbmQoVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK0F0b21pY1N0
cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZEludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9j
a2VyOwogICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nVGFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oCmluZGV4IDNhMmZjZjVmMzU4MmNjMDc0MGUwNDVhMGIzOTJmYTA2Y2VmYjk5MmQu
LmI5MTBkNGU3MzJkYmQwMWUxNTc0MDE3YWI1NDFlYmFhZTAwMTFjZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuaApAQCAtODYsOCArODYsMTQgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsK
ICAgICBBdG9taWNTdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNTdHJp
bmdJbXBsKiBmaW5kKExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nSW1w
bCogZmluZChMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZpbmRJbnRlcm5hbChjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIH0KKyAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBmaW5k
SW50ZXJuYWwoY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICB9CiAgICAgc3RhdGljIEF0b21pY1N0
cmluZ0ltcGwqIGZpbmQoU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIHsKICAgICAgICAgaWYgKCFz
dHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKQpAQCAtMjQ5LDYgKzI1NSw5IEBAIGNsYXNzIEF0
b21pY1N0cmluZyB7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIEF0b21pY1N0
cmluZ0ltcGwqIGZpbmRTbG93Q2FzZShTdHJpbmdJbXBsJik7CiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopOworCisgICAgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmRJbnRlcm5h
bChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEF0b21pY1N0cmlu
Z0ltcGwqIGZpbmRJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiB9Owog
CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgQXRv
bWljU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggOWZhYmYyYmFiMmVhNmMxYmRmNzI4MGJjNjY2NTdlZDA2
Zjk5OWY0OS4uNjY3OTRkYjhhMGEzYmIyYTFlNjEyYTMzZTgwMWE1ODEzMWE5ZjI1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3Rm
L1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lz
dHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9VVEY4Lmg+CiAKQEAgLTExMiw2ICsxMTMsOSBAQCB2b2lkIFN0cmluZ1N0
YXRzOjpwcmludFN0YXRzKCkKICAgICBpZiAoaXNBdG9taWMoKSAmJiBsZW5ndGgoKSAmJiAhaXNT
eW1ib2woKSkKICAgICAgICAgQXRvbWljU3RyaW5nOjpyZW1vdmUodGhpcyk7CiAKKyAgICBpZiAo
aXNTeW1ib2woKSAmJiBzeW1ib2xSZWdpc3RyeSgpKQorICAgICAgICBzeW1ib2xSZWdpc3RyeSgp
LT5yZW1vdmUodGhpcyk7CisKICAgICBCdWZmZXJPd25lcnNoaXAgb3duZXJzaGlwID0gYnVmZmVy
T3duZXJzaGlwKCk7CiAKICAgICBpZiAob3duZXJzaGlwID09IEJ1ZmZlckludGVybmFsKQpAQCAt
Mjg2LDE1ICsyOTAsMjQgQEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0ltcGwqIHN0
cmluZ0ltcGwpCiAgICAgcmV0dXJuIGNyZWF0ZShzdHJpbmcsIGxlbmd0aCk7CiB9CiAKLVJlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVTeW1ib2woUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiByZXApCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sKFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gYXJnUmVwKQogewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHJlcC0+bGVu
Z3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBjcmVhdGVTeW1ib2xFbXB0
eSgpOwotICAgIFJlZjxTdHJpbmdJbXBsPiBzdHJpbmcgPSBjcmVhdGVTdWJzdHJpbmdTaGFyaW5n
SW1wbChyZXAsIDAsIGxlbmd0aCk7Ci0gICAgQVNTRVJUKCFzdHJpbmctPmlzQXRvbWljKCkpOwot
ICAgIHN0cmluZy0+bV9oYXNoQW5kRmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JTeW1ib2woc3RyaW5n
LT5tX2hhc2hBbmRGbGFncyk7Ci0gICAgcmV0dXJuIHN0cmluZzsKKyAgICBSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwID0gYXJnUmVwOworICAgIFN0cmluZ0ltcGwqIG93bmVyUmVwID0gKHJlcC0+YnVm
ZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKSA/IHJlcC0+c3Vic3RyaW5nQnVmZmVy
KCkgOiByZXAuZ2V0KCk7CisKKyAgICAvLyBXZSBhbGxvY2F0ZSBhIGJ1ZmZlciB0aGF0IGNvbnRh
aW5zCisgICAgLy8gMS4gdGhlIFN0cmluZ0ltcGwgc3RydWN0CisgICAgLy8gMi4gdGhlIHBvaW50
ZXIgdG8gdGhlIG93bmVyIHN0cmluZworICAgIC8vIDMuIHRoZSBwb2ludGVyIHRvIHRoZSBzeW1i
b2wgcmVnaXN0cnkKKyAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3Ry
aW5nSW1wbCo+KGZhc3RNYWxsb2MoYWxsb2NhdGlvblNpemU8U3RyaW5nSW1wbCo+KDIpKSk7Cisg
ICAgaWYgKHJlcC0+aXM4Qml0KCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3RO
dWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbCwgcmVwLT5tX2RhdGE4LCBy
ZXAtPmxlbmd0aCgpLCBvd25lclJlcCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3RO
dWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbCwgcmVwLT5tX2RhdGExNiwg
cmVwLT5sZW5ndGgoKSwgb3duZXJSZXApKTsKK30KKworUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmNyZWF0ZVN5bWJvbEVtcHR5KCkKK3sKKyAgICByZXR1cm4gY3JlYXRlU3ltYm9sKGVtcHR5
KCkpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBlMTRkNDUwOTA1YTYxNjYyZjdiNTcyODFmMjJiMDA1
NzQ3NzcyZTAyLi45Mzk5MDI4ZWQzNzAyZmRhMDExOGM3NjYxY2Y4YWRmMDBmM2QxMWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNTcsNiArNTcsNyBAQAogc3RydWN0IFN1YnN0cmlu
Z1RyYW5zbGF0b3I7CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogdGVtcGxhdGU8dHlw
ZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKK2NsYXNzIFN5bWJvbFJlZ2lzdHJ5OwogCiBlbnVtIFRl
eHRDYXNlU2Vuc2l0aXZpdHkgewogICAgIFRleHRDYXNlU2Vuc2l0aXZlLApAQCAtMjkyLDE4ICsy
OTMsMzkgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIFNUUklOR19TVEFUU19BRERfMTZC
SVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgZW51bSBDcmVhdGVTeW1i
b2xFbXB0eVRhZyB7IENyZWF0ZVN5bWJvbEVtcHR5IH07Ci0gICAgU3RyaW5nSW1wbChDcmVhdGVT
eW1ib2xFbXB0eVRhZykKKyAgICBlbnVtIENyZWF0ZVN5bWJvbFRhZyB7IENyZWF0ZVN5bWJvbCB9
OworICAgIC8vIFVzZWQgdG8gY3JlYXRlIG5ldyBzeW1ib2wgc3RyaW5ncyB0aGF0IGhvbGRzIGV4
aXN0aW5nIDgtYml0IFtbRGVzY3JpcHRpb25dXSBzdHJpbmcgYXMgYSBzdWJzdHJpbmcgYnVmZmVy
IChCdWZmZXJTdWJzdHJpbmcpLgorICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGJhc2UpCiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQotICAg
ICAgICAsIG1fbGVuZ3RoKDApCi0gICAgICAgIC8vIFdlIGV4cGVjdCBtX2xlbmd0aCB0byBiZSBp
bml0aWFsaXplZCB0byAwIGFzIHdlIHVzZSBpdAotICAgICAgICAvLyB0byByZXByZXNlbnQgYSBu
dWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgotICAgICAgICAsIG1fZGF0YTgocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFz
aEFuZEZsYWdzRm9yU3ltYm9sKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwp
KQorICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3Rl
cnMpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yU3ltYm9sKHNfaGFz
aEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nU3ltYm9sIHwgQnVmZmVyU3Vic3RyaW5nKSkKICAgICB7
CisgICAgICAgIEFTU0VSVChpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKKyAg
ICAgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7
CiAKLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0aCk7CisgICAg
ICAgIHN1YnN0cmluZ0J1ZmZlcigpID0gYmFzZS5sZWFrUmVmKCk7CisgICAgICAgIHN5bWJvbFJl
Z2lzdHJ5KCkgPSBudWxscHRyOworCisgICAgICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJ
TkcyKG1fbGVuZ3RoLCB0cnVlKTsKKyAgICB9CisKKyAgICAvLyBVc2VkIHRvIGNyZWF0ZSBuZXcg
c3ltYm9sIHN0cmluZ3MgdGhhdCBob2xkcyBleGlzdGluZyAxNi1iaXQgW1tEZXNjcmlwdGlvbl1d
IHN0cmluZyBhcyBhIHN1YnN0cmluZyBidWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCisgICAgU3Ry
aW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYmFzZSkKKyAgICAgICAgOiBtX3JlZkNv
dW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCisgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAg
ICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFz
aEFuZEZsYWdzRm9yU3ltYm9sKFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykpCisgICAg
eworICAgICAgICBBU1NFUlQoIWlzOEJpdCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsK
KyAgICAgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmlu
Zyk7CisKKyAgICAgICAgc3Vic3RyaW5nQnVmZmVyKCkgPSBiYXNlLmxlYWtSZWYoKTsKKyAgICAg
ICAgc3ltYm9sUmVnaXN0cnkoKSA9IG51bGxwdHI7CisKKyAgICAgICAgU1RSSU5HX1NUQVRTX0FE
RF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKICAgICB9CiAKICAgICB+U3RyaW5nSW1w
bCgpOwpAQCAtMzk3LDExICs0MTksNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdEludGVybmFsPFQ+KHJlc3VsdEltcGwsIGxlbmd0aCk7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbEVtcHR5
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRl
U3ltYm9sRW1wdHkpKTsKLSAgICB9Ci0KKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTeW1ib2xFbXB0eSgpOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbChQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHJlcCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBsLiBUaGUg
b3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBQYXNzUmVmUHRyLApAQCAt
NzQxLDE0ICs3NTksMjUgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIGNvbnN0IFVDaGFyIGxhdGluMUNhc2VGb2xkVGFibGVbMjU2XTsKIAot
ICAgIFN0cmluZ0ltcGwmIGV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpCisgICAgUmVmPFN0
cmluZ0ltcGw+IGV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpCiAgICAgewotICAgICAgICBB
U1NFUlQobGVuZ3RoKCkpOwogICAgICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgICAgIEFT
U0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpOwogICAgICAgICBBU1NF
UlQoc3Vic3RyaW5nQnVmZmVyKCkpOwogICAgICAgICBBU1NFUlQoIXN1YnN0cmluZ0J1ZmZlcigp
LT5pc1N5bWJvbCgpKTsKLSAgICAgICAgcmV0dXJuICpzdWJzdHJpbmdCdWZmZXIoKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKHRoaXMsIDAsIGxlbmd0aCgpKTsK
KyAgICB9CisKKyAgICBTeW1ib2xSZWdpc3RyeSogY29uc3QmIHN5bWJvbFJlZ2lzdHJ5KCkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKKyAgICAgICAgcmV0dXJuICoo
dGFpbFBvaW50ZXI8U3ltYm9sUmVnaXN0cnkqPigpICsgMSk7CisgICAgfQorCisgICAgU3ltYm9s
UmVnaXN0cnkqJiBzeW1ib2xSZWdpc3RyeSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTeW1i
b2woKSk7CisgICAgICAgIHJldHVybiAqKHRhaWxQb2ludGVyPFN5bWJvbFJlZ2lzdHJ5Kj4oKSAr
IDEpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sUmVnaXN0cnkuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGM2Y2E4YzczYmIxNDE2Yzk1MGRjMjU0MWY1NzE4NWZlYmYwN2MxZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3Bw
CkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU3ltYm9sUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIkhhc2hTZXQuaCIKKyNpbmNsdWRl
ICJJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgor
I2luY2x1ZGUgIlRocmVhZGluZy5oIgorI2luY2x1ZGUgIldURlRocmVhZERhdGEuaCIKKyNpbmNs
dWRlICJkdG9hLmgiCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgorCisjaWYgVVNFKFdF
Ql9USFJFQUQpCisjaW5jbHVkZSAiU3BpbkxvY2suaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV1RG
IHsKKworI2lmIFVTRShXRUJfVEhSRUFEKQorCitjbGFzcyBTeW1ib2xSZWdpc3RyeUxvY2tlciA6
IHB1YmxpYyBTcGluTG9ja0hvbGRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3ltYm9s
UmVnaXN0cnlMb2NrZXIpOworcHVibGljOgorICAgIFN5bWJvbFJlZ2lzdHJ5TG9ja2VyKFN5bWJv
bFJlZ2lzdHJ5KiBzeW1ib2xSZWdpc3RyeSkKKyAgICAgICAgOiBTcGluTG9ja0hvbGRlcihzeW1i
b2xSZWdpc3RyeS0+c3BpbkxvY2soKSkKKyAgICB7CisgICAgfQorfTsKKworI2Vsc2UKKworY2xh
c3MgU3ltYm9sUmVnaXN0cnlMb2NrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN5bWJv
bFJlZ2lzdHJ5TG9ja2VyKTsKK3B1YmxpYzoKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tlcihTeW1i
b2xSZWdpc3RyeSopIHsgfQorfTsKKworI2VuZGlmIC8vIFVTRShXRUJfVEhSRUFEKQorCitTeW1i
b2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkoKQorICAgIDogbV90YWJsZSgpCisjaWYgVVNFKFdF
Ql9USFJFQUQpCisgICAgLCBtX3NwaW5Mb2NrKCkKKyNlbmRpZgoreworfQorCitTeW1ib2xSZWdp
c3RyeTo6flN5bWJvbFJlZ2lzdHJ5KCkKK3sKKyAgICBmb3IgKGF1dG8ga2V5IDogbV90YWJsZSkK
KyAgICAgICAga2V5LmltcGwoKS0+c3ltYm9sUmVnaXN0cnkoKSA9IG51bGxwdHI7Cit9CisKK1Jl
ZjxTdHJpbmdJbXBsPiBTeW1ib2xSZWdpc3RyeTo6c3ltYm9sRm9yS2V5KFN0cmluZyByZXApCit7
CisgICAgU3ltYm9sUmVnaXN0cnlMb2NrZXIgbG9ja2VyKHRoaXMpOworCisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3RhYmxlLmFkZChTeW1ib2xSZWdpc3RyeUtleShyZXAuaW1wbCgpKSk7CisgICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIFJlZjxTdHJpbmdJbXBsPiBzeW1i
b2wgPSBTdHJpbmdJbXBsOjpjcmVhdGVTeW1ib2wocmVwLmltcGwoKSk7CisgICAgICAgIHN5bWJv
bC0+c3ltYm9sUmVnaXN0cnkoKSA9IHRoaXM7CisgICAgICAgICphZGRSZXN1bHQuaXRlcmF0b3Ig
PSBTeW1ib2xSZWdpc3RyeUtleSgmc3ltYm9sLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHN5bWJv
bDsKKyAgICB9CisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3ItPmltcGwoKTsKK30KKwor
U3RyaW5nIFN5bWJvbFJlZ2lzdHJ5OjprZXlGb3JTeW1ib2woU3RyaW5nSW1wbCogdWlkKQorewor
ICAgIFN5bWJvbFJlZ2lzdHJ5TG9ja2VyIGxvY2tlcih0aGlzKTsKKworICAgIEFTU0VSVCh1aWQt
PmlzU3ltYm9sKCkpOworICAgIEFTU0VSVCh1aWQtPnN5bWJvbFJlZ2lzdHJ5KCkgPT0gdGhpcyk7
CisgICAgcmV0dXJuIHVpZC0+ZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKCk7Cit9CisKK3Zv
aWQgU3ltYm9sUmVnaXN0cnk6OnJlbW92ZShTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgU3ltYm9s
UmVnaXN0cnlMb2NrZXIgbG9ja2VyKHRoaXMpOworCisgICAgQVNTRVJUKHVpZC0+aXNTeW1ib2wo
KSk7CisgICAgQVNTRVJUKHVpZC0+c3ltYm9sUmVnaXN0cnkoKSA9PSB0aGlzKTsKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV90YWJsZS5maW5kKFN5bWJvbFJlZ2lzdHJ5S2V5KHVpZCkpOworICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gbV90YWJsZS5lbmQoKSwgIlRoZSBzdHJpbmcg
YmVpbmcgcmVtb3ZlZCBpcyByZWdpc3RlcmVkIGluIHRoZSBzdHJpbmcgdGFibGUgb2YgYW4gb3Ro
ZXIgdGhyZWFkISIpOworICAgIG1fdGFibGUucmVtb3ZlKGl0ZXJhdG9yKTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxNWZiOGYzYzU1OTBhNTY0
NjhiZGE1ZDVmODUzY2MyOTAxZjAxN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
Zm5kZWYgV1RGX1N5bWJvbFJlZ2lzdHJ5X2gKKyNkZWZpbmUgV1RGX1N5bWJvbFJlZ2lzdHJ5X2gK
KworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEu
aD4KKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyNpbmNsdWRlIDx3dGYvU3BpbkxvY2suaD4KKyNlbmRp
ZgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIFNpbmNlIFN0cmluZ0ltcGwqIHVz
ZWQgZm9yIFN5bWJvbCB1aWQgZG9lc24ndCBoYXZlIGEgaGFzaCB2YWx1ZSByZWZsZWN0aW5nIHRo
ZSBzdHJpbmcgY29udGVudCwKKy8vIHRvIGNvbXBhcmUgd2l0aCBhbiBleHRlcm5hbCBzdHJpbmcg
aW4gc3RyaW5nIGNvbnRlbnRzLCBpbnRyb2R1Y2UgU3ltYm9sUmVnaXN0cnlLZXkuCisvLyBTeW1i
b2xSZWdpc3RyeUtleSBob2xkcyBhIGhhc2ggdmFsdWUgcmVmbGVjdGluZyB0aGUgc3RyaW5nIGNv
bnRlbnQgYWRkaXRpb25hbGx5LgorY2xhc3MgU3ltYm9sUmVnaXN0cnlLZXkgeworcHVibGljOgor
ICAgIFN5bWJvbFJlZ2lzdHJ5S2V5KCkKKyAgICAgICAgOiBtX2ltcGwoKQorICAgICAgICAsIG1f
aGFzaCgpCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IFN5bWJvbFJlZ2lzdHJ5S2V5KFN0
cmluZ0ltcGwqIHVpZCkKKyAgICAgICAgOiBtX2ltcGwodWlkKQorICAgICAgICAsIG1faGFzaCgw
KQorICAgIHsKKyAgICAgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkgeworICAgICAgICAgICAgaWYg
KHVpZC0+aXM4Qml0KCkpCisgICAgICAgICAgICAgICAgbV9oYXNoID0gU3RyaW5nSGFzaGVyOjpj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyh1aWQtPmNoYXJhY3RlcnM4KCksIHVpZC0+bGVuZ3Ro
KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1faGFzaCA9IFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHModWlkLT5jaGFyYWN0ZXJzMTYoKSwgdWlk
LT5sZW5ndGgoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9oYXNoID0gdWlkLT5o
YXNoKCk7CisgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9oYXNoOworICAgIH0KKworICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW1wbDsKKyAgICB9CisKKyAgICBTeW1ib2xSZWdpc3Ry
eUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9pbXBsKGhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbXBsID09IGhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgU3Ry
aW5nSW1wbCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxTdHJpbmdJbXBsKj4oLTEpOyB9CisKKyAgICBTdHJpbmdJbXBsKiBtX2ltcGw7CisgICAgdW5z
aWduZWQgbV9oYXNoOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3ltYm9sUmVnaXN0cnlLZXk+IHsK
KyAgICBzdHJ1Y3QgSGFzaCA6IHB1YmxpYyBTdHJpbmdIYXNoIHsKKyAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgU3ltYm9sUmVnaXN0cnlLZXkmIGtleSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGtleS5oYXNoKCk7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgU3ltYm9sUmVnaXN0cnlLZXkmIGEsIGNvbnN0IFN5bWJvbFJlZ2lzdHJ5
S2V5JiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwo
YS5pbXBsKCksIGIuaW1wbCgpKTsKKyAgICAgICAgfQorICAgIH07Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBIYXNoVHJhaXRzPFN5bWJvbFJlZ2lzdHJ5S2V5PiA6IFNpbXBsZUNsYXNzSGFzaFRy
YWl0czxTeW1ib2xSZWdpc3RyeUtleT4geworICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1w
dHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29u
c3QgU3ltYm9sUmVnaXN0cnlLZXkmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBrZXkuaW1w
bCgpID09IG51bGxwdHI7CisgICAgfQorfTsKKworY2xhc3MgU3ltYm9sUmVnaXN0cnkgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN5bWJv
bFJlZ2lzdHJ5KTsKK3B1YmxpYzoKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3ltYm9sUmVnaXN0
cnkoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflN5bWJvbFJlZ2lzdHJ5KCk7CisKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IHN5bWJvbEZvcktleShTdHJpbmcpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcga2V5Rm9yU3ltYm9sKFN0cmluZ0ltcGwqIHVp
ZCk7CisKKyAgICB2b2lkIHJlbW92ZShTdHJpbmdJbXBsKiB1aWQpOworCisjaWYgVVNFKFdFQl9U
SFJFQUQpCisgICAgU3BpbkxvY2smIHNwaW5Mb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3NwaW5Mb2NrOworICAgIH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIEhhc2hTZXQ8U3ltYm9s
UmVnaXN0cnlLZXk+IG1fdGFibGU7CisjaWYgVVNFKFdFQl9USFJFQUQpCisgICAgU3BpbkxvY2sg
bV9zcGluTG9jazsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MGQ0YjhmNGRj
ZmRkYTJlZGRmZGZlNWQ4ZWUwZTg3NmE0ZDE4MDc0Li5hYTg0MjRhYTQyNzViNTgwNDc2ZDgxODRl
OGFiYThmNjZmNzBkY2Y2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDQtMDkgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gSW1wbGVt
ZW50IFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byBjaGVjayBTeW1ib2wncyBpZGVu
dGl0eSBvdmVyIGRpZmZlcmVudCByZWFsbXMuCisKKyAgICAgICAgKiBqcy9kb20vY3Jvc3MtZnJh
bWUtc3ltYm9scy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9jcm9zcy1m
cmFtZS1zeW1ib2xzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9zY3JpcHQtdGVzdHMv
Y3Jvc3MtZnJhbWUtc3ltYm9scy5qczogQWRkZWQuCisKIDIwMTUtMDQtMDkgIEh1bnNlb3AgSmVv
bmcgIDxoczg1Lmplb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIGZhc3QvY3NzL3Zl
cnRpY2FsLXRleHQtb3ZlcmZsb3ctZWxsaXBzaXMtdGV4dC1hbGlnbi1jZW50ZXIuaHRtbCBpcyBm
YWlsaW5nIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJv
bHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZyYW1lLXN5bWJvbHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYmExYTk5YWQ1YTcwOGIxNjU3YWMwMGQ4NzExODE0
NTE1ZjU0NzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vY3Jvc3MtZnJh
bWUtc3ltYm9scy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgU3ltYm9sIGFu
ZCBnbG9iYWwgc3ltYm9sIHJlZ2lzdHJ5IGlkZW50aXR5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGZyYW1lLlN5bWJvbC5pdGVyYXRvciBpcyBTeW1ib2wuaXRlcmF0b3IK
K1BBU1MgZnJhbWUuU3ltYm9sKCdIZWxsbycpIGlzIG5vdCBTeW1ib2woJ0hlbGxvJykKK1BBU1Mg
U3ltYm9sLmtleUZvcihzeW0pIGlzICdIZWxsbycKK1BBU1MgZnJhbWUuU3ltYm9sLmtleUZvcihz
eW0pIGlzICdIZWxsbycKK1BBU1MgU3ltYm9sLmZvcignSGVsbG8nKSBpcyBzeW0KK1BBU1MgZnJh
bWUuU3ltYm9sLmZvcignSGVsbG8nKSBpcyBzeW0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
Y3Jvc3MtZnJhbWUtc3ltYm9scy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZyYW1l
LXN5bWJvbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjM2MjdjMWNmNWRkZDIyNDAwOWJjZGZjMWI3MjJl
OGIwZjk2NWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZy
YW1lLXN5bWJvbHMuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxpZnJhbWU+PC9pZnJhbWU+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Nyb3NzLWZyYW1l
LXN5bWJvbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1ib2xzLmpzIGIvTGF5
b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1zeW1ib2xzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ3OGVhZjM3ZjFmMDdmOTNhY2M5NTFkMTk5ODY4ZDYwZGVmNDhjZTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2Nyb3NzLWZyYW1lLXN5
bWJvbHMuanMKQEAgLTAsMCArMSwxMiBAQAorZGVzY3JpcHRpb24oIlRlc3RzIFN5bWJvbCBhbmQg
Z2xvYmFsIHN5bWJvbCByZWdpc3RyeSBpZGVudGl0eSIpOworCit2YXIgZnJhbWUgPSBmcmFtZXNb
MF07CisKK3Nob3VsZEJlKCJmcmFtZS5TeW1ib2wuaXRlcmF0b3IiLCAiU3ltYm9sLml0ZXJhdG9y
Iik7CitzaG91bGROb3RCZSgiZnJhbWUuU3ltYm9sKCdIZWxsbycpIiwgIlN5bWJvbCgnSGVsbG8n
KSIpOworCit2YXIgc3ltID0gU3ltYm9sLmZvcigiSGVsbG8iKTsKK3Nob3VsZEJlKCJTeW1ib2wu
a2V5Rm9yKHN5bSkiLCAiJ0hlbGxvJyIpOworc2hvdWxkQmUoImZyYW1lLlN5bWJvbC5rZXlGb3Io
c3ltKSIsICInSGVsbG8nIik7CitzaG91bGRCZSgiU3ltYm9sLmZvcignSGVsbG8nKSIsICJzeW0i
KTsKK3Nob3VsZEJlKCJmcmFtZS5TeW1ib2wuZm9yKCdIZWxsbycpIiwgInN5bSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250487</attachid>
            <date>2015-04-09 16:44:08 -0700</date>
            <delta_ts>2015-04-12 10:12:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143404-20150410084315.patch</filename>
            <type>text/plain</type>
            <size>44169</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDhhYzlhNDAwYmQ0NjFlNTU4ZDBkNzQ1MGFjZWRiNjI4MzRlNDg2Li4wMTY5Y2NjZDQyZDgyYzMz
MTM3ZTA0NGY3YWFkMTA3YTRiOGYyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxNS0wNC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtl
eUZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IuCisgICAgICAg
IFN5bWJvbFJlZ2lzdHJ5IG1haW50YWlucyByZWdpc3RlcmVkIFN0cmluZ0ltcGwqIHN5bWJvbHMu
CisgICAgICAgIEFuZCB0byBtYWtlIHRoaXMgbWFwcGluZyBlbmFibGVkIG92ZXIgcmVhbG1zLAor
ICAgICAgICBWTSBvd25zIHRoaXMgbWFwcGluZyAobm90IEpTR2xvYmFsT2JqZWN0KS4KKworICAg
ICAgICBXaGlsZSB0aGVyZSdzIERlZmF1bHQgQXRvbWljU3RyaW5nVGFibGUgcGVyIHRocmVhZCwK
KyAgICAgICAgU3ltYm9sUmVnaXN0cnkgc2hvdWxkIG5vdCBleGlzdCBvdmVyIFZNcy4KKyAgICAg
ICAgU28gZXZlcnl0aW1lIFZNIGlzIGNyZWF0ZWQsIFN5bWJvbFJlZ2lzdHJ5IGlzIGFsc28gY3Jl
YXRlZC4KKworICAgICAgICBJbiBTeW1ib2xSZWdpc3RyeSBpbXBsZW1lbnRhdGlvbiwgd2UgZG9u
J3QgbGV2ZXJhZ2UgV2Vha0dDTWFwIChvciB3ZWFrIHJlZmVyZW5jZSBkZXNpZ24pLgorICAgICAg
ICBUaGVyZXMgYXJlIHNldmVyYWwgcmVhc29ucy4KKyAgICAgICAgMS4gU3RyaW5nSW1wbCogd2hp
Y2ggcmVwcmVzZW50cyBpZGVudGl0eSBvZiBTeW1ib2xzIGlzIG5vdCBHQy1tYW5hZ2VkIG9iamVj
dC4KKyAgICAgICAgICAgU28gd2UgY2Fubm90IHVzZSBXZWFrR0NNYXAgZGlyZWN0bHkuCisgICAg
ICAgICAgIFdoaWxlIFN5bWJvbCogaXMgR0MtbWFuYWdlZCBvYmplY3QsIGhvbGRpbmcgd2VhayBy
ZWZlcmVuY2UgdG8gU3ltYm9sKiBkb2Vzbid0IG1haW50YWluIEpTIHN5bWJvbHMgKGV4cG9zZWQg
cHJpbWl0aXZlIHZhbHVlcyB0byB1c2VycykgbGl2ZW5lc3MsCisgICAgICAgICAgIGJlY2F1c2Ug
ZGlzdGluY3QgU3ltYm9sKiBjYW4gZXhpc3QuCisgICAgICAgICAgIERpc3RpbmN0IFN5bWJvbCog
bWVhbnMgdGhlIFN5bWJvbCogb2JqZWN0IHRoYXQgcG9pbnRlciB2YWx1ZSAoU3ltYm9sKikgaXMg
ZGlmZmVyZW50IGZyb20gd2Vha2x5IHJlZmVyZW5jZWQgU3ltYm9sKiBidXQgaGVsZCBTdHJpbmdJ
bXBsKiBpcyB0aGUgc2FtZS4KKworICAgICAgICAyLiBXZSBkb24ndCB1c2UgV1RGOjpXZWFrUHRy
LiBJZiB3ZSBhZGQgV2Vha1B0ckZhY3RvcnkgaW50byBTdHJpbmdJbXBsJ3MgbWVtYmVyLCB3ZSBj
YW4gdHJhY2sgU3RyaW5nSW1wbConcyBsaXZlbmVzcyBieSBXZWFrUHRyLgorICAgICAgICAgICBI
b3dldmVyIHRoZXJlJ3MgcHJvYmxlbSBhYm91dCB3aGVuIHdlIHBydW5lIHN0YWxlZCBlbnRyaWVz
IGluIFN5bWJvbFJlZ2lzdHJ5LgorICAgICAgICAgICBTaW5jZSB0aGUgbWVtb3J5IGFsbG9jYXRl
ZCBmb3IgdGhlIFN5bWJvbCBpcyB0eXBpY2FsbHkgb2NjdXBpZWQgYnkgYWxsb2NhdGVkIHN5bWJv
bGl6ZWQgU3RyaW5nSW1wbConcyBjb250ZW50LAorICAgICAgICAgICBhbmQgaXQgaXMgbm90IGlu
IEdDLWhlYXAuCisgICAgICAgICAgIFdoaWxlIGhlYXZpbHkgcmVnaXN0ZXJpbmcgU3ltYm9scyBh
bmQgc3RvcmluZyBTdHJpbmdJbXBsKiBpbnRvIFN5bWJvbFJlZ2lzdHJ5LCBIZWFwJ3MgRWRlblNw
YWNlIGlzIG5vdCBzbyBvY2N1cGllZC4KKyAgICAgICAgICAgU28gR0MgdHlwaWNhbGx5IGF0dGVt
cHQgdG8gcGVyZm9ybSBFZGVuQ29sbGVjdGlvbiwgYW5kIGl0IGRvZXNuJ3QgY2FsbCBXZWFrR0NN
YXAncyBwcnVsZVN0YWxlRW50cmllcyBjYWxsYmFjay4KKyAgICAgICAgICAgQXMgYSByZXN1bHQs
IGJlZm9yZSBwcnVuaW5nIHN0YWxlZCBlbnRyaWVzIGluIFN5bWJvbFJlZ2lzdHJ5LCBmYXN0IG1h
bGxvYy1lZCBtZW1vcnkgZmlsbHMgdXAgdGhlIHN5c3RlbSBtZW1vcnkuCisKKyAgICAgICAgU28g
aW5zdGVhZCBvZiB1c2luZyBXZWFrIHJlZmVyZW5jZSwgd2UgdGFrZSByZWxhdGl2ZWx5IGVhc3kg
ZGVzaWduLgorICAgICAgICBXaGVuIHdlIHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCog
aW50byBTeW1ib2xSZWdpc3RyeSwgc3ltYm9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0
aGF0LgorICAgICAgICBBbmQgd2hlbiBkZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVm
ZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28g
d2l0aCBBdG9taWNTdHJpbmdUYWJsZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvckZvcik6CisgICAgICAg
IChKU0M6OnN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6c3lt
Ym9sUmVnaXN0cnkpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanM6
IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTUtMDQtMDggIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UganNOb250cml2aWFsU3RyaW5nIGlu
IG1vcmUgcGxhY2VzIGlmIHRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSAyIG9yIG1vcmUg
Y2hhcmFjdGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBlYzc5NjkxNDllOWNiMGJiNDJiZTQzOWQ2MzliY2MxNGEzMWE5NTk3
Li5kMmFjZDNmODY0YWFmYTgwZTVmZTVkNGZiOWFiMDdiMzhmYjkwYjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU2IEBACisyMDE1LTA0LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFUzZdIEltcGxlbWVudCBTeW1ib2wuZm9yIGFuZCBTeW1ib2wua2V5Rm9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0MDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHdl
IHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCogaW50byBTeW1ib2xSZWdpc3RyeSwgc3lt
Ym9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0aGF0LgorICAgICAgICBBbmQgd2hlbiBk
ZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVmZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0
cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28gd2l0aCBBdG9taWNTdHJpbmdUYWJsZS4K
KyAgICAgICAgV2hpbGUgQXRvbWljU3RyaW5nVGFibGUgKGluIFdlYkNvcmUgY2FzZSkgZXhpc3Rz
IGluIHRocmVhZCBsb2NhbCBzdG9yYWdlLAorICAgICAgICBTeW1ib2xSZWdpc3RyeSBleGlzdHMg
cGVyIFZNIGFuZCBTdHJpbmdJbXBsKiBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHJlZ2lzdGVyZWQg
U3ltYm9sUmVnaXN0cnkuCisKKyAgICAgICAgU2luY2UgU3RyaW5nSW1wbCBoYXMgaXNTeW1ib2wg
ZXRjLiBtZW1iZXJzLCBpdCdzIGNsYXNzIGlzIGF3YXJlIG9mIFN5bWJvbCB1c2UgY2FzZXMuCisg
ICAgICAgIFNvIGludHJvZHVjZSBTeW1ib2xSZWdpc3RyeSBpbiBXVEYgbGF5ZXJzIGFzIGlmIEF0
b21pY1N0cmluZ1RhYmxlLgorCisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6Cisg
ICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nOjphZGRTbG93Q2FzZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6Zmlu
ZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpmaW5kSW50ZXJuYWwpOgor
ICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmQpOiBEZWxldGVkLgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmQp
OgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjp+U3RyaW5nSW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5
bWJvbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbEVtcHR5KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OlN0cmluZ0ltcGwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpleHRyYWN0Rm9sZGVkU3Ry
aW5nSW5TeW1ib2wpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpzeW1ib2xSZWdpc3RyeSk6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbEVtcHR5KTogRGVsZXRlZC4K
KyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAo
V1RGOjpTeW1ib2xSZWdpc3RyeUxvY2tlcjo6U3ltYm9sUmVnaXN0cnlMb2NrZXIpOgorICAgICAg
ICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6U3ltYm9sUmVnaXN0cnkpOgorICAgICAgICAoV1RGOjpT
eW1ib2xSZWdpc3RyeTo6flN5bWJvbFJlZ2lzdHJ5KToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVn
aXN0cnk6OnN5bWJvbEZvcktleSk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjprZXlG
b3JTeW1ib2wpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6cmVtb3ZlKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6U3lt
Ym9sUmVnaXN0cnlLZXk6OlN5bWJvbFJlZ2lzdHJ5S2V5KToKKyAgICAgICAgKFdURjo6U3ltYm9s
UmVnaXN0cnlLZXk6Omhhc2gpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeUtleTo6aW1w
bCk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5S2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5S2V5OjpoYXNoVGFibGVEZWxldGVk
VmFsdWUpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxTeW1ib2xSZWdpc3RyeUtleT46Okhh
c2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxTeW1ib2xSZWdpc3RyeUtleT46
Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxTeW1ib2xSZWdpc3RyeUtl
eT46OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpzcGluTG9j
ayk6CisKIDIwMTUtMDQtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb250ZW50IEZpbHRlcmluZ10gQWRkIGEgSEFWRShQQVJFTlRBTF9DT05UUk9MUykgYW5k
IHVzZSBpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc5MTk2Mjg0NzYy
YjMwMDM0NDE3ZmE0ZjE0ZjFmYjI4MzgxYzQ1ZTkuLjEyNDU2MWVjYTUzYTMzODhiNzYxNDUzMWU4
Mjg5YWQwY2JhZWJjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2
NSw5ICs1NjUsOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVu
dGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEu
Y3BwCiAgICAgcnVudGltZS9TeW1ib2wuY3BwCisgICAgcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL1N5bWJvbE9iamVjdC5jcHAKICAgICBydW50aW1lL1N5bWJvbFBy
b3RvdHlwZS5jcHAKLSAgICBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCiAgICAg
cnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKQEAgLTYxMSw2ICs2MTEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAgICAg
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjk5YWM3ZWMwZWQ2MDkzZTBhODBmYzZmOTdjNjUyNTQ4
MTY5ZjhmOS4uMTg1ZGM3ZTMxZDA3Y2Q4ZDc0Mzk2ODBmMTcyOWU3NjFkZjMyMmRlYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTU4LDYgKzU4LDcgQEAg
YWxsIDogXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3Iu
bHV0LmggXAogICAgIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBTeW1ib2xD
b25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3ltYm9sUHJvdG90eXBlLmx1dC5oIFwKICAgICB1ZGlz
ODZfaXRhYi5oIFwKICAgICBCeXRlY29kZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWE5NGZhMzFmMWEwOTVi
ZTM4ODRjNDE3ODAyNDRiNzE4OGIzMDI4OS4uYmVkNDA1YWRmYjc3YjdkYjhjMGYyOTU0ZDVlMTdi
M2I2ZDUyNTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbENvbnN0cnVjdG9yLmNwcApAQCAtMzAsNyArMzAsMTggQEAKICNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIlN5bWJvbC5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0
cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJTeW1ib2xDb25zdHJ1
Y3Rvci5sdXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM4LDYgKzQ5LDEzIEBACiAKIGNv
bnN0IENsYXNzSW5mbyBTeW1ib2xDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN5bWJvbENvbnN0cnVjdG9yKSB9
OwogCisvKiBTb3VyY2UgZm9yIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gc3ltYm9s
Q29uc3RydWN0b3JUYWJsZQorICBmb3IgICAgICAgc3ltYm9sQ29uc3RydWN0b3JGb3IgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICBrZXlGb3IgICAgc3ltYm9sQ29uc3RydWN0b3JLZXlGb3Ig
ICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKwogU3ltYm9sQ29uc3RydWN0b3I6OlN5
bWJvbENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCiB7CkBAIC01NSw2ICs3MywxMyBAQCB2b2lkIFN5
bWJvbENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN5bWJvbFByb3RvdHlwZSog
cHJvdG90eXBlKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExf
S05PV05fU1lNQk9MKElOSVRJQUxJWkVfV0VMTF9LTk9XTl9TWU1CT0xTKQogfQogCitib29sIFN5
bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNs
b3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBzeW1i
b2xDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8U3ltYm9sQ29uc3RydWN0b3IqPihvYmplY3QpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBKU1ZhbHVlIGRlc2NyaXB0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7CkBAIC03NCw0ICs5OSwz
MyBAQCBDYWxsVHlwZSBTeW1ib2xDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIEpTU3RyaW5nKiBzdHJpbmdLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgU3RyaW5nIHN0cmluZyA9IHN0cmlu
Z0tleS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgUmVmPFN0cmlu
Z0ltcGw+IHVpZCA9IGV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKS0+c3ltYm9sRm9yS2V5KHN0
cmluZyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZShleGVjLT52
bSgpLCBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4oJnVpZC5nZXQoKSkpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSBzeW0gPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICBpZiAoIXN5bS5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAgIFN5bWJvbCogc3ltYm9sID0gYXNTeW1ib2woc3lt
KTsKKyAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQgPSBzeW1ib2wtPnByaXZhdGVOYW1lKCkudWlk
KCk7CisgICAgQVNTRVJUKHVpZC0+aXNTeW1ib2woKSk7CisgICAgaWYgKCF1aWQtPnN5bWJvbFJl
Z2lzdHJ5KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisKKyAgICBBU1NFUlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpID09IGV4ZWMtPnZtKCkuc3ltYm9s
UmVnaXN0cnkoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCB1
aWQtPnN5bWJvbFJlZ2lzdHJ5KCktPmtleUZvclN5bWJvbCh1aWQpKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENv
bnN0cnVjdG9yLmgKaW5kZXggMGFlMTJkN2ZkZDVjNDI0YmI2OWEyNmQxZGMxM2FlMDgwODRhNjgz
OS4uZTU2MzcxMzMwMThmMmQ1YTI3NzE3YzViYjk0YjdhMjYzOTRjOTM1OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oCkBAIC01NSwx
MCArNTUsMTMgQEAgY2xhc3MgU3ltYm9sQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5j
dGlvbiB7CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN5bWJvbFBy
b3RvdHlwZSopOwogCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKIHBy
aXZhdGU6CiAgICAgU3ltYm9sQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0
aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
KTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
KyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNjFlNDU4MmNmMjYxYjYzNmQx
ZWJlMzJmMDQ0YTJiMjg3M2UxZDFlNy4uODExNTQwMWFiMzFjNDY0MzQyZDhhYWE3MDMyMmVmYWJl
M2E2NDA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODcsMTMgKzg3
LDE0IEBACiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrR0NN
YXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKKyNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1RhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KIAogI2lmIEVOQUJM
RShERkdfSklUKQogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCkBAIC0xNTQsNiArMTU1
LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4
ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgLCB0b3BWTUVudHJ5RnJhbWUobnVsbHB0cikKICAgICAs
IHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5vQ2FsbGVyKCkpCiAgICAgLCBtX2F0b21pY1N0cmlu
Z1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkgOiBuZXcgQXRvbWljU3RyaW5nVGFibGUpCisgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KHN0
ZDo6bWFrZV91bmlxdWU8V1RGOjpTeW1ib2xSZWdpc3RyeT4oKSkKICAgICAsIHByb3BlcnR5TmFt
ZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCiAg
ICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IGE0NmEzNzYwZDRmZWExOWRhOTQ4NTI3ODU2ZTZhNjNmNmZjMDhlYWMuLjdjZjY5MDAzNmUyNTU2
MmJkNGY1MjdkM2VlZTg3ZGIyYTY0ODlmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJl
YWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC0yNzgsNiArMjc5LDcgQEAgY2xhc3MgVk0gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8SlNDZWxsPiBlbXB0
eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogbV9hdG9t
aWNTdHJpbmdUYWJsZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpTeW1ib2xSZWdpc3RyeT4g
bV9zeW1ib2xSZWdpc3RyeTsKICAgICBDb21tb25JZGVudGlmaWVycyogcHJvcGVydHlOYW1lczsK
ICAgICBjb25zdCBNYXJrZWRBcmd1bWVudEJ1ZmZlciogZW1wdHlMaXN0OyAvLyBMaXN0cyBhcmUg
c3VwcG9zZWQgdG8gYmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayB0byBoYXZlIHRoZWlyIGVsZW1l
bnRzIHByb3Blcmx5IG1hcmtlZCwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUgLSBidXQgdGhp
cyBsaXN0IGhhcyBub3RoaW5nIHRvIG1hcmsuCiAgICAgU21hbGxTdHJpbmdzIHNtYWxsU3RyaW5n
czsKQEAgLTI4OCw2ICsyOTAsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxWTT4gewogICAgIFN0cm9uZzxKU1N0cmluZz4gbGFzdENhY2hlZFN0cmluZzsKIAogICAg
IEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXRvbWljU3RyaW5nVGFibGU7IH0KKyAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5KiBzeW1ib2xSZWdp
c3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVnaXN0cnkuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0
SW5EZWZpbmVPd25Qcm9wZXJ0eShib29sIGluRGVmaW5lT3duUHJvcGVydHkpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0
cnkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1yZWdpc3Ry
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MDg0NGExMzI0NWZkODQxMTdiZGMxMDliOTk0ZTRhMWVmMDNlNGU1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9z
eW1ib2wtcmVnaXN0cnkuanMKQEAgLTAsMCArMSw3NCBAQAorZnVuY3Rpb24gdGVzdChhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsgYWN0dWFsKTsKK30KKwordmFyIGhlbGxvID0gU3lt
Ym9sKCJIZWxsbyIpOwordmFyIHByb3RvID0gU3ltYm9sKCJfX3Byb3RvX18iKTsKKworZm9yICh2
YXIgc3ltIG9mIFsgaGVsbG8sIHByb3RvLCBTeW1ib2wuaXRlcmF0b3IgXSkgeworICAgIHZhciBr
ZXkgPSBTeW1ib2wua2V5Rm9yKHN5bSk7CisgICAgdGVzdChrZXksIHVuZGVmaW5lZCk7CisgICAg
Ly8gdHdpY2UKKyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZvcihzeW0pOworICAgIHRlc3Qoa2V5
LCB1bmRlZmluZWQpOworfQorCitmb3IgKHZhciBrZXkgb2YgWyAiSGVsbG8iLCAiX19wcm90b19f
IiwgIlN5bWJvbC5pdGVyYXRvciIsIG51bGwsIHVuZGVmaW5lZCwgNDIsIDIwLjUsIHRydWUsIGZh
bHNlLCB7fSwgZnVuY3Rpb24gKCkge30sIFtdLCAnJyBdKSB7CisgICAgdmFyIHN5bSA9IFN5bWJv
bC5mb3Ioa2V5KTsKKyAgICB0ZXN0KHR5cGVvZiBzeW0sICJzeW1ib2wiKTsKKyAgICB0ZXN0KHN5
bS50b1N0cmluZygpLCAiU3ltYm9sKCIgKyBTdHJpbmcoa2V5KSArICIpIik7CisKKyAgICB2YXIg
c3ltMiA9IFN5bWJvbC5mb3Ioa2V5KTsKKyAgICB0ZXN0KHN5bSA9PT0gc3ltMiwgdHJ1ZSk7CisK
KyAgICB2YXIga2V5ID0gU3ltYm9sLmtleUZvcihzeW0pOworICAgIHRlc3Qoa2V5LCBrZXkpOwor
ICAgIHZhciBrZXkgPSBTeW1ib2wua2V5Rm9yKHN5bTIpOworICAgIHRlc3Qoa2V5LCBrZXkpOwor
fQorCit2YXIgZXJyb3IgPSBudWxsOwordHJ5IHsKKyAgICB2YXIga2V5ID0geworICAgICAgICB0
b1N0cmluZygpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndG9TdHJpbmcnKTsKKyAg
ICAgICAgfQorICAgIH07CisgICAgU3ltYm9sLmZvcihrZXkpOworfSBjYXRjaCAoZSkgeworICAg
IGVycm9yID0gZTsKK30KK2lmICghZXJyb3IpCisgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhy
b3duJyk7CitpZiAoU3RyaW5nKGVycm9yKSAhPT0gJ0Vycm9yOiB0b1N0cmluZycpCisgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgZXJyb3I6ICcgKyBTdHJpbmcoZXJyb3IpKTsKKwordmFyIGVsZW1l
bnRzID0gWworICAgIG51bGwsCisgICAgdW5kZWZpbmVkLAorICAgIDQyLAorICAgIDIwLjUsCisg
ICAgdHJ1ZSwKKyAgICBmYWxzZSwKKyAgICAnc3RyaW5nJywKKyAgICB7fSwKKyAgICBmdW5jdGlv
biAoKSB7fSwKKyAgICBbXSwKK107Citmb3IgKHZhciBpdGVtIG9mIGVsZW1lbnRzKSB7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBTeW1ib2wua2V5Rm9yKGl0ZW0p
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAo
IWVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAo
U3RyaW5nKGVycm9yKSAhPT0gJ1R5cGVFcnJvcjogVHlwZSBlcnJvcicpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIGVycm9yOiAnICsgU3RyaW5nKGVycm9yKSk7Cit9CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKKyAgICBTeW1ib2wuZm9yKGkpOworZ2MoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ogYi9Tb3VyY2UvV1RGL1dU
Ri52Y3hwcm9qL1dURi52Y3hwcm9qCmluZGV4IDVkMWRiN2RhMDlmN2Q4Y2U3YmNlNWE1ZmU4OTRl
YWE4YzRlZWZkZDcuLmM3OGE4MTE1MmY0NzNhMzMzMTY2MDYwZmI4YzcyNjliYTBlZWQ0YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKKysrIGIvU291cmNl
L1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagpAQCAtMTM0LDYgKzEzNCw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJpbmdJbXBsLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ1N0YXRpY3MuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3RyaW5nVmlldy5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTeW1ib2xSZWdpc3RyeS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcY2ZcQXRvbWljU3RyaW5nQ0YuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcY2ZcU3RyaW5nQ0YuY3BwIiAvPgpA
QCAtMjk1LDYgKzI5Niw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxT
dHJpbmdJbXBsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJp
bmdPcGVyYXRvcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0
cmluZ1ZpZXcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN5bWJv
bFJlZ2lzdHJ5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZT
dHJpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxUaHJlYWRpbmcuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxUaHJlYWRpbmdQcmltaXRpdmVzLmgi
IC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRl
cnMgYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKaW5kZXggNTYx
OTcyNjBlNzQ3YzIyMDc1NTg2NTczNWY3MWQxMmNlNzM2MzkyMS4uZWYwM2I1NzBmZjMwNTc3OGFm
ODI2MGU0M2ZjNjc5MDA4Y2M3MmE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmN4cHJv
ai9XVEYudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZj
eHByb2ouZmlsdGVycwpAQCAtNzgsNiArNzgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cd3RmXHRleHRcU3RyaW5nSW1wbC5jcHAiPgogICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxT
eW1ib2xSZWdpc3RyeS5jcHAiPgorICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+dGV4dDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAt
MzQyLDYgKzM0NSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJp
bmdWaWV3LmgiPgogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN5bWJvbFJlZ2lzdHJ5LmgiPgor
ICAgICAgPEZpbHRlcj50ZXh0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxXVEZTdHJpbmcuaCI+CiAgICAgICA8RmlsdGVyPnRl
eHQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM3MTYyNGQ4NzliZjQ4YTA5Mjg0MDY3MTUzMzFmZDQ0MDIzNmFl
NWMuLjc4ZTVlZjlhZGE4ZDNlOTliYzAxNjljNzBhMDczMzZkYTZlNTZhZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQsNiArNzQsOCBAQAogCQkyQ0RF
RDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVu
TG9vcC5jcHAgKi87IH07CiAJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0RFRDBGMjE4
MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oICovOyB9OwogCQk0MzBCNDc4OTFBQUFBQzFBMDAx
MjIzREEgLyogU3RyaW5nQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmgg
Ki87IH07CisJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OworCQk3MEE5OTNGRjFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1i
b2xSZWdpc3RyeS5oICovOyB9OwogCQk3Q0JCQTA3NDE5QkI3RkRDMDBCQkYwMjUgLyogT1NPYmpl
Y3RQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
QkJBMDczMTlCQjdGREMwMEJCRjAyNSAvKiBPU09iamVjdFB0ci5oICovOyB9OwogCQk3Q0REN0ZG
ODE4NkQyOTFFMDA3NDMzQ0QgLyogSXRlcmF0b3JBZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NERDdGRjcxODZEMjkxRTAwNzQzM0NEIC8q
IEl0ZXJhdG9yQWRhcHRvcnMuaCAqLzsgfTsKIAkJN0NERDdGRkExODZEMkE1NDAwNzQzM0NEIC8q
IEl0ZXJhdG9yUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDREQ3RkY5MTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmggKi87IH07
CkBAIC0zNjIsNiArMzY0LDggQEAKIAkJNUQyNDdCNzAxNDY4OUM0NzAwRTc4Qjc2IC8qIERlYnVn
UmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjczMTQ2ODlDNDcwMEU3OEI3NiAvKiBX
VEYueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV1RGLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTQxQ0FGNDE2MzBEQjI2MDA2RDBERUMgLyogQ29weVdURkhlYWRlcnMu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29weVdURkhlYWRlcnMu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQTk5M0ZDMUFENzE1MTMw
MEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTeW1ib2xSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0JCQTA3MzE5QkI3RkRDMDBCQkYwMjUgLyogT1NPYmplY3RQdHIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NPYmplY3RQdHIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NERDdGRjcxODZEMjkxRTAwNzQzM0NEIC8qIEl0ZXJh
dG9yQWRhcHRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0b3JB
ZGFwdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0REN0ZGOTE4NkQyQTU0
MDA3NDMzQ0QgLyogSXRlcmF0b3JSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJdGVyYXRvclJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTQs
NiArOTU4LDggQEAKIAkJCQk5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5j
cHAgKi8sCiAJCQkJQThBNDczMkExNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ09wZXJhdG9ycy5o
ICovLAogCQkJCUE4QTQ3MzJCMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdTdGF0aWNzLmNwcCAq
LywKKwkJCQk3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICov
LAorCQkJCTcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oICovLAog
CQkJCUE4QTQ3MzJDMTUxQTgyNUIwMDQxMjNGRiAvKiBUZXh0UG9zaXRpb24uaCAqLywKIAkJCQlB
OEE0NzMyRDE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmNwcCAqLywKIAkJCQlBOEE0NzMy
RTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggKi8sCkBAIC0xMTI3LDYgKzExMzMsNyBA
QAogCQkJCUE4QTQ3M0VFMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9ySGFuZGxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTQ2NTE2RTE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJs
ZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwRDg1QjQxNzIzNENDMTAwMzM4MjEwIC8qIE5v
TG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRjE1MUE4MjVCMDA0MTIz
RkYgLyogTm9uY29weWFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Y1MTUxQTgyNUIw
MDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTI5QzMzRTE1
RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBpbiBIZWFkZXJzICovLApAQCAt
MTM3OCw2ICsxMzg1LDcgQEAKIAkJCQlBNUJBMTVGQzE4MjQzNUE2MDBBODJFNjkgLyogU3RyaW5n
SW1wbENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1QkExNUY1MTgyNDM0ODAwMEE4MkU2OSAv
KiBTdHJpbmdJbXBsTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RjMxODI0MzNBOTAw
QTgyRTY5IC8qIFN0cmluZ01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTcwQTk5M0ZFMUFENzE1
MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRE
QkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDc0NDMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ1N0YXRpY3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdD
Ri5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZGMxOTA1NTQ2YzVl
ZjA1ZTFlMTFhMWQ3YzVjODNhYzM2NDA5OWYwZS4uOWQ5M2FkNTk3ZDQ0MjAyYTk4OGQxZWYyMTcy
Y2ViN2FiMDQyOTBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTEzMiw2ICsxMzIsNyBAQCBz
ZXQoV1RGX0hFQURFUlMKICAgICB0ZXh0L1N0cmluZ0hhc2guaAogICAgIHRleHQvU3RyaW5nSW1w
bC5oCiAgICAgdGV4dC9TdHJpbmdWaWV3LmgKKyAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKICAg
ICB0ZXh0L1dURlN0cmluZy5oCiAKICAgICB0aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCkBAIC0x
OTksNiArMjAwLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgdGV4dC9TdHJpbmdJbXBsLmNwcAog
ICAgIHRleHQvU3RyaW5nU3RhdGljcy5jcHAKICAgICB0ZXh0L1N0cmluZ1ZpZXcuY3BwCisgICAg
dGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAKICAgICB0ZXh0L1dURlN0cmluZy5jcHAKIAogICAgIHRo
cmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3Bw
CmluZGV4IGZhN2U0MzQ3YTEyM2JmNmIxNzViMDZhMzhjNWU5Y2EyMmI4ZWQ0NTAuLjVhYjRlMWVi
N2RiZWRhNmVhMzczNWQ1NGQyYzUwNjc4NTI3MzI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5jcHAKQEAgLTQwMyw4ICs0MDMsMTEgQEAgc3RydWN0IENoYXJCdWZmZXJGcm9tTGl0
ZXJhbERhdGFUcmFuc2xhdG9yIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuICpTdHJpbmdJbXBsOjplbXB0eSgpOwogCi0gICAgaWYgKHN0cmluZy5pc1N5bWJvbCgp
KQotICAgICAgICByZXR1cm4gYWRkKHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2wo
KSk7CisgICAgaWYgKHN0cmluZy5pc1N5bWJvbCgpKSB7CisgICAgICAgIGlmIChzdHJpbmcuaXM4
Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuICphZGQoc3RyaW5nLmNoYXJhY3RlcnMxNigp
LCBzdHJpbmcubGVuZ3RoKCkpOworICAgIH0KIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0
cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNh
c2UgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGF0b21pYy4iKTsKIApAQCAtNDI0LDggKzQyNywx
MSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3IgewogICAgIGlm
ICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7
CiAKLSAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBhZGQoc3RyaW5n
VGFibGUsIHN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKSk7CisgICAgaWYgKHN0
cmluZy5pc1N5bWJvbCgpKSB7CisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAg
ICAgICByZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsK
KyAgICAgICAgcmV0dXJuICphZGQoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCkpOworICAgIH0KIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygp
LCAiQXRvbWljU3RyaW5nIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmlu
ZyBpcyBhbHJlYWR5IGF0b21pYy4iKTsKIApAQCAtNTEyLDggKzUxOCwxMSBAQCBBdG9taWNTdHJp
bmdJbXBsKiBBdG9taWNTdHJpbmc6OmZpbmRTbG93Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiAg
ICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9t
aWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CiAKLSAgICBpZiAoc3RyaW5nLmlz
U3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBmaW5kKCZzdHJpbmcuZXh0cmFjdEZvbGRlZFN0cmlu
Z0luU3ltYm9sKCkpOworICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkgeworICAgICAgICBpZiAo
c3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGZpbmRJbnRlcm5hbChzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIGZpbmRJbnRl
cm5hbChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgfQogCiAg
ICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwogICAgIEhhc2hTZXQ8U3RyaW5nSW1w
bCo+JiBhdG9taWNTdHJpbmdUYWJsZSA9IHN0cmluZ1RhYmxlKCk7CkBAIC01NTMsNyArNTYyLDcg
QEAgQXRvbWljU3RyaW5nIEF0b21pY1N0cmluZzo6bnVtYmVyKGRvdWJsZSBudW1iZXIpCiAgICAg
cmV0dXJuIFN0cmluZyhudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKG51bWJlciwgNiwgYnVm
ZmVyLCB0cnVlKSk7CiB9CiAKLUF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZChM
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorQXRvbWljU3RyaW5nSW1wbCogQXRv
bWljU3RyaW5nOjpmaW5kSW50ZXJuYWwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CiAgICAgYXV0
byYgdGFibGUgPSBzdHJpbmdUYWJsZSgpOwpAQCAtNTY1LDcgKzU3NCw3IEBAIEF0b21pY1N0cmlu
Z0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZChMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BdG9taWNTdHJpbmdJbXBsKiBBdG9taWNT
dHJpbmc6OmZpbmQoVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK0F0b21pY1N0
cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZEludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9j
a2VyOwogICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nVGFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oCmluZGV4IDNhMmZjZjVmMzU4MmNjMDc0MGUwNDVhMGIzOTJmYTA2Y2VmYjk5MmQu
LmI5MTBkNGU3MzJkYmQwMWUxNTc0MDE3YWI1NDFlYmFhZTAwMTFjZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuaApAQCAtODYsOCArODYsMTQgQEAgY2xhc3MgQXRvbWljU3RyaW5nIHsK
ICAgICBBdG9taWNTdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNTdHJp
bmdJbXBsKiBmaW5kKExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nSW1w
bCogZmluZChMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZpbmRJbnRlcm5hbChjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIH0KKyAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBmaW5k
SW50ZXJuYWwoY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICB9CiAgICAgc3RhdGljIEF0b21pY1N0
cmluZ0ltcGwqIGZpbmQoU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIHsKICAgICAgICAgaWYgKCFz
dHJpbmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKQpAQCAtMjQ5LDYgKzI1NSw5IEBAIGNsYXNzIEF0
b21pY1N0cmluZyB7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIEF0b21pY1N0
cmluZ0ltcGwqIGZpbmRTbG93Q2FzZShTdHJpbmdJbXBsJik7CiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopOworCisgICAgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmRJbnRlcm5h
bChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIEF0b21pY1N0cmlu
Z0ltcGwqIGZpbmRJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiB9Owog
CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgQXRv
bWljU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggOWZhYmYyYmFiMmVhNmMxYmRmNzI4MGJjNjY2NTdlZDA2
Zjk5OWY0OS4uNjY3OTRkYjhhMGEzYmIyYTFlNjEyYTMzZTgwMWE1ODEzMWE5ZjI1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3Rm
L1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lz
dHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9VVEY4Lmg+CiAKQEAgLTExMiw2ICsxMTMsOSBAQCB2b2lkIFN0cmluZ1N0
YXRzOjpwcmludFN0YXRzKCkKICAgICBpZiAoaXNBdG9taWMoKSAmJiBsZW5ndGgoKSAmJiAhaXNT
eW1ib2woKSkKICAgICAgICAgQXRvbWljU3RyaW5nOjpyZW1vdmUodGhpcyk7CiAKKyAgICBpZiAo
aXNTeW1ib2woKSAmJiBzeW1ib2xSZWdpc3RyeSgpKQorICAgICAgICBzeW1ib2xSZWdpc3RyeSgp
LT5yZW1vdmUodGhpcyk7CisKICAgICBCdWZmZXJPd25lcnNoaXAgb3duZXJzaGlwID0gYnVmZmVy
T3duZXJzaGlwKCk7CiAKICAgICBpZiAob3duZXJzaGlwID09IEJ1ZmZlckludGVybmFsKQpAQCAt
Mjg2LDE1ICsyOTAsMjQgQEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0ltcGwqIHN0
cmluZ0ltcGwpCiAgICAgcmV0dXJuIGNyZWF0ZShzdHJpbmcsIGxlbmd0aCk7CiB9CiAKLVJlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVTeW1ib2woUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiByZXApCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sKFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gYXJnUmVwKQogewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHJlcC0+bGVu
Z3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBjcmVhdGVTeW1ib2xFbXB0
eSgpOwotICAgIFJlZjxTdHJpbmdJbXBsPiBzdHJpbmcgPSBjcmVhdGVTdWJzdHJpbmdTaGFyaW5n
SW1wbChyZXAsIDAsIGxlbmd0aCk7Ci0gICAgQVNTRVJUKCFzdHJpbmctPmlzQXRvbWljKCkpOwot
ICAgIHN0cmluZy0+bV9oYXNoQW5kRmxhZ3MgPSBoYXNoQW5kRmxhZ3NGb3JTeW1ib2woc3RyaW5n
LT5tX2hhc2hBbmRGbGFncyk7Ci0gICAgcmV0dXJuIHN0cmluZzsKKyAgICBSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwID0gYXJnUmVwOworICAgIFN0cmluZ0ltcGwqIG93bmVyUmVwID0gKHJlcC0+YnVm
ZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKSA/IHJlcC0+c3Vic3RyaW5nQnVmZmVy
KCkgOiByZXAuZ2V0KCk7CisKKyAgICAvLyBXZSBhbGxvY2F0ZSBhIGJ1ZmZlciB0aGF0IGNvbnRh
aW5zCisgICAgLy8gMS4gdGhlIFN0cmluZ0ltcGwgc3RydWN0CisgICAgLy8gMi4gdGhlIHBvaW50
ZXIgdG8gdGhlIG93bmVyIHN0cmluZworICAgIC8vIDMuIHRoZSBwb2ludGVyIHRvIHRoZSBzeW1i
b2wgcmVnaXN0cnkKKyAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3Ry
aW5nSW1wbCo+KGZhc3RNYWxsb2MoYWxsb2NhdGlvblNpemU8U3RyaW5nSW1wbCo+KDIpKSk7Cisg
ICAgaWYgKHJlcC0+aXM4Qml0KCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3RO
dWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbCwgcmVwLT5tX2RhdGE4LCBy
ZXAtPmxlbmd0aCgpLCBvd25lclJlcCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3RO
dWxsLCBzdHJpbmdJbXBsKSBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbCwgcmVwLT5tX2RhdGExNiwg
cmVwLT5sZW5ndGgoKSwgb3duZXJSZXApKTsKK30KKworUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmNyZWF0ZVN5bWJvbEVtcHR5KCkKK3sKKyAgICByZXR1cm4gY3JlYXRlU3ltYm9sKGVtcHR5
KCkpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBlMTRkNDUwOTA1YTYxNjYyZjdiNTcyODFmMjJiMDA1
NzQ3NzcyZTAyLi45Mzk5MDI4ZWQzNzAyZmRhMDExOGM3NjYxY2Y4YWRmMDBmM2QxMWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNTcsNiArNTcsNyBAQAogc3RydWN0IFN1YnN0cmlu
Z1RyYW5zbGF0b3I7CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogdGVtcGxhdGU8dHlw
ZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKK2NsYXNzIFN5bWJvbFJlZ2lzdHJ5OwogCiBlbnVtIFRl
eHRDYXNlU2Vuc2l0aXZpdHkgewogICAgIFRleHRDYXNlU2Vuc2l0aXZlLApAQCAtMjkyLDE4ICsy
OTMsMzkgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgICAgIFNUUklOR19TVEFUU19BRERfMTZC
SVRfU1RSSU5HMihtX2xlbmd0aCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgZW51bSBDcmVhdGVTeW1i
b2xFbXB0eVRhZyB7IENyZWF0ZVN5bWJvbEVtcHR5IH07Ci0gICAgU3RyaW5nSW1wbChDcmVhdGVT
eW1ib2xFbXB0eVRhZykKKyAgICBlbnVtIENyZWF0ZVN5bWJvbFRhZyB7IENyZWF0ZVN5bWJvbCB9
OworICAgIC8vIFVzZWQgdG8gY3JlYXRlIG5ldyBzeW1ib2wgc3RyaW5ncyB0aGF0IGhvbGRzIGV4
aXN0aW5nIDgtYml0IFtbRGVzY3JpcHRpb25dXSBzdHJpbmcgYXMgYSBzdWJzdHJpbmcgYnVmZmVy
IChCdWZmZXJTdWJzdHJpbmcpLgorICAgIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGJhc2UpCiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQotICAg
ICAgICAsIG1fbGVuZ3RoKDApCi0gICAgICAgIC8vIFdlIGV4cGVjdCBtX2xlbmd0aCB0byBiZSBp
bml0aWFsaXplZCB0byAwIGFzIHdlIHVzZSBpdAotICAgICAgICAvLyB0byByZXByZXNlbnQgYSBu
dWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgotICAgICAgICAsIG1fZGF0YTgocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0aCkpCi0gICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFz
aEFuZEZsYWdzRm9yU3ltYm9sKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwp
KQorICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3Rl
cnMpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFzaEFuZEZsYWdzRm9yU3ltYm9sKHNfaGFz
aEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nU3ltYm9sIHwgQnVmZmVyU3Vic3RyaW5nKSkKICAgICB7
CisgICAgICAgIEFTU0VSVChpczhCaXQoKSk7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKKyAg
ICAgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7
CiAKLSAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0aCk7CisgICAg
ICAgIHN1YnN0cmluZ0J1ZmZlcigpID0gYmFzZS5sZWFrUmVmKCk7CisgICAgICAgIHN5bWJvbFJl
Z2lzdHJ5KCkgPSBudWxscHRyOworCisgICAgICAgIFNUUklOR19TVEFUU19BRERfOEJJVF9TVFJJ
TkcyKG1fbGVuZ3RoLCB0cnVlKTsKKyAgICB9CisKKyAgICAvLyBVc2VkIHRvIGNyZWF0ZSBuZXcg
c3ltYm9sIHN0cmluZ3MgdGhhdCBob2xkcyBleGlzdGluZyAxNi1iaXQgW1tEZXNjcmlwdGlvbl1d
IHN0cmluZyBhcyBhIHN1YnN0cmluZyBidWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCisgICAgU3Ry
aW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYmFzZSkKKyAgICAgICAgOiBtX3JlZkNv
dW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCisgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAg
ICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCisgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoaGFz
aEFuZEZsYWdzRm9yU3ltYm9sKFN0cmluZ1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykpCisgICAg
eworICAgICAgICBBU1NFUlQoIWlzOEJpdCgpKTsKKyAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsK
KyAgICAgICAgQVNTRVJUKGJhc2UtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmlu
Zyk7CisKKyAgICAgICAgc3Vic3RyaW5nQnVmZmVyKCkgPSBiYXNlLmxlYWtSZWYoKTsKKyAgICAg
ICAgc3ltYm9sUmVnaXN0cnkoKSA9IG51bGxwdHI7CisKKyAgICAgICAgU1RSSU5HX1NUQVRTX0FE
RF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKICAgICB9CiAKICAgICB+U3RyaW5nSW1w
bCgpOwpAQCAtMzk3LDExICs0MTksNyBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdEludGVybmFsPFQ+KHJlc3VsdEltcGwsIGxlbmd0aCk7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbEVtcHR5
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRl
U3ltYm9sRW1wdHkpKTsKLSAgICB9Ci0KKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTeW1ib2xFbXB0eSgpOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbChQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHJlcCk7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBsLiBUaGUg
b3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBQYXNzUmVmUHRyLApAQCAt
NzQxLDE0ICs3NTksMjUgQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIGNvbnN0IFVDaGFyIGxhdGluMUNhc2VGb2xkVGFibGVbMjU2XTsKIAot
ICAgIFN0cmluZ0ltcGwmIGV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpCisgICAgUmVmPFN0
cmluZ0ltcGw+IGV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpCiAgICAgewotICAgICAgICBB
U1NFUlQobGVuZ3RoKCkpOwogICAgICAgICBBU1NFUlQoaXNTeW1ib2woKSk7CiAgICAgICAgIEFT
U0VSVChidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpOwogICAgICAgICBBU1NF
UlQoc3Vic3RyaW5nQnVmZmVyKCkpOwogICAgICAgICBBU1NFUlQoIXN1YnN0cmluZ0J1ZmZlcigp
LT5pc1N5bWJvbCgpKTsKLSAgICAgICAgcmV0dXJuICpzdWJzdHJpbmdCdWZmZXIoKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKHRoaXMsIDAsIGxlbmd0aCgpKTsK
KyAgICB9CisKKyAgICBTeW1ib2xSZWdpc3RyeSogY29uc3QmIHN5bWJvbFJlZ2lzdHJ5KCkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKKyAgICAgICAgcmV0dXJuICoo
dGFpbFBvaW50ZXI8U3ltYm9sUmVnaXN0cnkqPigpICsgMSk7CisgICAgfQorCisgICAgU3ltYm9s
UmVnaXN0cnkqJiBzeW1ib2xSZWdpc3RyeSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTeW1i
b2woKSk7CisgICAgICAgIHJldHVybiAqKHRhaWxQb2ludGVyPFN5bWJvbFJlZ2lzdHJ5Kj4oKSAr
IDEpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sUmVnaXN0cnkuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2ZhOGEwZDZjYTExNDA5M2Q2MjYxMTMxNTE2MDZkOWNiZTE1MWY4MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuY3Bw
CkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTeW1ib2xSZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiVGhyZWFkaW5nLmgi
CisKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyNpbmNsdWRlICJTcGluTG9jay5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXVEYgeworCisjaWYgVVNFKFdFQl9USFJFQUQpCisKK2NsYXNzIFN5bWJvbFJl
Z2lzdHJ5TG9ja2VyIDogcHVibGljIFNwaW5Mb2NrSG9sZGVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTeW1ib2xSZWdpc3RyeUxvY2tlcik7CitwdWJsaWM6CisgICAgU3ltYm9sUmVnaXN0
cnlMb2NrZXIoU3ltYm9sUmVnaXN0cnkqIHN5bWJvbFJlZ2lzdHJ5KQorICAgICAgICA6IFNwaW5M
b2NrSG9sZGVyKHN5bWJvbFJlZ2lzdHJ5LT5zcGluTG9jaygpKQorICAgIHsKKyAgICB9Cit9Owor
CisjZWxzZQorCitjbGFzcyBTeW1ib2xSZWdpc3RyeUxvY2tlciB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoU3ltYm9sUmVnaXN0cnlMb2NrZXIpOworcHVibGljOgorICAgIFN5bWJvbFJlZ2lz
dHJ5TG9ja2VyKFN5bWJvbFJlZ2lzdHJ5KikgeyB9Cit9OworCisjZW5kaWYgLy8gVVNFKFdFQl9U
SFJFQUQpCisKK1N5bWJvbFJlZ2lzdHJ5OjpTeW1ib2xSZWdpc3RyeSgpCisgICAgOiBtX3RhYmxl
KCkKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyAgICAsIG1fc3BpbkxvY2soKQorI2VuZGlmCit7Cit9
CisKK1N5bWJvbFJlZ2lzdHJ5Ojp+U3ltYm9sUmVnaXN0cnkoKQoreworICAgIGZvciAoYXV0byBr
ZXkgOiBtX3RhYmxlKQorICAgICAgICBrZXkuaW1wbCgpLT5zeW1ib2xSZWdpc3RyeSgpID0gbnVs
bHB0cjsKK30KKworUmVmPFN0cmluZ0ltcGw+IFN5bWJvbFJlZ2lzdHJ5OjpzeW1ib2xGb3JLZXko
U3RyaW5nIHJlcCkKK3sKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tlciBsb2NrZXIodGhpcyk7CisK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdGFibGUuYWRkKFN5bWJvbFJlZ2lzdHJ5S2V5KHJlcC5p
bXBsKCkpKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgUmVmPFN0
cmluZ0ltcGw+IHN5bWJvbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChyZXAuaW1wbCgpKTsK
KyAgICAgICAgc3ltYm9sLT5zeW1ib2xSZWdpc3RyeSgpID0gdGhpczsKKyAgICAgICAgKmFkZFJl
c3VsdC5pdGVyYXRvciA9IFN5bWJvbFJlZ2lzdHJ5S2V5KCZzeW1ib2wuZ2V0KCkpOworICAgICAg
ICByZXR1cm4gc3ltYm9sOworICAgIH0KKyAgICByZXR1cm4gKmFkZFJlc3VsdC5pdGVyYXRvci0+
aW1wbCgpOworfQorCitTdHJpbmcgU3ltYm9sUmVnaXN0cnk6OmtleUZvclN5bWJvbChTdHJpbmdJ
bXBsKiB1aWQpCit7CisgICAgU3ltYm9sUmVnaXN0cnlMb2NrZXIgbG9ja2VyKHRoaXMpOworCisg
ICAgQVNTRVJUKHVpZC0+aXNTeW1ib2woKSk7CisgICAgQVNTRVJUKHVpZC0+c3ltYm9sUmVnaXN0
cnkoKSA9PSB0aGlzKTsKKyAgICByZXR1cm4gdWlkLT5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1i
b2woKTsKK30KKwordm9pZCBTeW1ib2xSZWdpc3RyeTo6cmVtb3ZlKFN0cmluZ0ltcGwqIHVpZCkK
K3sKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tlciBsb2NrZXIodGhpcyk7CisKKyAgICBBU1NFUlQo
dWlkLT5pc1N5bWJvbCgpKTsKKyAgICBBU1NFUlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpID09IHRo
aXMpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3RhYmxlLmZpbmQoU3ltYm9sUmVnaXN0cnlLZXko
dWlkKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyYXRvciAhPSBtX3RhYmxlLmVuZCgp
LCAiVGhlIHN0cmluZyBiZWluZyByZW1vdmVkIGlzIHJlZ2lzdGVyZWQgaW4gdGhlIHN0cmluZyB0
YWJsZSBvZiBhbiBvdGhlciB0aHJlYWQhIik7CisgICAgbV90YWJsZS5yZW1vdmUoaXRlcmF0b3Ip
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJl
NzY3YzBhNjBmN2MwYjYyZmJiZDg3Y2E5NjU5NWI5Y2ZmOWQ5MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaApAQCAtMCwwICsxLDE0MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdURl9TeW1ib2xSZWdpc3RyeV9oCisjZGVmaW5l
IFdURl9TeW1ib2xSZWdpc3RyeV9oCisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworI2lmIFVTRShXRUJfVEhSRUFEKQorI2luY2x1ZGUgPHd0Zi9TcGluTG9j
ay5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisvLyBTaW5jZSBTdHJpbmdJbXBsKiB1
c2VkIGZvciBTeW1ib2wgdWlkIGRvZXNuJ3QgaGF2ZSBhIGhhc2ggdmFsdWUgcmVmbGVjdGluZyB0
aGUgc3RyaW5nIGNvbnRlbnQsCisvLyB0byBjb21wYXJlIHdpdGggYW4gZXh0ZXJuYWwgc3RyaW5n
IGluIHN0cmluZyBjb250ZW50cywgaW50cm9kdWNlIFN5bWJvbFJlZ2lzdHJ5S2V5LgorLy8gU3lt
Ym9sUmVnaXN0cnlLZXkgaG9sZHMgYSBoYXNoIHZhbHVlIHJlZmxlY3RpbmcgdGhlIHN0cmluZyBj
b250ZW50IGFkZGl0aW9uYWxseS4KK2NsYXNzIFN5bWJvbFJlZ2lzdHJ5S2V5IHsKK3B1YmxpYzoK
KyAgICBTeW1ib2xSZWdpc3RyeUtleSgpCisgICAgICAgIDogbV9pbXBsKCkKKyAgICAgICAgLCBt
X2hhc2goKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBTeW1ib2xSZWdpc3RyeUtleShT
dHJpbmdJbXBsKiB1aWQpCisgICAgICAgIDogbV9pbXBsKHVpZCkKKyAgICAgICAgLCBtX2hhc2go
MCkKKyAgICB7CisgICAgICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpIHsKKyAgICAgICAgICAgIGlm
ICh1aWQtPmlzOEJpdCgpKQorICAgICAgICAgICAgICAgIG1faGFzaCA9IFN0cmluZ0hhc2hlcjo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHModWlkLT5jaGFyYWN0ZXJzOCgpLCB1aWQtPmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2hhc2ggPSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHVpZC0+Y2hhcmFjdGVyczE2KCksIHVp
ZC0+bGVuZ3RoKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faGFzaCA9IHVpZC0+
aGFzaCgpOworICAgIH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1faGFzaDsKKyAgICB9CisKKyAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2ltcGw7CisgICAgfQorCisgICAgU3ltYm9sUmVnaXN0
cnlLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1faW1wbCho
YXNoVGFibGVEZWxldGVkVmFsdWUoKSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW1wbCA9PSBo
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFN0
cmluZ0ltcGwqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8U3RyaW5nSW1wbCo+KC0xKTsgfQorCisgICAgU3RyaW5nSW1wbCogbV9pbXBsOworICAgIHVu
c2lnbmVkIG1faGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0
SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFN5bWJvbFJlZ2lzdHJ5S2V5PiB7
CisgICAgc3RydWN0IEhhc2ggOiBwdWJsaWMgU3RyaW5nSGFzaCB7CisgICAgICAgIHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFN5bWJvbFJlZ2lzdHJ5S2V5JiBrZXkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBrZXkuaGFzaCgpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFN5bWJvbFJlZ2lzdHJ5S2V5JiBhLCBjb25zdCBTeW1ib2xSZWdpc3Ry
eUtleSYgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFs
KGEuaW1wbCgpLCBiLmltcGwoKSk7CisgICAgICAgIH0KKyAgICB9OworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxTeW1ib2xSZWdpc3RyeUtleT4gOiBTaW1wbGVDbGFzc0hhc2hU
cmFpdHM8U3ltYm9sUmVnaXN0cnlLZXk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0Vt
cHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNv
bnN0IFN5bWJvbFJlZ2lzdHJ5S2V5JiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4ga2V5Lmlt
cGwoKSA9PSBudWxscHRyOworICAgIH0KK307CisKK2NsYXNzIFN5bWJvbFJlZ2lzdHJ5IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTeW1i
b2xSZWdpc3RyeSk7CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN5bWJvbFJlZ2lz
dHJ5KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5TeW1ib2xSZWdpc3RyeSgpOworCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiBzeW1ib2xGb3JLZXkoU3RyaW5nKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGtleUZvclN5bWJvbChTdHJpbmdJbXBsKiB1
aWQpOworCisgICAgdm9pZCByZW1vdmUoU3RyaW5nSW1wbCogdWlkKTsKKworI2lmIFVTRShXRUJf
VEhSRUFEKQorICAgIFNwaW5Mb2NrJiBzcGluTG9jaygpCisgICAgeworICAgICAgICByZXR1cm4g
bV9zcGluTG9jazsKKyAgICB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PFN5bWJv
bFJlZ2lzdHJ5S2V5PiBtX3RhYmxlOworI2lmIFVTRShXRUJfVEhSRUFEKQorICAgIFNwaW5Mb2Nr
IG1fc3BpbkxvY2s7CisjZW5kaWYKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTBkNGI4ZjRk
Y2ZkZGEyZWRkZmRmZTVkOGVlMGU4NzZhNGQxODA3NC4uYWE4NDI0YWE0Mjc1YjU4MDQ3NmQ4MTg0
ZThhYmE4ZjY2ZjcwZGNmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA0LTA5ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEltcGxl
bWVudCBTeW1ib2wuZm9yIGFuZCBTeW1ib2wua2V5Rm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gY2hlY2sgU3ltYm9sJ3MgaWRl
bnRpdHkgb3ZlciBkaWZmZXJlbnQgcmVhbG1zLgorCisgICAgICAgICoganMvZG9tL2Nyb3NzLWZy
YW1lLXN5bWJvbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vY3Jvc3Mt
ZnJhbWUtc3ltYm9scy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vc2NyaXB0LXRlc3Rz
L2Nyb3NzLWZyYW1lLXN5bWJvbHMuanM6IEFkZGVkLgorCiAyMDE1LTA0LTA5ICBIdW5zZW9wIEpl
b25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBmYXN0L2Nzcy92
ZXJ0aWNhbC10ZXh0LW92ZXJmbG93LWVsbGlwc2lzLXRleHQtYWxpZ24tY2VudGVyLmh0bWwgaXMg
ZmFpbGluZyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1i
b2xzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2JhMWE5OWFkNWE3MDhiMTY1N2FjMDBkODcxMTgx
NDUxNWY1NDcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Nyb3NzLWZy
YW1lLXN5bWJvbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIFN5bWJvbCBh
bmQgZ2xvYmFsIHN5bWJvbCByZWdpc3RyeSBpZGVudGl0eQorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBmcmFtZS5TeW1ib2wuaXRlcmF0b3IgaXMgU3ltYm9sLml0ZXJhdG9y
CitQQVNTIGZyYW1lLlN5bWJvbCgnSGVsbG8nKSBpcyBub3QgU3ltYm9sKCdIZWxsbycpCitQQVNT
IFN5bWJvbC5rZXlGb3Ioc3ltKSBpcyAnSGVsbG8nCitQQVNTIGZyYW1lLlN5bWJvbC5rZXlGb3Io
c3ltKSBpcyAnSGVsbG8nCitQQVNTIFN5bWJvbC5mb3IoJ0hlbGxvJykgaXMgc3ltCitQQVNTIGZy
YW1lLlN5bWJvbC5mb3IoJ0hlbGxvJykgaXMgc3ltCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9t
L2Nyb3NzLWZyYW1lLXN5bWJvbHMuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFt
ZS1zeW1ib2xzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIzNjI3YzFjZjVkZGQyMjQwMDliY2RmYzFiNzIy
ZThiMGY5NjVkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1m
cmFtZS1zeW1ib2xzLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8aWZyYW1lPjwvaWZyYW1lPgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jcm9zcy1mcmFt
ZS1zeW1ib2xzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qcyBiL0xh
eW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNzhlYWYzN2YxZjA3ZjkzYWNjOTUxZDE5OTg2OGQ2MGRlZjQ4Y2UwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9jcm9zcy1mcmFtZS1z
eW1ib2xzLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBTeW1ib2wgYW5k
IGdsb2JhbCBzeW1ib2wgcmVnaXN0cnkgaWRlbnRpdHkiKTsKKwordmFyIGZyYW1lID0gZnJhbWVz
WzBdOworCitzaG91bGRCZSgiZnJhbWUuU3ltYm9sLml0ZXJhdG9yIiwgIlN5bWJvbC5pdGVyYXRv
ciIpOworc2hvdWxkTm90QmUoImZyYW1lLlN5bWJvbCgnSGVsbG8nKSIsICJTeW1ib2woJ0hlbGxv
JykiKTsKKwordmFyIHN5bSA9IFN5bWJvbC5mb3IoIkhlbGxvIik7CitzaG91bGRCZSgiU3ltYm9s
LmtleUZvcihzeW0pIiwgIidIZWxsbyciKTsKK3Nob3VsZEJlKCJmcmFtZS5TeW1ib2wua2V5Rm9y
KHN5bSkiLCAiJ0hlbGxvJyIpOworc2hvdWxkQmUoIlN5bWJvbC5mb3IoJ0hlbGxvJykiLCAic3lt
Iik7CitzaG91bGRCZSgiZnJhbWUuU3ltYm9sLmZvcignSGVsbG8nKSIsICJzeW0iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250611</attachid>
            <date>2015-04-12 10:12:56 -0700</date>
            <delta_ts>2015-04-16 12:39:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143404-20150413021201.patch</filename>
            <type>text/plain</type>
            <size>44302</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
Nzk1NjMyMmMxN2YwM2Q1ZTgyZGU1MGJmYjRjNzZiMDk0NWNlYTY4Li5mMjBlNmI0MGIxNTQ4MGU4
MWU3NzQxN2YzYjkzMjQ4ZjZmYmRmNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NCBAQAogMjAxNS0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRVM2XSBJbXBsZW1lbnQgU3ltYm9sLmZvciBhbmQgU3ltYm9sLmtl
eUZvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IuCisgICAgICAg
IFN5bWJvbFJlZ2lzdHJ5IG1haW50YWlucyByZWdpc3RlcmVkIFN0cmluZ0ltcGwqIHN5bWJvbHMu
CisgICAgICAgIEFuZCB0byBtYWtlIHRoaXMgbWFwcGluZyBlbmFibGVkIG92ZXIgcmVhbG1zLAor
ICAgICAgICBWTSBvd25zIHRoaXMgbWFwcGluZyAobm90IEpTR2xvYmFsT2JqZWN0KS4KKworICAg
ICAgICBXaGlsZSB0aGVyZSdzIERlZmF1bHQgQXRvbWljU3RyaW5nVGFibGUgcGVyIHRocmVhZCwK
KyAgICAgICAgU3ltYm9sUmVnaXN0cnkgc2hvdWxkIG5vdCBleGlzdCBvdmVyIFZNcy4KKyAgICAg
ICAgU28gZXZlcnl0aW1lIFZNIGlzIGNyZWF0ZWQsIFN5bWJvbFJlZ2lzdHJ5IGlzIGFsc28gY3Jl
YXRlZC4KKworICAgICAgICBJbiBTeW1ib2xSZWdpc3RyeSBpbXBsZW1lbnRhdGlvbiwgd2UgZG9u
J3QgbGV2ZXJhZ2UgV2Vha0dDTWFwIChvciB3ZWFrIHJlZmVyZW5jZSBkZXNpZ24pLgorICAgICAg
ICBUaGVyZXMgYXJlIHNldmVyYWwgcmVhc29ucy4KKyAgICAgICAgMS4gU3RyaW5nSW1wbCogd2hp
Y2ggcmVwcmVzZW50cyBpZGVudGl0eSBvZiBTeW1ib2xzIGlzIG5vdCBHQy1tYW5hZ2VkIG9iamVj
dC4KKyAgICAgICAgICAgU28gd2UgY2Fubm90IHVzZSBXZWFrR0NNYXAgZGlyZWN0bHkuCisgICAg
ICAgICAgIFdoaWxlIFN5bWJvbCogaXMgR0MtbWFuYWdlZCBvYmplY3QsIGhvbGRpbmcgd2VhayBy
ZWZlcmVuY2UgdG8gU3ltYm9sKiBkb2Vzbid0IG1haW50YWluIEpTIHN5bWJvbHMgKGV4cG9zZWQg
cHJpbWl0aXZlIHZhbHVlcyB0byB1c2VycykgbGl2ZW5lc3MsCisgICAgICAgICAgIGJlY2F1c2Ug
ZGlzdGluY3QgU3ltYm9sKiBjYW4gZXhpc3QuCisgICAgICAgICAgIERpc3RpbmN0IFN5bWJvbCog
bWVhbnMgdGhlIFN5bWJvbCogb2JqZWN0IHRoYXQgcG9pbnRlciB2YWx1ZSAoU3ltYm9sKikgaXMg
ZGlmZmVyZW50IGZyb20gd2Vha2x5IHJlZmVyZW5jZWQgU3ltYm9sKiBidXQgaGVsZCBTdHJpbmdJ
bXBsKiBpcyB0aGUgc2FtZS4KKworICAgICAgICAyLiBXZSBkb24ndCB1c2UgV1RGOjpXZWFrUHRy
LiBJZiB3ZSBhZGQgV2Vha1B0ckZhY3RvcnkgaW50byBTdHJpbmdJbXBsJ3MgbWVtYmVyLCB3ZSBj
YW4gdHJhY2sgU3RyaW5nSW1wbConcyBsaXZlbmVzcyBieSBXZWFrUHRyLgorICAgICAgICAgICBI
b3dldmVyIHRoZXJlJ3MgcHJvYmxlbSBhYm91dCB3aGVuIHdlIHBydW5lIHN0YWxlZCBlbnRyaWVz
IGluIFN5bWJvbFJlZ2lzdHJ5LgorICAgICAgICAgICBTaW5jZSB0aGUgbWVtb3J5IGFsbG9jYXRl
ZCBmb3IgdGhlIFN5bWJvbCBpcyB0eXBpY2FsbHkgb2NjdXBpZWQgYnkgYWxsb2NhdGVkIHN5bWJv
bGl6ZWQgU3RyaW5nSW1wbConcyBjb250ZW50LAorICAgICAgICAgICBhbmQgaXQgaXMgbm90IGlu
IEdDLWhlYXAuCisgICAgICAgICAgIFdoaWxlIGhlYXZpbHkgcmVnaXN0ZXJpbmcgU3ltYm9scyBh
bmQgc3RvcmluZyBTdHJpbmdJbXBsKiBpbnRvIFN5bWJvbFJlZ2lzdHJ5LCBIZWFwJ3MgRWRlblNw
YWNlIGlzIG5vdCBzbyBvY2N1cGllZC4KKyAgICAgICAgICAgU28gR0MgdHlwaWNhbGx5IGF0dGVt
cHQgdG8gcGVyZm9ybSBFZGVuQ29sbGVjdGlvbiwgYW5kIGl0IGRvZXNuJ3QgY2FsbCBXZWFrR0NN
YXAncyBwcnVsZVN0YWxlRW50cmllcyBjYWxsYmFjay4KKyAgICAgICAgICAgQXMgYSByZXN1bHQs
IGJlZm9yZSBwcnVuaW5nIHN0YWxlZCBlbnRyaWVzIGluIFN5bWJvbFJlZ2lzdHJ5LCBmYXN0IG1h
bGxvYy1lZCBtZW1vcnkgZmlsbHMgdXAgdGhlIHN5c3RlbSBtZW1vcnkuCisKKyAgICAgICAgU28g
aW5zdGVhZCBvZiB1c2luZyBXZWFrIHJlZmVyZW5jZSwgd2UgdGFrZSByZWxhdGl2ZWx5IGVhc3kg
ZGVzaWduLgorICAgICAgICBXaGVuIHdlIHJlZ2lzdGVyIHN5bWJvbGl6ZWQgU3RyaW5nSW1wbCog
aW50byBTeW1ib2xSZWdpc3RyeSwgc3ltYm9saXplZCBTdHJpbmdJbXBsKiBpcyBhd2FyZSBvZiB0
aGF0LgorICAgICAgICBBbmQgd2hlbiBkZXN0cnVjdGluZyBpdCwgaXQgcmVtb3ZlcyBpdHMgcmVm
ZXJlbmNlIGZyb20gU3ltYm9sUmVnaXN0cnkgYXMgaWYgYXRvbWljIFN0cmluZ0ltcGwgZG8gc28g
d2l0aCBBdG9taWNTdHJpbmdUYWJsZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogcnVudGltZS9TeW1ib2xDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbENvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzeW1ib2xDb25zdHJ1Y3RvckZvcik6CisgICAgICAg
IChKU0M6OnN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6c3ltYm9sUmVnaXN0cnkpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9zeW1ib2wtcmVnaXN0cnkuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6
CisKKzIwMTUtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
ICAgICAgICAgW0VTNl0gSW1wbGVtZW50IEFycmF5LnByb3RvdHlwZS52YWx1ZXMKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzYzMwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY3
MmMzNWU5ODk0MDY2MmYzM2MwZTg1OTdmNTZlNWIxZmY4MDAxNmIuLjBmOGVlN2Y4ZmZjMGRiMDM2
OTNlZjg1OWQ2NWQ2YmFlMzg0NTJjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTUtMDQtMTIg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0g
SW1wbGVtZW50IFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gd2UgcmVnaXN0ZXIgc3ltYm9saXpl
ZCBTdHJpbmdJbXBsKiBpbnRvIFN5bWJvbFJlZ2lzdHJ5LCBzeW1ib2xpemVkIFN0cmluZ0ltcGwq
IGlzIGF3YXJlIG9mIHRoYXQuCisgICAgICAgIEFuZCB3aGVuIGRlc3RydWN0aW5nIGl0LCBpdCBy
ZW1vdmVzIGl0cyByZWZlcmVuY2UgZnJvbSBTeW1ib2xSZWdpc3RyeSBhcyBpZiBhdG9taWMgU3Ry
aW5nSW1wbCBkbyBzbyB3aXRoIEF0b21pY1N0cmluZ1RhYmxlLgorICAgICAgICBXaGlsZSBBdG9t
aWNTdHJpbmdUYWJsZSAoaW4gV2ViQ29yZSBjYXNlKSBleGlzdHMgaW4gdGhyZWFkIGxvY2FsIHN0
b3JhZ2UsCisgICAgICAgIFN5bWJvbFJlZ2lzdHJ5IGV4aXN0cyBwZXIgVk0gYW5kIFN0cmluZ0lt
cGwqIGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgcmVnaXN0ZXJlZCBTeW1ib2xSZWdpc3RyeS4KKwor
ICAgICAgICBTaW5jZSBTdHJpbmdJbXBsIGhhcyBpc1N5bWJvbCBldGMuIG1lbWJlcnMsIGl0J3Mg
Y2xhc3MgaXMgYXdhcmUgb2YgU3ltYm9sIHVzZSBjYXNlcy4KKyAgICAgICAgU28gaW50cm9kdWNl
IFN5bWJvbFJlZ2lzdHJ5IGluIFdURiBsYXllcnMgYXMgaWYgQXRvbWljU3RyaW5nVGFibGUuCisK
KyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvajoKKyAgICAgICAgKiBXVEYudmN4cHJv
ai9XVEYudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvdGV4
dC9BdG9taWNTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZFNsb3dD
YXNlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpmaW5kU2xvd0Nhc2UpOgorICAgICAg
ICAoV1RGOjpBdG9taWNTdHJpbmc6OmZpbmRJbnRlcm5hbCk6CisgICAgICAgIChXVEY6OkF0b21p
Y1N0cmluZzo6ZmluZCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6ZmluZCk6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6On5TdHJpbmdJbXBs
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sKToKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0
cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6U3RyaW5nSW1wbCk6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCk6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OnN5bWJvbFJlZ2lzdHJ5KToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0
L1N5bWJvbFJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5
TG9ja2VyOjpTeW1ib2xSZWdpc3RyeUxvY2tlcik6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lz
dHJ5Ojp+U3ltYm9sUmVnaXN0cnkpOgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3RyeTo6c3lt
Ym9sRm9yS2V5KToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6OmtleUZvclN5bWJvbCk6
CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5OjpyZW1vdmUpOgorICAgICAgICAqIHd0Zi90
ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpTeW1ib2xSZWdpc3Ry
eUtleTo6aGFzaCk6CisgICAgICAgIChXVEY6OlN5bWJvbFJlZ2lzdHJ5S2V5OjppbXBsKToKKyAg
ICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnlLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToK
KyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnlLZXk6Omhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6
CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFN5bWJvbFJlZ2lzdHJ5S2V5Pjo6SGFzaDo6aGFz
aCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFN5bWJvbFJlZ2lzdHJ5S2V5Pjo6SGFzaDo6
ZXF1YWwpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFN5bWJvbFJlZ2lzdHJ5S2V5Pjo6aXNF
bXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnk6OnNwaW5Mb2NrKToKKyAg
ICAgICAgKFdURjo6U3ltYm9sUmVnaXN0cnlLZXk6OlN5bWJvbFJlZ2lzdHJ5S2V5KToKKwogMjAx
NS0wNC0wOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsbG93IExh
dW5jaFNlcnZpY2VzIHRvIGhhbmRsZSBVUkxzIG9uIGxpbmsgbmF2aWdhdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3OTE5NjI4NDc2MmIzMDAzNDQxN2ZhNGYxNGYx
ZmIyODM4MWM0NWU5Li4xMjQ1NjFlY2E1M2EzMzg4Yjc2MTQ1MzFlODI4OWFkMGNiYWViYzBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjUsOSArNTY1LDkgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3RydWN0dXJlSURU
YWJsZS5jcHAKICAgICBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAogICAgIHJ1bnRpbWUv
U3ltYm9sLmNwcAorICAgIHJ1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGlt
ZS9TeW1ib2xPYmplY3QuY3BwCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCi0gICAg
cnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNw
cAogICAgIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcAogICAgIHJ1bnRpbWUvVHlwZUxvY2F0
aW9uQ2FjaGUuY3BwCkBAIC02MTEsNiArNjExLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9G
SUxFUwogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAK
KyAgICBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sUHJv
dG90eXBlLmNwcAogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDY5OWFjN2VjMGVkNjA5M2UwYTgwZmM2Zjk3YzY1MjU0ODE2OWY4ZjkuLjE4NWRjN2Uz
MWQwN2NkOGQ3NDM5NjgwZjE3MjllNzYxZGYzMjJkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01OCw2ICs1OCw3IEBAIGFsbCA6IFwKICAgICBSZWdF
eHBPYmplY3QubHV0LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5sdXQuaCBcCisgICAgU3ltYm9sQ29uc3RydWN0b3IubHV0Lmgg
XAogICAgIFN5bWJvbFByb3RvdHlwZS5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCiAgICAg
Qnl0ZWNvZGVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuY3BwCmluZGV4IGFhOTRmYTMxZjFhMDk1YmUzODg0YzQxNzgwMjQ0Yjcx
ODhiMzAyODkuLjIzODI2NTRkNGMxMmM5ODgyYmRhZTc2NjU2MTAzNDQ2YWI2N2VhY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5j
cHAKQEAgLTMwLDcgKzMwLDE4IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTeW1ib2wu
aCIKICNpbmNsdWRlICJTeW1ib2xQcm90b3R5cGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TeW1i
b2xSZWdpc3RyeS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29uc3RydWN0b3JGb3IoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihFeGVj
U3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiU3ltYm9sQ29uc3RydWN0b3IubHV0LmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC0zOCw2ICs0OSwxMyBAQAogCiBjb25zdCBDbGFzc0luZm8gU3lt
Ym9sQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShTeW1ib2xDb25zdHJ1Y3RvcikgfTsKIAorLyogU291cmNlIGZv
ciBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHN5bWJvbENvbnN0cnVjdG9yVGFibGUK
KyAgZm9yICAgICAgIHN5bWJvbENvbnN0cnVjdG9yRm9yICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAga2V5Rm9yICAgIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKK0BlbmQKKyovCisKIFN5bWJvbENvbnN0cnVjdG9yOjpTeW1ib2xDb25zdHJ1Y3RvcihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwg
c3RydWN0dXJlKQogewpAQCAtNTUsNiArNzMsMTMgQEAgdm9pZCBTeW1ib2xDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTeW1ib2xQcm90b3R5cGUqIHByb3RvdHlwZSkKICAgICBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklU
SUFMSVpFX1dFTExfS05PV05fU1lNQk9MUykKIH0KIAorYm9vbCBTeW1ib2xDb25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQoreworICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgc3ltYm9sQ29uc3RydWN0b3JUYWJs
ZSwganNDYXN0PFN5bWJvbENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSBkZXNjcmlw
dGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtNzQsNCArOTksMzIgQEAgQ2FsbFR5cGUgU3lt
Ym9sQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkK
ICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN5bWJvbENvbnN0cnVjdG9yRm9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1N0cmlu
Zyogc3RyaW5nS2V5ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIFN0cmluZyBzdHJpbmcgPSBzdHJpbmdLZXktPnZhbHVlKGV4ZWMp
OworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIFJlZjxTdHJpbmdJbXBsPiB1aWQgPSBleGVj
LT52bSgpLnN5bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KHN0cmluZyk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBzdGF0aWNfY2FzdDxB
dG9taWNTdHJpbmdJbXBsKj4oJnVpZC5nZXQoKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgSlNWYWx1ZSBzeW1ib2xWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGlmICghc3lt
Ym9sVmFsdWUuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihleGVjKSk7CisKKyAgICBBdG9taWNTdHJpbmdJbXBsKiB1aWQgPSBhc1N5bWJv
bChzeW1ib2xWYWx1ZSktPnByaXZhdGVOYW1lKCkudWlkKCk7CisgICAgQVNTRVJUKHVpZC0+aXNT
eW1ib2woKSk7CisgICAgaWYgKCF1aWQtPnN5bWJvbFJlZ2lzdHJ5KCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBBU1NFUlQodWlkLT5zeW1i
b2xSZWdpc3RyeSgpID09ICZleGVjLT52bSgpLnN5bWJvbFJlZ2lzdHJ5KCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgZXhlYy0+dm0oKS5zeW1ib2xSZWdpc3Ry
eSgpLmtleUZvclN5bWJvbCh1aWQpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgKaW5kZXgg
MGFlMTJkN2ZkZDVjNDI0YmI2OWEyNmQxZGMxM2FlMDgwODRhNjgzOS4uZTU2MzcxMzMwMThmMmQ1
YTI3NzE3YzViYjk0YjdhMjYzOTRjOTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5oCkBAIC01NSwxMCArNTUsMTMgQEAgY2xhc3Mg
U3ltYm9sQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN5bWJvbFByb3RvdHlwZSopOwogCisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKIHByaXZhdGU6CiAgICAgU3ltYm9s
Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggNjFlNDU4MmNmMjYxYjYzNmQxZWJlMzJmMDQ0YTJiMjg3M2Ux
ZDFlNy4uYjI1ODZlYjMyNzcwMzVhODg2MjFjZDhjZmVmM2RkZGNlOWYzODZjYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODcsMTMgKzg3LDE0IEBACiAjaW5jbHVkZSAi
VW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiV2Vha01hcERhdGEuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZ1RhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KIAogI2lmIEVOQUJMRShERkdfSklUKQogI2luY2x1
ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRl
eCBhNDZhMzc2MGQ0ZmVhMTlkYTk0ODUyNzg1NmU2YTYzZjZmYzA4ZWFjLi43ZTU5MGVlNTdkZDFh
YjJkMjIyOGI0YjNjYTg5ZDIzMjY0NmYyZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvV1RGVGhy
ZWFkRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMjc4LDYgKzI3OSw3IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPEpTQ2VsbD4gZW1w
dHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwogCiAgICAgQXRvbWljU3RyaW5nVGFibGUqIG1fYXRv
bWljU3RyaW5nVGFibGU7CisgICAgV1RGOjpTeW1ib2xSZWdpc3RyeSBtX3N5bWJvbFJlZ2lzdHJ5
OwogICAgIENvbW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwogICAgIGNvbnN0IE1hcmtl
ZEFyZ3VtZW50QnVmZmVyKiBlbXB0eUxpc3Q7IC8vIExpc3RzIGFyZSBzdXBwb3NlZCB0byBiZSBh
bGxvY2F0ZWQgb24gdGhlIHN0YWNrIHRvIGhhdmUgdGhlaXIgZWxlbWVudHMgcHJvcGVybHkgbWFy
a2VkLCB3aGljaCBpcyBub3QgdGhlIGNhc2UgaGVyZSAtIGJ1dCB0aGlzIGxpc3QgaGFzIG5vdGhp
bmcgdG8gbWFyay4KICAgICBTbWFsbFN0cmluZ3Mgc21hbGxTdHJpbmdzOwpAQCAtMjg4LDYgKzI5
MCw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAg
U3Ryb25nPEpTU3RyaW5nPiBsYXN0Q2FjaGVkU3RyaW5nOwogCiAgICAgQXRvbWljU3RyaW5nVGFi
bGUqIGF0b21pY1N0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hdG9taWNTdHJpbmdUYWJs
ZTsgfQorICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4g
bV9zeW1ib2xSZWdpc3RyeTsgfQogCiAgICAgdm9pZCBzZXRJbkRlZmluZU93blByb3BlcnR5KGJv
b2wgaW5EZWZpbmVPd25Qcm9wZXJ0eSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1yZWdpc3RyeS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLXJlZ2lzdHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMWEw
NWEzMDE2MzA4MTgzYjhiZTIzNTg5YjMwOWNiNmFlZGQ4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1yZWdpc3RyeS5qcwpAQCAt
MCwwICsxLDEyNSBAQAorZnVuY3Rpb24gdGVzdChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVl
OiAiICsgYWN0dWFsKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaGVsbG8gPSBTeW1i
b2woIkhlbGxvIik7CisgICAgdmFyIHByb3RvID0gU3ltYm9sKCJfX3Byb3RvX18iKTsKKworICAg
IGZvciAodmFyIHN5bSBvZiBbIGhlbGxvLCBwcm90bywgU3ltYm9sLml0ZXJhdG9yIF0pIHsKKyAg
ICAgICAgdmFyIGtleSA9IFN5bWJvbC5rZXlGb3Ioc3ltKTsKKyAgICAgICAgdGVzdChrZXksIHVu
ZGVmaW5lZCk7CisgICAgICAgIC8vIHR3aWNlCisgICAgICAgIHZhciBrZXkgPSBTeW1ib2wua2V5
Rm9yKHN5bSk7CisgICAgICAgIHRlc3Qoa2V5LCB1bmRlZmluZWQpOworICAgIH0KK30oKSk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIGtleXMgPSBbCisgICAgICAgICJIZWxsbyIsCisgICAg
ICAgICJfX3Byb3RvX18iLAorICAgICAgICAiU3ltYm9sLml0ZXJhdG9yIiwKKyAgICAgICAgJycs
CisgICAgICAgIG51bGwsCisgICAgICAgIHVuZGVmaW5lZCwKKyAgICAgICAgNDIsCisgICAgICAg
IDIwLjUsCisgICAgICAgIC00MiwKKyAgICAgICAgLTIwLjUsCisgICAgICAgIHRydWUsCisgICAg
ICAgIGZhbHNlLAorICAgICAgICB7fSwKKyAgICAgICAgZnVuY3Rpb24gKCkge30sCisgICAgICAg
IFtdLAorICAgIF07CisgICAgZm9yICh2YXIga2V5IG9mIGtleXMpIHsKKyAgICAgICAgdmFyIHN5
bSA9IFN5bWJvbC5mb3Ioa2V5KTsKKyAgICAgICAgdGVzdCh0eXBlb2Ygc3ltLCAic3ltYm9sIik7
CisgICAgICAgIHRlc3Qoc3ltLnRvU3RyaW5nKCksICJTeW1ib2woIiArIFN0cmluZyhrZXkpICsg
IikiKTsKKworICAgICAgICB2YXIgc3ltMiA9IFN5bWJvbC5mb3Ioa2V5KTsKKyAgICAgICAgdGVz
dChzeW0gPT09IHN5bTIsIHRydWUpOworCisgICAgICAgIHZhciBrZXkgPSBTeW1ib2wua2V5Rm9y
KHN5bSk7CisgICAgICAgIHRlc3Qoa2V5LCBrZXkpOworICAgICAgICB2YXIga2V5ID0gU3ltYm9s
LmtleUZvcihzeW0yKTsKKyAgICAgICAgdGVzdChrZXksIGtleSk7CisgICAgfQorfSgpKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAg
IHZhciBrZXkgPSB7CisgICAgICAgICAgICB0b1N0cmluZygpIHsKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ3RvU3RyaW5nJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH07Cisg
ICAgICAgIFN5bWJvbC5mb3Ioa2V5KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09ICdFcnJvcjogdG9TdHJpbmcn
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBlcnJvcjogJyArIFN0cmluZyhlcnJvcikp
OworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgZWxlbWVudHMgPSBbCisgICAgICAg
IG51bGwsCisgICAgICAgIHVuZGVmaW5lZCwKKyAgICAgICAgNDIsCisgICAgICAgIDIwLjUsCisg
ICAgICAgIHRydWUsCisgICAgICAgIGZhbHNlLAorICAgICAgICAnc3RyaW5nJywKKyAgICAgICAg
e30sCisgICAgICAgIGZ1bmN0aW9uICgpIHt9LAorICAgICAgICBbXSwKKyAgICBdOworICAgIGZv
ciAodmFyIGl0ZW0gb2YgZWxlbWVudHMpIHsKKyAgICAgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN5bWJvbC5rZXlGb3IoaXRlbSk7CisgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoIWVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7Cisg
ICAgICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSAnVHlwZUVycm9yOiBUeXBlIGVycm9yJykKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIGVycm9yOiAnICsgU3RyaW5nKGVycm9yKSk7
CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyArK2kpCisgICAgICAgIFN5bWJvbC5mb3IoaSk7CisgICAgZ2MoKTsKK30oKSk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAg
ICAgICB2YXIgc3ltYm9sID0gU3ltYm9sLmZvcihpKTsKKyAgICAgICAgdGVzdChTdHJpbmcoc3lt
Ym9sKSwgIlN5bWJvbCgiICsgaSArICIpIik7CisgICAgICAgIHRlc3Qoc3ltYm9sLCBTeW1ib2wu
Zm9yKGkpKTsKKyAgICAgICAgZ2MoKTsKKyAgICB9CisgICAgZ2MoKTsKK30oKSk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgdmFyIHN5bWJvbHMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgIHZhciBzeW1ib2wgPSBTeW1ib2wuZm9yKGkpOworICAgICAg
ICBzeW1ib2xzLnB1c2goc3ltYm9sKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDsgKytpKQorICAgICAgICB0ZXN0KFN5bWJvbC5mb3IoaSksIHN5bWJvbHNbaV0pOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAgdGVzdChTeW1ib2wua2V5
Rm9yKFN5bWJvbChpKSksIHVuZGVmaW5lZCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYudmN4cHJvai9XVEYudmN4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZj
eHByb2oKaW5kZXggNWQxZGI3ZGEwOWY3ZDhjZTdiY2U1YTVmZTg5NGVhYThjNGVlZmRkNy4uYzc4
YTgxMTUyZjQ3M2EzMzMxNjYwNjBmYjhjNzI2OWJhMGVlZDRiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9q
L1dURi52Y3hwcm9qCkBAIC0xMzQsNiArMTM0LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHd0Zlx0ZXh0XFN0cmluZ0ltcGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cd3RmXHRleHRcU3RyaW5nU3RhdGljcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlx3dGZcdGV4dFxTdHJpbmdWaWV3LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHd0Zlx0ZXh0XFN5bWJvbFJlZ2lzdHJ5LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHd0Zlx0ZXh0XFdURlN0cmluZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlx3dGZcdGV4dFxjZlxBdG9taWNTdHJpbmdDRi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlx3dGZcdGV4dFxjZlxTdHJpbmdDRi5jcHAiIC8+CkBAIC0yOTUsNiArMjk2LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ0ltcGwuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ09wZXJhdG9ycy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3RyaW5nVmlldy5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXHRleHRcU3ltYm9sUmVnaXN0cnkuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFdURlN0cmluZy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFRocmVhZGluZy5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd3RmXFRocmVhZGluZ1ByaW1pdGl2ZXMuaCIgLz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XVEYv
V1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwppbmRleCA1NjE5NzI2MGU3NDdjMjIwNzU1
ODY1NzM1ZjcxZDEyY2U3MzYzOTIxLi5lZjAzYjU3MGZmMzA1Nzc4YWY4MjYwZTQzZmM2NzkwMDhj
YzcyYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZp
bHRlcnMKKysrIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCkBA
IC03OCw2ICs3OCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcdGV4dFxTdHJp
bmdJbXBsLmNwcCI+CiAgICAgICA8RmlsdGVyPnRleHQ8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN5bWJvbFJlZ2lzdHJ5LmNw
cCI+CisgICAgICA8RmlsdGVyPnRleHQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFdURlN0cmluZy5jcHAiPgogICAgICAgPEZp
bHRlcj50ZXh0PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0zNDIsNiArMzQ1LDkgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx0ZXh0XFN0cmluZ1ZpZXcuaCI+CiAgICAg
ICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cd3RmXHRleHRcU3ltYm9sUmVnaXN0cnkuaCI+CisgICAgICA8RmlsdGVyPnRl
eHQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHd0Zlx0ZXh0XFdURlN0cmluZy5oIj4KICAgICAgIDxGaWx0ZXI+dGV4dDwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYzcxNjI0ZDg3OWJmNDhhMDkyODQwNjcxNTMzMWZkNDQwMjM2YWU1Yy4uNzhlNWVmOWFkYThk
M2U5OWJjMDE2OWM3MGEwNzMzNmRhNmU1NmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC03NCw2ICs3NCw4IEBACiAJCTJDREVEMEYzMTgxMTVDODUwMDRE
QkE3MCAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJDREVEMEYxMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCAqLzsgfTsK
IAkJMkNERUQwRjQxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJDREVEMEYyMTgxMTVDODUwMDREQkE3MCAv
KiBSdW5Mb29wLmggKi87IH07CiAJCTQzMEI0Nzg5MUFBQUFDMUEwMDEyMjNEQSAvKiBTdHJpbmdD
b21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
MEI0Nzg3MUFBQUFDMUEwMDEyMjNEQSAvKiBTdHJpbmdDb21tb24uaCAqLzsgfTsKKwkJNzBBOTkz
RkUxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQTk5M0ZDMUFENzE1MTMwMEZBNjE1QiAv
KiBTeW1ib2xSZWdpc3RyeS5jcHAgKi87IH07CisJCTcwQTk5M0ZGMUFENzE1MTMwMEZBNjE1QiAv
KiBTeW1ib2xSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBBOTkzRkQxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggKi87
IH07CiAJCTdDQkJBMDc0MTlCQjdGREMwMEJCRjAyNSAvKiBPU09iamVjdFB0ci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCQkEwNzMxOUJCN0ZEQzAw
QkJGMDI1IC8qIE9TT2JqZWN0UHRyLmggKi87IH07CiAJCTdDREQ3RkY4MTg2RDI5MUUwMDc0MzND
RCAvKiBJdGVyYXRvckFkYXB0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0REN0ZGNzE4NkQyOTFFMDA3NDMzQ0QgLyogSXRlcmF0b3JBZGFwdG9y
cy5oICovOyB9OwogCQk3Q0REN0ZGQTE4NkQyQTU0MDA3NDMzQ0QgLyogSXRlcmF0b3JSYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NERDdGRjkx
ODZEMkE1NDAwNzQzM0NEIC8qIEl0ZXJhdG9yUmFuZ2UuaCAqLzsgfTsKQEAgLTM2Miw2ICszNjQs
OCBAQAogCQk1RDI0N0I3MDE0Njg5QzQ3MDBFNzhCNzYgLyogRGVidWdSZWxlYXNlLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54
Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQyNDdCNzMxNDY4OUM0NzAwRTc4Qjc2IC8qIFdURi54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBXVEYueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
NDFDQUY0MTYzMERCMjYwMDZEMERFQyAvKiBDb3B5V1RGSGVhZGVycy54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBDb3B5V1RGSGVhZGVycy54Y2NvbmZpZzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJv
bFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJv
bFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBBOTkzRkQxQUQ3
MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN5bWJvbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDQkJBMDczMTlCQjdGREMwMEJCRjAyNSAvKiBPU09iamVjdFB0ci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBPU09iamVjdFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Q0REN0ZGNzE4NkQyOTFFMDA3NDMzQ0QgLyogSXRlcmF0b3JBZGFwdG9ycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJdGVyYXRvckFkYXB0b3JzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDREQ3RkY5MTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVy
YXRvclJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdG9yUmFu
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1NCw2ICs5NTgsOCBAQAogCQkJ
CTkzRjE5OTNEMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCAqLywKIAkJCQlBOEE0
NzMyQTE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nT3BlcmF0b3JzLmggKi8sCiAJCQkJQThBNDcz
MkIxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ1N0YXRpY3MuY3BwICovLAorCQkJCTcwQTk5M0ZD
MUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgKi8sCisJCQkJNzBBOTkzRkQx
QUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggKi8sCiAJCQkJQThBNDczMkMxNTFB
ODI1QjAwNDEyM0ZGIC8qIFRleHRQb3NpdGlvbi5oICovLAogCQkJCUE4QTQ3MzJEMTUxQTgyNUIw
MDQxMjNGRiAvKiBXVEZTdHJpbmcuY3BwICovLAogCQkJCUE4QTQ3MzJFMTUxQTgyNUIwMDQxMjNG
RiAvKiBXVEZTdHJpbmcuaCAqLywKQEAgLTExMjcsNiArMTEzMyw3IEBACiAJCQkJQThBNDczRUUx
NTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3JIYW5kbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFNDY1MTZFMTlEQjFGQjQwMDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjBEODVCNDE3MjM0Q0MxMDAzMzgyMTAgLyogTm9Mb2NrLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MEE5OTNGRjFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VGMTUxQTgyNUIwMDQxMjNGRiAvKiBOb25jb3B5YWJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRjUxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJl
ck9mQ29yZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFMjlDMzNFMTVGRkQ3OUIwMDUxNkQ2MSAv
KiBPYmpjUnVudGltZUV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzc4LDYgKzEzODUsNyBA
QAogCQkJCUE1QkExNUZDMTgyNDM1QTYwMEE4MkU2OSAvKiBTdHJpbmdJbXBsQ0YuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTVCQTE1RjUxODI0MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVGMzE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNzBBOTkzRkUxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRERCRkE3MTY2NkRGQTMwMEM1
NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0
MzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nU3RhdGljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBkYzE5MDU1NDZjNWVmMDVlMWUxMWExZDdjNWM4
M2FjMzY0MDk5ZjBlLi45ZDkzYWQ1OTdkNDQyMDJhOTg4ZDFlZjIxNzJjZWI3YWIwNDI5MGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTMyLDYgKzEzMiw3IEBAIHNldChXVEZfSEVBREVSUwog
ICAgIHRleHQvU3RyaW5nSGFzaC5oCiAgICAgdGV4dC9TdHJpbmdJbXBsLmgKICAgICB0ZXh0L1N0
cmluZ1ZpZXcuaAorICAgIHRleHQvU3ltYm9sUmVnaXN0cnkuaAogICAgIHRleHQvV1RGU3RyaW5n
LmgKIAogICAgIHRocmVhZHMvQmluYXJ5U2VtYXBob3JlLmgKQEAgLTE5OSw2ICsyMDAsNyBAQCBz
ZXQoV1RGX1NPVVJDRVMKICAgICB0ZXh0L1N0cmluZ0ltcGwuY3BwCiAgICAgdGV4dC9TdHJpbmdT
dGF0aWNzLmNwcAogICAgIHRleHQvU3RyaW5nVmlldy5jcHAKKyAgICB0ZXh0L1N5bWJvbFJlZ2lz
dHJ5LmNwcAogICAgIHRleHQvV1RGU3RyaW5nLmNwcAogCiAgICAgdGhyZWFkcy9CaW5hcnlTZW1h
cGhvcmUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggZmE3ZTQzNDdh
MTIzYmY2YjE3NWIwNmEzOGM1ZTljYTIyYjhlZDQ1MC4uNWFiNGUxZWI3ZGJlZGE2ZWEzNzM1ZDU0
ZDJjNTA2Nzg1MjczMjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAt
NDAzLDggKzQwMywxMSBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0
b3IgewogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0lt
cGw6OmVtcHR5KCk7CiAKLSAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVy
biBhZGQoc3RyaW5nLmV4dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpKTsKKyAgICBpZiAoc3Ry
aW5nLmlzU3ltYm9sKCkpIHsKKyAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiAqYWRkKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwor
ICAgICAgICByZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgo
KSk7CisgICAgfQogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCks
ICJBdG9taWNTdHJpbmcgc2hvdWxkIG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5n
IGlzIGFscmVhZHkgYXRvbWljLiIpOwogCkBAIC00MjQsOCArNDI3LDExIEBAIHN0cnVjdCBDaGFy
QnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvciB7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiAqU3RyaW5nSW1wbDo6ZW1wdHkoKTsKIAotICAgIGlmIChzdHJp
bmcuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIGFkZChzdHJpbmdUYWJsZSwgc3RyaW5nLmV4
dHJhY3RGb2xkZWRTdHJpbmdJblN5bWJvbCgpKTsKKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkp
IHsKKyAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiAqYWRk
KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4g
KmFkZChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgfQogCiAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJpbmcg
c2hvdWxkIG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkgYXRv
bWljLiIpOwogCkBAIC01MTIsOCArNTE4LDExIEBAIEF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0
cmluZzo6ZmluZFNsb3dDYXNlKFN0cmluZ0ltcGwmIHN0cmluZykKICAgICBpZiAoIXN0cmluZy5s
ZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPihT
dHJpbmdJbXBsOjplbXB0eSgpKTsKIAotICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSkKLSAgICAg
ICAgcmV0dXJuIGZpbmQoJnN0cmluZy5leHRyYWN0Rm9sZGVkU3RyaW5nSW5TeW1ib2woKSk7Cisg
ICAgaWYgKHN0cmluZy5pc1N5bWJvbCgpKSB7CisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkp
CisgICAgICAgICAgICByZXR1cm4gZmluZEludGVybmFsKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBz
dHJpbmcubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gZmluZEludGVybmFsKHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICB9CiAKICAgICBBdG9taWNTdHJpbmdU
YWJsZUxvY2tlciBsb2NrZXI7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0cmlu
Z1RhYmxlID0gc3RyaW5nVGFibGUoKTsKQEAgLTU1Myw3ICs1NjIsNyBAQCBBdG9taWNTdHJpbmcg
QXRvbWljU3RyaW5nOjpudW1iZXIoZG91YmxlIG51bWJlcikKICAgICByZXR1cm4gU3RyaW5nKG51
bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcobnVtYmVyLCA2LCBidWZmZXIsIHRydWUpKTsKIH0K
IAotQXRvbWljU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjpmaW5kKExDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpCitBdG9taWNTdHJpbmdJbXBsKiBBdG9taWNTdHJpbmc6OmZpbmRJ
bnRlcm5hbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKICAgICBhdXRvJiB0YWJsZSA9IHN0cmlu
Z1RhYmxlKCk7CkBAIC01NjUsNyArNTc0LDcgQEAgQXRvbWljU3RyaW5nSW1wbCogQXRvbWljU3Ry
aW5nOjpmaW5kKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLUF0b21pY1N0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6ZmluZChVQ2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorQXRvbWljU3RyaW5nSW1wbCogQXRvbWlj
U3RyaW5nOjpmaW5kSW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCkKIHsKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CiAgICAgYXV0byYg
dGFibGUgPSBzdHJpbmdUYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXgg
M2EyZmNmNWYzNTgyY2MwNzQwZTA0NWEwYjM5MmZhMDZjZWZiOTkyZC4uY2JmZGM4OTQ3MzA4ZTcy
MDgyN2E3OWI1MTg2NTY4ZWNjNTUzODE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5o
CkBAIC04Niw4ICs4NiwxNCBAQCBjbGFzcyBBdG9taWNTdHJpbmcgewogICAgIEF0b21pY1N0cmlu
ZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWUpIHsgfQogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKLSAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoTENo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
QXRvbWljU3RyaW5nSW1wbCogZmluZChVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBmaW5kSW50ZXJuYWwoY2hhcmFjdGVycywgbGVu
Z3RoKTsKKyAgICB9CisgICAgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoVUNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBmaW5kSW50
ZXJuYWwoY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICB9CiAgICAgc3RhdGljIEF0b21pY1N0cmlu
Z0ltcGwqIGZpbmQoU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIHsKICAgICAgICAgaWYgKCFzdHJp
bmcgfHwgc3RyaW5nLT5pc0F0b21pYygpKQpAQCAtMjQ5LDYgKzI1NSw5IEBAIGNsYXNzIEF0b21p
Y1N0cmluZyB7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIEF0b21pY1N0cmlu
Z0ltcGwqIGZpbmRTbG93Q2FzZShTdHJpbmdJbXBsJik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25zdCBjaGFyKiwgY29u
c3QgY2hhciopOworCisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNTdHJp
bmdJbXBsKiBmaW5kSW50ZXJuYWwoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZEludGVy
bmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKIH07CiAKIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsg
cmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cAppbmRleCA5ZmFiZjJiYWIyZWE2YzFiZGY3MjgwYmM2NjY1N2VkMDZmOTk5ZjQ5Li44M2IxNTIz
OWUxMmVkYjUxMGM5ZjQwZWU2YzgyZWYwZWRkNjczYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VU
RjguaD4KIApAQCAtMTEyLDYgKzExMyw5IEBAIHZvaWQgU3RyaW5nU3RhdHM6OnByaW50U3RhdHMo
KQogICAgIGlmIChpc0F0b21pYygpICYmIGxlbmd0aCgpICYmICFpc1N5bWJvbCgpKQogICAgICAg
ICBBdG9taWNTdHJpbmc6OnJlbW92ZSh0aGlzKTsKIAorICAgIGlmIChpc1N5bWJvbCgpICYmIHN5
bWJvbFJlZ2lzdHJ5KCkpCisgICAgICAgIHN5bWJvbFJlZ2lzdHJ5KCktPnJlbW92ZSh0aGlzKTsK
KwogICAgIEJ1ZmZlck93bmVyc2hpcCBvd25lcnNoaXAgPSBidWZmZXJPd25lcnNoaXAoKTsKIAog
ICAgIGlmIChvd25lcnNoaXAgPT0gQnVmZmVySW50ZXJuYWwpCkBAIC0yODgsMTMgKzI5MiwyMSBA
QCB2b2lkIFN0cmluZ0ltcGw6OmRlc3Ryb3koU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKIAogUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN5bWJvbChQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHJlcCkKIHsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSByZXAtPmxlbmd0aCgpOwotICAgIGlm
ICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gY3JlYXRlU3ltYm9sRW1wdHkoKTsKLSAgICBSZWY8
U3RyaW5nSW1wbD4gc3RyaW5nID0gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwocmVwLCAwLCBs
ZW5ndGgpOwotICAgIEFTU0VSVCghc3RyaW5nLT5pc0F0b21pYygpKTsKLSAgICBzdHJpbmctPm1f
aGFzaEFuZEZsYWdzID0gaGFzaEFuZEZsYWdzRm9yU3ltYm9sKHN0cmluZy0+bV9oYXNoQW5kRmxh
Z3MpOwotICAgIHJldHVybiBzdHJpbmc7CisgICAgU3RyaW5nSW1wbCogb3duZXJSZXAgPSAocmVw
LT5idWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpID8gcmVwLT5zdWJzdHJpbmdC
dWZmZXIoKSA6IHJlcC5nZXQoKTsKKworICAgIC8vIFdlIGFsbG9jYXRlIGEgYnVmZmVyIHRoYXQg
Y29udGFpbnMKKyAgICAvLyAxLiB0aGUgU3RyaW5nSW1wbCBzdHJ1Y3QKKyAgICAvLyAyLiB0aGUg
cG9pbnRlciB0byB0aGUgb3duZXIgc3RyaW5nCisgICAgLy8gMy4gdGhlIHBvaW50ZXIgdG8gdGhl
IHN5bWJvbCByZWdpc3RyeQorICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBzdGF0aWNfY2Fz
dDxTdHJpbmdJbXBsKj4oZmFzdE1hbGxvYyhhbGxvY2F0aW9uU2l6ZTxTdHJpbmdJbXBsKj4oMikp
KTsKKyAgICBpZiAocmVwLT5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
KE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sLCByZXAtPm1fZGF0
YTgsIHJlcC0+bGVuZ3RoKCksIG93bmVyUmVwKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
KE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sLCByZXAtPm1fZGF0
YTE2LCByZXAtPmxlbmd0aCgpLCBvd25lclJlcCkpOworfQorCitSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlU3ltYm9sRW1wdHkoKQoreworICAgIHJldHVybiBjcmVhdGVTeW1ib2wo
ZW1wdHkoKSk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGUxNGQ0NTA5MDVhNjE2NjJmN2I1NzI4MWYy
MmIwMDU3NDc3NzJlMDIuLjkzOTkwMjhlZDM3MDJmZGEwMTE4Yzc2NjFjZjhhZGYwMGYzZDExY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC01Nyw2ICs1Nyw3IEBACiBzdHJ1Y3QgU3Vi
c3RyaW5nVHJhbnNsYXRvcjsKIHN0cnVjdCBVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiB0ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgUmV0YWluUHRyOworY2xhc3MgU3ltYm9sUmVnaXN0cnk7CiAKIGVu
dW0gVGV4dENhc2VTZW5zaXRpdml0eSB7CiAgICAgVGV4dENhc2VTZW5zaXRpdmUsCkBAIC0yOTIs
MTggKzI5MywzOSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICAgICAgU1RSSU5HX1NUQVRTX0FE
RF8xNkJJVF9TVFJJTkcyKG1fbGVuZ3RoLCB0cnVlKTsKICAgICB9CiAKLSAgICBlbnVtIENyZWF0
ZVN5bWJvbEVtcHR5VGFnIHsgQ3JlYXRlU3ltYm9sRW1wdHkgfTsKLSAgICBTdHJpbmdJbXBsKENy
ZWF0ZVN5bWJvbEVtcHR5VGFnKQorICAgIGVudW0gQ3JlYXRlU3ltYm9sVGFnIHsgQ3JlYXRlU3lt
Ym9sIH07CisgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3IHN5bWJvbCBzdHJpbmdzIHRoYXQgaG9s
ZHMgZXhpc3RpbmcgOC1iaXQgW1tEZXNjcmlwdGlvbl1dIHN0cmluZyBhcyBhIHN1YnN0cmluZyBi
dWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCisgICAgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcs
IGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gYmFzZSkKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQp
Ci0gICAgICAgICwgbV9sZW5ndGgoMCkKLSAgICAgICAgLy8gV2UgZXhwZWN0IG1fbGVuZ3RoIHRv
IGJlIGluaXRpYWxpemVkIHRvIDAgYXMgd2UgdXNlIGl0Ci0gICAgICAgIC8vIHRvIHJlcHJlc2Vu
dCBhIG51bGwgdGVybWluYXRlZCBidWZmZXIuCi0gICAgICAgICwgbV9kYXRhOChyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oJm1fbGVuZ3RoKSkKLSAgICAgICAgLCBtX2hhc2hBbmRGbGFn
cyhoYXNoQW5kRmxhZ3NGb3JTeW1ib2woc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRl
cm5hbCkpCisgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgICAgICAsIG1fZGF0YTgoY2hh
cmFjdGVycykKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3NGb3JTeW1ib2wo
c19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdTeW1ib2wgfCBCdWZmZXJTdWJzdHJpbmcpKQog
ICAgIHsKKyAgICAgICAgQVNTRVJUKGlzOEJpdCgpKTsKICAgICAgICAgQVNTRVJUKG1fZGF0YTgp
OworICAgICAgICBBU1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vic3Ry
aW5nKTsKIAotICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzhCSVRfU1RSSU5HKG1fbGVuZ3RoKTsK
KyAgICAgICAgc3Vic3RyaW5nQnVmZmVyKCkgPSBiYXNlLmxlYWtSZWYoKTsKKyAgICAgICAgc3lt
Ym9sUmVnaXN0cnkoKSA9IG51bGxwdHI7CisKKyAgICAgICAgU1RSSU5HX1NUQVRTX0FERF84QklU
X1NUUklORzIobV9sZW5ndGgsIHRydWUpOworICAgIH0KKworICAgIC8vIFVzZWQgdG8gY3JlYXRl
IG5ldyBzeW1ib2wgc3RyaW5ncyB0aGF0IGhvbGRzIGV4aXN0aW5nIDE2LWJpdCBbW0Rlc2NyaXB0
aW9uXV0gc3RyaW5nIGFzIGEgc3Vic3RyaW5nIGJ1ZmZlciAoQnVmZmVyU3Vic3RyaW5nKS4KKyAg
ICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBiYXNlKQorICAgICAgICA6IG1f
cmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKKyAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgp
CisgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFn
cyhoYXNoQW5kRmxhZ3NGb3JTeW1ib2woU3RyaW5nU3ltYm9sIHwgQnVmZmVyU3Vic3RyaW5nKSkK
KyAgICB7CisgICAgICAgIEFTU0VSVCghaXM4Qml0KCkpOworICAgICAgICBBU1NFUlQobV9kYXRh
MTYpOworICAgICAgICBBU1NFUlQoYmFzZS0+YnVmZmVyT3duZXJzaGlwKCkgIT0gQnVmZmVyU3Vi
c3RyaW5nKTsKKworICAgICAgICBzdWJzdHJpbmdCdWZmZXIoKSA9IGJhc2UubGVha1JlZigpOwor
ICAgICAgICBzeW1ib2xSZWdpc3RyeSgpID0gbnVsbHB0cjsKKworICAgICAgICBTVFJJTkdfU1RB
VFNfQUREXzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwogICAgIH0KIAogICAgIH5TdHJp
bmdJbXBsKCk7CkBAIC0zOTcsMTEgKzQxOSw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAg
ICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8VD4ocmVzdWx0SW1wbCwgbGVuZ3RoKTsKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3ltYm9s
RW1wdHkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChD
cmVhdGVTeW1ib2xFbXB0eSkpOwotICAgIH0KLQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN5bWJvbEVtcHR5KCk7CiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3ltYm9sKFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gcmVwKTsKIAogICAgIC8vIFJlYWxsb2NhdGUgdGhlIFN0cmluZ0ltcGwu
IFRoZSBvcmlnaW5hbFN0cmluZyBtdXN0IGJlIG9ubHkgb3duZWQgYnkgdGhlIFBhc3NSZWZQdHIs
CkBAIC03NDEsMTQgKzc1OSwyNSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKIAogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgY29uc3QgVUNoYXIgbGF0aW4xQ2FzZUZvbGRUYWJsZVsyNTZd
OwogCi0gICAgU3RyaW5nSW1wbCYgZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKCkKKyAgICBS
ZWY8U3RyaW5nSW1wbD4gZXh0cmFjdEZvbGRlZFN0cmluZ0luU3ltYm9sKCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChsZW5ndGgoKSk7CiAgICAgICAgIEFTU0VSVChpc1N5bWJvbCgpKTsKICAgICAg
ICAgQVNTRVJUKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZyk7CiAgICAgICAg
IEFTU0VSVChzdWJzdHJpbmdCdWZmZXIoKSk7CiAgICAgICAgIEFTU0VSVCghc3Vic3RyaW5nQnVm
ZmVyKCktPmlzU3ltYm9sKCkpOwotICAgICAgICByZXR1cm4gKnN1YnN0cmluZ0J1ZmZlcigpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwodGhpcywgMCwgbGVuZ3Ro
KCkpOworICAgIH0KKworICAgIFN5bWJvbFJlZ2lzdHJ5KiBjb25zdCYgc3ltYm9sUmVnaXN0cnko
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU3ltYm9sKCkpOworICAgICAgICByZXR1
cm4gKih0YWlsUG9pbnRlcjxTeW1ib2xSZWdpc3RyeSo+KCkgKyAxKTsKKyAgICB9CisKKyAgICBT
eW1ib2xSZWdpc3RyeSomIHN5bWJvbFJlZ2lzdHJ5KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChp
c1N5bWJvbCgpKTsKKyAgICAgICAgcmV0dXJuICoodGFpbFBvaW50ZXI8U3ltYm9sUmVnaXN0cnkq
PigpICsgMSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TeW1ib2xSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lz
dHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mYzg1ZjE5MzM1NjVkMDkzNWE3NWMyNTQ4NTI2NjU1ZWU0MzFj
MmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3Ry
eS5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU3ltYm9sUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIlRocmVhZGlu
Zy5oIgorCisjaWYgVVNFKFdFQl9USFJFQUQpCisjaW5jbHVkZSAiU3BpbkxvY2suaCIKKyNlbmRp
ZgorCituYW1lc3BhY2UgV1RGIHsKKworI2lmIFVTRShXRUJfVEhSRUFEKQorCitjbGFzcyBTeW1i
b2xSZWdpc3RyeUxvY2tlciA6IHB1YmxpYyBTcGluTG9ja0hvbGRlciB7CitwdWJsaWM6CisgICAg
U3ltYm9sUmVnaXN0cnlMb2NrZXIoU3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lzdHJ5KQorICAg
ICAgICA6IFNwaW5Mb2NrSG9sZGVyKHN5bWJvbFJlZ2lzdHJ5LnNwaW5Mb2NrKCkpCisgICAgewor
ICAgIH0KK307CisKKyNlbHNlCisKK2NsYXNzIFN5bWJvbFJlZ2lzdHJ5TG9ja2VyIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTeW1ib2xSZWdpc3RyeUxvY2tlcik7CitwdWJsaWM6CisgICAg
U3ltYm9sUmVnaXN0cnlMb2NrZXIoU3ltYm9sUmVnaXN0cnkmKSB7IH0KK307CisKKyNlbmRpZiAv
LyBVU0UoV0VCX1RIUkVBRCkKKworU3ltYm9sUmVnaXN0cnk6On5TeW1ib2xSZWdpc3RyeSgpCit7
CisgICAgZm9yIChhdXRvJiBrZXkgOiBtX3RhYmxlKQorICAgICAgICBrZXkuaW1wbCgpLT5zeW1i
b2xSZWdpc3RyeSgpID0gbnVsbHB0cjsKK30KKworUmVmPFN0cmluZ0ltcGw+IFN5bWJvbFJlZ2lz
dHJ5OjpzeW1ib2xGb3JLZXkoY29uc3QgU3RyaW5nJiByZXApCit7CisgICAgU3ltYm9sUmVnaXN0
cnlMb2NrZXIgbG9ja2VyKCp0aGlzKTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90YWJsZS5h
ZGQoU3ltYm9sUmVnaXN0cnlLZXkocmVwLmltcGwoKSkpOworICAgIGlmICghYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCisgICAgICAgIHJldHVybiAqYWRkUmVzdWx0Lml0ZXJhdG9yLT5pbXBsKCk7CisK
KyAgICBSZWY8U3RyaW5nSW1wbD4gc3ltYm9sID0gU3RyaW5nSW1wbDo6Y3JlYXRlU3ltYm9sKHJl
cC5pbXBsKCkpOworICAgIHN5bWJvbC0+c3ltYm9sUmVnaXN0cnkoKSA9IHRoaXM7CisgICAgKmFk
ZFJlc3VsdC5pdGVyYXRvciA9IFN5bWJvbFJlZ2lzdHJ5S2V5KCZzeW1ib2wuZ2V0KCkpOworICAg
IHJldHVybiBzeW1ib2w7Cit9CisKK1N0cmluZyBTeW1ib2xSZWdpc3RyeTo6a2V5Rm9yU3ltYm9s
KFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tlciBsb2NrZXIoKnRo
aXMpOworCisgICAgQVNTRVJUKHVpZC0+aXNTeW1ib2woKSk7CisgICAgQVNTRVJUKHVpZC0+c3lt
Ym9sUmVnaXN0cnkoKSA9PSB0aGlzKTsKKyAgICByZXR1cm4gdWlkLT5leHRyYWN0Rm9sZGVkU3Ry
aW5nSW5TeW1ib2woKTsKK30KKwordm9pZCBTeW1ib2xSZWdpc3RyeTo6cmVtb3ZlKFN0cmluZ0lt
cGwqIHVpZCkKK3sKKyAgICBTeW1ib2xSZWdpc3RyeUxvY2tlciBsb2NrZXIoKnRoaXMpOworCisg
ICAgQVNTRVJUKHVpZC0+aXNTeW1ib2woKSk7CisgICAgQVNTRVJUKHVpZC0+c3ltYm9sUmVnaXN0
cnkoKSA9PSB0aGlzKTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV90YWJsZS5maW5kKFN5bWJvbFJl
Z2lzdHJ5S2V5KHVpZCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gbV90
YWJsZS5lbmQoKSwgIlRoZSBzdHJpbmcgYmVpbmcgcmVtb3ZlZCBpcyByZWdpc3RlcmVkIGluIHRo
ZSBzdHJpbmcgdGFibGUgb2YgYW4gb3RoZXIgdGhyZWFkISIpOworICAgIG1fdGFibGUucmVtb3Zl
KGl0ZXJhdG9yKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1i
b2xSZWdpc3RyeS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdkZDI1OTc4YWJkNjVjODBmYTcyMDkxMTUyNjNmN2NmZjhjNTdhNjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKQEAgLTAsMCAr
MSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXVEZfU3ltYm9sUmVnaXN0cnlf
aAorI2RlZmluZSBXVEZfU3ltYm9sUmVnaXN0cnlfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyNpbmNsdWRlIDx3dGYvU3Bpbkxv
Y2suaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gU2luY2UgU3RyaW5nSW1wbCog
dXNlZCBmb3IgU3ltYm9sIHVpZCBkb2Vzbid0IGhhdmUgYSBoYXNoIHZhbHVlIHJlZmxlY3Rpbmcg
dGhlIHN0cmluZyBjb250ZW50LAorLy8gdG8gY29tcGFyZSB3aXRoIGFuIGV4dGVybmFsIHN0cmlu
ZyBpbiBzdHJpbmcgY29udGVudHMsIGludHJvZHVjZSBTeW1ib2xSZWdpc3RyeUtleS4KKy8vIFN5
bWJvbFJlZ2lzdHJ5S2V5IGhvbGRzIGEgaGFzaCB2YWx1ZSByZWZsZWN0aW5nIHRoZSBzdHJpbmcg
Y29udGVudCBhZGRpdGlvbmFsbHkuCitjbGFzcyBTeW1ib2xSZWdpc3RyeUtleSB7CitwdWJsaWM6
CisgICAgU3ltYm9sUmVnaXN0cnlLZXkoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU3ltYm9s
UmVnaXN0cnlLZXkoU3RyaW5nSW1wbCogdWlkKTsKKyAgICBTeW1ib2xSZWdpc3RyeUtleShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzaDsgfQorICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVy
biBtX2ltcGw7IH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2ltcGwgPT0gaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKworcHJpdmF0ZToK
KyAgICBzdGF0aWMgU3RyaW5nSW1wbCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oLTEpOyB9CisKKyAgICBTdHJpbmdJbXBsKiBt
X2ltcGwgeyBudWxscHRyIH07CisgICAgdW5zaWduZWQgbV9oYXNoIHsgMCB9OworfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g8U3ltYm9sUmVnaXN0cnlLZXk+IHsKKyAgICBzdHJ1Y3QgSGFzaCA6IFN0cmlu
Z0hhc2ggeworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTeW1ib2xSZWdpc3Ry
eUtleSYga2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsKKyAg
ICAgICAgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTeW1ib2xSZWdpc3RyeUtl
eSYgYSwgY29uc3QgU3ltYm9sUmVnaXN0cnlLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOworICAgICAgICB9
CisgICAgfTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8U3ltYm9sUmVnaXN0
cnlLZXk+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFN5bWJvbFJlZ2lzdHJ5S2V5PiB7CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAgIHN0
YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTeW1ib2xSZWdpc3RyeUtleSYga2V5KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGtleS5pbXBsKCkgPT0gbnVsbHB0cjsKKyAgICB9Cit9OworCitj
bGFzcyBTeW1ib2xSZWdpc3RyeSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3ltYm9sUmVn
aXN0cnkpOworcHVibGljOgorICAgIFN5bWJvbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB+U3ltYm9sUmVnaXN0cnkoKTsKKworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBSZWY8U3RyaW5nSW1wbD4gc3ltYm9sRm9yS2V5KGNvbnN0IFN0cmluZyYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcga2V5Rm9yU3ltYm9sKFN0cmluZ0ltcGwqIHVpZCk7CisK
KyAgICB2b2lkIHJlbW92ZShTdHJpbmdJbXBsKiB1aWQpOworCisjaWYgVVNFKFdFQl9USFJFQUQp
CisgICAgU3BpbkxvY2smIHNwaW5Mb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NwaW5M
b2NrOworICAgIH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIEhhc2hTZXQ8U3ltYm9sUmVnaXN0
cnlLZXk+IG1fdGFibGU7CisjaWYgVVNFKFdFQl9USFJFQUQpCisgICAgU3BpbkxvY2sgbV9zcGlu
TG9jazsKKyNlbmRpZgorfTsKKworaW5saW5lIFN5bWJvbFJlZ2lzdHJ5S2V5OjpTeW1ib2xSZWdp
c3RyeUtleShTdHJpbmdJbXBsKiB1aWQpCisgICAgOiBtX2ltcGwodWlkKQoreworICAgIGlmICh1
aWQtPmlzU3ltYm9sKCkpIHsKKyAgICAgICAgaWYgKHVpZC0+aXM4Qml0KCkpCisgICAgICAgICAg
ICBtX2hhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHVpZC0+
Y2hhcmFjdGVyczgoKSwgdWlkLT5sZW5ndGgoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1faGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHModWlkLT5j
aGFyYWN0ZXJzMTYoKSwgdWlkLT5sZW5ndGgoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1faGFz
aCA9IHVpZC0+aGFzaCgpOworfQorCitpbmxpbmUgU3ltYm9sUmVnaXN0cnlLZXk6OlN5bWJvbFJl
Z2lzdHJ5S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICA6IG1faW1wbCho
YXNoVGFibGVEZWxldGVkVmFsdWUoKSkKK3sKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMWVi
YmIxYTcxODFkNGNhNjdkOWFlYTFkNDAwZDkwMjBiN2ZkYjA4Li43YjBjNGQ4MDYwZTZjMDBjMzBi
MjY4M2U1ODgxZDdjMWZlNGZhOGZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTUtMDQtMTIg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0VTNl0g
SW1wbGVtZW50IFN5bWJvbC5mb3IgYW5kIFN5bWJvbC5rZXlGb3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQwNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byBjaGVjayBTeW1ib2wn
cyBpZGVudGl0eSBvdmVyIGRpZmZlcmVudCByZWFsbXMuCisKKyAgICAgICAgKiBqcy9kb20vY3Jv
c3MtZnJhbWUtc3ltYm9scy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9j
cm9zcy1mcmFtZS1zeW1ib2xzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9zY3JpcHQt
dGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qczogQWRkZWQuCisKKzIwMTUtMDQtMTIgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0VTNl0gSW1wbGVt
ZW50IEFycmF5LnByb3RvdHlwZS52YWx1ZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzYzMwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9k
b20vY3Jvc3MtZnJhbWUtc3ltYm9scy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20v
Y3Jvc3MtZnJhbWUtc3ltYm9scy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NiYTFhOTlhZDVh
NzA4YjE2NTdhYzAwZDg3MTE4MTQ1MTVmNTQ3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1
IEBACitUZXN0cyBTeW1ib2wgYW5kIGdsb2JhbCBzeW1ib2wgcmVnaXN0cnkgaWRlbnRpdHkKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZnJhbWUuU3ltYm9sLml0ZXJhdG9y
IGlzIFN5bWJvbC5pdGVyYXRvcgorUEFTUyBmcmFtZS5TeW1ib2woJ0hlbGxvJykgaXMgbm90IFN5
bWJvbCgnSGVsbG8nKQorUEFTUyBTeW1ib2wua2V5Rm9yKHN5bSkgaXMgJ0hlbGxvJworUEFTUyBm
cmFtZS5TeW1ib2wua2V5Rm9yKHN5bSkgaXMgJ0hlbGxvJworUEFTUyBTeW1ib2wuZm9yKCdIZWxs
bycpIGlzIHN5bQorUEFTUyBmcmFtZS5TeW1ib2wuZm9yKCdIZWxsbycpIGlzIHN5bQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2RvbS9jcm9zcy1mcmFtZS1zeW1ib2xzLmh0bWwgYi9MYXlvdXRUZXN0
cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMzYyN2MxY2Y1
ZGRkMjI0MDA5YmNkZmMxYjcyMmU4YjBmOTY1ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9kb20vY3Jvc3MtZnJhbWUtc3ltYm9scy5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZT48L2lmcmFtZT4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2Nyb3NzLWZy
YW1lLXN5bWJvbHMuanMgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2Nyb3NzLWZy
YW1lLXN5bWJvbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc4ZWFmMzdmMWYwN2Y5M2FjYzk1MWQxOTk4Njhk
NjBkZWY0OGNlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQt
dGVzdHMvY3Jvc3MtZnJhbWUtc3ltYm9scy5qcwpAQCAtMCwwICsxLDEyIEBACitkZXNjcmlwdGlv
bigiVGVzdHMgU3ltYm9sIGFuZCBnbG9iYWwgc3ltYm9sIHJlZ2lzdHJ5IGlkZW50aXR5Iik7CisK
K3ZhciBmcmFtZSA9IGZyYW1lc1swXTsKKworc2hvdWxkQmUoImZyYW1lLlN5bWJvbC5pdGVyYXRv
ciIsICJTeW1ib2wuaXRlcmF0b3IiKTsKK3Nob3VsZE5vdEJlKCJmcmFtZS5TeW1ib2woJ0hlbGxv
JykiLCAiU3ltYm9sKCdIZWxsbycpIik7CisKK3ZhciBzeW0gPSBTeW1ib2wuZm9yKCJIZWxsbyIp
Oworc2hvdWxkQmUoIlN5bWJvbC5rZXlGb3Ioc3ltKSIsICInSGVsbG8nIik7CitzaG91bGRCZSgi
ZnJhbWUuU3ltYm9sLmtleUZvcihzeW0pIiwgIidIZWxsbyciKTsKK3Nob3VsZEJlKCJTeW1ib2wu
Zm9yKCdIZWxsbycpIiwgInN5bSIpOworc2hvdWxkQmUoImZyYW1lLlN5bWJvbC5mb3IoJ0hlbGxv
JykiLCAic3ltIik7Cg==
</data>
<flag name="review"
          id="275392"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250972</attachid>
            <date>2015-04-16 16:22:08 -0700</date>
            <delta_ts>2015-04-16 16:22:49 -0700</delta_ts>
            <desc>try to fix the build</desc>
            <filename>ro.txt</filename>
            <type>text/plain</type>
            <size>913</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gMTgyOTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBj
bGFzcyBTeW1ib2xQcm90b3R5cGU7CiBjbGFzcyBTeW1ib2xDb25zdHJ1Y3RvciA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHN0YXRp
YyBTeW1ib2xDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN5bWJvbFByb3RvdHlwZSogcHJvdG90eXBlKQogICAgIHsKQEAgLTU1LDggKzU2LDYgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTeW1ib2xQcm90
b3R5cGUqKTsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCiBwcml2
YXRlOgogICAgIFN5bWJvbENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGlj
IENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7
Cg==
</data>
<flag name="review"
          id="275774"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="275775"
          type_id="3"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>