<?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>155011</bug_id>
          
          <creation_ts>2016-03-04 00:43:23 -0800</creation_ts>
          <short_desc>Add basic support for attributeChanged lifecycle callback</short_desc>
          <delta_ts>2016-03-05 16:27:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>154907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>barraclough</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1170551</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-04 00:43:23 -0800</bug_when>
    <thetext>Add the most basic support for attributeChanged callback:
https://w3c.github.io/webcomponents/spec/custom/#dfn-attribute-changed-callback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170553</commentid>
    <comment_count>1</comment_count>
      <attachid>272842</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-04 01:01:06 -0800</bug_when>
    <thetext>Created attachment 272842
Implements lifecycle callback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170556</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-04 01:04:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/24972528&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170560</commentid>
    <comment_count>3</comment_count>
      <attachid>272844</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-04 01:59:03 -0800</bug_when>
    <thetext>Created attachment 272844
Fix GTK/EFL builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170562</commentid>
    <comment_count>4</comment_count>
      <attachid>272845</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-04 03:03:44 -0800</bug_when>
    <thetext>Created attachment 272845
Another GTK/EFL build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171133</commentid>
    <comment_count>5</comment_count>
      <attachid>273064</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-04 17:53:50 -0800</bug_when>
    <thetext>Created attachment 273064
Updated for ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171163</commentid>
    <comment_count>6</comment_count>
      <attachid>273064</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-03-04 22:52:40 -0800</bug_when>
    <thetext>Comment on attachment 273064
Updated for ToT

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

&gt; Source/WebCore/bindings/scripts/IDLAttributes.txt:94
&gt; +NeedsLifecycleProcessingStack

Lifecycle of what? This should be named &quot;NeedsCustomElementLifecycleProcessingStack&quot; or probably just  &quot;NeedsCustomElementLifecycleProcessing&quot;. Or maybe &quot;HasCustomElementLifecycleCallbacks&quot; which answers &apos;why?&apos;

&gt; Source/WebCore/dom/LifecycleCallbackQueue.cpp:43
&gt; +        Invalid,

Invalid type is never used and doesn&apos;t seem like something you would use later either. You should just remove it.

&gt; Source/WebCore/dom/LifecycleCallbackQueue.cpp:63
&gt; +    Type m_type { Type::Invalid };

The only constructor initializes this explicitly.

&gt; Source/WebCore/dom/LifecycleCallbackQueue.h:75
&gt; +    WEBCORE_EXPORT static LifecycleCallbackQueue* ensureCurrentQueue();

Why WEBCORE_EXPORTs? The stuff here seems WebCore internal.

&gt; Source/WebCore/dom/LifecycleCallbackQueue.h:85
&gt; +    WEBCORE_EXPORT static CustomElementLifecycleProcessingStack* s_currentProcessingStack;

You should probably just access this from non-inline functions rather than exporting.

Not a big fan of these sort of static-rooted stacks but I suppose it works fine here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171164</commentid>
    <comment_count>7</comment_count>
      <attachid>273064</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-04 23:01:45 -0800</bug_when>
    <thetext>Comment on attachment 273064
Updated for ToT

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

&gt;&gt; Source/WebCore/bindings/scripts/IDLAttributes.txt:94
&gt;&gt; +NeedsLifecycleProcessingStack
&gt; 
&gt; Lifecycle of what? This should be named &quot;NeedsCustomElementLifecycleProcessingStack&quot; or probably just  &quot;NeedsCustomElementLifecycleProcessing&quot;. Or maybe &quot;HasCustomElementLifecycleCallbacks&quot; which answers &apos;why?&apos;

Will use InvokesCustomElementLifecycleCallbacks.

&gt;&gt; Source/WebCore/dom/LifecycleCallbackQueue.cpp:43
&gt;&gt; +        Invalid,
&gt; 
&gt; Invalid type is never used and doesn&apos;t seem like something you would use later either. You should just remove it.

Yeah, just realized that. Will remove.

&gt;&gt; Source/WebCore/dom/LifecycleCallbackQueue.h:75
&gt;&gt; +    WEBCORE_EXPORT static LifecycleCallbackQueue* ensureCurrentQueue();
&gt; 
&gt; Why WEBCORE_EXPORTs? The stuff here seems WebCore internal.

Yeah, it&apos;ll be used in the future but will remove for now.

&gt;&gt; Source/WebCore/dom/LifecycleCallbackQueue.h:85
&gt;&gt; +    WEBCORE_EXPORT static CustomElementLifecycleProcessingStack* s_currentProcessingStack;
&gt; 
&gt; You should probably just access this from non-inline functions rather than exporting.
&gt; 
&gt; Not a big fan of these sort of static-rooted stacks but I suppose it works fine here.

Can&apos;t do that because of the performance. Being able to inline all code in the constructor &amp; destructor is very important.
Having said that, this variable doesn&apos;t need to be exported for now so I&apos;ll just remove WEBCORE_EXPORT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171168</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-04 23:50:42 -0800</bug_when>
    <thetext>Committed r197611: &lt;http://trac.webkit.org/changeset/197611&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171240</commentid>
    <comment_count>9</comment_count>
      <attachid>273064</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-05 12:19:36 -0800</bug_when>
    <thetext>Comment on attachment 273064
Updated for ToT

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

&gt; Source/WebCore/dom/LifecycleCallbackQueue.h:34
&gt; +#include &lt;wtf/text/AtomicString.h&gt;

We should be able to use Forward.h instead of AtomicString.h.

&gt; Source/WebCore/dom/LifecycleCallbackQueue.h:57
&gt; +class LifecycleCallbackQueue {
&gt; +    WTF_MAKE_NONCOPYABLE(LifecycleCallbackQueue);
&gt; +public:
&gt; +    LifecycleCallbackQueue();
&gt; +    ~LifecycleCallbackQueue();
&gt; +
&gt; +    static void enqueueAttributeChangedCallback(Element&amp;, JSCustomElementInterface&amp;,
&gt; +        const QualifiedName&amp;, const AtomicString&amp; oldValue, const AtomicString&amp; newValue);
&gt; +
&gt; +    void invokeAll();
&gt; +
&gt; +private:
&gt; +    Vector&lt;LifecycleQueueItem&gt; m_items;
&gt; +};

Can we forward-declare this and define this class only inside the cpp file instead? I’m not sure it makes sense that enqueueAttributeChangedCallback is a static class member of a class that we never need house directly.

&gt; Source/WebCore/dom/LifecycleCallbackQueue.h:82
&gt; +    LifecycleCallbackQueue* m_queue { nullptr };

This should be std::unique_ptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171306</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-05 16:27:23 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 273064 [details]
&gt; Updated for ToT
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=273064&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/LifecycleCallbackQueue.h:34
&gt; &gt; +#include &lt;wtf/text/AtomicString.h&gt;
&gt; 
&gt; We should be able to use Forward.h instead of AtomicString.h.
&gt; 
&gt; &gt; Source/WebCore/dom/LifecycleCallbackQueue.h:57
&gt; &gt; +class LifecycleCallbackQueue {
&gt; &gt; +    WTF_MAKE_NONCOPYABLE(LifecycleCallbackQueue);
&gt; &gt; +public:
&gt; &gt; +    LifecycleCallbackQueue();
&gt; &gt; +    ~LifecycleCallbackQueue();
&gt; &gt; +
&gt; &gt; +    static void enqueueAttributeChangedCallback(Element&amp;, JSCustomElementInterface&amp;,
&gt; &gt; +        const QualifiedName&amp;, const AtomicString&amp; oldValue, const AtomicString&amp; newValue);
&gt; &gt; +
&gt; &gt; +    void invokeAll();
&gt; &gt; +
&gt; &gt; +private:
&gt; &gt; +    Vector&lt;LifecycleQueueItem&gt; m_items;
&gt; &gt; +};
&gt; 
&gt; Can we forward-declare this and define this class only inside the cpp file
&gt; instead? I’m not sure it makes sense that enqueueAttributeChangedCallback is
&gt; a static class member of a class that we never need house directly.

No, because we use static function: enqueueAttributeChangedCallback in Element.cpp.

&gt; &gt; Source/WebCore/dom/LifecycleCallbackQueue.h:82
&gt; &gt; +    LifecycleCallbackQueue* m_queue { nullptr };
&gt; 
&gt; This should be std::unique_ptr.

We can&apos;t for performance reasons. It&apos;s very important that the destructor of this function doesn&apos;t generate the code to deallocate the queue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272842</attachid>
            <date>2016-03-04 01:01:06 -0800</date>
            <delta_ts>2016-03-04 01:58:58 -0800</delta_ts>
            <desc>Implements lifecycle callback</desc>
            <filename>bug-155011-20160304010051.patch</filename>
            <type>text/plain</type>
            <size>40306</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE2LTAzLTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZv
ciBhdHRyaWJ1dGVDaGFuZ2VkIGxpZmVjeWNsZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDExCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGF0dHJp
YnV0ZUNoYW5nZWRDYWxsYmFjayBpbiBzZXRBdHRyaWJ1dGUsIHJlbW92ZUF0dHJpYnV0ZSwgc2V0
QXR0cmlidXRlTlMsCisgICAgICAgIHJlbW90ZUF0dHJpYnV0ZU5TLCBzZXRBdHRyaWJ1dGVOb2Rl
LCBhbmQgcmVtb3ZlQXR0cmlidXRlTlMuIFRoZXJlIGFyZSBtYW55IG90aGVyIERPTSBBUElzIHRo
YXQKKyAgICAgICAgY291bGQgbW9kaWZ5IGF0dHJpYnV0ZXMgYnV0IHdlIHdvdWxkIGFubm90YXRl
IHRob3NlIEFQSXMgaW4gYSBzZXBhcmF0ZSBwYXRjaCB0byBsaW1pdCB0aGUgc2NvcGUKKyAgICAg
ICAgb2YgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gaW52b2tlIHRoZSBsaWZl
Y3ljbGUgY2FsbGJhY2sgcmlnaHQgYmVmb3JlIHJldHVybmluZyB0byB0aGUgYXV0aG9yIHNjcmlw
dCwgYWxsb2NhdGUKKyAgICAgICAgYW4gaW5zdGFuY2Ugb2YgQ3VzdG9tRWxlbWVudExpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjayBpbiBlYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucycgYmluZGluZyBjb2Rl
LgorICAgICAgICBUaGUgc3RhY2sgb2JqZWN0J3MgZGVzdHJ1Y3RvciBpbnZva2VzIGFsbCBjYWxs
YmFja3MgZW5xdWV1ZWQgYnkgdGhlIERPTSBBUEkgaWYgdGhlcmUgYXJlIGFueS4KKworICAgICAg
ICBTcGVjOiBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8j
ZGZuLWF0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL2F0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
OmF0dHJpYnV0ZUNoYW5nZWQpOiBBZGRlZC4gSW52b2tlcyBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJh
Y2suCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChK
U01haW5UaHJlYWROdWxsU3RhdGUpOiBBbGxvY2F0ZSBhbiBpbnN0YW5jZSBvZiBDdXN0b21FbGVt
ZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGluIEdPYmplY3QKKyAgICAgICAgYW5kIE9iamVj
dGl2ZS1DIGJpbmRpbmcgY29kZSBmb3IgY29uc2lzdGVuY3kgd2l0aCBKYXZhU2NyaXB0LiBXZSBj
YW4ndCBkbyB0aGlzIGluIEphdmFTY3JpcHQKKyAgICAgICAgYmVjYXVzZSB0aGVyZSBpcyBubyBS
QUlJIG9iamVjdCBhbGwgZnVuY3Rpb25zLCBnZXR0ZXJzLCBhbmQgc2V0dGVycyBhbGxvY2F0ZSAo
Zm9yIGEgZ29vZCByZWFzb24pLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogR2VuZXJhdGUg
YW4gaW5zdGFuY2Ugb2YgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayB3aGVu
CisgICAgICAgIE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGlzIHNwZWNpZmllZCBhcyBh
biBleHRlbmRlZCBJREwgYXR0cmlidXRlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy50eHQ6IEFkZGVkIE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNMaWZlY3lj
bGVQcm9jZXNzaW5nU3RhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbDogQWRkZWQgYSB0ZXN0IGZvciBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFjay4K
KworICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6IEVucXVl
dWUgYXR0cmlidXRlQ2hhbmdlZCBjYWxsYmFjayBpZiB0aGUgY29udGV4dCBvYmplY3QKKyAgICAg
ICAgaXMgYSBjdXN0b20gZWxlbWVudCBhbmQgdGhlcmUgaXMgYSBDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrIGFsbG9jYXRlZCBpbiB0aGUgc3RhY2suCisgICAgICAgICogZG9t
L0VsZW1lbnQuaWRsOgorCisgICAgICAgICogZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpZmVjeWNsZVF1ZXVlSXRlbSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGlmZWN5Y2xlUXVldWVJdGVtOjpMaWZlY3ljbGVRdWV1ZUl0ZW0p
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpZmVjeWNsZVF1ZXVlSXRlbTo6aW52b2tlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjpMaWZlY3lj
bGVDYWxsYmFja1F1ZXVlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxs
YmFja1F1ZXVlOjp+TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRDYWxs
YmFjayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6
aW52b2tlQWxsKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVldWUpOiBBZGRlZC4gQXMgbm90ZWQg
aW4gRklYTUUsCisgICAgICAgIHRoZSBlYXJseSBleGl0IGluIHRoZSBjb2RlIGlzIG5lY2Vzc2Fy
eSBvbmx5IGJlY2F1c2Ugd2UgaGF2ZW4ndCBhZGRlZCBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjaworICAgICAgICBpbiBhbGwgcGxhY2VzLiBJdCBzaG91bGQgZ28gYXdheSBpbiBhIGZvbGxv
dyB1cCBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9j
ZXNzaW5nU3RhY2s6OnByb2Nlc3NRdWV1ZSk6IEFkZGVkLgorICAgICAgICAqIGRvbS9MaWZlY3lj
bGVDYWxsYmFja1F1ZXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayk6IFRoaXMgaXMgYSBsaWdodCB3ZWlnaHQgUkFJSSBv
YmplY3QgdGhlIGJpbmRpbmcKKyAgICAgICAgY29kZSB3aWxsIGFsbG9jYXRlIGluIG9yZGVyIHRv
IHF1ZXVlIHVwIGxpZmVjeWNsZSBjYWxsYmFja3MuIFdlIGRvbid0IHVzZSBSZWYgb3Igc3RkOjp1
bmlxdWVfcHRyCisgICAgICAgIGluIG1fcXVldWUgdG8gYXZvaWQgZ2VuZXJhdGluZyB0aGUgY29k
ZSB0byBkZXN0cnVjdCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlIGV2ZXJ5d2hlcmUuCisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjpDdXN0b21F
bGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjp+Q3VzdG9tRWxlbWVudExp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6aGFzQ3VycmVudFByb2Nlc3NpbmdTdGFj
ayk6IEFkZGVkLgorCiAyMDE2LTAzLTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBj
cmYuY2Fub24uZnI+CiAKICAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBUaHJlYWRhYmxl
TG9hZGVyIGFuZCByZWxhdGl2ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
OTc1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1Miw2ICsxNDUyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwCiAgICAgZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAK
ICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAKKyAgICBkb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZS5jcHAKICAgICBkb20vTGl2ZU5vZGVMaXN0LmNwcAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5j
cHAKICAgICBkb20vTWVzc2FnZUV2ZW50LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk3NTUxKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00MDE3LDYgKzQwMTcsNyBAQAogCQk5QjUzMkVBMzFCQTkyODU3MDAzOEE4Mjcg
LyogU2xvdEFzc2lnbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUI1MzJFQTExQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50LmNw
cCAqLzsgfTsKIAkJOUI1MzJFQTQxQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjUzMkVBMjFC
QTkyODU3MDAzOEE4MjcgLyogU2xvdEFzc2lnbm1lbnQuaCAqLzsgfTsKIAkJOUI1NUVFRTkxQjNF
ODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NUVFRTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNv
Y29hLm1tICovOyB9OworCQk5QjU2QzlBQTFDODkzMjlBMDBDNDU2REYgLyogTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QjU2QzlBOTFDODkzMjlBMDBDNDU2REYgLyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5j
cHAgKi87IH07CiAJCTlCNjlEM0I0MUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQz
QjIxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5jcHAgKi87IH07CiAJCTlCNjlE
M0I1MUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNjlEM0IzMUI5OEZGRTkwMEUzNTEyQiAv
KiBIVE1MU2xvdEVsZW1lbnQuaCAqLzsgfTsKIAkJOUI2OUQzQjgxQjk5MTAwNzAwRTM1MTJCIC8q
IEpTSFRNTFNsb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCNjlEM0I2MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVu
dC5jcHAgKi87IH07CkBAIC0xMTY5NCw2ICsxMTY5NSw4IEBACiAJCTlCNTMyRUEyMUJBOTI4NTcw
MDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTbG90QXNzaWdubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjU1
RUVFODFCM0U4ODk4MDA1MzQyQkMgLyogRWRpdG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUI1NUVFRUExQjNGM0ZFRjAwNTM0MkJDIC8qIEVkaXRvckNvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVkaXRvckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExpZmVjeWNsZUNhbGxiYWNrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOUI1NkM5QTkxQzg5MzI5QTAwQzQ1NkRGIC8qIExpZmVjeWNsZUNhbGxiYWNr
UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNjlEM0Ix
MUI5OEZGMEEwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEhUTUxTbG90RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCNjlEM0IyMUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFNsb3RFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI2OUQzQjMxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxT
bG90RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MU2xvdEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MzA0LDYgKzI0MzA3LDgg
QEAKIAkJCQk4NTAzMUIyRDBBNDRFRkM3MDBGOTkyRTAgLyogS2V5Ym9hcmRFdmVudC5jcHAgKi8s
CiAJCQkJODUwMzFCMkUwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuaCAqLywKIAkJ
CQkxNENGN0MyMDA5RjcxMTA2MDBFQjM2NjUgLyogS2V5Ym9hcmRFdmVudC5pZGwgKi8sCisJCQkJ
OUI1NkM5QTkxQzg5MzI5QTAwQzQ1NkRGIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwICov
LAorCQkJCTlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVl
LmggKi8sCiAJCQkJQkM3RkE2MUUwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAg
Ki8sCiAJCQkJQkM3RkE2MUYwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oICovLAog
CQkJCUJDOUE2MTQ0MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2RvbV9leGNlcHRpb25zLnBsICov
LApAQCAtMjk4NDksNiArMjk4NTQsNyBAQAogCQkJCUE4RUE3Q0FEMEExOTJCOUMwMEE4RUY1RiAv
KiBIVE1MUHJlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg3MjEyMjg4M0U5
MDBCODFGRjggLyogSFRNTFByZWxvYWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE0
M0JGNTk4MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTlCNTZDOUFBMUM4OTMyOUEwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFj
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGN0E1MEExNTY5NzgwMDBBNDIzNCAv
KiBIVE1MUXVvdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RDIyM0ZEMTZCNTJF
NEUwMDE1NzI4OCAvKiBIVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTg3MURDMjIwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAxOTc1NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDUwIEBAIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UKICAgICByZXR1cm4gd3JhcHBlZEVsZW1lbnQ7CiB9CiAKK3ZvaWQgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlOjphdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7CisgICAgaWYgKCFjYW5J
bnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWY8SlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1f
aXNvbGF0ZWRXb3JsZC0+dm0oKSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4
dCwgKm1faXNvbGF0ZWRXb3JsZCk7CisgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpOworCisgICAgSlNPYmplY3QqIGpzRWxlbWVudCA9IGFzT2JqZWN0KHRv
SlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgJmVsZW1lbnQpKTsKKworICAgIFByb3BlcnR5TmFtZSBh
dHRyaWJ1dGVDaGFuZ2VkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJhdHRyaWJ1dGVD
aGFuZ2VkQ2FsbGJhY2siKSk7CisgICAgSlNWYWx1ZSBjYWxsYmFjayA9IGpzRWxlbWVudC0+Z2V0
KHN0YXRlLCBhdHRyaWJ1dGVDaGFuZ2VkKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVS
SSgpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQoanNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsKKyAgICBh
cmdzLmFwcGVuZChvbGRWYWx1ZSA9PSBudWxsQXRvbSA/IGpzTnVsbCgpIDoganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIG9sZFZhbHVlKSk7CisgICAgYXJncy5hcHBlbmQobmV3VmFsdWUgPT0gbnVs
bEF0b20gPyBqc051bGwoKSA6IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBuZXdWYWx1ZSkpOwor
ICAgIGFyZ3MuYXBwZW5kKG5hbWVzcGFjZVVSSSA9PSBudWxsQXRvbSA/IGpzTnVsbCgpIDoganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkpKTsKKwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRF
eGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxE
YXRhKTsKKworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgIEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZTo6Y2FsbChzdGF0ZSwgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwg
anNFbGVtZW50LCBhcmdzLCBleGNlcHRpb24pOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCBjb250ZXh0KTsKKworICAgIGlmIChleGNlcHRp
b24pCisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgZXhjZXB0aW9uKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCShyZXZpc2lvbiAx
OTc1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBET01XcmFwcGVy
V29ybGQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CiBjbGFzcyBN
YXRoTUxFbGVtZW50OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFNWR0VsZW1lbnQ7CiAK
IGNsYXNzIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZT4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CkBAIC02Miw2
ICs2Myw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNob3VsZENsZWFyRXhjZXB0aW9uIHsg
Q2xlYXIsIERvTm90Q2xlYXIgfTsKICAgICBSZWZQdHI8RWxlbWVudD4gY29uc3RydWN0RWxlbWVu
dChjb25zdCBBdG9taWNTdHJpbmcmLCBTaG91bGRDbGVhckV4Y2VwdGlvbik7CiAKKyAgICB2b2lk
IGF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKKwog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOyB9CiAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IoKSB7IHJldHVybiBtX2Nv
bnN0cnVjdG9yLmdldCgpOyB9CiAKQEAgLTcyLDYgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIG11
dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fY29uc3RydWN0b3I7CiAgICAgUmVmUHRy
PERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOworICAgIFZlY3RvcjxSZWY8RWxlbWVu
dD4sIDE+IG1fY29uc3RydWN0aW9uU3RhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaAkocmV2aXNpb24gMTk3NTUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNkZWZpbmUgSlNNYWluVGhyZWFkRXhlY1N0YXRlX2gKIAogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0NvbXBsZXRpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL01pY3JvdGFzay5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xNDYsNiArMTQ3LDkgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIEpTQzo6RXhlY1N0YXRlKiBtX3ByZXZpb3VzU3RhdGU7CisjaWYgRU5BQkxF
KENVU1RPTV9FTEVNRU5UUykKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrIG1fbGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworI2VuZGlmCiB9OwogCiBKU0M6OkpTVmFs
dWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERh
dGEmLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJl
dmlzaW9uIDE5NzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEzLDYgKzI5MTMsMTEgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRp
bWUvRXJyb3IuaD4ifSA9IDE7CiAKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIn0p
IHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBDdXN0b21FbGVtZW50
TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5n
U3RhY2s7XG4iKTsKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJMaWZlY3ljbGVDYWxs
YmFja1F1ZXVlLmgifSA9IDE7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgaWYgKCRpc0N1c3RvbSkgewogICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVu
dCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAkocmV2aXNpb24gMTk3NTUxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtOTEsNiArOTEsNyBAQCBKU0xlZ2FjeVBhcmVudD0qCiBMZW5pZW50VGhpcwog
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogTmFtZWRDb25zdHJ1Y3Rvcj0qCitOZWVkc0xpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjawogTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzCiBOZXdP
YmplY3QKIE5vSW50ZXJmYWNlT2JqZWN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAxOTc1NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMiw2ICszMzIsMTAgQEAgZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFs
dWUxIiwgIgogICAgIC8vIFB1dEZvcndhcmRzCiAgICAgW1B1dEZvcndhcmRzPW5hbWVdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBUZXN0Tm9kZSBwdXRGb3J3YXJkc0F0dHJpYnV0ZTsKICAgICBbUHV0Rm9y
d2FyZHM9bmFtZV0gcmVhZG9ubHkgYXR0cmlidXRlIFRlc3ROb2RlPyBwdXRGb3J3YXJkc051bGxh
YmxlQXR0cmlidXRlOworCisjaWYgZGVmaW5lZChURVNUSU5HX0pTKQorICAgIFtOZWVkc0xpZmVj
eWNsZVByb2Nlc3NpbmdTdGFja10gdm9pZCBtZXRob2RXaXRoTmVlZHNMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2soKTsKKyNlbmRpZgogfTsKIAogLy8gVGhlIGZvbGxvd2luZyBjb21tZW50IHNob3Vs
ZCBub3QgZ2VuZXJhdGUgYW55IGNvZGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMTk3NTUx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJn
dW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0
aW9uKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFs
SW50QXJndW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOZWVkc0xpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjayhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3ltYm9sSXRlcmF0b3IoSlND
OjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbktleXMoSlND
OjpFeGVjU3RhdGUqKTsKQEAgLTcxMyw2ICs3MTQsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFy
Z3VtZW50IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJ0
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiksIChpbnRwdHJf
dCkgKDApIH0gfSwKICAgICB7ICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJn
dW1lbnQiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VG
dW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50KSwgKGludHB0cl90KSAoMCkgfSB9LAorICAg
IHsgIm1ldGhvZFdpdGhOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayIsIEpTQzo6RnVuY3Rp
b24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2spLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAiZW50cmllcyIsIEpTQzo6RnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKSwgKGludHB0cl90KSAoMCkgfSB9
LAogICAgIHsgImtleXMiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uS2V5
cyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJ2YWx1ZXMiLCBKU0M6OkZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKSwgKGludHB0cl90KSAoMCkgfSB9LApAQCAtNTAy
MSw2ICs1MDIzLDE5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAg
Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5lZWRz
TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIik7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhOZWVkc0xpZmVjeWNsZVByb2Nl
c3NpbmdTdGFjaygpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Cit9CisKIHVzaW5nIFRlc3RPYmpJdGVyYXRvciA9IEpTS2V5VmFsdWVJdGVyYXRvcjxKU1Rlc3RP
Ymo+OwogdXNpbmcgVGVzdE9iakl0ZXJhdG9yUHJvdG90eXBlID0gSlNLZXlWYWx1ZUl0ZXJhdG9y
UHJvdG90eXBlPEpTVGVzdE9iaj47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJ
bk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNw
cAkocmV2aXNpb24gMTk3NTUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQAogI2luY2x1ZGUgIklkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5jcHAiCiAjaW5jbHVkZSAiSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCIK
ICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmNwcCIKKyNpbmNsdWRlICJMaWZlY3ljbGVDYWxsYmFj
a1F1ZXVlLmNwcCIKICNpbmNsdWRlICJMaXZlTm9kZUxpc3QuY3BwIgogI2luY2x1ZGUgIk1lc3Nh
Z2VDaGFubmVsLmNwcCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuY3BwIgpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTk3NTUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ2xp
ZW50UmVjdExpc3QuaCIKICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKKyNpbmNsdWRlICJDdXN0b21F
bGVtZW50RGVmaW5pdGlvbnMuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRl
ICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgiCkBA
IC02MSw2ICs2Miw3IEBACiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQu
aCIKKyNpbmNsdWRlICJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgiCiAjaW5jbHVkZSAiTWFpbkZy
YW1lLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCIKICNpbmNs
dWRlICJNdXRhdGlvblJlY29yZC5oIgpAQCAtMTI2Miw2ICsxMjY0LDEzIEBAIHZvaWQgRWxlbWVu
dDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWEKIAogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJl
ZVZlcnNpb24oKTsKIAorICAgIGlmIChVTkxJS0VMWShpc0N1c3RvbUVsZW1lbnQoKSkpIHsKKyAg
ICAgICAgYXV0byogZGVmaW5pdGlvbnMgPSBkb2N1bWVudCgpLmN1c3RvbUVsZW1lbnREZWZpbml0
aW9ucygpOworICAgICAgICBhdXRvKiBpbnRlcmZhY2UgPSBkZWZpbml0aW9ucy0+ZmluZEludGVy
ZmFjZSh0YWdRTmFtZSgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW50ZXJmYWNlKTsKKyAg
ICAgICAgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRDYWxs
YmFjaygqdGhpcywgKmludGVyZmFjZSwgbmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICB9
CisKICAgICBpZiAodmFsdWVJc1NhbWVBc0JlZm9yZSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiAxOTc1NTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxNCBAQAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IHRhZ05hbWU7CiAKICAgICBET01TdHJpbmc/
IGdldEF0dHJpYnV0ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1l
KTsKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSYWlzZXNFeGNlcHRpb25dIHZv
aWQgc2V0QXR0cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBET01TdHJpbmcgdmFsdWUpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRl
KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOworCisgICAgW09i
akNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uLCBOZWVkc0xpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFja10KKyAgICB2b2lkIHNldEF0dHJpYnV0ZShbRGVmYXVsdD1VbmRlZmlu
ZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lLCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFs
IERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICBbTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2td
IHZvaWQgcmVtb3ZlQXR0cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3Ry
aW5nIG5hbWUpOwogICAgIEF0dHIgZ2V0QXR0cmlidXRlTm9kZShbRGVmYXVsdD1VbmRlZmluZWRd
IG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBBdHRyIHNl
dEF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBBdHRyIG5ld0F0dHIp
OwotICAgIFtSYWlzZXNFeGNlcHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9kZShbRGVmYXVs
dD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgb2xkQXR0cik7CisgICAgW1JhaXNlc0V4Y2VwdGlv
biwgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2tdIEF0dHIgc2V0QXR0cmlidXRlTm9kZShb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgbmV3QXR0cik7CisgICAgW1JhaXNlc0V4
Y2VwdGlvbiwgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2tdIEF0dHIgcmVtb3ZlQXR0cmli
dXRlTm9kZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgb2xkQXR0cik7CiAKICNp
ZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwog
ICAgIFtJbXBsZW1lbnRlZEFzPWdldEVsZW1lbnRzQnlUYWdOYW1lRm9yT2JqQ10gTm9kZUxpc3Qg
Z2V0RWxlbWVudHNCeVRhZ05hbWUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJp
bmcgbmFtZSk7CkBAIC01MCwxMCArNTIsMTIgQEAKICAgICAvLyBET00gTGV2ZWwgMiBDb3JlCiAK
ICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSBET01TdHJpbmc/IGdldEF0dHJpYnV0
ZU5TKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkks
IFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7Ci0gICAg
W09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldEF0
dHJpYnV0ZU5TKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nPyBuYW1lc3Bh
Y2VVUkksCi0gICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUsCi0gICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3Ry
aW5nIHZhbHVlKTsKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSB2b2lkIHJlbW92
ZUF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1l
KTsKKworICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbiwg
TmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2tdCisgICAgdm9pZCBzZXRBdHRyaWJ1dGVOUyhb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLAorICAg
ICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBxdWFsaWZpZWROYW1l
LCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICBb
T2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFj
a10gdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3Ry
aW5nIGxvY2FsTmFtZSk7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBM
QU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIElt
cGxlbWVudGVkQXM9Z2V0RWxlbWVudHNCeVRhZ05hbWVOU0Zvck9iakNdIE5vZGVMaXN0IGdldEVs
ZW1lbnRzQnlUYWdOYW1lTlMob3B0aW9uYWwgRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwgb3B0aW9u
YWwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CkBAIC02MSw3ICs2NSw3IEBACiAgICAgSFRNTENvbGxl
Y3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFs
IERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERP
TVN0cmluZyBsb2NhbE5hbWUpOwogI2VuZGlmCiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1l
dGVyc10gQXR0ciBnZXRBdHRyaWJ1dGVOb2RlTlMoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBE
T01TdHJpbmcgbG9jYWxOYW1lKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBBdHRyIHNldEF0dHJp
YnV0ZU5vZGVOUyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgbmV3QXR0cik7Cisg
ICAgW1JhaXNlc0V4Y2VwdGlvbiwgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2tdIEF0dHIg
c2V0QXR0cmlidXRlTm9kZU5TKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgQXR0ciBuZXdB
dHRyKTsKICAgICBib29sZWFuIGhhc0F0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7CiAgICAgW09i
akNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gYm9vbGVhbiBoYXNBdHRyaWJ1dGVOUyhbRGVmYXVs
dD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBsb2NhbE5hbWUpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpZmVj
eWNsZUNhbGxiYWNrUXVldWUuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RWxlbWVudC5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgorI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgPGhlYXAvSGVhcC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMaWZlY3ljbGVRdWV1ZUl0
ZW0geworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIEludmFsaWQsCisg
ICAgICAgIEF0dHJpYnV0ZUNoYW5nZWQsCisgICAgfTsKKworICAgIExpZmVjeWNsZVF1ZXVlSXRl
bShFbGVtZW50JiBlbGVtZW50LCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGludGVyZmFjZSwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKKyAgICAgICAgOiBtX3R5cGUo
VHlwZTo6QXR0cmlidXRlQ2hhbmdlZCkKKyAgICAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKKyAg
ICAgICAgLCBtX2ludGVyZmFjZShpbnRlcmZhY2UpCisgICAgICAgICwgbV9hdHRyaWJ1dGVOYW1l
KGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICwgbV9vbGRWYWx1ZShvbGRWYWx1ZSkKKyAgICAgICAg
LCBtX25ld1ZhbHVlKG5ld1ZhbHVlKQorICAgIHsgfQorCisgICAgdm9pZCBpbnZva2UoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpJbnZhbGlkKTsKKyAgICAgICAgbV9p
bnRlcmZhY2UtPmF0dHJpYnV0ZUNoYW5nZWQobV9lbGVtZW50LmdldCgpLCBtX2F0dHJpYnV0ZU5h
bWUsIG1fb2xkVmFsdWUsIG1fbmV3VmFsdWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUeXBl
IG1fdHlwZSB7IFR5cGU6OkludmFsaWQgfTsKKyAgICBSZWY8RWxlbWVudD4gbV9lbGVtZW50Owor
ICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IG1faW50ZXJmYWNlOworICAgIFF1YWxp
ZmllZE5hbWUgbV9hdHRyaWJ1dGVOYW1lOworICAgIEF0b21pY1N0cmluZyBtX29sZFZhbHVlOwor
ICAgIEF0b21pY1N0cmluZyBtX25ld1ZhbHVlOworfTsKKworTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpCit7IH0KKworTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZTo6fkxpZmVjeWNsZUNhbGxiYWNrUXVldWUoKQoreworICAgIEFTU0VSVChtX2l0ZW1zLmlzRW1w
dHkoKSk7Cit9CisKK3ZvaWQgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUF0dHJpYnV0
ZUNoYW5nZWRDYWxsYmFjayhFbGVtZW50JiBlbGVtZW50LCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UmIGludGVyZmFjZSwKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVl
KQoreworICAgIGlmIChhdXRvKiBxdWV1ZSA9IEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2s6OmVuc3VyZUN1cnJlbnRRdWV1ZSgpKQorICAgICAgICBxdWV1ZS0+bV9pdGVtcy5h
cHBlbmQoTGlmZWN5Y2xlUXVldWVJdGVtKGVsZW1lbnQsIGludGVyZmFjZSwgYXR0cmlidXRlTmFt
ZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKSk7Cit9CisKK3ZvaWQgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZTo6aW52b2tlQWxsKCkKK3sKKyAgICBWZWN0b3I8TGlmZWN5Y2xlUXVldWVJdGVtPiBpdGVtczsK
KyAgICBpdGVtcy5zd2FwKG1faXRlbXMpOworICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1zKQor
ICAgICAgICBpdGVtLmludm9rZSgpOworfQorCitMaWZlY3ljbGVDYWxsYmFja1F1ZXVlKiBDdXN0
b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVldWUoKQor
eworICAgIC8vIEZJWE1FOiBUaGlzIGVhcmx5IGV4aXQgaW5kaWNhdGVzIGEgYnVnIHRoYXQgc29t
ZSBET00gQVBJIGlzIG1pc3NpbmcgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sKKyAgICBp
ZiAoIXNfY3VycmVudFByb2Nlc3NpbmdTdGFjaykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvKiYgcXVldWUgPSBzX2N1cnJlbnRQcm9jZXNzaW5nU3RhY2stPm1fcXVldWU7Cisg
ICAgaWYgKCFxdWV1ZSkgLy8gV2UgdXNlIGEgcmF3IHBvaW50ZXIgdG8gYXZvaWQgZ2VuZWFyaW5n
IGNvZGUgdG8gZGVsZXRlIGl0IGluIH5DdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrLgorICAgICAgICBxdWV1ZSA9IG5ldyBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOworICAgIHJl
dHVybiBxdWV1ZTsKK30KKworQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayog
Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6c19jdXJyZW50UHJvY2Vzc2lu
Z1N0YWNrID0gbnVsbHB0cjsKKwordm9pZCBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2lu
Z1N0YWNrOjpwcm9jZXNzUXVldWUoKQoreworICAgIEFTU0VSVChtX3F1ZXVlKTsKKyAgICBtX3F1
ZXVlLT5pbnZva2VBbGwoKTsKKyAgICBkZWxldGUgbV9xdWV1ZTsKKyAgICBtX3F1ZXVlID0gbnVs
bHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNr
UXVldWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJh
Y2tRdWV1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNh
bGxiYWNrUXVldWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMaWZlY3lj
bGVDYWxsYmFja1F1ZXVlX2gKKyNkZWZpbmUgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZV9oCisKKyNp
ZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFz
cyBFbGVtZW50OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKK2NsYXNzIExpZmVjeWNsZVF1ZXVlSXRl
bTsKKworY2xhc3MgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSk7CitwdWJsaWM6CisgICAgTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZSgpOworICAgIH5MaWZlY3ljbGVDYWxsYmFja1F1ZXVlKCk7CisKKyAgICBzdGF0
aWMgdm9pZCBlbnF1ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEVsZW1lbnQmLCBKU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2UmLAorICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CisK
KyAgICB2b2lkIGludm9rZUFsbCgpOworCitwcml2YXRlOgorICAgIFZlY3RvcjxMaWZlY3ljbGVR
dWV1ZUl0ZW0+IG1faXRlbXM7Cit9OworCitjbGFzcyBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJv
Y2Vzc2luZ1N0YWNrIHsKK3B1YmxpYzoKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vz
c2luZ1N0YWNrKCkKKyAgICAgICAgOiBtX3ByZXZpb3VzUHJvY2Vzc2luZ1N0YWNrKHNfY3VycmVu
dFByb2Nlc3NpbmdTdGFjaykKKyAgICB7CisgICAgICAgIHNfY3VycmVudFByb2Nlc3NpbmdTdGFj
ayA9IHRoaXM7CisgICAgfQorCisgICAgfkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5n
U3RhY2soKQorICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fcXVldWUpKQorICAgICAgICAg
ICAgcHJvY2Vzc1F1ZXVlKCk7CisgICAgICAgIHNfY3VycmVudFByb2Nlc3NpbmdTdGFjayA9IG1f
cHJldmlvdXNQcm9jZXNzaW5nU3RhY2s7CisgICAgfQorCisgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGEgcmVmZXJlbmNlIG9uY2UgImVuc3VyZSIgc3RhcnRzIHRvIHdvcmsuCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIExpZmVjeWNsZUNhbGxiYWNrUXVldWUqIGVuc3VyZUN1cnJlbnRR
dWV1ZSgpOworCisgICAgc3RhdGljIGJvb2wgaGFzQ3VycmVudFByb2Nlc3NpbmdTdGFjaygpIHsg
cmV0dXJuIHNfY3VycmVudFByb2Nlc3NpbmdTdGFjazsgfQorCitwcml2YXRlOgorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcHJvY2Vzc1F1ZXVlKCk7CisKKyAgICBMaWZlY3ljbGVDYWxsYmFja1F1
ZXVlKiBtX3F1ZXVlIHsgbnVsbHB0ciB9OworICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9j
ZXNzaW5nU3RhY2sqIG1fcHJldmlvdXNQcm9jZXNzaW5nU3RhY2s7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayogc19jdXJy
ZW50UHJvY2Vzc2luZ1N0YWNrOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmIC8vIExpZmVj
eWNsZUNhbGxiYWNrUXVldWVfaApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NTUxKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDMt
MDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGJhc2lj
IHN1cHBvcnQgZm9yIGF0dHJpYnV0ZUNoYW5nZWQgbGlmZWN5Y2xlIGNhbGxiYWNrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUwMTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgZm9y
IGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayBhbmQgYSB0ZXN0IGZvciB0aGUgdGltaW5nIG9mIGxp
ZmVjeWNsZSBjYWxsYmFja3MgaW4gZ2VuZXJhbC4KKworICAgICAgICAqIGZhc3QvY3VzdG9tLWVs
ZW1lbnRzL2F0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvYXR0cmlidXRlLWNoYW5nZWQtY2FsbGJhY2su
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNh
bGxiYWNrLXRpbWluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9t
LWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbDogQWRkZWQuCisKIDIwMTYt
MDMtMDMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcvRlRM
IHNob3VsZCBpbmxpbmUgYWNjZXNzZXMgdG8gUmVnRXhwT2JqZWN0OjptX2xhc3RJbmRleApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvYXR0cmlidXRlLWNoYW5nZWQtY2Fs
bGJhY2stZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL2F0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2F0dHJpYnV0ZS1jaGFu
Z2VkLWNhbGxiYWNrLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAK
KworUEFTUyBzZXRBdHRyaWJ1dGUgYW5kIHJlbW92ZUF0dHJpYnV0ZSBtdXN0IGVucXVldWUgYW5k
IGludm9rZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgCitQQVNTIHNldEF0dHJpYnV0ZU5TIGFu
ZCByZW1vdmVBdHRyaWJ1dGVOUyBtdXN0IGVucXVldWUgYW5kIGludm9rZSBhdHRyaWJ1dGVDaGFu
Z2VkQ2FsbGJhY2sgCitQQVNTIHNldEF0dHJpYnV0ZU5vZGUgYW5kIHJlbW92ZUF0dHJpYnV0ZU5T
IG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayAKK1BBU1Mg
c2V0QXR0cmlidXRlTm9kZSBhbmQgcmVtb3ZlQXR0cmlidXRlTlMgbXVzdCBlbnF1ZXVlIGFuZCBp
bnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2N1c3RvbS1lbGVtZW50cy9hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjay5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2F0dHJpYnV0ZS1jaGFuZ2Vk
LWNhbGxiYWNrLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1l
bGVtZW50cy9hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTA0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
Q3VzdG9tIEVsZW1lbnRzOiBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2s8L3RpdGxlPgorPG1ldGEg
bmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Vi
a2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9ImF0dHJpYnV0ZUNoYW5nZWRD
YWxsYmFjayBtdXN0IGJlIGVucXVldWVkIHdoZW5ldmVyIGN1c3RvbSBlbGVtZW50J3MgYXR0cmli
dXRlIGlzIGFkZGVkLCBjaGFuZ2VkIG9yIHJlbW92ZWQiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jZGZuLWF0
dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhy
ZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKwordmFyIGFyZ3VtZW50TGlzdCA9IFtdOwor
Y2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQgeworICAgIGF0dHJpYnV0
ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUsIG5hbWVzcGFjZSkgewor
ICAgICAgICBhcmd1bWVudExpc3QucHVzaCh7YXJndW1lbnRzOiBhcmd1bWVudHMsIHZhbHVlOiB0
aGlzLmdldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSl9KTsKKyAgICB9Cit9Citkb2N1bWVu
dC5kZWZpbmVDdXN0b21FbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVu
dCk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgYXJndW1lbnRMaXN0ID0gW107
CisKKyAgICBpbnN0YW5jZS5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgJ2ZvbycpOworICAgIGFzc2Vy
dF9lcXVhbHMoaW5zdGFuY2UuZ2V0QXR0cmlidXRlKCd0aXRsZScpLCAnZm9vJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhcmd1bWVudExpc3QubGVuZ3RoLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFy
Z3VtZW50TGlzdFswXS52YWx1ZSwgJ2ZvbycpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXJn
dW1lbnRMaXN0WzBdLmFyZ3VtZW50cywgWyd0aXRsZScsIG51bGwsICdmb28nLCBudWxsXSk7CisK
KyAgICBpbnN0YW5jZS5yZW1vdmVBdHRyaWJ1dGUoJ3RpdGxlJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhpbnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyksIG51bGwpOworICAgIGFzc2VydF9lcXVh
bHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMik7CisgICAgYXNzZXJ0X2VxdWFscyhhcmd1bWVudExp
c3RbMV0udmFsdWUsIG51bGwpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXJndW1lbnRMaXN0
WzFdLmFyZ3VtZW50cywgWyd0aXRsZScsICdmb28nLCBudWxsLCBudWxsXSk7CisKK30sICdzZXRB
dHRyaWJ1dGUgYW5kIHJlbW92ZUF0dHJpYnV0ZSBtdXN0IGVucXVldWUgYW5kIGludm9rZSBhdHRy
aWJ1dGVDaGFuZ2VkQ2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGlu
c3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAg
ICBhcmd1bWVudExpc3QgPSBbXTsKKworICAgIGluc3RhbmNlLnNldEF0dHJpYnV0ZU5TKCdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICd0aXRsZScsICdoZWxsbycpOworICAgIGFzc2VydF9l
cXVhbHMoaW5zdGFuY2UuZ2V0QXR0cmlidXRlKCd0aXRsZScpLCAnaGVsbG8nKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGFyZ3VtZW50TGlzdC5sZW5ndGgsIDEpOworICAgIGFzc2VydF9lcXVhbHMoYXJn
dW1lbnRMaXN0WzBdLnZhbHVlLCAnaGVsbG8nKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGFy
Z3VtZW50TGlzdFswXS5hcmd1bWVudHMsIFsndGl0bGUnLCBudWxsLCAnaGVsbG8nLCAnaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmcnXSk7CisKKyAgICBpbnN0YW5jZS5yZW1vdmVBdHRyaWJ1dGVO
UygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAndGl0bGUnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGluc3RhbmNlLmdldEF0dHJpYnV0ZSgndGl0bGUnKSwgbnVsbCk7CisgICAgYXNzZXJ0X2Vx
dWFscyhhcmd1bWVudExpc3QubGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50
TGlzdFsxXS52YWx1ZSwgbnVsbCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhcmd1bWVudExp
c3RbMV0uYXJndW1lbnRzLCBbJ3RpdGxlJywgJ2hlbGxvJywgbnVsbCwgJ2h0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnJ10pOworCit9LCAnc2V0QXR0cmlidXRlTlMgYW5kIHJlbW92ZUF0dHJpYnV0
ZU5TIG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaycpOwor
Cit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFyZ3VtZW50TGlzdCA9IFtdOworCisg
ICAgdmFyIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUoJ2lkJyk7CisgICAgYXR0ci52
YWx1ZSA9ICdiYXInOworICAgIGluc3RhbmNlLnNldEF0dHJpYnV0ZU5vZGUoYXR0cik7CisKKyAg
ICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmdldEF0dHJpYnV0ZSgnaWQnKSwgJ2JhcicpOworICAg
IGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMSk7CisgICAgYXNzZXJ0X2VxdWFs
cyhhcmd1bWVudExpc3RbMF0udmFsdWUsICdiYXInKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGFyZ3VtZW50TGlzdFswXS5hcmd1bWVudHMsIFsnaWQnLCBudWxsLCAnYmFyJywgbnVsbF0pOwor
CisgICAgaW5zdGFuY2UucmVtb3ZlQXR0cmlidXRlTm9kZShhdHRyKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGluc3RhbmNlLmdldEF0dHJpYnV0ZSgnaWQnKSwgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFs
cyhhcmd1bWVudExpc3QubGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50TGlz
dFsxXS52YWx1ZSwgbnVsbCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhcmd1bWVudExpc3Rb
MV0uYXJndW1lbnRzLCBbJ2lkJywgJ2JhcicsIG51bGwsIG51bGxdKTsKKworfSwgJ3NldEF0dHJp
YnV0ZU5vZGUgYW5kIHJlbW92ZUF0dHJpYnV0ZU5TIG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGF0
dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIg
aW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOwor
ICAgIGFyZ3VtZW50TGlzdCA9IFtdOworCisgICAgdmFyIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVB
dHRyaWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAncicpOworICAgIGF0dHIu
dmFsdWUgPSAnMTAwJzsKKyAgICBpbnN0YW5jZS5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpOworCisg
ICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ3InKSwgJzEwMCcpOworICAg
IGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMSk7CisgICAgYXNzZXJ0X2VxdWFs
cyhhcmd1bWVudExpc3RbMF0udmFsdWUsICcxMDAnKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGFyZ3VtZW50TGlzdFswXS5hcmd1bWVudHMsIFsncicsIG51bGwsICcxMDAnLCAnaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmcnXSk7CisKKyAgICBpbnN0YW5jZS5yZW1vdmVBdHRyaWJ1dGVOb2Rl
KGF0dHIpOworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UuZ2V0QXR0cmlidXRlKCdyJyksIG51
bGwpOworICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMik7CisgICAgYXNz
ZXJ0X2VxdWFscyhhcmd1bWVudExpc3RbMV0udmFsdWUsIG51bGwpOworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoYXJndW1lbnRMaXN0WzFdLmFyZ3VtZW50cywgWydyJywgJzEwMCcsIG51bGwsICdo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyddKTsKKworfSwgJ3NldEF0dHJpYnV0ZU5vZGUgYW5k
IHJlbW92ZUF0dHJpYnV0ZU5TIG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGF0dHJpYnV0ZUNoYW5n
ZWRDYWxsYmFjaycpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmctZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRz
L2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWlu
Zy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACisKK1BBU1Mgc2V0
QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1dGUgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2UgYXR0
cmlidXRlQ2hhbmdlZENhbGxiYWNrIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1l
bGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvbGlm
ZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DdXN0b20gRWxlbWVu
dHM6IExpZmVjeWNsZSBjYWxsYmFjayBtdXN0IGJlIGludm9rZWQgYmVmb3JlIHJldHVybmluZyB0
byBhdXRob3Igc2NyaXB0czwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9z
dWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFz
c2VydCIgY29udGVudD0iTGlmZWN5Y2xlIGNhbGxiYWNrcyBtdXN0IGJlIGludm9rZWQgYmVmb3Jl
IHJldHVybmluZyB0byBhdXRob3Igc2NyaXB0cyI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvY3VzdG9tLyNlbnF1ZXVpbmct
YW5kLWludm9raW5nLWNhbGxiYWNrcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVm
PScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2NsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRl
bmRzIEhUTUxFbGVtZW50IHsKKyAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soLi4uYXJncykg
eworICAgICAgICB0aGlzLmhhbmRsZXIoLi4uYXJncyk7CisgICAgfQorCisgICAgaGFuZGxlcigp
IHsgfQorfQorZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQn
LCBNeUN1c3RvbUVsZW1lbnQpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFu
Y2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIHZh
ciBhbm90aGVySW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxl
bWVudCcpOworCisgICAgdmFyIGNhbGxiYWNrT3JkZXIgPSBbXTsKKyAgICBpbnN0YW5jZS5oYW5k
bGVyID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjYWxsYmFja09yZGVyLnB1c2goW3RoaXMsICdi
ZWdpbiddKTsKKyAgICAgICAgYW5vdGhlckluc3RhbmNlLnNldEF0dHJpYnV0ZSgnZGF0YS10aXRs
ZScsICdiYXonKTsKKyAgICAgICAgY2FsbGJhY2tPcmRlci5wdXNoKFt0aGlzLCAnZW5kJ10pOwor
ICAgIH0KKyAgICBhbm90aGVySW5zdGFuY2UuaGFuZGxlciA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgY2FsbGJhY2tPcmRlci5wdXNoKFt0aGlzLCAnYmVnaW4nXSk7CisgICAgICAgIGNhbGxiYWNr
T3JkZXIucHVzaChbdGhpcywgJ2VuZCddKTsKKyAgICB9CisKKyAgICBpbnN0YW5jZS5zZXRBdHRy
aWJ1dGUoJ3RpdGxlJywgJ2ZvbycpOworICAgIGFzc2VydF9lcXVhbHMoY2FsbGJhY2tPcmRlci5s
ZW5ndGgsIDQpOworCisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxsYmFja09yZGVyWzBdLCBb
aW5zdGFuY2UsICdiZWdpbiddKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxiYWNrT3Jk
ZXJbMV0sIFthbm90aGVySW5zdGFuY2UsICdiZWdpbiddKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKGNhbGxiYWNrT3JkZXJbMl0sIFthbm90aGVySW5zdGFuY2UsICdlbmQnXSk7CisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhjYWxsYmFja09yZGVyWzNdLCBbaW5zdGFuY2UsICdlbmQnXSk7CisK
K30sICdzZXRBdHRyaWJ1dGUgYW5kIHJlbW92ZUF0dHJpYnV0ZSBtdXN0IGVucXVldWUgYW5kIGlu
dm9rZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2snKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272844</attachid>
            <date>2016-03-04 01:59:03 -0800</date>
            <delta_ts>2016-03-04 03:03:39 -0800</delta_ts>
            <desc>Fix GTK/EFL builds</desc>
            <filename>bug-155011-20160304015849.patch</filename>
            <type>text/plain</type>
            <size>40718</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE2LTAzLTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZv
ciBhdHRyaWJ1dGVDaGFuZ2VkIGxpZmVjeWNsZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDExCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGF0dHJp
YnV0ZUNoYW5nZWRDYWxsYmFjayBpbiBzZXRBdHRyaWJ1dGUsIHJlbW92ZUF0dHJpYnV0ZSwgc2V0
QXR0cmlidXRlTlMsCisgICAgICAgIHJlbW90ZUF0dHJpYnV0ZU5TLCBzZXRBdHRyaWJ1dGVOb2Rl
LCBhbmQgcmVtb3ZlQXR0cmlidXRlTlMuIFRoZXJlIGFyZSBtYW55IG90aGVyIERPTSBBUElzIHRo
YXQKKyAgICAgICAgY291bGQgbW9kaWZ5IGF0dHJpYnV0ZXMgYnV0IHdlIHdvdWxkIGFubm90YXRl
IHRob3NlIEFQSXMgaW4gYSBzZXBhcmF0ZSBwYXRjaCB0byBsaW1pdCB0aGUgc2NvcGUKKyAgICAg
ICAgb2YgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gaW52b2tlIHRoZSBsaWZl
Y3ljbGUgY2FsbGJhY2sgcmlnaHQgYmVmb3JlIHJldHVybmluZyB0byB0aGUgYXV0aG9yIHNjcmlw
dCwgYWxsb2NhdGUKKyAgICAgICAgYW4gaW5zdGFuY2Ugb2YgQ3VzdG9tRWxlbWVudExpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjayBpbiBlYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucycgYmluZGluZyBjb2Rl
LgorICAgICAgICBUaGUgc3RhY2sgb2JqZWN0J3MgZGVzdHJ1Y3RvciBpbnZva2VzIGFsbCBjYWxs
YmFja3MgZW5xdWV1ZWQgYnkgdGhlIERPTSBBUEkgaWYgdGhlcmUgYXJlIGFueS4KKworICAgICAg
ICBTcGVjOiBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8j
ZGZuLWF0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL2F0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
OmF0dHJpYnV0ZUNoYW5nZWQpOiBBZGRlZC4gSW52b2tlcyBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJh
Y2suCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChK
U01haW5UaHJlYWROdWxsU3RhdGUpOiBBbGxvY2F0ZSBhbiBpbnN0YW5jZSBvZiBDdXN0b21FbGVt
ZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGluIEdPYmplY3QKKyAgICAgICAgYW5kIE9iamVj
dGl2ZS1DIGJpbmRpbmcgY29kZSBmb3IgY29uc2lzdGVuY3kgd2l0aCBKYXZhU2NyaXB0LiBXZSBj
YW4ndCBkbyB0aGlzIGluIEphdmFTY3JpcHQKKyAgICAgICAgYmVjYXVzZSB0aGVyZSBpcyBubyBS
QUlJIG9iamVjdCBhbGwgZnVuY3Rpb25zLCBnZXR0ZXJzLCBhbmQgc2V0dGVycyBhbGxvY2F0ZSAo
Zm9yIGEgZ29vZCByZWFzb24pLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogR2VuZXJhdGUg
YW4gaW5zdGFuY2Ugb2YgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayB3aGVu
CisgICAgICAgIE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGlzIHNwZWNpZmllZCBhcyBh
biBleHRlbmRlZCBJREwgYXR0cmlidXRlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy50eHQ6IEFkZGVkIE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNMaWZlY3lj
bGVQcm9jZXNzaW5nU3RhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbDogQWRkZWQgYSB0ZXN0IGZvciBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFjay4K
KworICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6IEVucXVl
dWUgYXR0cmlidXRlQ2hhbmdlZCBjYWxsYmFjayBpZiB0aGUgY29udGV4dCBvYmplY3QKKyAgICAg
ICAgaXMgYSBjdXN0b20gZWxlbWVudCBhbmQgdGhlcmUgaXMgYSBDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrIGFsbG9jYXRlZCBpbiB0aGUgc3RhY2suCisgICAgICAgICogZG9t
L0VsZW1lbnQuaWRsOgorCisgICAgICAgICogZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpZmVjeWNsZVF1ZXVlSXRlbSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGlmZWN5Y2xlUXVldWVJdGVtOjpMaWZlY3ljbGVRdWV1ZUl0ZW0p
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpZmVjeWNsZVF1ZXVlSXRlbTo6aW52b2tlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjpMaWZlY3lj
bGVDYWxsYmFja1F1ZXVlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxs
YmFja1F1ZXVlOjp+TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRDYWxs
YmFjayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6
aW52b2tlQWxsKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVldWUpOiBBZGRlZC4gQXMgbm90ZWQg
aW4gRklYTUUsCisgICAgICAgIHRoZSBlYXJseSBleGl0IGluIHRoZSBjb2RlIGlzIG5lY2Vzc2Fy
eSBvbmx5IGJlY2F1c2Ugd2UgaGF2ZW4ndCBhZGRlZCBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjaworICAgICAgICBpbiBhbGwgcGxhY2VzLiBJdCBzaG91bGQgZ28gYXdheSBpbiBhIGZvbGxv
dyB1cCBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9j
ZXNzaW5nU3RhY2s6OnByb2Nlc3NRdWV1ZSk6IEFkZGVkLgorICAgICAgICAqIGRvbS9MaWZlY3lj
bGVDYWxsYmFja1F1ZXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayk6IFRoaXMgaXMgYSBsaWdodCB3ZWlnaHQgUkFJSSBv
YmplY3QgdGhlIGJpbmRpbmcKKyAgICAgICAgY29kZSB3aWxsIGFsbG9jYXRlIGluIG9yZGVyIHRv
IHF1ZXVlIHVwIGxpZmVjeWNsZSBjYWxsYmFja3MuIFdlIGRvbid0IHVzZSBSZWYgb3Igc3RkOjp1
bmlxdWVfcHRyCisgICAgICAgIGluIG1fcXVldWUgdG8gYXZvaWQgZ2VuZXJhdGluZyB0aGUgY29k
ZSB0byBkZXN0cnVjdCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlIGV2ZXJ5d2hlcmUuCisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjpDdXN0b21F
bGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjp+Q3VzdG9tRWxlbWVudExp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6aGFzQ3VycmVudFByb2Nlc3NpbmdTdGFj
ayk6IEFkZGVkLgorCiAyMDE2LTAzLTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBj
cmYuY2Fub24uZnI+CiAKICAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBUaHJlYWRhYmxl
TG9hZGVyIGFuZCByZWxhdGl2ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
OTc1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1Miw2ICsxNDUyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwCiAgICAgZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAK
ICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAKKyAgICBkb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZS5jcHAKICAgICBkb20vTGl2ZU5vZGVMaXN0LmNwcAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5j
cHAKICAgICBkb20vTWVzc2FnZUV2ZW50LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk3NTUxKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00MDE3LDYgKzQwMTcsNyBAQAogCQk5QjUzMkVBMzFCQTkyODU3MDAzOEE4Mjcg
LyogU2xvdEFzc2lnbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUI1MzJFQTExQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50LmNw
cCAqLzsgfTsKIAkJOUI1MzJFQTQxQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjUzMkVBMjFC
QTkyODU3MDAzOEE4MjcgLyogU2xvdEFzc2lnbm1lbnQuaCAqLzsgfTsKIAkJOUI1NUVFRTkxQjNF
ODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NUVFRTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNv
Y29hLm1tICovOyB9OworCQk5QjU2QzlBQTFDODkzMjlBMDBDNDU2REYgLyogTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QjU2QzlBOTFDODkzMjlBMDBDNDU2REYgLyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5j
cHAgKi87IH07CiAJCTlCNjlEM0I0MUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQz
QjIxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5jcHAgKi87IH07CiAJCTlCNjlE
M0I1MUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNjlEM0IzMUI5OEZGRTkwMEUzNTEyQiAv
KiBIVE1MU2xvdEVsZW1lbnQuaCAqLzsgfTsKIAkJOUI2OUQzQjgxQjk5MTAwNzAwRTM1MTJCIC8q
IEpTSFRNTFNsb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCNjlEM0I2MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVu
dC5jcHAgKi87IH07CkBAIC0xMTY5NCw2ICsxMTY5NSw4IEBACiAJCTlCNTMyRUEyMUJBOTI4NTcw
MDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTbG90QXNzaWdubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjU1
RUVFODFCM0U4ODk4MDA1MzQyQkMgLyogRWRpdG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUI1NUVFRUExQjNGM0ZFRjAwNTM0MkJDIC8qIEVkaXRvckNvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVkaXRvckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExpZmVjeWNsZUNhbGxiYWNrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOUI1NkM5QTkxQzg5MzI5QTAwQzQ1NkRGIC8qIExpZmVjeWNsZUNhbGxiYWNr
UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNjlEM0Ix
MUI5OEZGMEEwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEhUTUxTbG90RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCNjlEM0IyMUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFNsb3RFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI2OUQzQjMxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxT
bG90RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MU2xvdEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MzA0LDYgKzI0MzA3LDgg
QEAKIAkJCQk4NTAzMUIyRDBBNDRFRkM3MDBGOTkyRTAgLyogS2V5Ym9hcmRFdmVudC5jcHAgKi8s
CiAJCQkJODUwMzFCMkUwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuaCAqLywKIAkJ
CQkxNENGN0MyMDA5RjcxMTA2MDBFQjM2NjUgLyogS2V5Ym9hcmRFdmVudC5pZGwgKi8sCisJCQkJ
OUI1NkM5QTkxQzg5MzI5QTAwQzQ1NkRGIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwICov
LAorCQkJCTlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVl
LmggKi8sCiAJCQkJQkM3RkE2MUUwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAg
Ki8sCiAJCQkJQkM3RkE2MUYwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oICovLAog
CQkJCUJDOUE2MTQ0MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2RvbV9leGNlcHRpb25zLnBsICov
LApAQCAtMjk4NDksNiArMjk4NTQsNyBAQAogCQkJCUE4RUE3Q0FEMEExOTJCOUMwMEE4RUY1RiAv
KiBIVE1MUHJlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg3MjEyMjg4M0U5
MDBCODFGRjggLyogSFRNTFByZWxvYWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE0
M0JGNTk4MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTlCNTZDOUFBMUM4OTMyOUEwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFj
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGN0E1MEExNTY5NzgwMDBBNDIzNCAv
KiBIVE1MUXVvdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RDIyM0ZEMTZCNTJF
NEUwMDE1NzI4OCAvKiBIVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTg3MURDMjIwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAxOTc1NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDUwIEBAIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UKICAgICByZXR1cm4gd3JhcHBlZEVsZW1lbnQ7CiB9CiAKK3ZvaWQgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlOjphdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7CisgICAgaWYgKCFjYW5J
bnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWY8SlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1f
aXNvbGF0ZWRXb3JsZC0+dm0oKSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4
dCwgKm1faXNvbGF0ZWRXb3JsZCk7CisgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpOworCisgICAgSlNPYmplY3QqIGpzRWxlbWVudCA9IGFzT2JqZWN0KHRv
SlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgJmVsZW1lbnQpKTsKKworICAgIFByb3BlcnR5TmFtZSBh
dHRyaWJ1dGVDaGFuZ2VkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJhdHRyaWJ1dGVD
aGFuZ2VkQ2FsbGJhY2siKSk7CisgICAgSlNWYWx1ZSBjYWxsYmFjayA9IGpzRWxlbWVudC0+Z2V0
KHN0YXRlLCBhdHRyaWJ1dGVDaGFuZ2VkKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVS
SSgpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQoanNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsKKyAgICBh
cmdzLmFwcGVuZChvbGRWYWx1ZSA9PSBudWxsQXRvbSA/IGpzTnVsbCgpIDoganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIG9sZFZhbHVlKSk7CisgICAgYXJncy5hcHBlbmQobmV3VmFsdWUgPT0gbnVs
bEF0b20gPyBqc051bGwoKSA6IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBuZXdWYWx1ZSkpOwor
ICAgIGFyZ3MuYXBwZW5kKG5hbWVzcGFjZVVSSSA9PSBudWxsQXRvbSA/IGpzTnVsbCgpIDoganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkpKTsKKwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRF
eGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxE
YXRhKTsKKworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgIEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZTo6Y2FsbChzdGF0ZSwgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwg
anNFbGVtZW50LCBhcmdzLCBleGNlcHRpb24pOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCBjb250ZXh0KTsKKworICAgIGlmIChleGNlcHRp
b24pCisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgZXhjZXB0aW9uKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCShyZXZpc2lvbiAx
OTc1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBET01XcmFwcGVy
V29ybGQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CiBjbGFzcyBN
YXRoTUxFbGVtZW50OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFNWR0VsZW1lbnQ7CiAK
IGNsYXNzIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZT4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CkBAIC02Miw2
ICs2Myw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNob3VsZENsZWFyRXhjZXB0aW9uIHsg
Q2xlYXIsIERvTm90Q2xlYXIgfTsKICAgICBSZWZQdHI8RWxlbWVudD4gY29uc3RydWN0RWxlbWVu
dChjb25zdCBBdG9taWNTdHJpbmcmLCBTaG91bGRDbGVhckV4Y2VwdGlvbik7CiAKKyAgICB2b2lk
IGF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKKwog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOyB9CiAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IoKSB7IHJldHVybiBtX2Nv
bnN0cnVjdG9yLmdldCgpOyB9CiAKQEAgLTcyLDYgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIG11
dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fY29uc3RydWN0b3I7CiAgICAgUmVmUHRy
PERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOworICAgIFZlY3RvcjxSZWY8RWxlbWVu
dD4sIDE+IG1fY29uc3RydWN0aW9uU3RhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaAkocmV2aXNpb24gMTk3NTUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNkZWZpbmUgSlNNYWluVGhyZWFkRXhlY1N0YXRlX2gKIAogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0NvbXBsZXRpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL01pY3JvdGFzay5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xNDYsNiArMTQ3LDkgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIEpTQzo6RXhlY1N0YXRlKiBtX3ByZXZpb3VzU3RhdGU7CisjaWYgRU5BQkxF
KENVU1RPTV9FTEVNRU5UUykKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrIG1fbGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworI2VuZGlmCiB9OwogCiBKU0M6OkpTVmFs
dWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERh
dGEmLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJl
dmlzaW9uIDE5NzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEzLDYgKzI5MTMsMTMgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRp
bWUvRXJyb3IuaD4ifSA9IDE7CiAKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIn0p
IHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiBFTkFCTEUoQ1VTVE9N
X0VMRU1FTlRTKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIjZW5kaWZcbiIpOworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkxpZmVjeWNs
ZUNhbGxiYWNrUXVldWUuaCJ9ID0gMTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYg
KCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICBpZiAoJGlzQ3VzdG9tKSB7
CiAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxD
b250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CShyZXZpc2lvbiAxOTc1NTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBAIEpTTGVnYWN5UGFyZW50PSoKIExlbmllbnRU
aGlzCiBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCiBOYW1lZENvbnN0cnVjdG9yPSoKK05lZWRzTGlm
ZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrCiBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMK
IE5ld09iamVjdAogTm9JbnRlcmZhY2VPYmplY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDE5NzU1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiwxMCBAQCBlbnVtIF9vcHRpb25hbCB7ICIiLCAiT3B0aW9u
YWxWYWx1ZTEiLCAiCiAgICAgLy8gUHV0Rm9yd2FyZHMKICAgICBbUHV0Rm9yd2FyZHM9bmFtZV0g
cmVhZG9ubHkgYXR0cmlidXRlIFRlc3ROb2RlIHB1dEZvcndhcmRzQXR0cmlidXRlOwogICAgIFtQ
dXRGb3J3YXJkcz1uYW1lXSByZWFkb25seSBhdHRyaWJ1dGUgVGVzdE5vZGU/IHB1dEZvcndhcmRz
TnVsbGFibGVBdHRyaWJ1dGU7CisKKyNpZiBkZWZpbmVkKFRFU1RJTkdfSlMpCisgICAgW05lZWRz
TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIG1ldGhvZFdpdGhOZWVkc0xpZmVjeWNsZVBy
b2Nlc3NpbmdTdGFjaygpOworI2VuZGlmCiB9OwogCiAvLyBUaGUgZm9sbG93aW5nIGNvbW1lbnQg
c2hvdWxkIG5vdCBnZW5lcmF0ZSBhbnkgY29kZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAx
OTc1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpTVGVz
dE9iai5oIgogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIkpTYm9vbC5oIgor
I2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAjaW5jbHVkZSAiU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmLmgiCkBAIC0xODUsNiArMTg2LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEpT
Qzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3Vt
ZW50KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2soSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0
YXRlKik7CkBAIC03MTMsNiArNzE1LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE9ialBybwogICAgIHsgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIs
IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aEZsb2F0QXJndW1lbnQpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidGVzdFByb21p
c2VGdW5jdGlvbldpdGhFeGNlcHRpb24iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24pLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iiwg
SlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25X
aXRoT3B0aW9uYWxJbnRBcmd1bWVudCksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtZXRo
b2RXaXRoTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2siLCBKU0M6OkZ1bmN0aW9uLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNr
KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImVudHJpZXMiLCBKU0M6OkZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJrZXlzIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbktleXMpLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidmFsdWVzIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTUwMjEsNiArNTAy
NCwyMSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOZWVkc0xp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjayhFeGVjU3RhdGUqIHN0YXRlKQoreworI2lmIEVOQUJMRShD
VVNUT01fRUxFTUVOVFMpCisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFj
ayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworI2VuZGlmCisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CisgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2siKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGltcGwu
bWV0aG9kV2l0aE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKCk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogdXNpbmcgVGVzdE9iakl0ZXJhdG9y
ID0gSlNLZXlWYWx1ZUl0ZXJhdG9yPEpTVGVzdE9iaj47CiB1c2luZyBUZXN0T2JqSXRlcmF0b3JQ
cm90b3R5cGUgPSBKU0tleVZhbHVlSXRlcmF0b3JQcm90b3R5cGU8SlNUZXN0T2JqPjsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAxOTc1NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5
Myw3IEBACiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCIKICNpbmNsdWRl
ICJJbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuY3Bw
IgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwIgogI2luY2x1ZGUgIkxpdmVO
b2RlTGlzdC5jcHAiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5uZWwuY3BwIgogI2luY2x1ZGUgIk1l
c3NhZ2VFdmVudC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTc1
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDbGllbnRSZWN0TGlzdC5oIgogI2luY2x1ZGUgIkNv
bXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlQWxn
b3JpdGhtcy5oIgorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oIgogI2luY2x1
ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJE
b2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaCIKQEAgLTYxLDYgKzYyLDcgQEAKICNpbmNsdWRlICJJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxi
YWNrUXVldWUuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cC5oIgogI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCkBAIC0x
MjYyLDYgKzEyNjQsMTMgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YQogCiAgICAgZG9jdW1lbnQoKS5pbmNET01UcmVlVmVyc2lvbigpOwogCisgICAgaWYgKFVOTElL
RUxZKGlzQ3VzdG9tRWxlbWVudCgpKSkgeworICAgICAgICBhdXRvKiBkZWZpbml0aW9ucyA9IGRv
Y3VtZW50KCkuY3VzdG9tRWxlbWVudERlZmluaXRpb25zKCk7CisgICAgICAgIGF1dG8qIGludGVy
ZmFjZSA9IGRlZmluaXRpb25zLT5maW5kSW50ZXJmYWNlKHRhZ1FOYW1lKCkpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChpbnRlcmZhY2UpOworICAgICAgICBMaWZlY3ljbGVDYWxsYmFja1F1ZXVl
OjplbnF1ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCp0aGlzLCAqaW50ZXJmYWNlLCBuYW1l
LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgIH0KKwogICAgIGlmICh2YWx1ZUlzU2FtZUFzQmVm
b3JlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlz
aW9uIDE5NzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTIgKzI4LDE0IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
Zz8gdGFnTmFtZTsKIAogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlKFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBh
cmFtZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGUoW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB2YWx1
ZSk7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBET01TdHJpbmcgbmFtZSk7CisKKyAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBS
YWlzZXNFeGNlcHRpb24sIE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrXQorICAgIHZvaWQg
c2V0QXR0cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUs
IFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHZhbHVlKTsKKworICAgIFtO
ZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFja10gdm9pZCByZW1vdmVBdHRyaWJ1dGUoW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSk7CiAgICAgQXR0ciBnZXRBdHRy
aWJ1dGVOb2RlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwot
ICAgIFtSYWlzZXNFeGNlcHRpb25dIEF0dHIgc2V0QXR0cmlidXRlTm9kZShbRGVmYXVsdD1VbmRl
ZmluZWRdIG9wdGlvbmFsIEF0dHIgbmV3QXR0cik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gQXR0
ciByZW1vdmVBdHRyaWJ1dGVOb2RlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgQXR0ciBv
bGRBdHRyKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdT
dGFja10gQXR0ciBzZXRBdHRyaWJ1dGVOb2RlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
QXR0ciBuZXdBdHRyKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc0xpZmVjeWNsZVByb2Nl
c3NpbmdTdGFja10gQXR0ciByZW1vdmVBdHRyaWJ1dGVOb2RlKFtEZWZhdWx0PVVuZGVmaW5lZF0g
b3B0aW9uYWwgQXR0ciBvbGRBdHRyKTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZF
X0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgW0ltcGxlbWVudGVkQXM9Z2V0RWxlbWVu
dHNCeVRhZ05hbWVGb3JPYmpDXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZShbRGVmYXVs
dD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKQEAgLTUwLDEwICs1MiwxMiBA
QAogICAgIC8vIERPTSBMZXZlbCAyIENvcmUKIAogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnNdIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlTlMoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBET01TdHJpbmcgbG9jYWxOYW1lKTsKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJz
LCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0QXR0cmlidXRlTlMoW0RlZmF1bHQ9VW5kZWZpbmVk
XSBvcHRpb25hbCBET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwKLSAgICAgICAgW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwKLSAgICAgICAgW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgdmFsdWUpOwotICAgIFtPYmpDTGVnYWN5
VW5uYW1lZFBhcmFtZXRlcnNdIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOworCisgICAgW09iakNMZWdhY3lVbm5hbWVk
UGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uLCBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFj
a10KKyAgICB2b2lkIHNldEF0dHJpYnV0ZU5TKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
RE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksCisgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgRE9NU3RyaW5nIHZhbHVlKTsKKworICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMs
IE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIHJlbW92ZUF0dHJpYnV0ZU5TKERP
TVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgbG9jYWxOYW1lKTsKIAogI2lmIGRlZmlu
ZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgW09i
akNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgSW1wbGVtZW50ZWRBcz1nZXRFbGVtZW50c0J5VGFn
TmFtZU5TRm9yT2JqQ10gTm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhvcHRpb25hbCBE
T01TdHJpbmcgbmFtZXNwYWNlVVJJLCBvcHRpb25hbCBET01TdHJpbmcgbG9jYWxOYW1lKTsKQEAg
LTYxLDcgKzY1LDcgQEAKICAgICBIVE1MQ29sbGVjdGlvbiBnZXRFbGVtZW50c0J5VGFnTmFtZU5T
KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIFtE
ZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAjZW5kaWYK
ICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSBBdHRyIGdldEF0dHJpYnV0ZU5vZGVO
UyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtS
YWlzZXNFeGNlcHRpb25dIEF0dHIgc2V0QXR0cmlidXRlTm9kZU5TKFtEZWZhdWx0PVVuZGVmaW5l
ZF0gb3B0aW9uYWwgQXR0ciBuZXdBdHRyKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZWVkc0xp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFja10gQXR0ciBzZXRBdHRyaWJ1dGVOb2RlTlMoW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCBBdHRyIG5ld0F0dHIpOwogICAgIGJvb2xlYW4gaGFzQXR0cmli
dXRlKERPTVN0cmluZyBuYW1lKTsKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSBi
b29sZWFuIGhhc0F0dHJpYnV0ZU5TKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3Ry
aW5nPyBuYW1lc3BhY2VVUkksIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5n
IGxvY2FsTmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFj
a1F1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5
Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oIgorCisjaWYg
RU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgorI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgPGhlYXAvSGVhcC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMaWZlY3ljbGVRdWV1
ZUl0ZW0geworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIEludmFsaWQs
CisgICAgICAgIEF0dHJpYnV0ZUNoYW5nZWQsCisgICAgfTsKKworICAgIExpZmVjeWNsZVF1ZXVl
SXRlbShFbGVtZW50JiBlbGVtZW50LCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGludGVyZmFj
ZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKKyAgICAgICAgOiBtX3R5
cGUoVHlwZTo6QXR0cmlidXRlQ2hhbmdlZCkKKyAgICAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkK
KyAgICAgICAgLCBtX2ludGVyZmFjZShpbnRlcmZhY2UpCisgICAgICAgICwgbV9hdHRyaWJ1dGVO
YW1lKGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICwgbV9vbGRWYWx1ZShvbGRWYWx1ZSkKKyAgICAg
ICAgLCBtX25ld1ZhbHVlKG5ld1ZhbHVlKQorICAgIHsgfQorCisgICAgdm9pZCBpbnZva2UoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpJbnZhbGlkKTsKKyAgICAgICAg
bV9pbnRlcmZhY2UtPmF0dHJpYnV0ZUNoYW5nZWQobV9lbGVtZW50LmdldCgpLCBtX2F0dHJpYnV0
ZU5hbWUsIG1fb2xkVmFsdWUsIG1fbmV3VmFsdWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBU
eXBlIG1fdHlwZSB7IFR5cGU6OkludmFsaWQgfTsKKyAgICBSZWY8RWxlbWVudD4gbV9lbGVtZW50
OworICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IG1faW50ZXJmYWNlOworICAgIFF1
YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGVOYW1lOworICAgIEF0b21pY1N0cmluZyBtX29sZFZhbHVl
OworICAgIEF0b21pY1N0cmluZyBtX25ld1ZhbHVlOworfTsKKworTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpCit7IH0KKworTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZTo6fkxpZmVjeWNsZUNhbGxiYWNrUXVldWUoKQoreworICAgIEFTU0VSVChtX2l0ZW1zLmlz
RW1wdHkoKSk7Cit9CisKK3ZvaWQgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUF0dHJp
YnV0ZUNoYW5nZWRDYWxsYmFjayhFbGVtZW50JiBlbGVtZW50LCBKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UmIGludGVyZmFjZSwKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Zh
bHVlKQoreworICAgIGlmIChhdXRvKiBxdWV1ZSA9IEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9j
ZXNzaW5nU3RhY2s6OmVuc3VyZUN1cnJlbnRRdWV1ZSgpKQorICAgICAgICBxdWV1ZS0+bV9pdGVt
cy5hcHBlbmQoTGlmZWN5Y2xlUXVldWVJdGVtKGVsZW1lbnQsIGludGVyZmFjZSwgYXR0cmlidXRl
TmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKSk7Cit9CisKK3ZvaWQgTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZTo6aW52b2tlQWxsKCkKK3sKKyAgICBWZWN0b3I8TGlmZWN5Y2xlUXVldWVJdGVtPiBpdGVt
czsKKyAgICBpdGVtcy5zd2FwKG1faXRlbXMpOworICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1z
KQorICAgICAgICBpdGVtLmludm9rZSgpOworfQorCitMaWZlY3ljbGVDYWxsYmFja1F1ZXVlKiBD
dXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVldWUo
KQoreworICAgIC8vIEZJWE1FOiBUaGlzIGVhcmx5IGV4aXQgaW5kaWNhdGVzIGEgYnVnIHRoYXQg
c29tZSBET00gQVBJIGlzIG1pc3NpbmcgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sKKyAg
ICBpZiAoIXNfY3VycmVudFByb2Nlc3NpbmdTdGFjaykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvKiYgcXVldWUgPSBzX2N1cnJlbnRQcm9jZXNzaW5nU3RhY2stPm1fcXVldWU7
CisgICAgaWYgKCFxdWV1ZSkgLy8gV2UgdXNlIGEgcmF3IHBvaW50ZXIgdG8gYXZvaWQgZ2VuZWFy
aW5nIGNvZGUgdG8gZGVsZXRlIGl0IGluIH5DdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2lu
Z1N0YWNrLgorICAgICAgICBxdWV1ZSA9IG5ldyBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOworICAg
IHJldHVybiBxdWV1ZTsKK30KKworQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFj
ayogQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6c19jdXJyZW50UHJvY2Vz
c2luZ1N0YWNrID0gbnVsbHB0cjsKKwordm9pZCBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vz
c2luZ1N0YWNrOjpwcm9jZXNzUXVldWUoKQoreworICAgIEFTU0VSVChtX3F1ZXVlKTsKKyAgICBt
X3F1ZXVlLT5pbnZva2VBbGwoKTsKKyAgICBkZWxldGUgbV9xdWV1ZTsKKyAgICBtX3F1ZXVlID0g
bnVsbHB0cjsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9MaWZl
Y3ljbGVDYWxsYmFja1F1ZXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xp
ZmVjeWNsZUNhbGxiYWNrUXVldWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZV9oCisjZGVmaW5lIExpZmVjeWNsZUNhbGxiYWNr
UXVldWVfaAorCisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKworI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTsKK2NsYXNzIERv
Y3VtZW50OworY2xhc3MgRWxlbWVudDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CitjbGFzcyBMaWZl
Y3ljbGVRdWV1ZUl0ZW07CisKK2NsYXNzIExpZmVjeWNsZUNhbGxiYWNrUXVldWUgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKExpZmVjeWNsZUNhbGxiYWNrUXVldWUpOworcHVibGljOgorICAg
IExpZmVjeWNsZUNhbGxiYWNrUXVldWUoKTsKKyAgICB+TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgp
OworCisgICAgc3RhdGljIHZvaWQgZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhFbGVt
ZW50JiwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiwKKyAgICAgICAgY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3VmFsdWUpOworCisgICAgdm9pZCBpbnZva2VBbGwoKTsKKworcHJpdmF0ZToKKyAgICBWZWN0
b3I8TGlmZWN5Y2xlUXVldWVJdGVtPiBtX2l0ZW1zOworfTsKKworY2xhc3MgQ3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayB7CitwdWJsaWM6CisgICAgQ3VzdG9tRWxlbWVudExp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjaygpCisgICAgICAgIDogbV9wcmV2aW91c1Byb2Nlc3NpbmdT
dGFjayhzX2N1cnJlbnRQcm9jZXNzaW5nU3RhY2spCisgICAgeworICAgICAgICBzX2N1cnJlbnRQ
cm9jZXNzaW5nU3RhY2sgPSB0aGlzOworICAgIH0KKworICAgIH5DdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrKCkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWShtX3F1ZXVl
KSkKKyAgICAgICAgICAgIHByb2Nlc3NRdWV1ZSgpOworICAgICAgICBzX2N1cnJlbnRQcm9jZXNz
aW5nU3RhY2sgPSBtX3ByZXZpb3VzUHJvY2Vzc2luZ1N0YWNrOworICAgIH0KKworICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBhIHJlZmVyZW5jZSBvbmNlICJlbnN1cmUiIHN0YXJ0cyB0byB3
b3JrLgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlKiBl
bnN1cmVDdXJyZW50UXVldWUoKTsKKworICAgIHN0YXRpYyBib29sIGhhc0N1cnJlbnRQcm9jZXNz
aW5nU3RhY2soKSB7IHJldHVybiBzX2N1cnJlbnRQcm9jZXNzaW5nU3RhY2s7IH0KKworcHJpdmF0
ZToKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NRdWV1ZSgpOworCisgICAgTGlmZWN5
Y2xlQ2FsbGJhY2tRdWV1ZSogbV9xdWV1ZSB7IG51bGxwdHIgfTsKKyAgICBDdXN0b21FbGVtZW50
TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKiBtX3ByZXZpb3VzUHJvY2Vzc2luZ1N0YWNrOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5n
U3RhY2sqIHNfY3VycmVudFByb2Nlc3NpbmdTdGFjazsKK307CisKK30KKworI2VuZGlmCisKKyNl
bmRpZiAvLyBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlX2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzU1
MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDE2LTAzLTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZvciBhdHRyaWJ1dGVDaGFuZ2VkIGxpZmVjeWNsZSBjYWxs
YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
MDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSB0ZXN0IGZvciBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgYW5kIGEgdGVzdCBmb3IgdGhl
IHRpbWluZyBvZiBsaWZlY3ljbGUgY2FsbGJhY2tzIGluIGdlbmVyYWwuCisKKyAgICAgICAgKiBm
YXN0L2N1c3RvbS1lbGVtZW50cy9hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjay1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2F0dHJpYnV0ZS1jaGFu
Z2VkLWNhbGxiYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRz
L2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLmh0bWw6IEFk
ZGVkLgorCiAyMDE2LTAzLTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgREZHL0ZUTCBzaG91bGQgaW5saW5lIGFjY2Vzc2VzIHRvIFJlZ0V4cE9iamVjdDo6bV9s
YXN0SW5kZXgKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2F0dHJpYnV0
ZS1jaGFuZ2VkLWNhbGxiYWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjay1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9h
dHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2IEBACisKK1BBU1Mgc2V0QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1dGUgbXVz
dCBlbnF1ZXVlIGFuZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIAorUEFTUyBzZXRB
dHRyaWJ1dGVOUyBhbmQgcmVtb3ZlQXR0cmlidXRlTlMgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2Ug
YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIAorUEFTUyBzZXRBdHRyaWJ1dGVOb2RlIGFuZCByZW1v
dmVBdHRyaWJ1dGVOUyBtdXN0IGVucXVldWUgYW5kIGludm9rZSBhdHRyaWJ1dGVDaGFuZ2VkQ2Fs
bGJhY2sgCitQQVNTIHNldEF0dHJpYnV0ZU5vZGUgYW5kIHJlbW92ZUF0dHJpYnV0ZU5TIG11c3Qg
ZW5xdWV1ZSBhbmQgaW52b2tlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayAKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvYXR0cmlidXRlLWNoYW5nZWQtY2FsbGJhY2su
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9hdHRy
aWJ1dGUtY2hhbmdlZC1jYWxsYmFjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvYXR0cmlidXRlLWNoYW5nZWQtY2FsbGJhY2suaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVtZW50czogYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrPC90
aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFp
bHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJhdHRy
aWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgbXVzdCBiZSBlbnF1ZXVlZCB3aGVuZXZlciBjdXN0b20gZWxl
bWVudCdzIGF0dHJpYnV0ZSBpcyBhZGRlZCwgY2hhbmdlZCBvciByZW1vdmVkIj4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9j
dXN0b20vI2Rmbi1hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjayI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSdz
dHlsZXNoZWV0JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3ZhciBhcmd1bWVu
dExpc3QgPSBbXTsKK2NsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHsK
KyAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBu
YW1lc3BhY2UpIHsKKyAgICAgICAgYXJndW1lbnRMaXN0LnB1c2goe2FyZ3VtZW50czogYXJndW1l
bnRzLCB2YWx1ZTogdGhpcy5nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpfSk7CisgICAg
fQorfQorZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnLCBN
eUN1c3RvbUVsZW1lbnQpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2Ug
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFyZ3Vt
ZW50TGlzdCA9IFtdOworCisgICAgaW5zdGFuY2Uuc2V0QXR0cmlidXRlKCd0aXRsZScsICdmb28n
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmdldEF0dHJpYnV0ZSgndGl0bGUnKSwgJ2Zv
bycpOworICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMSk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhcmd1bWVudExpc3RbMF0udmFsdWUsICdmb28nKTsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGFyZ3VtZW50TGlzdFswXS5hcmd1bWVudHMsIFsndGl0bGUnLCBudWxsLCAnZm9v
JywgbnVsbF0pOworCisgICAgaW5zdGFuY2UucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpOworICAg
IGFzc2VydF9lcXVhbHMoaW5zdGFuY2UuZ2V0QXR0cmlidXRlKCd0aXRsZScpLCBudWxsKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50TGlzdC5sZW5ndGgsIDIpOworICAgIGFzc2VydF9lcXVh
bHMoYXJndW1lbnRMaXN0WzFdLnZhbHVlLCBudWxsKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGFyZ3VtZW50TGlzdFsxXS5hcmd1bWVudHMsIFsndGl0bGUnLCAnZm9vJywgbnVsbCwgbnVsbF0p
OworCit9LCAnc2V0QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1dGUgbXVzdCBlbnF1ZXVlIGFu
ZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkg
eworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1l
bGVtZW50Jyk7CisgICAgYXJndW1lbnRMaXN0ID0gW107CisKKyAgICBpbnN0YW5jZS5zZXRBdHRy
aWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAndGl0bGUnLCAnaGVsbG8nKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmdldEF0dHJpYnV0ZSgndGl0bGUnKSwgJ2hlbGxv
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhhcmd1bWVudExpc3QubGVuZ3RoLCAxKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGFyZ3VtZW50TGlzdFswXS52YWx1ZSwgJ2hlbGxvJyk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhhcmd1bWVudExpc3RbMF0uYXJndW1lbnRzLCBbJ3RpdGxlJywgbnVsbCwgJ2hl
bGxvJywgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJ10pOworCisgICAgaW5zdGFuY2UucmVt
b3ZlQXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3RpdGxlJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyksIG51bGwpOwor
ICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMik7CisgICAgYXNzZXJ0X2Vx
dWFscyhhcmd1bWVudExpc3RbMV0udmFsdWUsIG51bGwpOworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoYXJndW1lbnRMaXN0WzFdLmFyZ3VtZW50cywgWyd0aXRsZScsICdoZWxsbycsIG51bGwsICdo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyddKTsKKworfSwgJ3NldEF0dHJpYnV0ZU5TIGFuZCBy
ZW1vdmVBdHRyaWJ1dGVOUyBtdXN0IGVucXVldWUgYW5kIGludm9rZSBhdHRyaWJ1dGVDaGFuZ2Vk
Q2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhcmd1bWVudExp
c3QgPSBbXTsKKworICAgIHZhciBhdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdpZCcp
OworICAgIGF0dHIudmFsdWUgPSAnYmFyJzsKKyAgICBpbnN0YW5jZS5zZXRBdHRyaWJ1dGVOb2Rl
KGF0dHIpOworCisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ2lkJyks
ICdiYXInKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50TGlzdC5sZW5ndGgsIDEpOworICAg
IGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0WzBdLnZhbHVlLCAnYmFyJyk7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhhcmd1bWVudExpc3RbMF0uYXJndW1lbnRzLCBbJ2lkJywgbnVsbCwgJ2Jh
cicsIG51bGxdKTsKKworICAgIGluc3RhbmNlLnJlbW92ZUF0dHJpYnV0ZU5vZGUoYXR0cik7Cisg
ICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ2lkJyksIG51bGwpOworICAg
IGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMik7CisgICAgYXNzZXJ0X2VxdWFs
cyhhcmd1bWVudExpc3RbMV0udmFsdWUsIG51bGwpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
YXJndW1lbnRMaXN0WzFdLmFyZ3VtZW50cywgWydpZCcsICdiYXInLCBudWxsLCBudWxsXSk7CisK
K30sICdzZXRBdHRyaWJ1dGVOb2RlIGFuZCByZW1vdmVBdHRyaWJ1dGVOUyBtdXN0IGVucXVldWUg
YW5kIGludm9rZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAo
KSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9t
LWVsZW1lbnQnKTsKKyAgICBhcmd1bWVudExpc3QgPSBbXTsKKworICAgIHZhciBhdHRyID0gZG9j
dW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3In
KTsKKyAgICBhdHRyLnZhbHVlID0gJzEwMCc7CisgICAgaW5zdGFuY2Uuc2V0QXR0cmlidXRlTm9k
ZShhdHRyKTsKKworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UuZ2V0QXR0cmlidXRlKCdyJyks
ICcxMDAnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50TGlzdC5sZW5ndGgsIDEpOworICAg
IGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0WzBdLnZhbHVlLCAnMTAwJyk7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhhcmd1bWVudExpc3RbMF0uYXJndW1lbnRzLCBbJ3InLCBudWxsLCAnMTAw
JywgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJ10pOworCisgICAgaW5zdGFuY2UucmVtb3Zl
QXR0cmlidXRlTm9kZShhdHRyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmdldEF0dHJp
YnV0ZSgncicpLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50TGlzdC5sZW5ndGgs
IDIpOworICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0WzFdLnZhbHVlLCBudWxsKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGFyZ3VtZW50TGlzdFsxXS5hcmd1bWVudHMsIFsncicsICcx
MDAnLCBudWxsLCAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnXSk7CisKK30sICdzZXRBdHRy
aWJ1dGVOb2RlIGFuZCByZW1vdmVBdHRyaWJ1dGVOUyBtdXN0IGVucXVldWUgYW5kIGludm9rZSBh
dHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2snKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJh
Y2stdGltaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1j
YWxsYmFjay10aW1pbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBA
QAorCitQQVNTIHNldEF0dHJpYnV0ZSBhbmQgcmVtb3ZlQXR0cmlidXRlIG11c3QgZW5xdWV1ZSBh
bmQgaW52b2tlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayAKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxs
YmFjay10aW1pbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
Q3VzdG9tIEVsZW1lbnRzOiBMaWZlY3ljbGUgY2FsbGJhY2sgbXVzdCBiZSBpbnZva2VkIGJlZm9y
ZSByZXR1cm5pbmcgdG8gYXV0aG9yIHNjcmlwdHM8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9y
IiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8
bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IkxpZmVjeWNsZSBjYWxsYmFja3MgbXVzdCBiZSBp
bnZva2VkIGJlZm9yZSByZXR1cm5pbmcgdG8gYXV0aG9yIHNjcmlwdHMiPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3Rv
bS8jZW5xdWV1aW5nLWFuZC1pbnZva2luZy1jYWxsYmFja3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0nc3R5
bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCitjbGFzcyBNeUN1c3Rv
bUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgYXR0cmlidXRlQ2hhbmdlZENhbGxi
YWNrKC4uLmFyZ3MpIHsKKyAgICAgICAgdGhpcy5oYW5kbGVyKC4uLmFyZ3MpOworICAgIH0KKwor
ICAgIGhhbmRsZXIoKSB7IH0KK30KK2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ215LWN1
c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKwordGVzdChmdW5jdGlvbiAoKSB7Cisg
ICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1l
bnQnKTsKKyAgICB2YXIgYW5vdGhlckluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
bXktY3VzdG9tLWVsZW1lbnQnKTsKKworICAgIHZhciBjYWxsYmFja09yZGVyID0gW107CisgICAg
aW5zdGFuY2UuaGFuZGxlciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY2FsbGJhY2tPcmRlci5w
dXNoKFt0aGlzLCAnYmVnaW4nXSk7CisgICAgICAgIGFub3RoZXJJbnN0YW5jZS5zZXRBdHRyaWJ1
dGUoJ2RhdGEtdGl0bGUnLCAnYmF6Jyk7CisgICAgICAgIGNhbGxiYWNrT3JkZXIucHVzaChbdGhp
cywgJ2VuZCddKTsKKyAgICB9CisgICAgYW5vdGhlckluc3RhbmNlLmhhbmRsZXIgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgIGNhbGxiYWNrT3JkZXIucHVzaChbdGhpcywgJ2JlZ2luJ10pOworICAg
ICAgICBjYWxsYmFja09yZGVyLnB1c2goW3RoaXMsICdlbmQnXSk7CisgICAgfQorCisgICAgaW5z
dGFuY2Uuc2V0QXR0cmlidXRlKCd0aXRsZScsICdmb28nKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNh
bGxiYWNrT3JkZXIubGVuZ3RoLCA0KTsKKworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbGJh
Y2tPcmRlclswXSwgW2luc3RhbmNlLCAnYmVnaW4nXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhjYWxsYmFja09yZGVyWzFdLCBbYW5vdGhlckluc3RhbmNlLCAnYmVnaW4nXSk7CisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhjYWxsYmFja09yZGVyWzJdLCBbYW5vdGhlckluc3RhbmNlLCAnZW5k
J10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbGJhY2tPcmRlclszXSwgW2luc3RhbmNl
LCAnZW5kJ10pOworCit9LCAnc2V0QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1dGUgbXVzdCBl
bnF1ZXVlIGFuZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJyk7CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272845</attachid>
            <date>2016-03-04 03:03:44 -0800</date>
            <delta_ts>2016-03-04 17:53:46 -0800</delta_ts>
            <desc>Another GTK/EFL build fix</desc>
            <filename>bug-155011-20160304030330.patch</filename>
            <type>text/plain</type>
            <size>40755</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE2LTAzLTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZv
ciBhdHRyaWJ1dGVDaGFuZ2VkIGxpZmVjeWNsZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDExCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGF0dHJp
YnV0ZUNoYW5nZWRDYWxsYmFjayBpbiBzZXRBdHRyaWJ1dGUsIHJlbW92ZUF0dHJpYnV0ZSwgc2V0
QXR0cmlidXRlTlMsCisgICAgICAgIHJlbW90ZUF0dHJpYnV0ZU5TLCBzZXRBdHRyaWJ1dGVOb2Rl
LCBhbmQgcmVtb3ZlQXR0cmlidXRlTlMuIFRoZXJlIGFyZSBtYW55IG90aGVyIERPTSBBUElzIHRo
YXQKKyAgICAgICAgY291bGQgbW9kaWZ5IGF0dHJpYnV0ZXMgYnV0IHdlIHdvdWxkIGFubm90YXRl
IHRob3NlIEFQSXMgaW4gYSBzZXBhcmF0ZSBwYXRjaCB0byBsaW1pdCB0aGUgc2NvcGUKKyAgICAg
ICAgb2YgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gaW52b2tlIHRoZSBsaWZl
Y3ljbGUgY2FsbGJhY2sgcmlnaHQgYmVmb3JlIHJldHVybmluZyB0byB0aGUgYXV0aG9yIHNjcmlw
dCwgYWxsb2NhdGUKKyAgICAgICAgYW4gaW5zdGFuY2Ugb2YgQ3VzdG9tRWxlbWVudExpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjayBpbiBlYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucycgYmluZGluZyBjb2Rl
LgorICAgICAgICBUaGUgc3RhY2sgb2JqZWN0J3MgZGVzdHJ1Y3RvciBpbnZva2VzIGFsbCBjYWxs
YmFja3MgZW5xdWV1ZWQgYnkgdGhlIERPTSBBUEkgaWYgdGhlcmUgYXJlIGFueS4KKworICAgICAg
ICBTcGVjOiBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8j
ZGZuLWF0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL2F0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
OmF0dHJpYnV0ZUNoYW5nZWQpOiBBZGRlZC4gSW52b2tlcyBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJh
Y2suCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChK
U01haW5UaHJlYWROdWxsU3RhdGUpOiBBbGxvY2F0ZSBhbiBpbnN0YW5jZSBvZiBDdXN0b21FbGVt
ZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGluIEdPYmplY3QKKyAgICAgICAgYW5kIE9iamVj
dGl2ZS1DIGJpbmRpbmcgY29kZSBmb3IgY29uc2lzdGVuY3kgd2l0aCBKYXZhU2NyaXB0LiBXZSBj
YW4ndCBkbyB0aGlzIGluIEphdmFTY3JpcHQKKyAgICAgICAgYmVjYXVzZSB0aGVyZSBpcyBubyBS
QUlJIG9iamVjdCBhbGwgZnVuY3Rpb25zLCBnZXR0ZXJzLCBhbmQgc2V0dGVycyBhbGxvY2F0ZSAo
Zm9yIGEgZ29vZCByZWFzb24pLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogR2VuZXJhdGUg
YW4gaW5zdGFuY2Ugb2YgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayB3aGVu
CisgICAgICAgIE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGlzIHNwZWNpZmllZCBhcyBh
biBleHRlbmRlZCBJREwgYXR0cmlidXRlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy50eHQ6IEFkZGVkIE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNMaWZlY3lj
bGVQcm9jZXNzaW5nU3RhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbDogQWRkZWQgYSB0ZXN0IGZvciBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFjay4K
KworICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6IEVucXVl
dWUgYXR0cmlidXRlQ2hhbmdlZCBjYWxsYmFjayBpZiB0aGUgY29udGV4dCBvYmplY3QKKyAgICAg
ICAgaXMgYSBjdXN0b20gZWxlbWVudCBhbmQgdGhlcmUgaXMgYSBDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrIGFsbG9jYXRlZCBpbiB0aGUgc3RhY2suCisgICAgICAgICogZG9t
L0VsZW1lbnQuaWRsOgorCisgICAgICAgICogZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpZmVjeWNsZVF1ZXVlSXRlbSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGlmZWN5Y2xlUXVldWVJdGVtOjpMaWZlY3ljbGVRdWV1ZUl0ZW0p
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpZmVjeWNsZVF1ZXVlSXRlbTo6aW52b2tlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjpMaWZlY3lj
bGVDYWxsYmFja1F1ZXVlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxs
YmFja1F1ZXVlOjp+TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRDYWxs
YmFjayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6
aW52b2tlQWxsKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVldWUpOiBBZGRlZC4gQXMgbm90ZWQg
aW4gRklYTUUsCisgICAgICAgIHRoZSBlYXJseSBleGl0IGluIHRoZSBjb2RlIGlzIG5lY2Vzc2Fy
eSBvbmx5IGJlY2F1c2Ugd2UgaGF2ZW4ndCBhZGRlZCBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjaworICAgICAgICBpbiBhbGwgcGxhY2VzLiBJdCBzaG91bGQgZ28gYXdheSBpbiBhIGZvbGxv
dyB1cCBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9j
ZXNzaW5nU3RhY2s6OnByb2Nlc3NRdWV1ZSk6IEFkZGVkLgorICAgICAgICAqIGRvbS9MaWZlY3lj
bGVDYWxsYmFja1F1ZXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayk6IFRoaXMgaXMgYSBsaWdodCB3ZWlnaHQgUkFJSSBv
YmplY3QgdGhlIGJpbmRpbmcKKyAgICAgICAgY29kZSB3aWxsIGFsbG9jYXRlIGluIG9yZGVyIHRv
IHF1ZXVlIHVwIGxpZmVjeWNsZSBjYWxsYmFja3MuIFdlIGRvbid0IHVzZSBSZWYgb3Igc3RkOjp1
bmlxdWVfcHRyCisgICAgICAgIGluIG1fcXVldWUgdG8gYXZvaWQgZ2VuZXJhdGluZyB0aGUgY29k
ZSB0byBkZXN0cnVjdCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlIGV2ZXJ5d2hlcmUuCisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjpDdXN0b21F
bGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjp+Q3VzdG9tRWxlbWVudExp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6aGFzQ3VycmVudFByb2Nlc3NpbmdTdGFj
ayk6IEFkZGVkLgorCiAyMDE2LTAzLTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBj
cmYuY2Fub24uZnI+CiAKICAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBUaHJlYWRhYmxl
TG9hZGVyIGFuZCByZWxhdGl2ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
OTc1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1Miw2ICsxNDUyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwCiAgICAgZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAK
ICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAKKyAgICBkb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZS5jcHAKICAgICBkb20vTGl2ZU5vZGVMaXN0LmNwcAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5j
cHAKICAgICBkb20vTWVzc2FnZUV2ZW50LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk3NTUxKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00MDE3LDYgKzQwMTcsNyBAQAogCQk5QjUzMkVBMzFCQTkyODU3MDAzOEE4Mjcg
LyogU2xvdEFzc2lnbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUI1MzJFQTExQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50LmNw
cCAqLzsgfTsKIAkJOUI1MzJFQTQxQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjUzMkVBMjFC
QTkyODU3MDAzOEE4MjcgLyogU2xvdEFzc2lnbm1lbnQuaCAqLzsgfTsKIAkJOUI1NUVFRTkxQjNF
ODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NUVFRTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNv
Y29hLm1tICovOyB9OworCQk5QjU2QzlBQTFDODkzMjlBMDBDNDU2REYgLyogTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QjU2QzlBOTFDODkzMjlBMDBDNDU2REYgLyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5j
cHAgKi87IH07CiAJCTlCNjlEM0I0MUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQz
QjIxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5jcHAgKi87IH07CiAJCTlCNjlE
M0I1MUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNjlEM0IzMUI5OEZGRTkwMEUzNTEyQiAv
KiBIVE1MU2xvdEVsZW1lbnQuaCAqLzsgfTsKIAkJOUI2OUQzQjgxQjk5MTAwNzAwRTM1MTJCIC8q
IEpTSFRNTFNsb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCNjlEM0I2MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVu
dC5jcHAgKi87IH07CkBAIC0xMTY5NCw2ICsxMTY5NSw4IEBACiAJCTlCNTMyRUEyMUJBOTI4NTcw
MDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTbG90QXNzaWdubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjU1
RUVFODFCM0U4ODk4MDA1MzQyQkMgLyogRWRpdG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUI1NUVFRUExQjNGM0ZFRjAwNTM0MkJDIC8qIEVkaXRvckNvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVkaXRvckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExpZmVjeWNsZUNhbGxiYWNrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOUI1NkM5QTkxQzg5MzI5QTAwQzQ1NkRGIC8qIExpZmVjeWNsZUNhbGxiYWNr
UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNjlEM0Ix
MUI5OEZGMEEwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEhUTUxTbG90RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCNjlEM0IyMUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFNsb3RFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI2OUQzQjMxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxT
bG90RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MU2xvdEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MzA0LDYgKzI0MzA3LDgg
QEAKIAkJCQk4NTAzMUIyRDBBNDRFRkM3MDBGOTkyRTAgLyogS2V5Ym9hcmRFdmVudC5jcHAgKi8s
CiAJCQkJODUwMzFCMkUwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuaCAqLywKIAkJ
CQkxNENGN0MyMDA5RjcxMTA2MDBFQjM2NjUgLyogS2V5Ym9hcmRFdmVudC5pZGwgKi8sCisJCQkJ
OUI1NkM5QTkxQzg5MzI5QTAwQzQ1NkRGIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwICov
LAorCQkJCTlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVl
LmggKi8sCiAJCQkJQkM3RkE2MUUwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAg
Ki8sCiAJCQkJQkM3RkE2MUYwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oICovLAog
CQkJCUJDOUE2MTQ0MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2RvbV9leGNlcHRpb25zLnBsICov
LApAQCAtMjk4NDksNiArMjk4NTQsNyBAQAogCQkJCUE4RUE3Q0FEMEExOTJCOUMwMEE4RUY1RiAv
KiBIVE1MUHJlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg3MjEyMjg4M0U5
MDBCODFGRjggLyogSFRNTFByZWxvYWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE0
M0JGNTk4MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTlCNTZDOUFBMUM4OTMyOUEwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFj
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGN0E1MEExNTY5NzgwMDBBNDIzNCAv
KiBIVE1MUXVvdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RDIyM0ZEMTZCNTJF
NEUwMDE1NzI4OCAvKiBIVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTg3MURDMjIwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAxOTc1NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDUwIEBAIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UKICAgICByZXR1cm4gd3JhcHBlZEVsZW1lbnQ7CiB9CiAKK3ZvaWQgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlOjphdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7CisgICAgaWYgKCFjYW5J
bnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWY8SlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1f
aXNvbGF0ZWRXb3JsZC0+dm0oKSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4
dCwgKm1faXNvbGF0ZWRXb3JsZCk7CisgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpOworCisgICAgSlNPYmplY3QqIGpzRWxlbWVudCA9IGFzT2JqZWN0KHRv
SlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgJmVsZW1lbnQpKTsKKworICAgIFByb3BlcnR5TmFtZSBh
dHRyaWJ1dGVDaGFuZ2VkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJhdHRyaWJ1dGVD
aGFuZ2VkQ2FsbGJhY2siKSk7CisgICAgSlNWYWx1ZSBjYWxsYmFjayA9IGpzRWxlbWVudC0+Z2V0
KHN0YXRlLCBhdHRyaWJ1dGVDaGFuZ2VkKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CisgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVS
SSgpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQoanNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsKKyAgICBh
cmdzLmFwcGVuZChvbGRWYWx1ZSA9PSBudWxsQXRvbSA/IGpzTnVsbCgpIDoganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIG9sZFZhbHVlKSk7CisgICAgYXJncy5hcHBlbmQobmV3VmFsdWUgPT0gbnVs
bEF0b20gPyBqc051bGwoKSA6IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBuZXdWYWx1ZSkpOwor
ICAgIGFyZ3MuYXBwZW5kKG5hbWVzcGFjZVVSSSA9PSBudWxsQXRvbSA/IGpzTnVsbCgpIDoganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkpKTsKKwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRF
eGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxE
YXRhKTsKKworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgIEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZTo6Y2FsbChzdGF0ZSwgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwg
anNFbGVtZW50LCBhcmdzLCBleGNlcHRpb24pOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCBjb250ZXh0KTsKKworICAgIGlmIChleGNlcHRp
b24pCisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgZXhjZXB0aW9uKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCShyZXZpc2lvbiAx
OTc1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBET01XcmFwcGVy
V29ybGQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CiBjbGFzcyBN
YXRoTUxFbGVtZW50OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFNWR0VsZW1lbnQ7CiAK
IGNsYXNzIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZT4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CkBAIC02Miw2
ICs2Myw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNob3VsZENsZWFyRXhjZXB0aW9uIHsg
Q2xlYXIsIERvTm90Q2xlYXIgfTsKICAgICBSZWZQdHI8RWxlbWVudD4gY29uc3RydWN0RWxlbWVu
dChjb25zdCBBdG9taWNTdHJpbmcmLCBTaG91bGRDbGVhckV4Y2VwdGlvbik7CiAKKyAgICB2b2lk
IGF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKKwog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOyB9CiAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IoKSB7IHJldHVybiBtX2Nv
bnN0cnVjdG9yLmdldCgpOyB9CiAKQEAgLTcyLDYgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIG11
dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fY29uc3RydWN0b3I7CiAgICAgUmVmUHRy
PERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOworICAgIFZlY3RvcjxSZWY8RWxlbWVu
dD4sIDE+IG1fY29uc3RydWN0aW9uU3RhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaAkocmV2aXNpb24gMTk3NTUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNkZWZpbmUgSlNNYWluVGhyZWFkRXhlY1N0YXRlX2gKIAogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0NvbXBsZXRpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL01pY3JvdGFzay5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xNDYsNiArMTQ3LDkgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIEpTQzo6RXhlY1N0YXRlKiBtX3ByZXZpb3VzU3RhdGU7CisjaWYgRU5BQkxF
KENVU1RPTV9FTEVNRU5UUykKKyAgICBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0
YWNrIG1fbGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworI2VuZGlmCiB9OwogCiBKU0M6OkpTVmFs
dWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERh
dGEmLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJl
dmlzaW9uIDE5NzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEzLDYgKzI5MTMsMTMgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRp
bWUvRXJyb3IuaD4ifSA9IDE7CiAKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIn0p
IHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiBFTkFCTEUoQ1VTVE9N
X0VMRU1FTlRTKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBjdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIjZW5kaWZcbiIpOworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkxpZmVjeWNs
ZUNhbGxiYWNrUXVldWUuaCJ9ID0gMTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYg
KCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICBpZiAoJGlzQ3VzdG9tKSB7
CiAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxD
b250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CShyZXZpc2lvbiAxOTc1NTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBAIEpTTGVnYWN5UGFyZW50PSoKIExlbmllbnRU
aGlzCiBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCiBOYW1lZENvbnN0cnVjdG9yPSoKK05lZWRzTGlm
ZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrCiBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMK
IE5ld09iamVjdAogTm9JbnRlcmZhY2VPYmplY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDE5NzU1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiwxMCBAQCBlbnVtIF9vcHRpb25hbCB7ICIiLCAiT3B0aW9u
YWxWYWx1ZTEiLCAiCiAgICAgLy8gUHV0Rm9yd2FyZHMKICAgICBbUHV0Rm9yd2FyZHM9bmFtZV0g
cmVhZG9ubHkgYXR0cmlidXRlIFRlc3ROb2RlIHB1dEZvcndhcmRzQXR0cmlidXRlOwogICAgIFtQ
dXRGb3J3YXJkcz1uYW1lXSByZWFkb25seSBhdHRyaWJ1dGUgVGVzdE5vZGU/IHB1dEZvcndhcmRz
TnVsbGFibGVBdHRyaWJ1dGU7CisKKyNpZiBkZWZpbmVkKFRFU1RJTkdfSlMpCisgICAgW05lZWRz
TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIG1ldGhvZFdpdGhOZWVkc0xpZmVjeWNsZVBy
b2Nlc3NpbmdTdGFjaygpOworI2VuZGlmCiB9OwogCiAvLyBUaGUgZm9sbG93aW5nIGNvbW1lbnQg
c2hvdWxkIG5vdCBnZW5lcmF0ZSBhbnkgY29kZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAx
OTc1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkpTVGVz
dE9iai5oIgogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIkpTYm9vbC5oIgor
I2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAjaW5jbHVkZSAiU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmLmgiCkBAIC0xODUsNiArMTg2LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KEpT
Qzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihKU0M6
OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3Vt
ZW50KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2soSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN5bWJvbEl0ZXJhdG9yKEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25LZXlzKEpTQzo6RXhlY1N0
YXRlKik7CkBAIC03MTMsNiArNzE1LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE9ialBybwogICAgIHsgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIs
IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9u
V2l0aEZsb2F0QXJndW1lbnQpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidGVzdFByb21p
c2VGdW5jdGlvbldpdGhFeGNlcHRpb24iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24pLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAgICAgeyAidGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iiwg
SlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25X
aXRoT3B0aW9uYWxJbnRBcmd1bWVudCksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJtZXRo
b2RXaXRoTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2siLCBKU0M6OkZ1bmN0aW9uLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNr
KSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImVudHJpZXMiLCBKU0M6OkZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJrZXlzIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbktleXMpLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidmFsdWVzIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZhbHVlcyksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTUwMjEsNiArNTAy
NCwyMSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOZWVkc0xp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjayhFeGVjU3RhdGUqIHN0YXRlKQoreworI2lmIEVOQUJMRShD
VVNUT01fRUxFTUVOVFMpCisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFj
ayBjdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOworI2VuZGlmCisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CisgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2siKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGltcGwu
bWV0aG9kV2l0aE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKCk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogdXNpbmcgVGVzdE9iakl0ZXJhdG9y
ID0gSlNLZXlWYWx1ZUl0ZXJhdG9yPEpTVGVzdE9iaj47CiB1c2luZyBUZXN0T2JqSXRlcmF0b3JQ
cm90b3R5cGUgPSBKU0tleVZhbHVlSXRlcmF0b3JQcm90b3R5cGU8SlNUZXN0T2JqPjsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAxOTc1NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5
Myw3IEBACiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCIKICNpbmNsdWRl
ICJJbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuY3Bw
IgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwIgogI2luY2x1ZGUgIkxpdmVO
b2RlTGlzdC5jcHAiCiAjaW5jbHVkZSAiTWVzc2FnZUNoYW5uZWwuY3BwIgogI2luY2x1ZGUgIk1l
c3NhZ2VFdmVudC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTc1
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDbGllbnRSZWN0TGlzdC5oIgogI2luY2x1ZGUgIkNv
bXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlQWxn
b3JpdGhtcy5oIgorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5oIgogI2luY2x1
ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJE
b2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaCIKQEAgLTYxLDYgKzYyLDcgQEAKICNpbmNsdWRlICJJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIkxpZmVjeWNsZUNhbGxi
YWNrUXVldWUuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cC5oIgogI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCkBAIC0x
MjYyLDYgKzEyNjQsMTUgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YQogCiAgICAgZG9jdW1lbnQoKS5pbmNET01UcmVlVmVyc2lvbigpOwogCisjaWYgRU5BQkxFKENV
U1RPTV9FTEVNRU5UUykKKyAgICBpZiAoVU5MSUtFTFkoaXNDdXN0b21FbGVtZW50KCkpKSB7Cisg
ICAgICAgIGF1dG8qIGRlZmluaXRpb25zID0gZG9jdW1lbnQoKS5jdXN0b21FbGVtZW50RGVmaW5p
dGlvbnMoKTsKKyAgICAgICAgYXV0byogaW50ZXJmYWNlID0gZGVmaW5pdGlvbnMtPmZpbmRJbnRl
cmZhY2UodGFnUU5hbWUoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludGVyZmFjZSk7Cisg
ICAgICAgIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2Fs
bGJhY2soKnRoaXMsICppbnRlcmZhY2UsIG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAg
fQorI2VuZGlmCisKICAgICBpZiAodmFsdWVJc1NhbWVBc0JlZm9yZSkKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiAxOTc1NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwx
NCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IHRhZ05hbWU7CiAKICAgICBE
T01TdHJpbmc/IGdldEF0dHJpYnV0ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0
cmluZyBuYW1lKTsKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBSYWlzZXNFeGNl
cHRpb25dIHZvaWQgc2V0QXR0cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9N
U3RyaW5nIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgdmFsdWUpOwotICAgIHZvaWQgcmVtb3Zl
QXR0cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwor
CisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uLCBOZWVk
c0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFja10KKyAgICB2b2lkIHNldEF0dHJpYnV0ZShbRGVmYXVs
dD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lLCBbRGVmYXVsdD1VbmRlZmluZWRd
IG9wdGlvbmFsIERPTVN0cmluZyB2YWx1ZSk7CisKKyAgICBbTmVlZHNMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2tdIHZvaWQgcmVtb3ZlQXR0cmlidXRlKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgRE9NU3RyaW5nIG5hbWUpOwogICAgIEF0dHIgZ2V0QXR0cmlidXRlTm9kZShbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9u
XSBBdHRyIHNldEF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBBdHRy
IG5ld0F0dHIpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIEF0dHIgcmVtb3ZlQXR0cmlidXRlTm9k
ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgb2xkQXR0cik7CisgICAgW1JhaXNl
c0V4Y2VwdGlvbiwgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2tdIEF0dHIgc2V0QXR0cmli
dXRlTm9kZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgbmV3QXR0cik7CisgICAg
W1JhaXNlc0V4Y2VwdGlvbiwgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2tdIEF0dHIgcmVt
b3ZlQXR0cmlidXRlTm9kZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgb2xkQXR0
cik7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpF
Q1RJVkVfQwogICAgIFtJbXBsZW1lbnRlZEFzPWdldEVsZW1lbnRzQnlUYWdOYW1lRm9yT2JqQ10g
Tm9kZUxpc3QgZ2V0RWxlbWVudHNCeVRhZ05hbWUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBET01TdHJpbmcgbmFtZSk7CkBAIC01MCwxMCArNTIsMTIgQEAKICAgICAvLyBET00gTGV2ZWwg
MiBDb3JlCiAKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSBET01TdHJpbmc/IGdl
dEF0dHJpYnV0ZU5TKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIGxvY2FsTmFt
ZSk7Ci0gICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIHNldEF0dHJpYnV0ZU5TKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5n
PyBuYW1lc3BhY2VVUkksCi0gICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9N
U3RyaW5nIHF1YWxpZmllZE5hbWUsCi0gICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgRE9NU3RyaW5nIHZhbHVlKTsKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSB2
b2lkIHJlbW92ZUF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcg
bG9jYWxOYW1lKTsKKworICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIFJhaXNlc0V4
Y2VwdGlvbiwgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2tdCisgICAgdm9pZCBzZXRBdHRy
aWJ1dGVOUyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZz8gbmFtZXNwYWNl
VVJJLAorICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBxdWFs
aWZpZWROYW1lLCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB2YWx1ZSk7
CisKKyAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBOZWVkc0xpZmVjeWNsZVByb2Nl
c3NpbmdTdGFja10gdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVS
SSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElW
RV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnMsIEltcGxlbWVudGVkQXM9Z2V0RWxlbWVudHNCeVRhZ05hbWVOU0Zvck9iakNdIE5vZGVM
aXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lTlMob3B0aW9uYWwgRE9NU3RyaW5nIG5hbWVzcGFjZVVS
SSwgb3B0aW9uYWwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CkBAIC02MSw3ICs2NSw3IEBACiAgICAg
SFRNTENvbGxlY3Rpb24gZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhbRGVmYXVsdD1VbmRlZmluZWRd
IG9wdGlvbmFsIERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBbRGVmYXVsdD1VbmRlZmluZWRdIG9w
dGlvbmFsIERPTVN0cmluZyBsb2NhbE5hbWUpOwogI2VuZGlmCiAgICAgW09iakNMZWdhY3lVbm5h
bWVkUGFyYW1ldGVyc10gQXR0ciBnZXRBdHRyaWJ1dGVOb2RlTlMoW0RlZmF1bHQ9VW5kZWZpbmVk
XSBvcHRpb25hbCBET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgW0RlZmF1bHQ9VW5kZWZpbmVkXSBv
cHRpb25hbCBET01TdHJpbmcgbG9jYWxOYW1lKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBBdHRy
IHNldEF0dHJpYnV0ZU5vZGVOUyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgbmV3
QXR0cik7CisgICAgW1JhaXNlc0V4Y2VwdGlvbiwgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3Rh
Y2tdIEF0dHIgc2V0QXR0cmlidXRlTm9kZU5TKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
QXR0ciBuZXdBdHRyKTsKICAgICBib29sZWFuIGhhc0F0dHJpYnV0ZShET01TdHJpbmcgbmFtZSk7
CiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gYm9vbGVhbiBoYXNBdHRyaWJ1dGVO
UyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBsb2NhbE5hbWUpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkxpZmVjeWNsZUNhbGxiYWNrUXVldWUuaCIKKworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVO
VFMpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNs
dWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKKyNpbmNsdWRlIDxoZWFwL0hlYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGlmZWN5Y2xlUXVldWVJdGVtIHsKK3B1YmxpYzoKKyAg
ICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBJbnZhbGlkLAorICAgICAgICBBdHRyaWJ1dGVD
aGFuZ2VkLAorICAgIH07CisKKyAgICBMaWZlY3ljbGVRdWV1ZUl0ZW0oRWxlbWVudCYgZWxlbWVu
dCwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBpbnRlcmZhY2UsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3VmFsdWUpCisgICAgICAgIDogbV90eXBlKFR5cGU6OkF0dHJpYnV0ZUNo
YW5nZWQpCisgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAgICAgICwgbV9pbnRlcmZh
Y2UoaW50ZXJmYWNlKQorICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQor
ICAgICAgICAsIG1fb2xkVmFsdWUob2xkVmFsdWUpCisgICAgICAgICwgbV9uZXdWYWx1ZShuZXdW
YWx1ZSkKKyAgICB7IH0KKworICAgIHZvaWQgaW52b2tlKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgIT0gVHlwZTo6SW52YWxpZCk7CisgICAgICAgIG1faW50ZXJmYWNlLT5hdHRyaWJ1
dGVDaGFuZ2VkKG1fZWxlbWVudC5nZXQoKSwgbV9hdHRyaWJ1dGVOYW1lLCBtX29sZFZhbHVlLCBt
X25ld1ZhbHVlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpJ
bnZhbGlkIH07CisgICAgUmVmPEVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWY8SlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlPiBtX2ludGVyZmFjZTsKKyAgICBRdWFsaWZpZWROYW1lIG1fYXR0cmli
dXRlTmFtZTsKKyAgICBBdG9taWNTdHJpbmcgbV9vbGRWYWx1ZTsKKyAgICBBdG9taWNTdHJpbmcg
bV9uZXdWYWx1ZTsKK307CisKK0xpZmVjeWNsZUNhbGxiYWNrUXVldWU6OkxpZmVjeWNsZUNhbGxi
YWNrUXVldWUoKQoreyB9CisKK0xpZmVjeWNsZUNhbGxiYWNrUXVldWU6On5MaWZlY3ljbGVDYWxs
YmFja1F1ZXVlKCkKK3sKKyAgICBBU1NFUlQobV9pdGVtcy5pc0VtcHR5KCkpOworfQorCit2b2lk
IExpZmVjeWNsZUNhbGxiYWNrUXVldWU6OmVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2so
RWxlbWVudCYgZWxlbWVudCwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBpbnRlcmZhY2UsCisg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3sKKyAgICBpZiAoYXV0
byogcXVldWUgPSBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVD
dXJyZW50UXVldWUoKSkKKyAgICAgICAgcXVldWUtPm1faXRlbXMuYXBwZW5kKExpZmVjeWNsZVF1
ZXVlSXRlbShlbGVtZW50LCBpbnRlcmZhY2UsIGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCBuZXdW
YWx1ZSkpOworfQorCit2b2lkIExpZmVjeWNsZUNhbGxiYWNrUXVldWU6Omludm9rZUFsbCgpCit7
CisgICAgVmVjdG9yPExpZmVjeWNsZVF1ZXVlSXRlbT4gaXRlbXM7CisgICAgaXRlbXMuc3dhcCht
X2l0ZW1zKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykKKyAgICAgICAgaXRlbS5pbnZv
a2UoKTsKK30KKworTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSogQ3VzdG9tRWxlbWVudExpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjazo6ZW5zdXJlQ3VycmVudFF1ZXVlKCkKK3sKKyAgICAvLyBGSVhNRTog
VGhpcyBlYXJseSBleGl0IGluZGljYXRlcyBhIGJ1ZyB0aGF0IHNvbWUgRE9NIEFQSSBpcyBtaXNz
aW5nIE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrCisgICAgaWYgKCFzX2N1cnJlbnRQcm9j
ZXNzaW5nU3RhY2spCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byomIHF1ZXVl
ID0gc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrLT5tX3F1ZXVlOworICAgIGlmICghcXVldWUpIC8v
IFdlIHVzZSBhIHJhdyBwb2ludGVyIHRvIGF2b2lkIGdlbmVhcmluZyBjb2RlIHRvIGRlbGV0ZSBp
dCBpbiB+Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjay4KKyAgICAgICAgcXVl
dWUgPSBuZXcgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTsKKyAgICByZXR1cm4gcXVldWU7Cit9CisK
K0N1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sqIEN1c3RvbUVsZW1lbnRMaWZl
Y3ljbGVQcm9jZXNzaW5nU3RhY2s6OnNfY3VycmVudFByb2Nlc3NpbmdTdGFjayA9IG51bGxwdHI7
CisKK3ZvaWQgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6cHJvY2Vzc1F1
ZXVlKCkKK3sKKyAgICBBU1NFUlQobV9xdWV1ZSk7CisgICAgbV9xdWV1ZS0+aW52b2tlQWxsKCk7
CisgICAgZGVsZXRlIG1fcXVldWU7CisgICAgbV9xdWV1ZSA9IG51bGxwdHI7Cit9CisKK30KKwor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tR
dWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExpZmVjeWNsZUNhbGxi
YWNrUXVldWVfaAorI2RlZmluZSBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlX2gKKworI2lmIEVOQUJM
RShDVVNUT01fRUxFTUVOVFMpCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEVsZW1l
bnQ7CitjbGFzcyBRdWFsaWZpZWROYW1lOworY2xhc3MgTGlmZWN5Y2xlUXVldWVJdGVtOworCitj
bGFzcyBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShM
aWZlY3ljbGVDYWxsYmFja1F1ZXVlKTsKK3B1YmxpYzoKKyAgICBMaWZlY3ljbGVDYWxsYmFja1F1
ZXVlKCk7CisgICAgfkxpZmVjeWNsZUNhbGxiYWNrUXVldWUoKTsKKworICAgIHN0YXRpYyB2b2lk
IGVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soRWxlbWVudCYsIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSYsCisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKKworICAgIHZv
aWQgaW52b2tlQWxsKCk7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPExpZmVjeWNsZVF1ZXVlSXRl
bT4gbV9pdGVtczsKK307CisKK2NsYXNzIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5n
U3RhY2sgeworcHVibGljOgorICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3Rh
Y2soKQorICAgICAgICA6IG1fcHJldmlvdXNQcm9jZXNzaW5nU3RhY2soc19jdXJyZW50UHJvY2Vz
c2luZ1N0YWNrKQorICAgIHsKKyAgICAgICAgc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrID0gdGhp
czsKKyAgICB9CisKKyAgICB+Q3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjaygp
CisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkobV9xdWV1ZSkpCisgICAgICAgICAgICBwcm9j
ZXNzUXVldWUoKTsKKyAgICAgICAgc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrID0gbV9wcmV2aW91
c1Byb2Nlc3NpbmdTdGFjazsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
YSByZWZlcmVuY2Ugb25jZSAiZW5zdXJlIiBzdGFydHMgdG8gd29yay4KKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSogZW5zdXJlQ3VycmVudFF1ZXVlKCk7
CisKKyAgICBzdGF0aWMgYm9vbCBoYXNDdXJyZW50UHJvY2Vzc2luZ1N0YWNrKCkgeyByZXR1cm4g
c19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrOyB9CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwcm9jZXNzUXVldWUoKTsKKworICAgIExpZmVjeWNsZUNhbGxiYWNrUXVldWUqIG1f
cXVldWUgeyBudWxscHRyIH07CisgICAgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjayogbV9wcmV2aW91c1Byb2Nlc3NpbmdTdGFjazsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKiBzX2N1cnJlbnRQcm9j
ZXNzaW5nU3RhY2s7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYgLy8gTGlmZWN5Y2xlQ2Fs
bGJhY2tRdWV1ZV9oCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc1NTEpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wMy0wNCAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgYmFzaWMgc3VwcG9y
dCBmb3IgYXR0cmlidXRlQ2hhbmdlZCBsaWZlY3ljbGUgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTAxMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgdGVzdCBmb3IgYXR0cmli
dXRlQ2hhbmdlZENhbGxiYWNrIGFuZCBhIHRlc3QgZm9yIHRoZSB0aW1pbmcgb2YgbGlmZWN5Y2xl
IGNhbGxiYWNrcyBpbiBnZW5lcmFsLgorCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMv
YXR0cmlidXRlLWNoYW5nZWQtY2FsbGJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2N1c3RvbS1lbGVtZW50cy9hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjay5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2st
dGltaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVu
dHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy5odG1sOiBBZGRlZC4KKwogMjAxNi0wMy0wMyAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRy9GVEwgc2hvdWxk
IGlubGluZSBhY2Nlc3NlcyB0byBSZWdFeHBPYmplY3Q6Om1fbGFzdEluZGV4CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjay1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVu
dHMvYXR0cmlidXRlLWNoYW5nZWQtY2FsbGJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvYXR0cmlidXRlLWNoYW5nZWQtY2Fs
bGJhY2stZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorCitQQVNT
IHNldEF0dHJpYnV0ZSBhbmQgcmVtb3ZlQXR0cmlidXRlIG11c3QgZW5xdWV1ZSBhbmQgaW52b2tl
IGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayAKK1BBU1Mgc2V0QXR0cmlidXRlTlMgYW5kIHJlbW92
ZUF0dHJpYnV0ZU5TIG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGF0dHJpYnV0ZUNoYW5nZWRDYWxs
YmFjayAKK1BBU1Mgc2V0QXR0cmlidXRlTm9kZSBhbmQgcmVtb3ZlQXR0cmlidXRlTlMgbXVzdCBl
bnF1ZXVlIGFuZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIAorUEFTUyBzZXRBdHRy
aWJ1dGVOb2RlIGFuZCByZW1vdmVBdHRyaWJ1dGVOUyBtdXN0IGVucXVldWUgYW5kIGludm9rZSBh
dHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL2F0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvYXR0cmlidXRlLWNoYW5nZWQtY2FsbGJh
Y2suaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRz
L2F0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DdXN0b20g
RWxlbWVudHM6IGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjazwvdGl0bGU+Cis8bWV0YSBuYW1lPSJh
dXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3Jn
Ij4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNr
IG11c3QgYmUgZW5xdWV1ZWQgd2hlbmV2ZXIgY3VzdG9tIGVsZW1lbnQncyBhdHRyaWJ1dGUgaXMg
YWRkZWQsIGNoYW5nZWQgb3IgcmVtb3ZlZCI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvY3VzdG9tLyNkZm4tYXR0cmlidXRl
LWNoYW5nZWQtY2FsbGJhY2siPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCit2YXIgYXJndW1lbnRMaXN0ID0gW107CitjbGFzcyBN
eUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgYXR0cmlidXRlQ2hhbmdl
ZENhbGxiYWNrKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgbmFtZXNwYWNlKSB7CisgICAgICAg
IGFyZ3VtZW50TGlzdC5wdXNoKHthcmd1bWVudHM6IGFyZ3VtZW50cywgdmFsdWU6IHRoaXMuZ2V0
QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKX0pOworICAgIH0KK30KK2RvY3VtZW50LmRlZmlu
ZUN1c3RvbUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKwor
dGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhcmd1bWVudExpc3QgPSBbXTsKKworICAg
IGluc3RhbmNlLnNldEF0dHJpYnV0ZSgndGl0bGUnLCAnZm9vJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhpbnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyksICdmb28nKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGFyZ3VtZW50TGlzdC5sZW5ndGgsIDEpOworICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRM
aXN0WzBdLnZhbHVlLCAnZm9vJyk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhcmd1bWVudExp
c3RbMF0uYXJndW1lbnRzLCBbJ3RpdGxlJywgbnVsbCwgJ2ZvbycsIG51bGxdKTsKKworICAgIGlu
c3RhbmNlLnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3Rh
bmNlLmdldEF0dHJpYnV0ZSgndGl0bGUnKSwgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFscyhhcmd1
bWVudExpc3QubGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50TGlzdFsxXS52
YWx1ZSwgbnVsbCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhcmd1bWVudExpc3RbMV0uYXJn
dW1lbnRzLCBbJ3RpdGxlJywgJ2ZvbycsIG51bGwsIG51bGxdKTsKKworfSwgJ3NldEF0dHJpYnV0
ZSBhbmQgcmVtb3ZlQXR0cmlidXRlIG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGF0dHJpYnV0ZUNo
YW5nZWRDYWxsYmFjaycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2Ug
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFyZ3Vt
ZW50TGlzdCA9IFtdOworCisgICAgaW5zdGFuY2Uuc2V0QXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnJywgJ3RpdGxlJywgJ2hlbGxvJyk7CisgICAgYXNzZXJ0X2VxdWFscyhp
bnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyksICdoZWxsbycpOworICAgIGFzc2VydF9lcXVh
bHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMSk7CisgICAgYXNzZXJ0X2VxdWFscyhhcmd1bWVudExp
c3RbMF0udmFsdWUsICdoZWxsbycpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXJndW1lbnRM
aXN0WzBdLmFyZ3VtZW50cywgWyd0aXRsZScsIG51bGwsICdoZWxsbycsICdodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyddKTsKKworICAgIGluc3RhbmNlLnJlbW92ZUF0dHJpYnV0ZU5TKCdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICd0aXRsZScpOworICAgIGFzc2VydF9lcXVhbHMoaW5z
dGFuY2UuZ2V0QXR0cmlidXRlKCd0aXRsZScpLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFy
Z3VtZW50TGlzdC5sZW5ndGgsIDIpOworICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0WzFd
LnZhbHVlLCBudWxsKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGFyZ3VtZW50TGlzdFsxXS5h
cmd1bWVudHMsIFsndGl0bGUnLCAnaGVsbG8nLCBudWxsLCAnaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmcnXSk7CisKK30sICdzZXRBdHRyaWJ1dGVOUyBhbmQgcmVtb3ZlQXR0cmlidXRlTlMgbXVz
dCBlbnF1ZXVlIGFuZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJyk7CisKK3Rlc3Qo
ZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgYXJndW1lbnRMaXN0ID0gW107CisKKyAgICB2YXIg
YXR0ciA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgnaWQnKTsKKyAgICBhdHRyLnZhbHVlID0g
J2Jhcic7CisgICAgaW5zdGFuY2Uuc2V0QXR0cmlidXRlTm9kZShhdHRyKTsKKworICAgIGFzc2Vy
dF9lcXVhbHMoaW5zdGFuY2UuZ2V0QXR0cmlidXRlKCdpZCcpLCAnYmFyJyk7CisgICAgYXNzZXJ0
X2VxdWFscyhhcmd1bWVudExpc3QubGVuZ3RoLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3Vt
ZW50TGlzdFswXS52YWx1ZSwgJ2JhcicpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXJndW1l
bnRMaXN0WzBdLmFyZ3VtZW50cywgWydpZCcsIG51bGwsICdiYXInLCBudWxsXSk7CisKKyAgICBp
bnN0YW5jZS5yZW1vdmVBdHRyaWJ1dGVOb2RlKGF0dHIpOworICAgIGFzc2VydF9lcXVhbHMoaW5z
dGFuY2UuZ2V0QXR0cmlidXRlKCdpZCcpLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3Vt
ZW50TGlzdC5sZW5ndGgsIDIpOworICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0WzFdLnZh
bHVlLCBudWxsKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGFyZ3VtZW50TGlzdFsxXS5hcmd1
bWVudHMsIFsnaWQnLCAnYmFyJywgbnVsbCwgbnVsbF0pOworCit9LCAnc2V0QXR0cmlidXRlTm9k
ZSBhbmQgcmVtb3ZlQXR0cmlidXRlTlMgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2UgYXR0cmlidXRl
Q2hhbmdlZENhbGxiYWNrJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5j
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgYXJn
dW1lbnRMaXN0ID0gW107CisKKyAgICB2YXIgYXR0ciA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0
ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdyJyk7CisgICAgYXR0ci52YWx1ZSA9
ICcxMDAnOworICAgIGluc3RhbmNlLnNldEF0dHJpYnV0ZU5vZGUoYXR0cik7CisKKyAgICBhc3Nl
cnRfZXF1YWxzKGluc3RhbmNlLmdldEF0dHJpYnV0ZSgncicpLCAnMTAwJyk7CisgICAgYXNzZXJ0
X2VxdWFscyhhcmd1bWVudExpc3QubGVuZ3RoLCAxKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3Vt
ZW50TGlzdFswXS52YWx1ZSwgJzEwMCcpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXJndW1l
bnRMaXN0WzBdLmFyZ3VtZW50cywgWydyJywgbnVsbCwgJzEwMCcsICdodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyddKTsKKworICAgIGluc3RhbmNlLnJlbW92ZUF0dHJpYnV0ZU5vZGUoYXR0cik7
CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ3InKSwgbnVsbCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhhcmd1bWVudExpc3QubGVuZ3RoLCAyKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGFyZ3VtZW50TGlzdFsxXS52YWx1ZSwgbnVsbCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhhcmd1bWVudExpc3RbMV0uYXJndW1lbnRzLCBbJ3InLCAnMTAwJywgbnVsbCwgJ2h0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnJ10pOworCit9LCAnc2V0QXR0cmlidXRlTm9kZSBhbmQgcmVtb3Zl
QXR0cmlidXRlTlMgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxi
YWNrJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5
Y2xlLWNhbGxiYWNrLXRpbWluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKworUEFTUyBzZXRBdHRyaWJ1
dGUgYW5kIHJlbW92ZUF0dHJpYnV0ZSBtdXN0IGVucXVldWUgYW5kIGludm9rZSBhdHRyaWJ1dGVD
aGFuZ2VkQ2FsbGJhY2sgCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRz
L2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUt
Y2FsbGJhY2stdGltaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVtZW50czogTGlm
ZWN5Y2xlIGNhbGxiYWNrIG11c3QgYmUgaW52b2tlZCBiZWZvcmUgcmV0dXJuaW5nIHRvIGF1dGhv
ciBzY3JpcHRzPC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3
YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJMaWZlY3ljbGUgY2FsbGJhY2tzIG11c3QgYmUgaW52b2tlZCBiZWZvcmUgcmV0dXJu
aW5nIHRvIGF1dGhvciBzY3JpcHRzIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9jdXN0b20vI2VucXVldWluZy1hbmQtaW52
b2tpbmctY2FsbGJhY2tzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJs
b2ciPjwvZGl2PgorPHNjcmlwdD4KKworY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRN
TEVsZW1lbnQgeworICAgIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayguLi5hcmdzKSB7CisgICAg
ICAgIHRoaXMuaGFuZGxlciguLi5hcmdzKTsKKyAgICB9CisKKyAgICBoYW5kbGVyKCkgeyB9Cit9
Citkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3Vz
dG9tRWxlbWVudCk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgdmFyIGFub3Ro
ZXJJbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1lbGVtZW50Jyk7
CisKKyAgICB2YXIgY2FsbGJhY2tPcmRlciA9IFtdOworICAgIGluc3RhbmNlLmhhbmRsZXIgPSBm
dW5jdGlvbiAoKSB7CisgICAgICAgIGNhbGxiYWNrT3JkZXIucHVzaChbdGhpcywgJ2JlZ2luJ10p
OworICAgICAgICBhbm90aGVySW5zdGFuY2Uuc2V0QXR0cmlidXRlKCdkYXRhLXRpdGxlJywgJ2Jh
eicpOworICAgICAgICBjYWxsYmFja09yZGVyLnB1c2goW3RoaXMsICdlbmQnXSk7CisgICAgfQor
ICAgIGFub3RoZXJJbnN0YW5jZS5oYW5kbGVyID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjYWxs
YmFja09yZGVyLnB1c2goW3RoaXMsICdiZWdpbiddKTsKKyAgICAgICAgY2FsbGJhY2tPcmRlci5w
dXNoKFt0aGlzLCAnZW5kJ10pOworICAgIH0KKworICAgIGluc3RhbmNlLnNldEF0dHJpYnV0ZSgn
dGl0bGUnLCAnZm9vJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjYWxsYmFja09yZGVyLmxlbmd0aCwg
NCk7CisKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNhbGxiYWNrT3JkZXJbMF0sIFtpbnN0YW5j
ZSwgJ2JlZ2luJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbGJhY2tPcmRlclsxXSwg
W2Fub3RoZXJJbnN0YW5jZSwgJ2JlZ2luJ10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2Fs
bGJhY2tPcmRlclsyXSwgW2Fub3RoZXJJbnN0YW5jZSwgJ2VuZCddKTsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGNhbGxiYWNrT3JkZXJbM10sIFtpbnN0YW5jZSwgJ2VuZCddKTsKKworfSwgJ3Nl
dEF0dHJpYnV0ZSBhbmQgcmVtb3ZlQXR0cmlidXRlIG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGF0
dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaycpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273064</attachid>
            <date>2016-03-04 17:53:50 -0800</date>
            <delta_ts>2016-03-04 22:52:40 -0800</delta_ts>
            <desc>Updated for ToT</desc>
            <filename>bug-155011-20160304175335.patch</filename>
            <type>text/plain</type>
            <size>40541</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzYwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE2LTAzLTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZv
ciBhdHRyaWJ1dGVDaGFuZ2VkIGxpZmVjeWNsZSBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDExCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGF0dHJp
YnV0ZUNoYW5nZWRDYWxsYmFjayBpbiBzZXRBdHRyaWJ1dGUsIHJlbW92ZUF0dHJpYnV0ZSwgc2V0
QXR0cmlidXRlTlMsCisgICAgICAgIHJlbW90ZUF0dHJpYnV0ZU5TLCBzZXRBdHRyaWJ1dGVOb2Rl
LCBhbmQgcmVtb3ZlQXR0cmlidXRlTlMuIFRoZXJlIGFyZSBtYW55IG90aGVyIERPTSBBUElzIHRo
YXQKKyAgICAgICAgY291bGQgbW9kaWZ5IGF0dHJpYnV0ZXMgYnV0IHdlIHdvdWxkIGFubm90YXRl
IHRob3NlIEFQSXMgaW4gYSBzZXBhcmF0ZSBwYXRjaCB0byBsaW1pdCB0aGUgc2NvcGUKKyAgICAg
ICAgb2YgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gaW52b2tlIHRoZSBsaWZl
Y3ljbGUgY2FsbGJhY2sgcmlnaHQgYmVmb3JlIHJldHVybmluZyB0byB0aGUgYXV0aG9yIHNjcmlw
dCwgYWxsb2NhdGUKKyAgICAgICAgYW4gaW5zdGFuY2Ugb2YgQ3VzdG9tRWxlbWVudExpZmVjeWNs
ZVByb2Nlc3NpbmdTdGFjayBpbiBlYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucycgYmluZGluZyBjb2Rl
LgorICAgICAgICBUaGUgc3RhY2sgb2JqZWN0J3MgZGVzdHJ1Y3RvciBpbnZva2VzIGFsbCBjYWxs
YmFja3MgZW5xdWV1ZWQgYnkgdGhlIERPTSBBUEkgaWYgdGhlcmUgYXJlIGFueS4KKworICAgICAg
ICBTcGVjOiBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8j
ZGZuLWF0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL2F0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
OmF0dHJpYnV0ZUNoYW5nZWQpOiBBZGRlZC4gSW52b2tlcyBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJh
Y2suCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChK
U01haW5UaHJlYWROdWxsU3RhdGUpOiBBbGxvY2F0ZSBhbiBpbnN0YW5jZSBvZiBDdXN0b21FbGVt
ZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGluIEdPYmplY3QKKyAgICAgICAgYW5kIE9iamVj
dGl2ZS1DIGJpbmRpbmcgY29kZSBmb3IgY29uc2lzdGVuY3kgd2l0aCBKYXZhU2NyaXB0LiBXZSBj
YW4ndCBkbyB0aGlzIGluIEphdmFTY3JpcHQKKyAgICAgICAgYmVjYXVzZSB0aGVyZSBpcyBubyBS
QUlJIG9iamVjdCBhbGwgZnVuY3Rpb25zLCBnZXR0ZXJzLCBhbmQgc2V0dGVycyBhbGxvY2F0ZSAo
Zm9yIGEgZ29vZCByZWFzb24pLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogR2VuZXJhdGUg
YW4gaW5zdGFuY2Ugb2YgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayB3aGVu
CisgICAgICAgIE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIGlzIHNwZWNpZmllZCBhcyBh
biBleHRlbmRlZCBJREwgYXR0cmlidXRlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy50eHQ6IEFkZGVkIE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNMaWZlY3lj
bGVQcm9jZXNzaW5nU3RhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbDogQWRkZWQgYSB0ZXN0IGZvciBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFjay4K
KworICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6IEVucXVl
dWUgYXR0cmlidXRlQ2hhbmdlZCBjYWxsYmFjayBpZiB0aGUgY29udGV4dCBvYmplY3QKKyAgICAg
ICAgaXMgYSBjdXN0b20gZWxlbWVudCBhbmQgdGhlcmUgaXMgYSBDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrIGFsbG9jYXRlZCBpbiB0aGUgc3RhY2suCisgICAgICAgICogZG9t
L0VsZW1lbnQuaWRsOgorCisgICAgICAgICogZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpZmVjeWNsZVF1ZXVlSXRlbSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGlmZWN5Y2xlUXVldWVJdGVtOjpMaWZlY3ljbGVRdWV1ZUl0ZW0p
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpZmVjeWNsZVF1ZXVlSXRlbTo6aW52b2tlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjpMaWZlY3lj
bGVDYWxsYmFja1F1ZXVlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWZlY3ljbGVDYWxs
YmFja1F1ZXVlOjp+TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6ZW5xdWV1ZUF0dHJpYnV0ZUNoYW5nZWRDYWxs
YmFjayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZTo6
aW52b2tlQWxsKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrOjplbnN1cmVDdXJyZW50UXVldWUpOiBBZGRlZC4gQXMgbm90ZWQg
aW4gRklYTUUsCisgICAgICAgIHRoZSBlYXJseSBleGl0IGluIHRoZSBjb2RlIGlzIG5lY2Vzc2Fy
eSBvbmx5IGJlY2F1c2Ugd2UgaGF2ZW4ndCBhZGRlZCBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjaworICAgICAgICBpbiBhbGwgcGxhY2VzLiBJdCBzaG91bGQgZ28gYXdheSBpbiBhIGZvbGxv
dyB1cCBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9j
ZXNzaW5nU3RhY2s6OnByb2Nlc3NRdWV1ZSk6IEFkZGVkLgorICAgICAgICAqIGRvbS9MaWZlY3lj
bGVDYWxsYmFja1F1ZXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVu
dExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayk6IFRoaXMgaXMgYSBsaWdodCB3ZWlnaHQgUkFJSSBv
YmplY3QgdGhlIGJpbmRpbmcKKyAgICAgICAgY29kZSB3aWxsIGFsbG9jYXRlIGluIG9yZGVyIHRv
IHF1ZXVlIHVwIGxpZmVjeWNsZSBjYWxsYmFja3MuIFdlIGRvbid0IHVzZSBSZWYgb3Igc3RkOjp1
bmlxdWVfcHRyCisgICAgICAgIGluIG1fcXVldWUgdG8gYXZvaWQgZ2VuZXJhdGluZyB0aGUgY29k
ZSB0byBkZXN0cnVjdCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlIGV2ZXJ5d2hlcmUuCisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjpDdXN0b21F
bGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjp+Q3VzdG9tRWxlbWVudExp
ZmVjeWNsZVByb2Nlc3NpbmdTdGFjayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjazo6aGFzQ3VycmVudFByb2Nlc3NpbmdTdGFj
ayk6IEFkZGVkLgorCiAyMDE2LTAzLTA0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW1dlYktpdDJdIEFkZCBXZWJLaXQyIGVxdWl2YWxlbnQgb2YgLVtXZWJWaWV3IF9p
bnNlcnROZXdsaW5lSW5RdW90ZWRDb250ZW50XQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDE5NzYwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xNDUzLDYgKzE0NTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9t
L0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKICAgICBkb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmNwcAogICAgIGRvbS9LZXlib2FyZEV2ZW50LmNwcAorICAgIGRvbS9MaWZlY3ljbGVDYWxs
YmFja1F1ZXVlLmNwcAogICAgIGRvbS9MaXZlTm9kZUxpc3QuY3BwCiAgICAgZG9tL01lc3NhZ2VD
aGFubmVsLmNwcAogICAgIGRvbS9NZXNzYWdlRXZlbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc2
MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTQwMTgsNiArNDAxOCw3IEBACiAJCTlCNTMyRUEzMUJBOTI4NTcw
MDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjUzMkVBMTFCQTkyODU3MDAzOEE4MjcgLyogU2xvdEFzc2ln
bm1lbnQuY3BwICovOyB9OwogCQk5QjUzMkVBNDFCQTkyODU3MDAzOEE4MjcgLyogU2xvdEFzc2ln
bm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
NTMyRUEyMUJBOTI4NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oICovOyB9OwogCQk5QjU1
RUVFOTFCM0U4ODk4MDA1MzQyQkMgLyogRWRpdG9yQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU1RUVFODFCM0U4ODk4MDA1MzQyQkMgLyog
RWRpdG9yQ29jb2EubW0gKi87IH07CisJCTlCNTZDOUFBMUM4OTMyOUEwMEM0NTZERiAvKiBMaWZl
Y3ljbGVDYWxsYmFja1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCNTZDOUE5MUM4OTMyOUEwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFj
a1F1ZXVlLmNwcCAqLzsgfTsKIAkJOUI2OUQzQjQxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjY5RDNCMjFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmNwcCAqLzsgfTsK
IAkJOUI2OUQzQjUxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQzQjMxQjk4RkZFOTAw
RTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5oICovOyB9OwogCQk5QjY5RDNCODFCOTkxMDA3MDBF
MzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQzQjYxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNs
b3RFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTExNjk2LDYgKzExNjk3LDggQEAKIAkJOUI1MzJFQTIx
QkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNsb3RBc3NpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCNTVFRUU4MUIzRTg4OTgwMDUzNDJCQyAvKiBFZGl0b3JDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVkaXRvckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5QjU1RUVFQTFCM0YzRkVGMDA1MzQyQkMgLyogRWRpdG9yQ29j
b2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUI1NkM5QTgxQzg5MzEyODAwQzQ1NkRGIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVl
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5QjU2QzlBOTFDODkzMjlBMDBDNDU2REYgLyogTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
aWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUI2OUQzQjExQjk4RkYwQTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gSFRNTFNsb3RFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUI2OUQzQjIxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MU2xvdEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjY5RDNCMzFCOThGRkU5MDBFMzUxMkIg
LyogSFRNTFNsb3RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUxTbG90RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQzMjMsNiAr
MjQzMjYsOCBAQAogCQkJCTg1MDMxQjJEMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50
LmNwcCAqLywKIAkJCQk4NTAzMUIyRTBBNDRFRkM3MDBGOTkyRTAgLyogS2V5Ym9hcmRFdmVudC5o
ICovLAogCQkJCTE0Q0Y3QzIwMDlGNzExMDYwMEVCMzY2NSAvKiBLZXlib2FyZEV2ZW50LmlkbCAq
LywKKwkJCQk5QjU2QzlBOTFDODkzMjlBMDBDNDU2REYgLyogTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZS5jcHAgKi8sCisJCQkJOUI1NkM5QTgxQzg5MzEyODAwQzQ1NkRGIC8qIExpZmVjeWNsZUNhbGxi
YWNrUXVldWUuaCAqLywKIAkJCQlCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVM
aXN0LmNwcCAqLywKIAkJCQlCQzdGQTYxRjBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0
LmggKi8sCiAJCQkJQkM5QTYxNDQxNDY4NTlEOTAwNjA1N0ZEIC8qIG1ha2VfZG9tX2V4Y2VwdGlv
bnMucGwgKi8sCkBAIC0yOTg2OSw2ICsyOTg3NCw3IEBACiAJCQkJQThFQTdDQUQwQTE5MkI5QzAw
QThFRjVGIC8qIEhUTUxQcmVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODcy
MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTQzQkY1OTgxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJOUI1NkM5QUExQzg5MzI5QTAwQzQ1NkRGIC8qIExpZmVjeWNs
ZUNhbGxiYWNrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkY3QTUwQTE1Njk3ODAw
MEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMjIz
RkQxNkI1MkU0RTAwMTU3Mjg4IC8qIEhUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBODcxREMyMjBBMTUyMDU3MDBCMTJBNjggLyogSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDE5NzYwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNTAgQEAgUmVmUHRyPEVsZW1lbnQ+IEpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZQogICAgIHJldHVybiB3cmFwcGVkRWxlbWVudDsKIH0KIAor
dm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK3sKKyAgICBp
ZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZjxKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2U+IHByb3RlY3QoKnRoaXMpOworCisgICAgSlNMb2NrSG9sZGVy
IGxvY2sobV9pc29sYXRlZFdvcmxkLT52bSgpKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0
KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsK
KyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVj
dChjb250ZXh0LCAqbV9pc29sYXRlZFdvcmxkKTsKKyAgICBFeGVjU3RhdGUqIHN0YXRlID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisKKyAgICBKU09iamVjdCoganNFbGVtZW50ID0gYXNP
YmplY3QodG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCAmZWxlbWVudCkpOworCisgICAgUHJvcGVy
dHlOYW1lIGF0dHJpYnV0ZUNoYW5nZWQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImF0
dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayIpKTsKKyAgICBKU1ZhbHVlIGNhbGxiYWNrID0ganNFbGVt
ZW50LT5nZXQoc3RhdGUsIGF0dHJpYnV0ZUNoYW5nZWQpOworICAgIENhbGxEYXRhIGNhbGxEYXRh
OworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRh
KTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQorICAgICAgICByZXR1cm47CisK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0ZU5hbWUubmFt
ZXNwYWNlVVJJKCk7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFw
cGVuZChqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkp
OworICAgIGFyZ3MuYXBwZW5kKG9sZFZhbHVlID09IG51bGxBdG9tID8ganNOdWxsKCkgOiBqc1N0
cmluZ1dpdGhDYWNoZShzdGF0ZSwgb2xkVmFsdWUpKTsKKyAgICBhcmdzLmFwcGVuZChuZXdWYWx1
ZSA9PSBudWxsQXRvbSA/IGpzTnVsbCgpIDoganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIG5ld1Zh
bHVlKSk7CisgICAgYXJncy5hcHBlbmQobmFtZXNwYWNlVVJJID09IG51bGxBdG9tID8ganNOdWxs
KCkgOiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgYXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkko
KSkpOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBjYWxsVHlw
ZSwgY2FsbERhdGEpOworCisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAg
SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKHN0YXRlLCBjYWxsYmFjaywgY2FsbFR5cGUsIGNh
bGxEYXRhLCBqc0VsZW1lbnQsIGFyZ3MsIGV4Y2VwdGlvbik7CisKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUsIGNvbnRleHQpOworCisgICAgaWYg
KGV4Y2VwdGlvbikKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRlLCBleGNlcHRpb24pOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgJKHJl
dmlzaW9uIDE5NzYwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxl
bWVudEludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsK
IGNsYXNzIE1hdGhNTEVsZW1lbnQ7CitjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgU1ZHRWxl
bWVudDsKIAogY2xhc3MgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlIDogcHVibGljIFJlZkNvdW50
ZWQ8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsK
QEAgLTYyLDYgKzYzLDggQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2hvdWxkQ2xlYXJFeGNl
cHRpb24geyBDbGVhciwgRG9Ob3RDbGVhciB9OwogICAgIFJlZlB0cjxFbGVtZW50PiBjb25zdHJ1
Y3RFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIFNob3VsZENsZWFyRXhjZXB0aW9uKTsKIAor
ICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFs
dWUpOworCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KICAgICBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvcigpIHsgcmV0
dXJuIG1fY29uc3RydWN0b3IuZ2V0KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgJKHJldmlzaW9uIDE5NzYwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEpTTWFpblRocmVhZEV4ZWNT
dGF0ZV9oCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJMaWZlY3ljbGVD
YWxsYmFja1F1ZXVlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9Db21wbGV0aW9uLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9NaWNyb3Rhc2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAt
MTQ2LDYgKzE0Nyw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBKU0M6OkV4ZWNTdGF0ZSog
bV9wcmV2aW91c1N0YXRlOworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgQ3VzdG9t
RWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayBtX2xpZmVjeWNsZVByb2Nlc3NpbmdTdGFj
azsKKyNlbmRpZgogfTsKIAogSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55
VGhyZWFkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6
OkNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwg
Y29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVy
bmVkRXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxOTc2MDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtMjkxMyw2ICsyOTEzLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwogCisgICAgICAg
ICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVk
c0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayJ9KSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUylcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNz
aW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nlc3NpbmdTdGFjaztcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKKyAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgifSA9IDE7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCRpc0N1c3RvbSkgewogICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLnR4dAkocmV2aXNpb24gMTk3NjA1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsNyBA
QCBKU0xlZ2FjeVBhcmVudD0qCiBMZW5pZW50VGhpcwogTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAog
TmFtZWRDb25zdHJ1Y3Rvcj0qCitOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFjawogTmV3SW1w
dXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzCiBOZXdPYmplY3QKIE5vSW50ZXJmYWNlT2JqZWN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsCShyZXZpc2lvbiAxOTc2MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw2ICszMzIsMTAgQEAg
ZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIgogICAgIC8vIFB1dEZvcndh
cmRzCiAgICAgW1B1dEZvcndhcmRzPW5hbWVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXN0Tm9kZSBw
dXRGb3J3YXJkc0F0dHJpYnV0ZTsKICAgICBbUHV0Rm9yd2FyZHM9bmFtZV0gcmVhZG9ubHkgYXR0
cmlidXRlIFRlc3ROb2RlPyBwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlOworCisjaWYgZGVm
aW5lZChURVNUSU5HX0pTKQorICAgIFtOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFja10gdm9p
ZCBtZXRob2RXaXRoTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2soKTsKKyNlbmRpZgogfTsK
IAogLy8gVGhlIGZvbGxvd2luZyBjb21tZW50IHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGNvZGUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMTk3NjA1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJKU1Rlc3RTdWJP
YmouaCIKICNpbmNsdWRlICJKU2Jvb2wuaCIKKyNpbmNsdWRlICJMaWZlY3ljbGVDYWxsYmFja1F1
ZXVlLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdQb2ludC5oIgog
I2luY2x1ZGUgIlNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIgpAQCAtMTg1LDYgKzE4Niw3IEBA
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21p
c2VGdW5jdGlvbldpdGhFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
RnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKEpTQzo6RXhlY1N0YXRlKik7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25TeW1ib2xJdGVyYXRvcihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNT
dGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uS2V5cyhKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtNzEzLDYgKzcxNSw3IEBAIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJ0ZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50KSwgKGludHB0cl90
KSAoMSkgfSB9LAogICAgIHsgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIiwgSlND
OjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
RXhjZXB0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRlc3RQcm9taXNlRnVuY3Rp
b25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQpLCAoaW50
cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2lu
Z1N0YWNrIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
ZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdTdGFjayksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7
ICJlbnRyaWVzIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMp
LCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAia2V5cyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25LZXlzKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInZhbHVl
cyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMpLCAoaW50cHRy
X3QpICgwKSB9IH0sCkBAIC01MDIxLDYgKzUwMjQsMjEgQEAgc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2soRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIEN1c3RvbUVs
ZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sgY3VzdG9tRWxlbWVudExpZmVjeWNsZVByb2Nl
c3NpbmdTdGFjazsKKyNlbmRpZgorICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5lZWRz
TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIik7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhOZWVkc0xpZmVjeWNsZVByb2Nl
c3NpbmdTdGFjaygpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Cit9CisKIHVzaW5nIFRlc3RPYmpJdGVyYXRvciA9IEpTS2V5VmFsdWVJdGVyYXRvcjxKU1Rlc3RP
Ymo+OwogdXNpbmcgVGVzdE9iakl0ZXJhdG9yUHJvdG90eXBlID0gSlNLZXlWYWx1ZUl0ZXJhdG9y
UHJvdG90eXBlPEpTVGVzdE9iaj47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJ
bk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNw
cAkocmV2aXNpb24gMTk3NjA1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQAogI2luY2x1ZGUgIklkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5jcHAiCiAjaW5jbHVkZSAiSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCIK
ICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmNwcCIKKyNpbmNsdWRlICJMaWZlY3ljbGVDYWxsYmFj
a1F1ZXVlLmNwcCIKICNpbmNsdWRlICJMaXZlTm9kZUxpc3QuY3BwIgogI2luY2x1ZGUgIk1lc3Nh
Z2VDaGFubmVsLmNwcCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuY3BwIgpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTk3NjA1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ2xp
ZW50UmVjdExpc3QuaCIKICNpbmNsdWRlICJDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKKyNpbmNsdWRlICJDdXN0b21F
bGVtZW50RGVmaW5pdGlvbnMuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRl
ICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgiCkBA
IC02MSw2ICs2Miw3IEBACiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQu
aCIKKyNpbmNsdWRlICJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgiCiAjaW5jbHVkZSAiTWFpbkZy
YW1lLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCIKICNpbmNs
dWRlICJNdXRhdGlvblJlY29yZC5oIgpAQCAtMTI2Miw2ICsxMjY0LDE1IEBAIHZvaWQgRWxlbWVu
dDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWEKIAogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJl
ZVZlcnNpb24oKTsKIAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgaWYgKFVOTElL
RUxZKGlzQ3VzdG9tRWxlbWVudCgpKSkgeworICAgICAgICBhdXRvKiBkZWZpbml0aW9ucyA9IGRv
Y3VtZW50KCkuY3VzdG9tRWxlbWVudERlZmluaXRpb25zKCk7CisgICAgICAgIGF1dG8qIGludGVy
ZmFjZSA9IGRlZmluaXRpb25zLT5maW5kSW50ZXJmYWNlKHRhZ1FOYW1lKCkpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChpbnRlcmZhY2UpOworICAgICAgICBMaWZlY3ljbGVDYWxsYmFja1F1ZXVl
OjplbnF1ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCp0aGlzLCAqaW50ZXJmYWNlLCBuYW1l
LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKHZhbHVlSXNT
YW1lQXNCZWZvcmUpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAkocmV2aXNpb24gMTk3NjA1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTQgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nPyB0YWdOYW1lOwogCiAgICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSk7Ci0gICAgW09iakNMZWdhY3lV
bm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldEF0dHJpYnV0ZShbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3Ry
aW5nIHZhbHVlKTsKLSAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShbRGVmYXVsdD1VbmRlZmluZWRd
IG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKKworICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbiwgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2tdCisg
ICAgdm9pZCBzZXRBdHRyaWJ1dGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJp
bmcgbmFtZSwgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgdmFsdWUpOwor
CisgICAgW05lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrXSB2b2lkIHJlbW92ZUF0dHJpYnV0
ZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKICAgICBBdHRy
IGdldEF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcg
bmFtZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gQXR0ciBzZXRBdHRyaWJ1dGVOb2RlKFtEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgQXR0ciBuZXdBdHRyKTsKLSAgICBbUmFpc2VzRXhjZXB0
aW9uXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBBdHRyIG9sZEF0dHIpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzTGlmZWN5Y2xlUHJv
Y2Vzc2luZ1N0YWNrXSBBdHRyIHNldEF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBv
cHRpb25hbCBBdHRyIG5ld0F0dHIpOworICAgIFtSYWlzZXNFeGNlcHRpb24sIE5lZWRzTGlmZWN5
Y2xlUHJvY2Vzc2luZ1N0YWNrXSBBdHRyIHJlbW92ZUF0dHJpYnV0ZU5vZGUoW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBBdHRyIG9sZEF0dHIpOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9P
QkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICBbSW1wbGVtZW50ZWRBcz1n
ZXRFbGVtZW50c0J5VGFnTmFtZUZvck9iakNdIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1l
KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOwpAQCAtNTAsMTAg
KzUyLDEyIEBACiAgICAgLy8gRE9NIExldmVsIDIgQ29yZQogCiAgICAgW09iakNMZWdhY3lVbm5h
bWVkUGFyYW1ldGVyc10gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGVOUyhbRGVmYXVsdD1VbmRlZmlu
ZWRdIG9wdGlvbmFsIERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBbRGVmYXVsdD1VbmRlZmluZWRd
IG9wdGlvbmFsIERPTVN0cmluZyBsb2NhbE5hbWUpOwotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBh
cmFtZXRlcnMsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZXRBdHRyaWJ1dGVOUyhbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLAotICAgICAgICBbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLAotICAgICAg
ICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB2YWx1ZSk7Ci0gICAgW09i
akNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhET01TdHJp
bmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CisKKyAgICBbT2JqQ0xlZ2Fj
eVVubmFtZWRQYXJhbWV0ZXJzLCBSYWlzZXNFeGNlcHRpb24sIE5lZWRzTGlmZWN5Y2xlUHJvY2Vz
c2luZ1N0YWNrXQorICAgIHZvaWQgc2V0QXR0cmlidXRlTlMoW0RlZmF1bHQ9VW5kZWZpbmVkXSBv
cHRpb25hbCBET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwKKyAgICAgICAgW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgW0RlZmF1bHQ9VW5kZWZpbmVk
XSBvcHRpb25hbCBET01TdHJpbmcgdmFsdWUpOworCisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFy
YW1ldGVycywgTmVlZHNMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2tdIHZvaWQgcmVtb3ZlQXR0cmli
dXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogCiAj
aWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MK
ICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBJbXBsZW1lbnRlZEFzPWdldEVsZW1l
bnRzQnlUYWdOYW1lTlNGb3JPYmpDXSBOb2RlTGlzdCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKG9w
dGlvbmFsIERPTVN0cmluZyBuYW1lc3BhY2VVUkksIG9wdGlvbmFsIERPTVN0cmluZyBsb2NhbE5h
bWUpOwpAQCAtNjEsNyArNjUsNyBAQAogICAgIEhUTUxDb2xsZWN0aW9uIGdldEVsZW1lbnRzQnlU
YWdOYW1lTlMoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmc/IG5hbWVzcGFj
ZVVSSSwgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgbG9jYWxOYW1lKTsK
ICNlbmRpZgogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnNdIEF0dHIgZ2V0QXR0cmli
dXRlTm9kZU5TKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nPyBuYW1lc3Bh
Y2VVUkksIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7
Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gQXR0ciBzZXRBdHRyaWJ1dGVOb2RlTlMoW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCBBdHRyIG5ld0F0dHIpOworICAgIFtSYWlzZXNFeGNlcHRpb24s
IE5lZWRzTGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrXSBBdHRyIHNldEF0dHJpYnV0ZU5vZGVOUyhb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEF0dHIgbmV3QXR0cik7CiAgICAgYm9vbGVhbiBo
YXNBdHRyaWJ1dGUoRE9NU3RyaW5nIG5hbWUpOwogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnNdIGJvb2xlYW4gaGFzQXR0cmlidXRlTlMoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBE
T01TdHJpbmcgbG9jYWxOYW1lKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xpZmVjeWNs
ZUNhbGxiYWNrUXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9MaWZl
Y3ljbGVDYWxsYmFja1F1ZXVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9MaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEx
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmgi
CisKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSA8aGVhcC9IZWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExpZmVj
eWNsZVF1ZXVlSXRlbSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAg
SW52YWxpZCwKKyAgICAgICAgQXR0cmlidXRlQ2hhbmdlZCwKKyAgICB9OworCisgICAgTGlmZWN5
Y2xlUXVldWVJdGVtKEVsZW1lbnQmIGVsZW1lbnQsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYg
aW50ZXJmYWNlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQorICAgICAg
ICA6IG1fdHlwZShUeXBlOjpBdHRyaWJ1dGVDaGFuZ2VkKQorICAgICAgICAsIG1fZWxlbWVudChl
bGVtZW50KQorICAgICAgICAsIG1faW50ZXJmYWNlKGludGVyZmFjZSkKKyAgICAgICAgLCBtX2F0
dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKKyAgICAgICAgLCBtX29sZFZhbHVlKG9sZFZhbHVl
KQorICAgICAgICAsIG1fbmV3VmFsdWUobmV3VmFsdWUpCisgICAgeyB9CisKKyAgICB2b2lkIGlu
dm9rZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6OkludmFsaWQpOwor
ICAgICAgICBtX2ludGVyZmFjZS0+YXR0cmlidXRlQ2hhbmdlZChtX2VsZW1lbnQuZ2V0KCksIG1f
YXR0cmlidXRlTmFtZSwgbV9vbGRWYWx1ZSwgbV9uZXdWYWx1ZSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6SW52YWxpZCB9OworICAgIFJlZjxFbGVtZW50PiBt
X2VsZW1lbnQ7CisgICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gbV9pbnRlcmZhY2U7
CisgICAgUXVhbGlmaWVkTmFtZSBtX2F0dHJpYnV0ZU5hbWU7CisgICAgQXRvbWljU3RyaW5nIG1f
b2xkVmFsdWU7CisgICAgQXRvbWljU3RyaW5nIG1fbmV3VmFsdWU7Cit9OworCitMaWZlY3ljbGVD
YWxsYmFja1F1ZXVlOjpMaWZlY3ljbGVDYWxsYmFja1F1ZXVlKCkKK3sgfQorCitMaWZlY3ljbGVD
YWxsYmFja1F1ZXVlOjp+TGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpCit7CisgICAgQVNTRVJUKG1f
aXRlbXMuaXNFbXB0eSgpKTsKK30KKwordm9pZCBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlOjplbnF1
ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKEVsZW1lbnQmIGVsZW1lbnQsIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZSYgaW50ZXJmYWNlLAorICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3VmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHF1ZXVlID0gQ3VzdG9tRWxlbWVudExpZmVj
eWNsZVByb2Nlc3NpbmdTdGFjazo6ZW5zdXJlQ3VycmVudFF1ZXVlKCkpCisgICAgICAgIHF1ZXVl
LT5tX2l0ZW1zLmFwcGVuZChMaWZlY3ljbGVRdWV1ZUl0ZW0oZWxlbWVudCwgaW50ZXJmYWNlLCBh
dHRyaWJ1dGVOYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpKTsKK30KKwordm9pZCBMaWZlY3ljbGVD
YWxsYmFja1F1ZXVlOjppbnZva2VBbGwoKQoreworICAgIFZlY3RvcjxMaWZlY3ljbGVRdWV1ZUl0
ZW0+IGl0ZW1zOworICAgIGl0ZW1zLnN3YXAobV9pdGVtcyk7CisgICAgZm9yIChhdXRvJiBpdGVt
IDogaXRlbXMpCisgICAgICAgIGl0ZW0uaW52b2tlKCk7Cit9CisKK0xpZmVjeWNsZUNhbGxiYWNr
UXVldWUqIEN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2s6OmVuc3VyZUN1cnJl
bnRRdWV1ZSgpCit7CisgICAgLy8gRklYTUU6IFRoaXMgZWFybHkgZXhpdCBpbmRpY2F0ZXMgYSBi
dWcgdGhhdCBzb21lIERPTSBBUEkgaXMgbWlzc2luZyBOZWVkc0xpZmVjeWNsZVByb2Nlc3NpbmdT
dGFjaworICAgIGlmICghc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIGF1dG8qJiBxdWV1ZSA9IHNfY3VycmVudFByb2Nlc3NpbmdTdGFjay0+
bV9xdWV1ZTsKKyAgICBpZiAoIXF1ZXVlKSAvLyBXZSB1c2UgYSByYXcgcG9pbnRlciB0byBhdm9p
ZCBnZW5lYXJpbmcgY29kZSB0byBkZWxldGUgaXQgaW4gfkN1c3RvbUVsZW1lbnRMaWZlY3ljbGVQ
cm9jZXNzaW5nU3RhY2suCisgICAgICAgIHF1ZXVlID0gbmV3IExpZmVjeWNsZUNhbGxiYWNrUXVl
dWU7CisgICAgcmV0dXJuIHF1ZXVlOworfQorCitDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vz
c2luZ1N0YWNrKiBDdXN0b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrOjpzX2N1cnJl
bnRQcm9jZXNzaW5nU3RhY2sgPSBudWxscHRyOworCit2b2lkIEN1c3RvbUVsZW1lbnRMaWZlY3lj
bGVQcm9jZXNzaW5nU3RhY2s6OnByb2Nlc3NRdWV1ZSgpCit7CisgICAgQVNTRVJUKG1fcXVldWUp
OworICAgIG1fcXVldWUtPmludm9rZUFsbCgpOworICAgIGRlbGV0ZSBtX3F1ZXVlOworICAgIG1f
cXVldWUgPSBudWxscHRyOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0xpZmVjeWNsZUNhbGxiYWNrUXVldWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlX2gKKyNkZWZpbmUgTGlmZWN5Y2xl
Q2FsbGJhY2tRdWV1ZV9oCisKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOwor
Y2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKK2Ns
YXNzIExpZmVjeWNsZVF1ZXVlSXRlbTsKKworY2xhc3MgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSk7CitwdWJs
aWM6CisgICAgTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1ZSgpOworICAgIH5MaWZlY3ljbGVDYWxsYmFj
a1F1ZXVlKCk7CisKKyAgICBzdGF0aWMgdm9pZCBlbnF1ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxi
YWNrKEVsZW1lbnQmLCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmLAorICAgICAgICBjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSk7CisKKyAgICB2b2lkIGludm9rZUFsbCgpOworCitwcml2YXRlOgor
ICAgIFZlY3RvcjxMaWZlY3ljbGVRdWV1ZUl0ZW0+IG1faXRlbXM7Cit9OworCitjbGFzcyBDdXN0
b21FbGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrIHsKK3B1YmxpYzoKKyAgICBDdXN0b21F
bGVtZW50TGlmZWN5Y2xlUHJvY2Vzc2luZ1N0YWNrKCkKKyAgICAgICAgOiBtX3ByZXZpb3VzUHJv
Y2Vzc2luZ1N0YWNrKHNfY3VycmVudFByb2Nlc3NpbmdTdGFjaykKKyAgICB7CisgICAgICAgIHNf
Y3VycmVudFByb2Nlc3NpbmdTdGFjayA9IHRoaXM7CisgICAgfQorCisgICAgfkN1c3RvbUVsZW1l
bnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2soKQorICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZ
KG1fcXVldWUpKQorICAgICAgICAgICAgcHJvY2Vzc1F1ZXVlKCk7CisgICAgICAgIHNfY3VycmVu
dFByb2Nlc3NpbmdTdGFjayA9IG1fcHJldmlvdXNQcm9jZXNzaW5nU3RhY2s7CisgICAgfQorCisg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgcmVmZXJlbmNlIG9uY2UgImVuc3VyZSIgc3Rh
cnRzIHRvIHdvcmsuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIExpZmVjeWNsZUNhbGxiYWNr
UXVldWUqIGVuc3VyZUN1cnJlbnRRdWV1ZSgpOworCisgICAgc3RhdGljIGJvb2wgaGFzQ3VycmVu
dFByb2Nlc3NpbmdTdGFjaygpIHsgcmV0dXJuIHNfY3VycmVudFByb2Nlc3NpbmdTdGFjazsgfQor
Citwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvY2Vzc1F1ZXVlKCk7CisKKyAg
ICBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlKiBtX3F1ZXVlIHsgbnVsbHB0ciB9OworICAgIEN1c3Rv
bUVsZW1lbnRMaWZlY3ljbGVQcm9jZXNzaW5nU3RhY2sqIG1fcHJldmlvdXNQcm9jZXNzaW5nU3Rh
Y2s7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ3VzdG9tRWxlbWVudExpZmVjeWNsZVBy
b2Nlc3NpbmdTdGFjayogc19jdXJyZW50UHJvY2Vzc2luZ1N0YWNrOworfTsKKworfQorCisjZW5k
aWYKKworI2VuZGlmIC8vIExpZmVjeWNsZUNhbGxiYWNrUXVldWVfaApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTk3NjA1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTYtMDMtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGF0dHJpYnV0ZUNoYW5nZWQgbGlmZWN5
Y2xlIGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTUwMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBhIHRlc3QgZm9yIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayBhbmQgYSB0ZXN0
IGZvciB0aGUgdGltaW5nIG9mIGxpZmVjeWNsZSBjYWxsYmFja3MgaW4gZ2VuZXJhbC4KKworICAg
ICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2F0dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvYXR0cmli
dXRlLWNoYW5nZWQtY2FsbGJhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20t
ZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcu
aHRtbDogQWRkZWQuCisKIDIwMTYtMDMtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVXBkYXRlIGRlZmluZUN1c3RvbUVsZW1lbnQgYWNjb3JkaW5nIHRvIHRo
ZSBzcGVjIHJld3JpdGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2F0
dHJpYnV0ZS1jaGFuZ2VkLWNhbGxiYWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjay1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVt
ZW50cy9hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2IEBACisKK1BBU1Mgc2V0QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1
dGUgbXVzdCBlbnF1ZXVlIGFuZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIAorUEFT
UyBzZXRBdHRyaWJ1dGVOUyBhbmQgcmVtb3ZlQXR0cmlidXRlTlMgbXVzdCBlbnF1ZXVlIGFuZCBp
bnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIAorUEFTUyBzZXRBdHRyaWJ1dGVOb2RlIGFu
ZCByZW1vdmVBdHRyaWJ1dGVOUyBtdXN0IGVucXVldWUgYW5kIGludm9rZSBhdHRyaWJ1dGVDaGFu
Z2VkQ2FsbGJhY2sgCitQQVNTIHNldEF0dHJpYnV0ZU5vZGUgYW5kIHJlbW92ZUF0dHJpYnV0ZU5T
IG11c3QgZW5xdWV1ZSBhbmQgaW52b2tlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayAKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvYXR0cmlidXRlLWNoYW5nZWQtY2Fs
bGJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50
cy9hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvYXR0cmlidXRlLWNoYW5nZWQtY2FsbGJhY2suaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVtZW50czogYXR0cmlidXRlQ2hhbmdlZENhbGxi
YWNrPC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJl
Zj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50
PSJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgbXVzdCBiZSBlbnF1ZXVlZCB3aGVuZXZlciBjdXN0
b20gZWxlbWVudCdzIGF0dHJpYnV0ZSBpcyBhZGRlZCwgY2hhbmdlZCBvciByZW1vdmVkIj4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMv
c3BlYy9jdXN0b20vI2Rmbi1hdHRyaWJ1dGUtY2hhbmdlZC1jYWxsYmFjayI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3ZhciBh
cmd1bWVudExpc3QgPSBbXTsKK2NsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVt
ZW50IHsKKyAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkVmFsdWUsIG5ld1Zh
bHVlLCBuYW1lc3BhY2UpIHsKKyAgICAgICAgYXJndW1lbnRMaXN0LnB1c2goe2FyZ3VtZW50czog
YXJndW1lbnRzLCB2YWx1ZTogdGhpcy5nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpfSk7
CisgICAgfQorfQorZG9jdW1lbnQuZGVmaW5lRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnLCBN
eUN1c3RvbUVsZW1lbnQpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2Ug
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFyZ3Vt
ZW50TGlzdCA9IFtdOworCisgICAgaW5zdGFuY2Uuc2V0QXR0cmlidXRlKCd0aXRsZScsICdmb28n
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmdldEF0dHJpYnV0ZSgndGl0bGUnKSwgJ2Zv
bycpOworICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMSk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhcmd1bWVudExpc3RbMF0udmFsdWUsICdmb28nKTsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKGFyZ3VtZW50TGlzdFswXS5hcmd1bWVudHMsIFsndGl0bGUnLCBudWxsLCAnZm9v
JywgbnVsbF0pOworCisgICAgaW5zdGFuY2UucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpOworICAg
IGFzc2VydF9lcXVhbHMoaW5zdGFuY2UuZ2V0QXR0cmlidXRlKCd0aXRsZScpLCBudWxsKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50TGlzdC5sZW5ndGgsIDIpOworICAgIGFzc2VydF9lcXVh
bHMoYXJndW1lbnRMaXN0WzFdLnZhbHVlLCBudWxsKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGFyZ3VtZW50TGlzdFsxXS5hcmd1bWVudHMsIFsndGl0bGUnLCAnZm9vJywgbnVsbCwgbnVsbF0p
OworCit9LCAnc2V0QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1dGUgbXVzdCBlbnF1ZXVlIGFu
ZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkg
eworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1l
bGVtZW50Jyk7CisgICAgYXJndW1lbnRMaXN0ID0gW107CisKKyAgICBpbnN0YW5jZS5zZXRBdHRy
aWJ1dGVOUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAndGl0bGUnLCAnaGVsbG8nKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmdldEF0dHJpYnV0ZSgndGl0bGUnKSwgJ2hlbGxv
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhhcmd1bWVudExpc3QubGVuZ3RoLCAxKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGFyZ3VtZW50TGlzdFswXS52YWx1ZSwgJ2hlbGxvJyk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhhcmd1bWVudExpc3RbMF0uYXJndW1lbnRzLCBbJ3RpdGxlJywgbnVsbCwgJ2hl
bGxvJywgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJ10pOworCisgICAgaW5zdGFuY2UucmVt
b3ZlQXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3RpdGxlJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyksIG51bGwpOwor
ICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMik7CisgICAgYXNzZXJ0X2Vx
dWFscyhhcmd1bWVudExpc3RbMV0udmFsdWUsIG51bGwpOworICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoYXJndW1lbnRMaXN0WzFdLmFyZ3VtZW50cywgWyd0aXRsZScsICdoZWxsbycsIG51bGwsICdo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyddKTsKKworfSwgJ3NldEF0dHJpYnV0ZU5TIGFuZCBy
ZW1vdmVBdHRyaWJ1dGVOUyBtdXN0IGVucXVldWUgYW5kIGludm9rZSBhdHRyaWJ1dGVDaGFuZ2Vk
Q2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhcmd1bWVudExp
c3QgPSBbXTsKKworICAgIHZhciBhdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdpZCcp
OworICAgIGF0dHIudmFsdWUgPSAnYmFyJzsKKyAgICBpbnN0YW5jZS5zZXRBdHRyaWJ1dGVOb2Rl
KGF0dHIpOworCisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ2lkJyks
ICdiYXInKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50TGlzdC5sZW5ndGgsIDEpOworICAg
IGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0WzBdLnZhbHVlLCAnYmFyJyk7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhhcmd1bWVudExpc3RbMF0uYXJndW1lbnRzLCBbJ2lkJywgbnVsbCwgJ2Jh
cicsIG51bGxdKTsKKworICAgIGluc3RhbmNlLnJlbW92ZUF0dHJpYnV0ZU5vZGUoYXR0cik7Cisg
ICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5nZXRBdHRyaWJ1dGUoJ2lkJyksIG51bGwpOworICAg
IGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0Lmxlbmd0aCwgMik7CisgICAgYXNzZXJ0X2VxdWFs
cyhhcmd1bWVudExpc3RbMV0udmFsdWUsIG51bGwpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
YXJndW1lbnRMaXN0WzFdLmFyZ3VtZW50cywgWydpZCcsICdiYXInLCBudWxsLCBudWxsXSk7CisK
K30sICdzZXRBdHRyaWJ1dGVOb2RlIGFuZCByZW1vdmVBdHRyaWJ1dGVOUyBtdXN0IGVucXVldWUg
YW5kIGludm9rZSBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2snKTsKKwordGVzdChmdW5jdGlvbiAo
KSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9t
LWVsZW1lbnQnKTsKKyAgICBhcmd1bWVudExpc3QgPSBbXTsKKworICAgIHZhciBhdHRyID0gZG9j
dW1lbnQuY3JlYXRlQXR0cmlidXRlTlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3In
KTsKKyAgICBhdHRyLnZhbHVlID0gJzEwMCc7CisgICAgaW5zdGFuY2Uuc2V0QXR0cmlidXRlTm9k
ZShhdHRyKTsKKworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UuZ2V0QXR0cmlidXRlKCdyJyks
ICcxMDAnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50TGlzdC5sZW5ndGgsIDEpOworICAg
IGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0WzBdLnZhbHVlLCAnMTAwJyk7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhhcmd1bWVudExpc3RbMF0uYXJndW1lbnRzLCBbJ3InLCBudWxsLCAnMTAw
JywgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJ10pOworCisgICAgaW5zdGFuY2UucmVtb3Zl
QXR0cmlidXRlTm9kZShhdHRyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmdldEF0dHJp
YnV0ZSgncicpLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50TGlzdC5sZW5ndGgs
IDIpOworICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRMaXN0WzFdLnZhbHVlLCBudWxsKTsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGFyZ3VtZW50TGlzdFsxXS5hcmd1bWVudHMsIFsncicsICcx
MDAnLCBudWxsLCAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnXSk7CisKK30sICdzZXRBdHRy
aWJ1dGVOb2RlIGFuZCByZW1vdmVBdHRyaWJ1dGVOUyBtdXN0IGVucXVldWUgYW5kIGludm9rZSBh
dHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2snKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJh
Y2stdGltaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy9saWZlY3ljbGUtY2FsbGJhY2stdGltaW5nLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1j
YWxsYmFjay10aW1pbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBA
QAorCitQQVNTIHNldEF0dHJpYnV0ZSBhbmQgcmVtb3ZlQXR0cmlidXRlIG11c3QgZW5xdWV1ZSBh
bmQgaW52b2tlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayAKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvbGlmZWN5Y2xlLWNhbGxiYWNrLXRpbWluZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxs
YmFjay10aW1pbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL2xpZmVjeWNsZS1jYWxsYmFjay10aW1pbmcuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
Q3VzdG9tIEVsZW1lbnRzOiBMaWZlY3ljbGUgY2FsbGJhY2sgbXVzdCBiZSBpbnZva2VkIGJlZm9y
ZSByZXR1cm5pbmcgdG8gYXV0aG9yIHNjcmlwdHM8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9y
IiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8
bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IkxpZmVjeWNsZSBjYWxsYmFja3MgbXVzdCBiZSBp
bnZva2VkIGJlZm9yZSByZXR1cm5pbmcgdG8gYXV0aG9yIHNjcmlwdHMiPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3Rv
bS8jZW5xdWV1aW5nLWFuZC1pbnZva2luZy1jYWxsYmFja3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0nc3R5
bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCitjbGFzcyBNeUN1c3Rv
bUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgYXR0cmlidXRlQ2hhbmdlZENhbGxi
YWNrKC4uLmFyZ3MpIHsKKyAgICAgICAgdGhpcy5oYW5kbGVyKC4uLmFyZ3MpOworICAgIH0KKwor
ICAgIGhhbmRsZXIoKSB7IH0KK30KK2RvY3VtZW50LmRlZmluZUVsZW1lbnQoJ215LWN1c3RvbS1l
bGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFy
IGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsK
KyAgICB2YXIgYW5vdGhlckluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3Vz
dG9tLWVsZW1lbnQnKTsKKworICAgIHZhciBjYWxsYmFja09yZGVyID0gW107CisgICAgaW5zdGFu
Y2UuaGFuZGxlciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY2FsbGJhY2tPcmRlci5wdXNoKFt0
aGlzLCAnYmVnaW4nXSk7CisgICAgICAgIGFub3RoZXJJbnN0YW5jZS5zZXRBdHRyaWJ1dGUoJ2Rh
dGEtdGl0bGUnLCAnYmF6Jyk7CisgICAgICAgIGNhbGxiYWNrT3JkZXIucHVzaChbdGhpcywgJ2Vu
ZCddKTsKKyAgICB9CisgICAgYW5vdGhlckluc3RhbmNlLmhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgIGNhbGxiYWNrT3JkZXIucHVzaChbdGhpcywgJ2JlZ2luJ10pOworICAgICAgICBj
YWxsYmFja09yZGVyLnB1c2goW3RoaXMsICdlbmQnXSk7CisgICAgfQorCisgICAgaW5zdGFuY2Uu
c2V0QXR0cmlidXRlKCd0aXRsZScsICdmb28nKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNhbGxiYWNr
T3JkZXIubGVuZ3RoLCA0KTsKKworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbGJhY2tPcmRl
clswXSwgW2luc3RhbmNlLCAnYmVnaW4nXSk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxs
YmFja09yZGVyWzFdLCBbYW5vdGhlckluc3RhbmNlLCAnYmVnaW4nXSk7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhjYWxsYmFja09yZGVyWzJdLCBbYW5vdGhlckluc3RhbmNlLCAnZW5kJ10pOwor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbGJhY2tPcmRlclszXSwgW2luc3RhbmNlLCAnZW5k
J10pOworCit9LCAnc2V0QXR0cmlidXRlIGFuZCByZW1vdmVBdHRyaWJ1dGUgbXVzdCBlbnF1ZXVl
IGFuZCBpbnZva2UgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJyk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="297676"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>