<?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>120912</bug_id>
          
          <creation_ts>2013-09-06 17:02:22 -0700</creation_ts>
          <short_desc>Support WeakMap</short_desc>
          <delta_ts>2013-09-10 14:15:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>925922</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-06 17:02:22 -0700</bug_when>
    <thetext>Support WeakMap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925923</commentid>
    <comment_count>1</comment_count>
      <attachid>210818</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-06 17:02:35 -0700</bug_when>
    <thetext>Created attachment 210818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925925</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-06 17:05:20 -0700</bug_when>
    <thetext>Attachment 210818 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/heap/WeakImpl.h&apos;, u&apos;Source/JavaScriptCore/heap/WeakInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSWeakMap.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSWeakMap.h&apos;, u&apos;Source/JavaScriptCore/runtime/WeakMapConstructor.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/WeakMapConstructor.h&apos;, u&apos;Source/JavaScriptCore/runtime/WeakMapData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/WeakMapData.h&apos;, u&apos;Source/JavaScriptCore/runtime/WeakMapPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/WeakMapPrototype.h&apos;, u&apos;Source/JavaScriptCore/tests/mozilla/actual.html&apos;]&quot; exit_code: 1
Source/JavaScriptCore/runtime/WeakMapData.cpp:57:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/WeakMapData.cpp:59:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/JavaScriptCore/runtime/WeakMapData.cpp:69:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/JavaScriptCore/runtime/WeakMapData.cpp:77:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/JavaScriptCore/runtime/WeakMapData.cpp:87:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/JavaScriptCore/runtime/WeakMapData.cpp:96:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
Source/JavaScriptCore/runtime/WeakMapConstructor.cpp:64:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
Total errors found: 7 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925928</commentid>
    <comment_count>3</comment_count>
      <attachid>210818</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-06 17:09:50 -0700</bug_when>
    <thetext>Comment on attachment 210818
Patch

Attachment 210818 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1718207</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925931</commentid>
    <comment_count>4</comment_count>
      <attachid>210818</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-06 17:11:37 -0700</bug_when>
    <thetext>Comment on attachment 210818
Patch

Attachment 210818 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1705578</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925955</commentid>
    <comment_count>5</comment_count>
      <attachid>210818</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-06 18:37:15 -0700</bug_when>
    <thetext>Comment on attachment 210818
Patch

Attachment 210818 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1704539</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925966</commentid>
    <comment_count>6</comment_count>
      <attachid>210818</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-06 19:17:44 -0700</bug_when>
    <thetext>Comment on attachment 210818
Patch

Attachment 210818 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1708553</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925975</commentid>
    <comment_count>7</comment_count>
      <attachid>210818</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-06 19:38:49 -0700</bug_when>
    <thetext>Comment on attachment 210818
Patch

Attachment 210818 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1707594</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925976</commentid>
    <comment_count>8</comment_count>
      <attachid>210818</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-06 19:41:41 -0700</bug_when>
    <thetext>Comment on attachment 210818
Patch

Attachment 210818 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1709541</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925977</commentid>
    <comment_count>9</comment_count>
      <attachid>210818</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-06 19:50:42 -0700</bug_when>
    <thetext>Comment on attachment 210818
Patch

Attachment 210818 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1718242</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925980</commentid>
    <comment_count>10</comment_count>
      <attachid>210818</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-09-06 20:20:28 -0700</bug_when>
    <thetext>Comment on attachment 210818
Patch

Attachment 210818 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1704565</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926189</commentid>
    <comment_count>11</comment_count>
      <attachid>210818</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-07 08:38:44 -0700</bug_when>
    <thetext>Comment on attachment 210818
Patch

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

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:204
&gt;      WriteBarrier&lt;Structure&gt; m_mapDataStructure;
&gt; +    WriteBarrier&lt;Structure&gt; m_weakMapDataStructure;

Does the WeakMapData object&apos;s structure need to be per-global object if it is not expose (e.g. can it be per-vm)?  Same question for MapData&apos;s structure?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926245</commentid>
    <comment_count>12</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-07 12:08:55 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 210818 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210818&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:204
&gt; &gt;      WriteBarrier&lt;Structure&gt; m_mapDataStructure;
&gt; &gt; +    WriteBarrier&lt;Structure&gt; m_weakMapDataStructure;
&gt; 
&gt; Does the WeakMapData object&apos;s structure need to be per-global object if it is not expose (e.g. can it be per-vm)?  Same question for MapData&apos;s structure?

Not strictly but the destructible object is an Object and thus requires a global object :-/

I&apos;m still working on WeakMap so was using this to move the patch around -- it&apos;s currently hideously ugly, leaks like a sieve, etc, etc :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926964</commentid>
    <comment_count>13</comment_count>
      <attachid>211107</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-09 15:41:17 -0700</bug_when>
    <thetext>Created attachment 211107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926970</commentid>
    <comment_count>14</comment_count>
      <attachid>211107</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-09 15:59:34 -0700</bug_when>
    <thetext>Comment on attachment 211107
Patch

Attachment 211107 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1736433</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926973</commentid>
    <comment_count>15</comment_count>
      <attachid>211107</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-09 16:02:06 -0700</bug_when>
    <thetext>Comment on attachment 211107
Patch

Attachment 211107 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1726714</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926980</commentid>
    <comment_count>16</comment_count>
      <attachid>211107</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-09 16:08:46 -0700</bug_when>
    <thetext>Comment on attachment 211107
Patch

Attachment 211107 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1734446</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926982</commentid>
    <comment_count>17</comment_count>
      <attachid>211112</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-09 16:16:46 -0700</bug_when>
    <thetext>Created attachment 211112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927252</commentid>
    <comment_count>18</comment_count>
      <attachid>211112</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-10 03:30:46 -0700</bug_when>
    <thetext>Comment on attachment 211112
Patch

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

&gt; Source/JavaScriptCore/runtime/JSWeakMap.h:35
&gt; +class JSWeakMap : public JSObject {

Most of these instance classes are derived from JSNonFinalObjects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927460</commentid>
    <comment_count>19</comment_count>
      <attachid>211234</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-10 13:40:14 -0700</bug_when>
    <thetext>Created attachment 211234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927473</commentid>
    <comment_count>20</comment_count>
      <attachid>211234</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-09-10 13:58:08 -0700</bug_when>
    <thetext>Comment on attachment 211234
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        (JSC::JSGlobalObject::reset):
&gt; +        (JSC::JSGlobalObject::visitChildren):

I don&apos;t like empty function lists like this :(.

&gt; Source/JavaScriptCore/runtime/WeakMapConstructor.cpp:46
&gt; +static EncodedJSValue JSC_HOST_CALL constructWeakMapConstructor(ExecState* exec)

Let&apos;s call this &quot;constructWeakMap&quot;.

&gt; Source/JavaScriptCore/runtime/WeakMapData.cpp:44
&gt; +    , m_gcCleaner(this)

Let&apos;s call this &quot;m_deadKeyCleaner&quot;.

&gt; Source/JavaScriptCore/runtime/WeakMapData.cpp:66
&gt; +    // This sin&apos;t exact, but it is close enough, and proportional to the actual

Should be &quot;isn&apos;t&quot;.

&gt; Source/JavaScriptCore/runtime/WeakMapData.cpp:79
&gt; +    auto iter = m_map.find(key);
&gt; +    if (iter != m_map.end()) {
&gt; +        iter-&gt;value.set(callFrame-&gt;vm(), this, value);
&gt; +        return;
&gt; +    }
&gt; +    // Here we force the write barrier on the key.
&gt; +    m_map.add(WriteBarrier&lt;JSObject&gt;(callFrame-&gt;vm(), this, key).get(), WriteBarrier&lt;Unknown&gt;(callFrame-&gt;vm(), this, value));

I think it would be better to use the &quot;add 0&quot; idiom here:

auto result = m_map.add(WriteBarrier&lt;JSObject&gt;(callFrame-&gt;vm(), this, key).get(), WriteBarrier&lt;Unknown&gt;(callFrame-&gt;vm(), this, value));
if (!result.isNewEntry)
    result.iterator-&gt;value = value;

This avoids a second hash table lookup in the case where we add a new entry to the table.

&gt; Source/JavaScriptCore/runtime/WeakMapData.cpp:113
&gt; +    for (auto ptr = m_target-&gt;m_map.begin(), end = m_target-&gt;m_map.end(); ptr != end; ++ptr) {

I think we usually use &quot;it&quot; for iterators.

&gt; Source/JavaScriptCore/runtime/WeakMapData.cpp:131
&gt; +        for (auto ptr = m_target-&gt;m_map.begin(), end = m_target-&gt;m_map.end(); ptr != end; ++ptr) {

Ditto.

&gt; Source/JavaScriptCore/runtime/WeakMapData.cpp:140
&gt; +        for (auto ptr = m_target-&gt;m_map.begin(), end = m_target-&gt;m_map.end(); ptr != end; ++ptr) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927476</commentid>
    <comment_count>21</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-09-10 14:00:10 -0700</bug_when>
    <thetext>&gt; I think it would be better to use the &quot;add 0&quot; idiom here:
&gt; 
&gt; auto result = m_map.add(WriteBarrier&lt;JSObject&gt;(callFrame-&gt;vm(), this, key).get(), WriteBarrier&lt;Unknown&gt;(callFrame-&gt;vm(), this, value));
&gt; if (!result.isNewEntry)
&gt;     result.iterator-&gt;value = value;

I meant:

auto result = m_map.add(WriteBarrier&lt;JSObject&gt;(callFrame-&gt;vm(), this, key).get(), WriteBarrier&lt;Unknown&gt;());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927490</commentid>
    <comment_count>22</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-10 14:15:47 -0700</bug_when>
    <thetext>Committed r155473: &lt;http://trac.webkit.org/changeset/155473&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210818</attachid>
            <date>2013-09-06 17:02:35 -0700</date>
            <delta_ts>2013-09-09 15:41:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120912-20130906170235.patch</filename>
            <type>text/plain</type>
            <size>78749</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODZjZGM1NGRjNDZjNWIxY2FjZjk1ZDE1ODU2NzI3ZDE5ZDk0Zjc4Li4xMzFjMmZkMGQ1YjI0OWE4
ODc3ZDVhNzM5MDEwM2NiNDZkODY4YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxMy0wOS0wNiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgV2Vha01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIwOTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGhlYXAvV2Vha0ltcGwuaDoKKyAgICAgICAgKEpTQzo6V2Vha0ltcGw6
OnN0YXRlKToKKyAgICAgICAgKEpTQzo6V2Vha0ltcGw6OmpzVmFsdWUpOgorICAgICAgICAqIGhl
YXAvV2Vha0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6UG9pbnRlclRvV2Vha0ltcGxUcmFuc2xh
dG9yOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UG9pbnRlclRvV2Vha0ltcGxUcmFuc2xhdG9yOjpl
cXVhbCk6CisgICAgICAgIChKU0M6OldlYWtJbXBsSGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6
OldlYWtJbXBsSGFzaDo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OndlYWtNYXBEYXRhU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTV2Vha01hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1dlYWtN
YXA6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWFrTWFwOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTV2Vha01hcC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SlNXZWFrTWFwOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1dlYWtNYXA6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2Vha01hcDo6d2Vha01hcERhdGEpOgorICAgICAg
ICAoSlNDOjpKU1dlYWtNYXA6OkpTV2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFw
Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdlYWtNYXBDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAg
ICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpXZWFrTWFwQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVj
dG9yOjpXZWFrTWFwQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha01hcERhdGE6OldlYWtNYXBEYXRhKToKKyAg
ICAgICAgKEpTQzo6V2Vha01hcERhdGE6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpXZWFrTWFw
RGF0YTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpzZXQpOgor
ICAgICAgICAoSlNDOjpXZWFrTWFwRGF0YTo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2Vha01hcERh
dGE6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpjb250YWlucyk6CisgICAg
ICAgIChKU0M6OldlYWtNYXBEYXRhOjpjbGVhcik6CisgICAgICAgICogcnVudGltZS9XZWFrTWFw
RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha01hcERhdGE6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OldlYWtNYXBEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvV2Vha01hcFByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpXZWFrTWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmdldFdlYWtNYXBEYXRhKToK
KyAgICAgICAgKEpTQzo6cHJvdG9GdW5jV2Vha01hcENsZWFyKToKKyAgICAgICAgKEpTQzo6cHJv
dG9GdW5jV2Vha01hcERlbGV0ZSk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtNYXBHZXQp
OgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwSGFzKToKKyAgICAgICAgKEpTQzo6cHJv
dG9GdW5jV2Vha01hcFNldCk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpXZWFrTWFwUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpXZWFrTWFwUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpXZWFrTWFwUHJvdG90eXBlOjpXZWFrTWFwUHJvdG90eXBlKToKKyAgICAgICAgKiB0ZXN0cy9t
b3ppbGxhL2FjdHVhbC5odG1sOiBBZGRlZC4KKwogMjAxMy0wOS0wNiAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9y
IHRoZSBHVEsgcG9ydCB3aGVuIGJ1aWxkaW5nIHdpdGggRlRMIEpJVCBlbmFibGVkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYTI2ZWMyZTQyM2YxOTY3ZDgzNmVlYjUyMmUwZGM5
NTliMzY0OGFlLi5mZDcwYzM4YjA3YWJiZjI4NzQ3MThjNDc3ZGJjZTJhOWRlZWY3YzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTM5LDYgKzkzOSwxNCBAQAogCQlBN0MxRUFG
MDE3OTg3QUI2MDAyOTlEQjIgLyogSlNTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QzFFQUVCMTc5ODdBQjYwMDI5OURCMiAvKiBK
U1N0YWNrSW5saW5lcy5oICovOyB9OwogCQlBN0MxRUFGMTE3OTg3QUI2MDAyOTlEQjIgLyogU3Rh
Y2tWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3QzFFQUVDMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuY3BwICovOyB9Owog
CQlBN0MxRUFGMjE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0MxRUFFRDE3OTg3QUI2MDAyOTlE
QjIgLyogU3RhY2tWaXNpdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQTdDQTNBRTMxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0NBM0FERDE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmNwcCAqLzsgfTsK
KwkJQTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBREUxN0RBNDFB
RTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBN0NBM0FFNTE3REE0
MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FERjE3REE0MUFFMDA2NTM4QUYgLyogV2Vh
a01hcFByb3RvdHlwZS5jcHAgKi87IH07CisJCUE3Q0EzQUU2MTdEQTQxQUUwMDY1MzhBRiAvKiBX
ZWFrTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0NBM0FFMDE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5oICov
OyB9OworCQlBN0NBM0FFNzE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUUxMTdEQTQxQUUw
MDY1MzhBRiAvKiBKU1dlYWtNYXAuY3BwICovOyB9OworCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4
QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi87IH07CisJ
CUE3Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFOTE3REE1MTY4MDA2NTM4
QUYgLyogV2Vha01hcERhdGEuY3BwICovOyB9OworCQlBN0NBM0FFQzE3REE1MTY4MDA2NTM4QUYg
LyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovOyB9Owog
CQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3
NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi87IH07CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxv
Y2tJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyog
REZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlv
blNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0yMTQ3LDYgKzIxNTUsMTQgQEAKIAkJQTdDMUVBRUQxNzk4N0FCNjAwMjk5REIyIC8qIFN0YWNr
VmlzaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1Zpc2l0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDMjI1Q0MxMzk5ODFGMTAwRkYxNjYy
IC8qIEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRo
b247IHBhdGggPSBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBN0MyMjVDRDEzOTk4NDlDMDBGRjE2NjIgLyogS2V5d29yZExvb2t1cC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXl3b3JkTG9va3VwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Q0EzQUREMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFw
Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vh
a01hcENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDQTNB
REUxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFwQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTdDQTNBREYxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcFByb3Rv
dHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Q0EzQUUwMTdEQTQxQUUw
MDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYWtNYXBQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdDQTNBRTExN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYWtNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcERhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyog
V2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcERh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHQmFzaWNCbG9jay5jcHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdCbG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOEND
MDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0lu
c2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzM4MCw2ICszMzk2
LDE0IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAog
CQkJCTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJQTdE
Q0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAorCQkJCUE3Q0EzQURE
MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUE3Q0Ez
QURFMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBN0NB
M0FERjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTdD
QTNBRTAxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuaCAqLywKKwkJCQlBN0NB
M0FFMTE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmNwcCAqLywKKwkJCQlBN0NBM0FFMjE3
REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8sCisJCQkJQTdDQTNBRTkxN0RBNTE2ODAw
NjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLywKKwkJCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4
QUYgLyogV2Vha01hcERhdGEuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zOTkyLDYgKzQwMTYsNyBAQAogCQkJCTBGQzA5NzZB
MTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIz
NUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZv
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0NBM0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01h
cERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBE
RkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMw
MDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQyMTIsNiArNDIzNyw3IEBACiAJCQkJMTQ4NzRBRTYxNUVCREU0
QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzBDNEFDMTY4MTAz
MDIwMDE3MDExRCAvKiBKU1NjcmlwdFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OTE5RDExMTU3RjMzMkMwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OUQ5RTE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDVFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0YWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3OTg3QUI2MDAyOTlEQjIgLyogSlNTdGFja0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDMzNyw2ICs0MzYzLDcgQEAKIAkJCQkwRkY3MjlC
QTE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGNzI5QkIxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NS
RW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Q0EzQUU0MTdE
QTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRjcyOUJDMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJEMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckRh
dGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRTE2NkFEMzYwMDAwRjVCQTMgLyog
UHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ0MDIsNiArNDQy
OSw3IEBACiAJCQkJQkMxOEM0NkEwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIyODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Q0EzQUU2MTdEQTQxQUUwMDY1MzhBRiAvKiBX
ZWFrTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAx
NDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYz
MDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDJDOTI0
MTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAg
LTQ5ODYsNiArNTAxNCw3IEBACiAJCQkJMTQ3RjM5Q0MxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0
aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyRDU4QzM0MTU5MTJGRUUwMDIx
QTg0NCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZE
MkYxNUE4RENFMDAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBN0NBM0FFQjE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzIyMzlEMUExNjI2MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMyMTEyMkUxMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVh
ZFNoYXJlZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MzMyOUYxNENBN0RDQTAwODVG
M0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MTI3LDYgKzUxNTYs
NyBAQAogCQkJCTE0NDY5REUyMTA3RUM3RTcwMDY1MDQ0NiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFMzEwN0VDN0U3MDA2NTA0NDYgLyogTnVtYmVy
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REU0MTA3RUM3RTcwMDY1MDQ0NiAv
KiBOdW1iZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdDQTNBRTMxN0RBNDFB
RTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NkYzRUVCRTE2OENERTkzMDA3N0I5MkEgLyogT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxNDQ2OURFNTEwN0VDN0U3MDA2NTA0NDYgLyogT2JqZWN0Q29uc3RydWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTYxMDdFQzdFNzAwNjUwNDQ2IC8qIE9i
amVjdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUxNjAsOSArNTE5MCwxMSBAQAog
CQkJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0NzRDMzNDMTZBQTJEOUIwMDYyRjAxRCAvKiBQcm90b3R5cGVNYXAuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MzMyQTMxNENBN0RENzAwODVGM0M2IC8qIFB1dEJ5SWRT
dGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdDQTNBRTUxN0RBNDFBRTAwNjUzOEFGIC8q
IFdlYWtNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNjBBQzMxNjc0MEY4
ODAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQy
ODA4NDExMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
MTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTdDQTNBRTcxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDhBMzJCMTdENTFGNTcwMENBMkM0MCAvKiBERkdU
b0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODQyMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWtJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5oCmluZGV4
IGNhOTNmYjI4NjY3YjhkZTRhN2Y0OTNhMDhkMDAwOGFlNzZmYzk4OTIuLjg0YjZjYWQ3Y2Q1NzBj
ZjRiZDg0Njk2ZTYwNjNmZWY2ZDdhMjIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWtJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vh
a0ltcGwuaApAQCAtNDgsMTAgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICBXZWFrSW1wbCgpOwogICAg
IFdlYWtJbXBsKEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciosIHZvaWQqIGNvbnRleHQpOwogCi0g
ICAgU3RhdGUgc3RhdGUoKTsKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0
U3RhdGUoU3RhdGUpOwogCi0gICAgY29uc3QgSlNWYWx1ZSYganNWYWx1ZSgpOworICAgIGNvbnN0
IEpTVmFsdWUmIGpzVmFsdWUoKSBjb25zdDsKICAgICBXZWFrSGFuZGxlT3duZXIqIHdlYWtIYW5k
bGVPd25lcigpOwogICAgIHZvaWQqIGNvbnRleHQoKTsKIApAQCAtNzksNyArNzksNyBAQCBpbmxp
bmUgV2Vha0ltcGw6OldlYWtJbXBsKEpTVmFsdWUganNWYWx1ZSwgV2Vha0hhbmRsZU93bmVyKiB3
ZWFrSGFuZGxlT3duZXIsIHZvaQogICAgIEFTU0VSVChtX2pzVmFsdWUgJiYgbV9qc1ZhbHVlLmlz
Q2VsbCgpKTsKIH0KIAotaW5saW5lIFdlYWtJbXBsOjpTdGF0ZSBXZWFrSW1wbDo6c3RhdGUoKQor
aW5saW5lIFdlYWtJbXBsOjpTdGF0ZSBXZWFrSW1wbDo6c3RhdGUoKSBjb25zdAogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxTdGF0ZT4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fd2Vh
a0hhbmRsZU93bmVyKSAmIFN0YXRlTWFzayk7CiB9CkBAIC05MCw3ICs5MCw3IEBAIGlubGluZSB2
b2lkIFdlYWtJbXBsOjpzZXRTdGF0ZShXZWFrSW1wbDo6U3RhdGUgc3RhdGUpCiAgICAgbV93ZWFr
SGFuZGxlT3duZXIgPSByZWludGVycHJldF9jYXN0PFdlYWtIYW5kbGVPd25lcio+KChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4obV93ZWFrSGFuZGxlT3duZXIpICYgflN0YXRlTWFzaykgfCBz
dGF0ZSk7CiB9CiAKLWlubGluZSBjb25zdCBKU1ZhbHVlJiBXZWFrSW1wbDo6anNWYWx1ZSgpCitp
bmxpbmUgY29uc3QgSlNWYWx1ZSYgV2Vha0ltcGw6OmpzVmFsdWUoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2pzVmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9XZWFrSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMu
aAppbmRleCBjNjNhNDY1NjAxMDE3NmUyMTVlN2I2ZTYxNzg1NTYwZjcyN2I2MmVlLi5hODBkYTc5
ZmQzNmZkNTM0MWQ3NTVmYmYxNjg1NDk4ODc4ODllY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtJbmxpbmVzLmgKQEAgLTE0Nyw2ICsxNDcsNTIgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VD4mIHdlYWssIFQqIGNlbGwpCiAgICAg
d2Vhay5jbGVhcigpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFBvaW50ZXJU
b1dlYWtJbXBsVHJhbnNsYXRvciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCog
cG9pbnRlcikKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OmludEhhc2gocmVpbnRlcnByZXRf
Y2FzdDx0eXBlbmFtZSBXVEY6OkludFR5cGVzPHNpemVvZihUKik+OjpVbnNpZ25lZFR5cGU+KHBv
aW50ZXIpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWFrSW1wbCog
d2VhaywgY29uc3QgVCogcG9pbnRlcikKKyAgICB7CisgICAgICAgIGlmICghd2VhayB8fCAod2Vh
ay0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiB3ZWFrLT5qc1ZhbHVlKCkuYXNDZWxsKCkgPT0gcG9pbnRlcjsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUKiBwb2ludGVyLCBjb25zdCBXZWFr
SW1wbCogd2VhaykKKyAgICB7CisgICAgICAgIHJldHVybiBlcXVhbCh3ZWFrLCBwb2ludGVyKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUKiBwb2ludGVyLCBjb25zdCBz
dGQ6Om51bGxwdHJfdCkKKyAgICB7CisgICAgICAgIHJldHVybiAhcG9pbnRlcjsKKyAgICB9CisK
KyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBzdGQ6Om51bGxwdHJfdCwgY29uc3QgVCogcG9p
bnRlcikKKyAgICB7CisgICAgICAgIHJldHVybiAhcG9pbnRlcjsKKyAgICB9CisKKyAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBzdGQ6Om51bGxwdHJfdCwgY29uc3QgV2Vha0ltcGwqIHdlYWsp
CisgICAgeworICAgICAgICByZXR1cm4gZXF1YWwoMCwgd2Vhayk7CisgICAgfQorCisgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgV2Vha0ltcGwqIHdlYWssIGNvbnN0IHN0ZDo6bnVsbHB0cl90
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVxdWFsKDAsIHdlYWspOworICAgIH0KKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsK
Kworc3RydWN0IFdlYWtJbXBsSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goV2Vha0lt
cGwqIGtleSkgeyByZXR1cm4gV1RGOjppbnRIYXNoKHN0YXRpY19jYXN0PHR5cGVuYW1lIFdURjo6
SW50VHlwZXM8c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKT46OlVuc2lnbmVkVHlwZT4oSlNWYWx1ZTo6
ZW5jb2RlKGtleS0+anNWYWx1ZSgpKSkpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoV2Vha0lt
cGwqIGEsIFdlYWtJbXBsKiBiKSB7IHJldHVybiBhLT5qc1ZhbHVlKCkgPT0gYi0+anNWYWx1ZSgp
OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmlu
ZGV4IDY0ODBmMGY3ZTI4NjkwMmVhM2EyOTk4YzYxNDEyNGYyNWNlMzdkYzUuLjU0MjJjN2E0Zjhi
ODBlNjQzMjJjMTM5NDhlZGFkMjA3MWNlMDQ2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTQzLDYgKzE0Myw3IEBACiAg
ICAgbWFjcm8oc2l6ZSkgXAogICAgIG1hY3JvKE1hcClcCiAgICAgbWFjcm8oU2V0KVwKKyAgICBt
YWNybyhXZWFrTWFwKVwKICAgICBtYWNybyhhZGQpCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVO
VElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwNWZlODU3NGQyNjFiYjY0ZTYzMzM1
MDdhZGRlNWQ4ODY0ZGJhZjkwLi4zNzFkM2U3ODgzMGJhYjdiOGUwYjUwZjk2ZjZiMWVjMGQyODE3
ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5Q29uc3RydWN0
b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIgogI2luY2x1ZGUgIkpT
VHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dpdGhT
Y29wZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgi
CkBAIC05OSw2ICsxMDAsOSBAQAogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAj
aW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJXZWFrTWFwQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJXZWFrTWFwRGF0
YS5oIgorI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUuaCIKIAogI2lmIEVOQUJMRShQUk9NSVNF
UykKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKQEAgLTMwOSw2ICszMTMsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAogCiAgICAgbV9tYXBEYXRhU3Ry
dWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+dm0oKSwgdGhpcywganNOdWxsKCkpKTsKKyAgICBtX3dlYWtNYXBEYXRhU3RydWN0dXJlLnNl
dChleGVjLT52bSgpLCB0aGlzLCBXZWFrTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZt
KCksIHRoaXMsIGpzTnVsbCgpKSk7CiAKICNkZWZpbmUgQ1JFQVRFX1BST1RPVFlQRV9GT1JfU0lN
UExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBl
LCBqc05hbWUpIFwKICAgICBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLnNldChleGVjLT52
bSgpLCB0aGlzLCBjYXBpdGFsTmFtZSMjUHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgY2Fw
aXRhbE5hbWUjI1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOyBcCkBAIC02NDAsNiArNjQ1LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogI3VuZGVmIFZJU0lUX1NJTVBMRV9UWVBFCiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9tYXBEYXRhU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV93ZWFrTWFwRGF0YVN0cnVjdHVyZSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBO
VU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM7IGktLTspIHsKICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fdHlwZWRBcnJheXNbaV0ucHJvdG90eXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRhNjE4OTRjNjY2
MjFiN2VjNzRkZjg3OGI0NmNmMGMzODJmMTNlMzEuLjgyZmYyOWNhNzVjYzM2ZjJkNWI2ZTdjYzE4
NDVlYTcyNjkzZGUzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaApAQCAtODAsNiArODAsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlOwogICAgIG1h
Y3JvKE51bWJlciwgbnVtYmVyLCBudW1iZXJPYmplY3QsIE51bWJlck9iamVjdCwgTnVtYmVyKSBc
CiAgICAgbWFjcm8oRXJyb3IsIGVycm9yLCBlcnJvciwgRXJyb3JJbnN0YW5jZSwgRXJyb3IpIFwK
ICAgICBtYWNybyhKU0FycmF5QnVmZmVyLCBhcnJheUJ1ZmZlciwgYXJyYXlCdWZmZXIsIEpTQXJy
YXlCdWZmZXIsIEFycmF5QnVmZmVyKSBcCisgICAgbWFjcm8oV2Vha01hcCwgd2Vha01hcCwgd2Vh
a01hcCwgSlNXZWFrTWFwLCBXZWFrTWFwKSBcCiAKICNkZWZpbmUgREVDTEFSRV9TSU1QTEVfQlVJ
TFRJTl9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlw
ZSwganNOYW1lKSBcCiAgICAgY2xhc3MgSlMgIyMgY2FwaXRhbE5hbWU7IFwKQEAgLTIwMCw2ICsy
MDEsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQogCiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tYXBEYXRhU3RydWN0dXJlOworICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fd2Vha01hcERhdGFTdHJ1Y3R1cmU7CiAKICNkZWZpbmUgREVGSU5FX1NU
T1JBR0VfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUs
IGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgV3JpdGVCYXJyaWVyPGNhcGl0YWxOYW1lICMj
IFByb3RvdHlwZT4gbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZTsgXApAQCAtMzk4LDYgKzQw
MCw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBEYXRhU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9tYXBEYXRhU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiB3ZWFrTWFwRGF0
YVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vha01hcERhdGFTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXRTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTV2Vha01hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dl
YWtNYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNmI3OTBiMGZlNThkMjI2YWIxMDE2M2FhZTU2ZTFjNGRh
MzY0OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1dlYWtNYXAuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1dl
YWtNYXAuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xv
dFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYWtNYXA6OnNfaW5mbyA9IHsgIldlYWtNYXAi
LCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2Vha01hcCkgfTsK
Kwordm9pZCBKU1dlYWtNYXA6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgbV93
ZWFrTWFwRGF0YS5zZXQodm0sIHRoaXMsIFdlYWtNYXBEYXRhOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCkpOworfQorCit2b2lkIEpTV2Vha01hcDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwg
dmlzaXRvcik7CisgICAgSlNXZWFrTWFwKiB0aGlzT2JqID0ganNDYXN0PEpTV2Vha01hcCo+KGNl
bGwpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqLT5tX3dlYWtNYXBEYXRhKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
OTlmZWVmM2M0ZGNmNmUxOGRkZmI0NGQ5OGY1MWI5MDE4MzE4ZTJlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmgKQEAgLTAsMCArMSw4
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBKU1dlYWtNYXBfaAorI2RlZmluZSBKU1dlYWtNYXBfaAorCisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYWtNYXBEYXRhOworCitjbGFzcyBK
U1dlYWtNYXAgOiBwdWJsaWMgSlNPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNPYmpl
Y3QgQmFzZTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNXZWFrTWFwKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAg
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTV2Vha01hcCogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYWtNYXA+KHZtLmhlYXApKSBKU1dlYWtNYXAo
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgc3Ry
dWN0dXJlLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICB9
CisKKyAgICBXZWFrTWFwRGF0YSogd2Vha01hcERhdGEoKSB7IHJldHVybiBtX3dlYWtNYXBEYXRh
LmdldCgpOyB9CisKKyAgICBKU1ZhbHVlIGdldChDYWxsRnJhbWUqLCBKU09iamVjdCopOworICAg
IGJvb2wgaGFzKENhbGxGcmFtZSosIEpTT2JqZWN0Kik7CisgICAgYm9vbCByZW1vdmUoQ2FsbEZy
YW1lKiwgSlNPYmplY3QqKTsKKworICAgIHZvaWQgc2V0KENhbGxGcmFtZSosIEpTT2JqZWN0Kiwg
SlNWYWx1ZSk7CisgICAgdm9pZCBjbGVhcihDYWxsRnJhbWUqKTsKKworcHJpdmF0ZToKKworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIEpTV2Vha01hcChWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7
CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
CisgICAgV3JpdGVCYXJyaWVyPFdlYWtNYXBEYXRhPiBtX3dlYWtNYXBEYXRhOworfTsKKworfQor
CisjZW5kaWYgLy8gIWRlZmluZWQoSlNXZWFrTWFwX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDI4
NDE0Njc5Yzk1ODQ4Y2YxYjU3MzQwNzhmZjBkMzgyZWQwYjQxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcApAQCAt
MCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vha01hcENvbnN0cnVjdG9yLmgi
CisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTV2Vha01hcC5o
IgorI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Nv
bnN0IENsYXNzSW5mbyBXZWFrTWFwQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWFrTWFwQ29uc3RydWN0
b3IpIH07CisKK3ZvaWQgV2Vha01hcENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIFdlYWtNYXBQcm90b3R5cGUqIHByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT52bSgpLCBwcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRF
bnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdFdlYWtNYXBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5j
YWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xv
YmFsT2JqZWN0LT53ZWFrTWFwU3RydWN0dXJlKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1dlYWtNYXA6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworQ29uc3RydWN0VHlw
ZSBXZWFrTWFwQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlv
biA9IGNvbnN0cnVjdFdlYWtNYXBDb25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlw
ZUhvc3Q7Cit9CisKK0NhbGxUeXBlIFdlYWtNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKQoreworICAgIHJldHVybiBDYWxsVHlwZU5vbmU7Cit9CisKK30KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjNDg1ZWZhYWQwYTY1OGIy
NTdhMjY4YWRjZGUwMTA5YjIwMDgzNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdl
YWtNYXBDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIFdlYWtNYXBDb25zdHJ1Y3Rvcl9oCisKKyNpbmNs
dWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWFr
TWFwUHJvdG90eXBlOworCitjbGFzcyBXZWFrTWFwQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7
CisKKyAgICBzdGF0aWMgV2Vha01hcENvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2Vh
a01hcFByb3RvdHlwZSogcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgV2Vha01hcENvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYWtNYXBDb25z
dHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFdlYWtNYXBDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBw
cm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFdlYWtNYXBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqLCBXZWFrTWFwUHJvdG90eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5
cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGlj
IENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCit9CisKKyNl
bmRpZiAvLyAhZGVmaW5lZChXZWFrTWFwQ29uc3RydWN0b3JfaCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzY2ZDRmNDhjYzE5
ODk0NTk5YjBiNDY0YmMxMWI1OTQzYWJiNWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIK
KworI2luY2x1ZGUgIkNvcGllZEFsbG9jYXRvci5oIgorI2luY2x1ZGUgIkNvcHlWaXNpdG9ySW5s
aW5lcy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorCisjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KKworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIFdlYWtNYXBEYXRhOjpzX2luZm8gPSB7ICJXZWFrTWFwRGF0YSIsICZCYXNlOjpzX2luZm8s
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2Vha01hcERhdGEpIH07CisKK1dlYWtNYXBEYXRh
OjpXZWFrTWFwRGF0YShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAg
OiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPndlYWtNYXBEYXRhU3RydWN0dXJlKCkpCit7Cit9CisK
K3ZvaWQgV2Vha01hcERhdGE6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19j
YXN0PFdlYWtNYXBEYXRhKj4oY2VsbCktPn5XZWFrTWFwRGF0YSgpOworfQorCit2b2lkIFdlYWtN
YXBEYXRhOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKK30KKworICAgIHZv
aWQgV2Vha01hcERhdGE6OnNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGtleSwg
SlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fbWFwLmZpbmQ8UG9p
bnRlclRvV2Vha0ltcGxUcmFuc2xhdG9yPEpTT2JqZWN0Pj4oa2V5KTsKKyAgICAgICAgaWYgKGl0
ZXIgIT0gbV9tYXAuZW5kKCkpIHsKKyAgICAgICAgICAgIGl0ZXItPnZhbHVlLnNldChjYWxsRnJh
bWUtPnZtKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBtX21hcC5hZGQoUGFzc1dlYWs8SlNPYmplY3Q+KGtleSkubGVha0ltcGwoKSwgV3Jp
dGVCYXJyaWVyPFVua25vd24+KGNhbGxGcmFtZS0+dm0oKSwgdGhpcywgdmFsdWUpKTsKKyAgICB9
CisKKyAgICBKU1ZhbHVlIFdlYWtNYXBEYXRhOjpnZXQoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGtl
eSkKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fbWFwLmZpbmQ8UG9pbnRlclRvV2Vha0lt
cGxUcmFuc2xhdG9yPEpTT2JqZWN0Pj4oa2V5KTsKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAu
ZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4gaXRl
ci0+dmFsdWUuZ2V0KCk7CisgICAgfQorCisgICAgYm9vbCBXZWFrTWFwRGF0YTo6cmVtb3ZlKENh
bGxGcmFtZSosIEpTT2JqZWN0KiBrZXkpCisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX21h
cC5maW5kPFBvaW50ZXJUb1dlYWtJbXBsVHJhbnNsYXRvcjxKU09iamVjdD4+KGtleSk7CisgICAg
ICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIG1fbWFwLnJlbW92ZShpdGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgYm9vbCBXZWFrTWFwRGF0YTo6Y29udGFpbnMoQ2FsbEZyYW1lKiwgSlNPYmplY3Qq
IGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX21hcC5jb250YWluczxQb2ludGVyVG9XZWFr
SW1wbFRyYW5zbGF0b3I8SlNPYmplY3Q+PihrZXkpOworICAgIH0KKworICAgIHZvaWQgV2Vha01h
cERhdGE6OmNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAgfQorCisK
K30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha01hcERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmYyZWZmMDliOWFlZmUyYTEzM2M5ZDJj
ZTM3OGM3NjdlNmM1ZWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcERhdGEuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWFrTWFwRGF0YV9oCisjZGVmaW5lIFdlYWtNYXBEYXRhX2gKKworI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0
aWJsZU9iamVjdC5oIgorCisjaW5jbHVkZSAiV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIgorCisj
aW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBX
ZWFrSW1wbDsKKworY2xhc3MgV2Vha01hcERhdGEgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKwor
ICAgIHN0YXRpYyBXZWFrTWFwRGF0YSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIFdlYWtNYXBEYXRhKiB3ZWFrTWFwRGF0YSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYWtNYXBEYXRhPih2bS5oZWFwKSkgV2Vha01hcERh
dGEodm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHdlYWtNYXBEYXRhLT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgICAgIHJldHVybiB3ZWFrTWFwRGF0YTsKKyAgICB9CisKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldChDYWxs
RnJhbWUqLCBKU09iamVjdCosIEpTVmFsdWUpOworICAgIEpTVmFsdWUgZ2V0KENhbGxGcmFtZSos
IEpTT2JqZWN0Kik7CisgICAgYm9vbCByZW1vdmUoQ2FsbEZyYW1lKiwgSlNPYmplY3QqKTsKKyAg
ICBib29sIGNvbnRhaW5zKENhbGxGcmFtZSosIEpTT2JqZWN0Kik7CisgICAgdm9pZCBjbGVhcigp
OworCisgICAgREVDTEFSRV9JTkZPOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
KworcHJpdmF0ZToKKyAgICBXZWFrTWFwRGF0YShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgSGFzaE1hcDxXZWFrSW1wbCosIFdyaXRl
QmFycmllcjxVbmtub3duPiA+IG1fbWFwOworfTsKKworfQorCisjZW5kaWYgLyogIWRlZmluZWQo
V2Vha01hcERhdGFfaCkgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha01hcFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1YTk2MzgyMTZkMDZkMjBhOTBiYTVk
NzgzNzM4NmJkMDZiYTA4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSlNXZWFrTWFw
LmgiCisjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBXZWFrTWFwUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWFrTWFwIiwgJkJhc2U6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWFrTWFwUHJvdG90eXBlKSB9Owor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwQ2xl
YXIoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90
b0Z1bmNXZWFrTWFwRGVsZXRlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBIYXMoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0
KEV4ZWNTdGF0ZSopOworCit2b2lkIFdlYWtNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworCisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBl
KHRoaXMpOworCisgICAgSlNDX05BVElWRV9GVU5DVElPTihleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y2xlYXIsIHByb3RvRnVuY1dlYWtNYXBDbGVhciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlbGV0ZUtleXdvcmQsIHByb3RvRnVu
Y1dlYWtNYXBEZWxldGUsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXQsIHByb3RvRnVuY1dlYWtNYXBHZXQsIERvbnRFbnVtLCAx
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5oYXMsIHBy
b3RvRnVuY1dlYWtNYXBIYXMsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5zZXQsIHByb3RvRnVuY1dlYWtNYXBTZXQsIERvbnRFbnVt
LCAyKTsKK30KKworc3RhdGljIFdlYWtNYXBEYXRhKiBnZXRXZWFrTWFwRGF0YShDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkp
IHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgi
Q2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gbm9uLW9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgaWYgKEpTV2Vha01hcCogd2Vha01hcCA9IGpzRHluYW1pY0Nhc3Q8
SlNXZWFrTWFwKj4odmFsdWUpKQorICAgICAgICByZXR1cm4gd2Vha01hcC0+d2Vha01hcERhdGEo
KTsKKworICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNh
bGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAgb2JqZWN0IikpOworICAgIHJl
dHVybiAwOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtN
YXBDbGVhcihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBXZWFrTWFwRGF0YSogbWFwID0g
Z2V0V2Vha01hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBp
ZiAoIW1hcCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICBtYXAtPmNsZWFyKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFw
RGVsZXRlKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBn
ZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghbWFwKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWtleS5p
c09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkEgV2Vha01hcCBjYW5ub3QgaGF2ZSBhIG5v
bi1vYmplY3Qga2V5IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbiht
YXAtPnJlbW92ZShjYWxsRnJhbWUsIGFzT2JqZWN0KGtleSkpKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBXZWFrTWFwRGF0YSogbWFwID0gZ2V0V2Vha01hcERhdGEoY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW1hcCkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBKU1ZhbHVlIGtleSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFrZXkuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6QVNDSUlMaXRl
cmFsKCJBIFdlYWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0IGtleSIpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShtYXAtPmdldChjYWxsRnJhbWUsIGFzT2JqZWN0KGtleSkpKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwSGFzKENh
bGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFw
RGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbWFwKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIEpTVmFs
dWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWtleS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkEgV2Vha01hcCBjYW5ub3QgaGF2ZSBhIG5vbi1vYmplY3Qg
a2V5IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihtYXAtPmNvbnRh
aW5zKGNhbGxGcmFtZSwgYXNPYmplY3Qoa2V5KSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQorewor
ICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbWFwKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKKyAgICBpZiAoIWtleS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0
dGVtcHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdlYWtNYXAiKSkpOworICAgIG1h
cC0+c2V0KGNhbGxGcmFtZSwgYXNPYmplY3Qoa2V5KSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFBy
b3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlw
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc4NWU0OWU5MzZiYzQ4YzE1ZmQxZDI0MDFhNzgyMDNhNGE0NTYwNWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
UHJvdG90eXBlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXZWFrTWFwUHJvdG90eXBlX2gKKyNkZWZpbmUg
V2Vha01hcFByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgV2Vha01hcFByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0
YXRpYyBXZWFrTWFwUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAg
IFdlYWtNYXBQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFdlYWtNYXBQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBXZWFrTWFwUHJvdG90eXBlKGV4ZWMs
IHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgV2Vha01hcFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2UoZXhlYy0+dm0oKSwgc3RydWN0dXJl
KQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoV2Vha01hcFByb3Rv
dHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEv
YWN0dWFsLmh0bWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96aWxsYS9hY3R1YWwu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NWM2ZTA1N2RhZjE3ZTMzNGFiMDNiMTU1OTM0YmJiMjFiOTEyOWE5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEv
YWN0dWFsLmh0bWwKQEAgLTAsMCArMSw0ODYgQEAKKzxodG1sPjxoZWFkPgorPHRpdGxlPlRlc3Qg
cmVzdWx0cywgc3F1aXJyZWxmaXNoPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9J3do
aXRlJz4KKzxhIG5hbWU9J3RpcHB5X3RvcCc+PC9hPgorPGgyPlRlc3QgcmVzdWx0cywgc3F1aXJy
ZWxmaXNoPC9oMj48YnI+Cis8cCBjbGFzcz0ncmVzdWx0c19zdW1tYXJ5Jz4KK1Rlc3QgTGlzdDog
QWxsIHRlc3RzPGJyPgorU2tpcCBMaXN0OiBlY21hL0RhdGUvMTUuOS4yLjEuanMsIGVjbWEvRGF0
ZS8xNS45LjIuMi0xLmpzLCBlY21hL0RhdGUvMTUuOS4yLjItMi5qcywgZWNtYS9EYXRlLzE1Ljku
Mi4yLTMuanMsIGVjbWEvRGF0ZS8xNS45LjIuMi00LmpzLCBlY21hL0RhdGUvMTUuOS4yLjItNS5q
cywgZWNtYS9EYXRlLzE1LjkuMi4yLTYuanMsIGVjbWFfMy9EYXRlLzE1LjkuNS42LmpzLCBlY21h
XzMvRGF0ZS8xNS45LjUuNy5qcywgZWNtYS9EYXRlLzE1LjkuNS4xNC5qcywgZWNtYS9EYXRlLzE1
LjkuNS4zMS0xLmpzLCBlY21hL0RhdGUvMTUuOS41LjM0LTEuanM8YnI+CisxMTIzIHRlc3Qocykg
c2VsZWN0ZWQsIDExMTUgdGVzdChzKSBjb21wbGV0ZWQsIDQ0IGZhaWx1cmVzIHJlcG9ydGVkICgz
Ljk0JSBmYWlsZWQpPGJyPgorRW5naW5lIGNvbW1hbmQgbGluZTogIi9Vc2Vycy9vbGl2ZXIvV2Vi
S2l0L09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQvL0RlYnVnL2pzYyIgPGJyPgorT1MgdHlwZTogRGFy
d2luIEVnZ3BsYW50LmxvY2FsIDEzLjAuMCBEYXJ3aW4gS2VybmVsIFZlcnNpb24gMTMuMC4wOiBU
aHUgQXVnIDI5IDIxOjI2OjI5IFBEVCAyMDEzOyByb290OnhudS0yNDIyLjEuNjh+MS9SRUxFQVNF
X1g4Nl82NCB4ODZfNjQ8YnI+CitUZXN0Y2FzZSBleGVjdXRpb24gdGltZTogMSBtaW51dGVzLCAz
MSBzZWNvbmRzLjxicj4KK1Rlc3RzIGNvbXBsZXRlZCBvbiBUaHUgU2VwICA1IDE2OjIwOjExIDIw
MTMuPGJyPjxicj4KK1sgPGEgaHJlZj0nI2ZhaWxfZGV0YWlsJz5GYWlsdXJlIERldGFpbHM8L2E+
IHwgPGEgaHJlZj0nI3JldGVzdF9saXN0Jz5SZXRlc3QgTGlzdDwvYT4gfCA8YSBocmVmPSdtZW51
Lmh0bWwnPlRlc3QgU2VsZWN0aW9uIFBhZ2U8L2E+IF08YnI+Cis8aHI+Cis8YSBuYW1lPSdmYWls
X2RldGFpbCc+PC9hPgorPGgyPkZhaWx1cmUgRGV0YWlsczwvaDI+PGJyPgorPGRsPjxhIG5hbWU9
J2ZhaWx1cmUxJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2VjbWFfMi9FeGNlcHRpb25zL2Z1bmN0aW9uLTAwMS5qcyc+ZWNtYV8yL0V4Y2VwdGlv
bnMvZnVuY3Rpb24tMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxs
YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNzgnIHRhcmdldD0nb3RoZXJfd2luZG93
Jz5CdWcgTnVtYmVyIDEwMjc4PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMic+TmV4dCBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgor
PHR0Pjxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CitldmFsKCJmdW5jdGlvbiBmKCl7
fWZ1bmN0aW9uIGcoKXt9IikgKHRocmV3IG5vIGV4Y2VwdGlvbiB0aHJvd24gPSBmYWlsIEZBSUxF
RCEgZXhwZWN0ZWQ6IHBhc3M8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyJz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMi9S
ZWdFeHAvcmVncmVzcy0wMDEuanMnPmVjbWFfMi9SZWdFeHAvcmVncmVzcy0wMDEuanM8L2E+IGZh
aWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNn
aT9pZD1odHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTcnIHRh
cmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NzwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTEnPlBy
ZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzJz5OZXh0IEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0
ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25h
bCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitSZWdFeHAvaGV4LTAw
MS5qcyBKUyByZWdleHAgYW5jaG9yaW5nIG9uIGVtcHR5IG1hdGNoIGJ1Zzxicj4KK0JVR05VTUJF
UjogaHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3PGJyPgor
RXhjZXB0aW9uOiBUeXBlRXJyb3I6IFJlZ0V4cCBpcyBub3QgYSBmdW5jdGlvbiAoZXZhbHVhdGlu
ZyAnL2F8fGIvKCcnKScpPGJyPgorZ2xvYmFsIGNvZGVALi9lY21hXzIvUmVnRXhwL3JlZ3Jlc3Mt
MDAxLmpzOjE4OjIyPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMyc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvRnVuRXhw
ci9mZS0wMDEuanMnPmVjbWFfMy9GdW5FeHByL2ZlLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+
CisgWyA8YSBocmVmPScjZmFpbHVyZTInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmU0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IF08YnI+Cis8dHQ+U1RBVFVTOiBGdW5jdGlvbiBFeHByZXNzaW9uIFN0YXRlbWVu
dHMgYmFzaWMgdGVzdC48YnI+CitGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgorRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSBCb3RoIGZ1bmN0aW9ucyB3ZXJlIGRlZmluZWQuPGJyPgor
RkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMScsIEFjdHVh
bCB2YWx1ZSAnMCc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KKzwv
dHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1N0YXRlbWVudHMvcmVncmVzcy0xOTQzNjQu
anMnPmVjbWFfMy9TdGF0ZW1lbnRzL3JlZ3Jlc3MtMTk0MzY0LmpzPC9hPiBmYWlsZWQ8L2I+IDxi
cj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjZmFpbHVyZTUnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Ag
b2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitU
ZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBv
dXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4g
JygnPGJyPgorZXZhbEBbbmF0aXZlIGNvZGVdPGJyPgorZ2xvYmFsIGNvZGVALi9lY21hXzMvU3Rh
dGVtZW50cy9yZWdyZXNzLTE5NDM2NC5qczo1NjoxNDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0n
ZmFpbHVyZTUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhy
ZWY9Jy4vZWNtYV8zL1VuaWNvZGUvdWMtMDAxLmpzJz5lY21hXzMvVW5pY29kZS91Yy0wMDEuanM8
L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzYxMCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMjM2MTA8
L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlNic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PlNUQVRVUzogVW5pY29kZSBmb3JtYXQtY29udHJv
bCBjaGFyYWN0ZXIgKENhdGVnb3J5IENmKSB0ZXN0Ljxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2Vy
ZTo8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFVuaWNvZGUgZm9ybWF0LWNv
bnRyb2wgY2hhcmFjdGVyIHRlc3QgKENhdGVnb3J5IENmLik8YnI+CitGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICdubyBlcnJvcicsIEFjdHVhbCB2YWx1ZSAn
bm/igI4gZXJyb3InPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+Cis8
L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL09iamVjdHMvdG9TdHJpbmctMDAxLmpzJz5q
czFfMi9PYmplY3RzL3RvU3RyaW5nLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBo
cmVmPScjZmFpbHVyZTUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU3
Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+
IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVy
bWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8
YnI+CitKUzFfMiBPYmplY3QudG9TdHJpbmcoKTxicj4KK0V4Y2VwdGlvbjogVHlwZUVycm9yOiBS
ZWdFeHAgaXMgbm90IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJy9eXHsoLiopXH0kLyhzKScpPGJy
PgorY2hlY2tPYmplY3RUb1N0cmluZ0AuL2pzMV8yL09iamVjdHMvdG9TdHJpbmctMDAxLmpzOjEw
MzoxNDxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzIvT2JqZWN0cy90b1N0cmluZy0wMDEuanM6NjM6
Mjg8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU3Jz48L2E+PGRkPjxiPlRlc3RjYXNl
IDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9uL0Z1bmN0aW9u
X29iamVjdC5qcyc+anMxXzIvZnVuY3Rpb24vRnVuY3Rpb25fb2JqZWN0LmpzPC9hPiBmYWlsZWQ8
L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD48YnI+CitGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6
PGJyPgorZi5hcml0eSA9IHVuZGVmaW5lZCBGQUlMRUQhIGV4cGVjdGVkOiAzPGJyPgorfSBGQUlM
RUQhIGV4cGVjdGVkOiA8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU4Jz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1bmN0
aW9uL2Z1bmN0aW9uLTAwMS1uLmpzJz5qczFfMi9mdW5jdGlvbi9mdW5jdGlvbi0wMDEtbi5qczwv
YT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTcnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU5Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2Rl
IDMsIGdvdCAwPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29t
cGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitmdW5jdGlvbi0wMDEuanMgZnVuY3Rpb25z
IG5vdCBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyBhcmUgZXJyb3JzIGluIHZlcnNpb24gMTIwIGFu
ZCBoaWdoZXI8YnI+CitldmFsKCJmdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoKXt9IikgPSB1bmRl
ZmluZWQgUEFTU0VEITxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTknPjwvYT48ZGQ+
PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVuY3Rp
b24vcmVnZXhwYXJnLTEuanMnPmpzMV8yL2Z1bmN0aW9uL3JlZ2V4cGFyZy0xLmpzPC9hPiBmYWls
ZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTEwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdv
dCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUg
dGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitKU18xLjIgVGhlIHZhcmlhYmxlIHN0YXRtZW50PGJy
PgorRXhjZXB0aW9uOiBUeXBlRXJyb3I6IFJlZ0V4cCBpcyBub3QgYSBmdW5jdGlvbiAoZXZhbHVh
dGluZyAneCgiaGkiKScpPGJyPgorZ2xvYmFsIGNvZGVALi9qczFfMi9mdW5jdGlvbi9yZWdleHBh
cmctMS5qczo4MDoxMTxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTEwJz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL29wZXJh
dG9yL2VxdWFsaXR5LmpzJz5qczFfMi9vcGVyYXRvci9lcXVhbGl0eS5qczwvYT4gZmFpbGVkPC9i
PiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI2ZhaWx1cmUxMSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0Pjxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8
YnI+CisobmV3IFN0cmluZygneCcpID09ICd4JykgICAgICAgICAgICAgICAgICA9IHRydWUgRkFJ
TEVEISBleHBlY3RlZDogZmFsc2U8YnI+CisoJ3gnID09IG5ldyBTdHJpbmcoJ3gnKSkgICAgICAg
ICAgICAgICAgICA9IHRydWUgRkFJTEVEISBleHBlY3RlZDogZmFsc2U8YnI+Cis8L3R0Pjxicj4K
KzxhIG5hbWU9J2ZhaWx1cmUxMSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvUmVnRXhwX2xhc3RJbmRleC5qcyc+anMxXzIv
cmVnZXhwL1JlZ0V4cF9sYXN0SW5kZXguanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJl
Zj0nI2ZhaWx1cmUxMCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTEy
Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+
IF08YnI+Cis8dHQ+PGJyPgorRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KK3JlPS94Li9nOyBy
ZS5sYXN0SW5kZXg9NDsgcmUuZXhlYygneHlhYmNkeGEnKSA9IHhhIEZBSUxFRCEgZXhwZWN0ZWQ6
IFsieGEiXTxicj4KK3JlLmV4ZWMoJ3h5YWJjZGVmJykgPSB4eSBGQUlMRUQhIGV4cGVjdGVkOiBb
Inh5Il08YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxMic+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvcmVncmVz
cy02MzU5LmpzJz5qczFfMi9yZWdleHAvcmVncmVzcy02MzU5LmpzPC9hPiBmYWlsZWQ8L2I+IDxh
IGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9aHR0cDov
L2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02MzU5JyB0YXJnZXQ9J290aGVy
X3dpbmRvdyc+QnVnIE51bWJlciBodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPTYzNTk8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxMSc+UHJldmlvdXMgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTEzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBj
b2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgor
Q29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitCVUdOVU1CRVI6IGh0dHA6Ly9idWd6
aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM1OTxicj4KK0V4Y2VwdGlvbjogVHlw
ZUVycm9yOiBSZWdFeHAgaXMgbm90IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJy8oYSopYlwxKy8o
ImJhYWFjIiknKTxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzIvcmVnZXhwL3JlZ3Jlc3MtNjM1OS5q
czo1NjoxODxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTEzJz48L2E+PGRkPjxiPlRl
c3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9yZWdy
ZXNzLTkxNDEuanMnPmpzMV8yL3JlZ2V4cC9yZWdyZXNzLTkxNDEuanM8L2E+IGZhaWxlZDwvYj4g
PGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD1odHRw
Oi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkxNDEnIHRhcmdldD0nb3Ro
ZXJfd2luZG93Jz5CdWcgTnVtYmVyIGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTE0MTwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTEyJz5QcmV2aW91cyBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTQnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0
IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+
CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0JVR05VTUJFUjogaHR0cDovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQxPGJyPgorRXhjZXB0aW9uOiBU
eXBlRXJyb3I6IFJlZ0V4cCBpcyBub3QgYSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnLyg/Onh4fHgp
Ki8ocyknKTxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzIvcmVnZXhwL3JlZ3Jlc3MtOTE0MS5qczo3
MzoxMzxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTE0Jz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9zaW1wbGVf
Zm9ybS5qcyc+anMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
KyBbIDxhIGhyZWY9JyNmYWlsdXJlMTMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmUxNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rl
c3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91
dHB1dCB3YXM6PGJyPgorRXhlY3V0aW5nIHNjcmlwdDogc2ltcGxlX2Zvcm0uanM8YnI+CitBcyBk
ZXNjcmliZWQgaW4gTmV0c2NhcGUgZG9jICJXaGF0cyBuZXcgaW4gSmF2YVNjcmlwdCAxLjIiIFJl
Z0V4cDogc2ltcGxlIGZvcm08YnI+CitFeGNlcHRpb246IFR5cGVFcnJvcjogUmVnRXhwIGlzIG5v
dCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICcvWzAtOV17M30vKCcyMyAyIDM0IDY3OCA5IDA5Jykn
KTxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzOjQzOjYzPGJy
PgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL3N0cmluZ19zcGxpdC5q
cyc+anMxXzIvcmVnZXhwL3N0cmluZ19zcGxpdC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8
YSBocmVmPScjZmFpbHVyZTE0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlMTYnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KKzx0dD48YnI+CitGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgorJ2FiYycu
c3BsaXQoL1thLXpdLykgPSAsLCwgRkFJTEVEISBleHBlY3RlZDogLCw8YnI+CisnYWJjJy5zcGxp
dCgvW2Etel0vKSA9ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAsLDxicj4KKydhYmMnLnNwbGl0KG5l
dyBSZWdFeHAoJ1thLXpdJykpID0gLCwsIEZBSUxFRCEgZXhwZWN0ZWQ6ICwsPGJyPgorJ2FiYycu
c3BsaXQobmV3IFJlZ0V4cCgnW2Etel0nKSkgPSAsLCwgRkFJTEVEISBleHBlY3RlZDogLCw8YnI+
Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi92ZXJzaW9uMTIwL2Jvb2xlYW4tMDAx
LmpzJz5qczFfMi92ZXJzaW9uMTIwL2Jvb2xlYW4tMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
KyBbIDxhIGhyZWY9JyNmYWlsdXJlMTUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmUxNyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorPHR0Pjxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+Citu
ZXcgQm9vbGVhbihmYWxzZSkgPSB0cnVlIEZBSUxFRCEgZXhwZWN0ZWQ6IGZhbHNlPGJyPgorPC90
dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTcnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvdmVyc2lvbjEyMC9yZWdyZXNzLTk5NjYzLmpz
Jz5qczFfMi92ZXJzaW9uMTIwL3JlZ3Jlc3MtOTk2NjMuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgor
IFsgPGEgaHJlZj0nI2ZhaWx1cmUxNic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
ZmFpbHVyZTE4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IF08YnI+Cis8dHQ+U1RBVFVTOiBSZWdyZXNzaW9uIHRlc3QgZm9yIEJ1Z3ppbGxh
IGJ1ZyA5OTY2Mzxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CitTZWN0aW9uIDEgb2Yg
dGVzdCAtIGdvdCBFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogaXQgRkFJTEVEISBleHBlY3Rl
ZDogYSAicmVhZC1vbmx5IiBlcnJvcjxicj4KK1NlY3Rpb24gMiBvZiB0ZXN0IC0gZ290IEVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBpdCBGQUlMRUQhIGV4cGVjdGVkOiBhICJyZWFkLW9ubHki
IGVycm9yPGJyPgorU2VjdGlvbiAzIG9mIHRlc3QgLSBnb3QgRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IGl0IEZBSUxFRCEgZXhwZWN0ZWQ6IGEgInJlYWQtb25seSIgZXJyb3I8YnI+Cis8L3R0
Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxOCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMy9TY3JpcHQvZnVuY3Rpb24tMDAxLW4uanMnPmpz
MV8zL1NjcmlwdC9mdW5jdGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRw
Oi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjc4JyB0YXJnZXQ9J290
aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxMDI3ODwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVy
ZTE3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTknPk5leHQgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0
dD5FeHBlY3RlZCBleGl0IGNvZGUgMywgZ290IDA8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdp
dGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0JVR05V
TUJFUjogMTAyNzg8YnI+CitmdW5jdGlvbi0wMDEuanMgZnVuY3Rpb25zIG5vdCBzZXBhcmF0ZWQg
Ynkgc2VtaWNvbG9ucyBhcmUgZXJyb3JzIGluIHZlcnNpb24gMTIwIGFuZCBoaWdoZXI8YnI+Citl
dmFsKCJmdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoKXt9IikgPSB1bmRlZmluZWQgUEFTU0VEITxi
cj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTE5Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8zL1NjcmlwdC9zY3JpcHQtMDAxLmpz
Jz5qczFfMy9TY3JpcHQvc2NyaXB0LTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBo
cmVmPScjZmFpbHVyZTE4Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
MjAnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0
ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2Fz
Ojxicj4KK3NjcmlwdC0wMDEgTmF0aXZlU2NyaXB0PGJyPgorRXhjZXB0aW9uOiBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2NyaXB0PGJyPgorZ2xvYmFsIGNvZGVALi9qczFf
My9TY3JpcHQvc2NyaXB0LTAwMS5qczoxMzM6MjM8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2Zh
aWx1cmUyMCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9qczFfMy9yZWdyZXNzL2Z1bmN0aW9uLTAwMS1uLmpzJz5qczFfMy9yZWdyZXNzL2Z1bmN0
aW9uLTAwMS1uLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3pp
bGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNzgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcg
TnVtYmVyIDEwMjc4PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTknPlByZXZpb3VzIEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyMSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQg
Y29kZSAzLCBnb3QgMDxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4K
K0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorQlVHTlVNQkVSOiAxMDI3ODxicj4K
K2Z1bmN0aW9uLTAwMS5qcyBmdW5jdGlvbnMgbm90IHNlcGFyYXRlZCBieSBzZW1pY29sb25zIGFy
ZSBlcnJvcnMgaW4gdmVyc2lvbiAxMjAgYW5kIGhpZ2hlcjxicj4KK2V2YWwoImZ1bmN0aW9uIGYo
KXt9ZnVuY3Rpb24gZygpe30iKSA9IHVuZGVmaW5lZCBQQVNTRUQhPGJyPgorPC90dD48YnI+Cis8
YSBuYW1lPSdmYWlsdXJlMjEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMS5qcyc+anMxXzUv
RXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBo
cmVmPScjZmFpbHVyZTIwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
MjInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0
ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2Fz
Ojxicj4KK0V4Y2VwdGlvbjogU3ludGF4RXJyb3I6IEV4cGVjdGVkIHRva2VuICcpJzxicj4KKzwv
dHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTIyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDIu
anMnPmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDIuanM8L2E+IGZhaWxlZDwvYj4gPGJy
PgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjZmFpbHVyZTIzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9w
IG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgor
VGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ug
b3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFN5bnRheEVycm9yOiBFeHBlY3RlZCB0b2tlbiAn
KSc8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyMyc+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL2NhdGNo
Z3VhcmQtMDAzLmpzJz5qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAzLmpzPC9hPiBmYWls
ZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjInPlByZXZpb3VzIEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI2ZhaWx1cmUyNCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBw
eV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBn
b3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRl
IHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorRXhjZXB0aW9uOiBTeW50YXhFcnJvcjogRXhwZWN0
ZWQgdG9rZW4gJyknPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjQnPjwvYT48ZGQ+
PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0
aW9ucy9lcnJzdGFjay0wMDEuanMnPmpzMV81L0V4Y2VwdGlvbnMvZXJyc3RhY2stMDAxLmpzPC9h
PiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjMnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29k
ZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0Nv
bXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorRXhjZXB0aW9uOiBUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdzdGFja0ZyYW1lc1s0XS5zdWJz
dHJpbmcnKTxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzUvRXhjZXB0aW9ucy9lcnJzdGFjay0wMDEu
anM6MTIyOjI2PGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjUnPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9u
cy9yZWdyZXNzLTUwNDQ3LmpzJz5qczFfNS9FeGNlcHRpb25zL3JlZ3Jlc3MtNTA0NDcuanM8L2E+
IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDQ0NycgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgNTA0NDc8L2E+
PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTI2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJy
PgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNh
c2Ugb3V0cHV0IHdhczo8YnI+CitCVUdOVU1CRVI6IDUwNDQ3PGJyPgorU1RBVFVTOiBUZXN0IChu
b24tRUNNQSkgRXJyb3Igb2JqZWN0IHByb3BlcnRpZXMgZmlsZU5hbWUsIGxpbmVOdW1iZXI8YnI+
CitFeGNlcHRpb246IFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ2UuZmlsZU5hbWUuc2VhcmNoJyk8YnI+Cit0ZXN0UmVhbEVycm9yQC4vanMxXzUvRXhj
ZXB0aW9ucy9yZWdyZXNzLTUwNDQ3LmpzOjY1OjIzPGJyPgordGVzdEAuL2pzMV81L0V4Y2VwdGlv
bnMvcmVncmVzcy01MDQ0Ny5qczo0NDoxNjxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzUvRXhjZXB0
aW9ucy9yZWdyZXNzLTUwNDQ3LmpzOjM0OjU8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1
cmUyNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMS5qcyc+anMxXzUvR2V0U2V0L2dldHNldC0wMDEuanM8
L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyNSc+UHJldmlvdXMgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI3Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBj
b2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgor
Q29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFN5bnRheEVycm9y
OiBFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGJ1dCBmb3VuZCAnZ2V0dGVyJyBpbnN0ZWFkPGJyPgor
PC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjcnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvR2V0U2V0L2dldHNldC0wMDIuanMnPmpz
MV81L0dldFNldC9nZXRzZXQtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9
JyNmYWlsdXJlMjYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyOCc+
TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBd
PGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1p
bmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJy
PgorRXhjZXB0aW9uOiBTeW50YXhFcnJvcjogRXhwZWN0ZWQgYW4gaWRlbnRpZmllciBidXQgZm91
bmQgJ2dldHRlcicgaW5zdGVhZDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTI4Jz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81
L0dldFNldC9nZXRzZXQtMDAzLmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMy5qczwvYT4gZmFp
bGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTI3Jz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlMjknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwg
Z290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0
ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogU3ludGF4RXJyb3I6IEV4cGVj
dGVkIGFuIGlkZW50aWZpZXIgYnV0IGZvdW5kICdzZXR0ZXInIGluc3RlYWQ8YnI+Cis8L3R0Pjxi
cj4KKzxhIG5hbWU9J2ZhaWx1cmUyOSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDEuanMnPmpz
MV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8
YSBocmVmPScjZmFpbHVyZTI4Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlMzAnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2Fz
ZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQg
d2FzOjxicj4KK0V4Y2VwdGlvbjogVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rp
b24gKGV2YWx1YXRpbmcgJ29iai50b1NvdXJjZSgpJyk8YnI+CitnbG9iYWwgY29kZUAuL2pzMV81
L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMS5qczo0ODoyMjxicj4KKzwvdHQ+PGJyPgorPGEgbmFt
ZT0nZmFpbHVyZTMwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMi5qcyc+anMxXzUvT2JqZWN0
L3JlZ3Jlc3MtOTA1OTYtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNm
YWlsdXJlMjknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzMSc+TmV4
dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJy
PgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0
ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgor
RXhjZXB0aW9uOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogdW5ldmFsPGJy
PgorZ2xvYmFsIGNvZGVALi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDIuanM6NDg6MTY8
YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzMSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8
YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4
NC0wMDEuanMnPmpzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMS5qczwvYT4gZmFpbGVkPC9i
PiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTMwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlMzInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8
YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0
Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogVHlwZUVycm9yOiB1bmRlZmluZWQgaXMg
bm90IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ29iajEudG9Tb3VyY2UoKScpPGJyPgorZ2xvYmFs
IGNvZGVALi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDEuanM6NDk6MjY8YnI+Cis8L3R0
Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzMic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDIuanMn
PmpzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Cisg
WyA8YSBocmVmPScjZmFpbHVyZTMxJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlMzMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0
Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRw
dXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IHVuZXZhbDxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQt
MDAyLmpzOjQ5OjE5PGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzMnPjwvYT48ZGQ+
PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVz
cy9yZWdyZXNzLTQ0MDA5LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtNDQwMDkuanM8L2E+IGZh
aWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNn
aT9pZD00NDAwOScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgNDQwMDk8L2E+PGJy
PgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjZmFpbHVyZTM0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9w
IG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgor
VGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ug
b3V0cHV0IHdhczo8YnI+CitCVUdOVU1CRVI6IDQ0MDA5PGJyPgorU1RBVFVTOiBUZXN0aW5nIHRo
YXQgd2UgZG9uJ3QgY3Jhc2ggb24gb2JqLnRvU291cmNlKCk8YnI+CitFeGNlcHRpb246IFR5cGVF
cnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICdvYmoudG9Tb3Vy
Y2UoKScpPGJyPgordGVzdFRoaXNALi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtNDQwMDkuanM6NjA6
Mjc8YnI+Cit0ZXN0QC4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzOjQ4OjExPGJyPgor
Z2xvYmFsIGNvZGVALi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtNDQwMDkuanM6MzU6NTxicj4KKzwv
dHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTM0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDM2MDIuanMn
PmpzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDM2MDIuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0n
aHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM2MDInIHRhcmdl
dD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDEwMzYwMjwvYT48YnI+CisgWyA8YSBocmVmPScj
ZmFpbHVyZTMzJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzUnPk5l
eHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxi
cj4KKzx0dD5TVEFUVVM6IFJlYXNzaWdubWVudCB0byBhIGNvbnN0IGlzIE5PVCBhbiBlcnJvciBw
ZXIgRUNNQTxicj4KK0ZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CitGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMSBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICcnLCBBY3R1YWwgdmFsdWUgJ1JlZGVjbGFy
YXRpb24gb2YgYSBjb25zdCBGQUlMRUQgdG8gY2F1c2UgYW4gZXJyb3InPGJyPgorRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIFNlY3Rpb24gMyBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIEV4cGVjdGVkIHZhbHVlICcxJywgQWN0dWFsIHZhbHVlICcyJzxicj4KK0ZBSUxFRCE6IFty
ZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzUn
PjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMx
XzUvUmVncmVzcy9yZWdyZXNzLTEwNDA3Ny5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTEwNDA3
Ny5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM0Jz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzYnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBl
eGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8
YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogU3ludGF4
RXJyb3I6IEV4cGVjdGVkIHRva2VuICcpJzxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVy
ZTM2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScu
L2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMjc1NTcuanMnPmpzMV81L1JlZ3Jlc3MvcmVncmVzcy0x
Mjc1NTcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzNSc+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTM3Jz5OZXh0IEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0
ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25h
bCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFJl
ZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBjbG9uZTxicj4KK2dsb2JhbCBjb2Rl
QC4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5qczo3NToxNDxicj4KKzwvdHQ+PGJyPgor
PGEgbmFtZT0nZmFpbHVyZTM3Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJf
d2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xNzI2OTkuanMnPmpzMV81L1Jl
Z3Jlc3MvcmVncmVzcy0xNzI2OTkuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0n
I2ZhaWx1cmUzNic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTM4Jz5O
ZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08
YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWlu
YXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+
CitFeGNlcHRpb246IFVSSUVycm9yOiBVUkkgZXJyb3I8YnI+CitkZWNvZGVVUklAW25hdGl2ZSBj
b2RlXTxicj4KK2dsb2JhbCBjb2RlQC4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTE3MjY5OS5qczo2
MToxOTxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTM4Jz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVz
cy0xNzk1MjQuanMnPmpzMV81L1JlZ3Jlc3MvcmVncmVzcy0xNzk1MjQuanM8L2E+IGZhaWxlZDwv
Yj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Nzk1MjQnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDE3OTUyNDwvYT48YnI+Cisg
WyA8YSBocmVmPScjZmFpbHVyZTM3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlMzknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KKzx0dD5TVEFUVVM6IERvbid0IGNyYXNoIG9uIGV4dHJhbmVvdXMgYXJn
dW1lbnRzIHRvIHN0ci5tYXRjaCgpLCBldGMuPGJyPgorRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxi
cj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAxNCBvZiB0ZXN0IC08
YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICdBJywg
QWN0dWFsIHZhbHVlICdhJzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJy
PgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDE1IG9mIHRlc3QgLTxi
cj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ0EsYScs
IEFjdHVhbCB2YWx1ZSAnYSc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxi
cj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAxNyBvZiB0ZXN0IC08
YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICdBJywg
QWN0dWFsIHZhbHVlICdhJzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJy
PgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDE4IG9mIHRlc3QgLTxi
cj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ0EsYScs
IEFjdHVhbCB2YWx1ZSAnYSc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxi
cj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAyMCBvZiB0ZXN0IC08
YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICdTSE9V
TEQgSEFWRSBGQUxMRU4gSU5UTyBDQVRDSC1CTE9DSyEnLCBBY3R1YWwgdmFsdWUgJ2EnPGJyPgor
RkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQg
ZnJvbSB0ZXN0KCldIFNlY3Rpb24gMjIgb2YgdGVzdCAtPGJyPgorRkFJTEVEITogW3JlcG9ydGVk
IGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMCcsIEFjdHVhbCB2YWx1ZSAnNCc8YnI+CitG
QUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBm
cm9tIHRlc3QoKV0gU2VjdGlvbiAyMyBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQg
ZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICcwJywgQWN0dWFsIHZhbHVlICc0Jzxicj4KK0ZB
SUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZy
b20gdGVzdCgpXSBTZWN0aW9uIDI1IG9mIHRlc3QgLTxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBm
cm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzAnLCBBY3R1YWwgdmFsdWUgJzQnPGJyPgorRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIFNlY3Rpb24gMjYgb2YgdGVzdCAtPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZy
b20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMCcsIEFjdHVhbCB2YWx1ZSAnNCc8YnI+CitGQUlM
RUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9t
IHRlc3QoKV0gU2VjdGlvbiAyOCBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIFR5cGUgbWlzbWF0Y2gsIGV4cGVjdGVkIHR5cGUgc3RyaW5nLCBhY3R1YWwgdHlw
ZSBudW1iZXI8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZh
bHVlICdTSE9VTEQgSEFWRSBGQUxMRU4gSU5UTyBDQVRDSC1CTE9DSyEnLCBBY3R1YWwgdmFsdWUg
JzQnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMzAgb2YgdGVzdCAtPGJyPgorRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnWkJDIGFiYycsIEFjdHVhbCB2
YWx1ZSAnQUJDIFpiYyc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4K
K0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAzMSBvZiB0ZXN0IC08YnI+
CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICdaQkMgWmJj
JywgQWN0dWFsIHZhbHVlICdBQkMgWmJjJzxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRl
c3QoKV0gPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDMzIG9m
IHRlc3QgLTxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFs
dWUgJ1pCQyBhYmMnLCBBY3R1YWwgdmFsdWUgJ0FCQyBaYmMnPGJyPgorRkFJTEVEITogW3JlcG9y
dGVkIGZyb20gdGVzdCgpXSA8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNl
Y3Rpb24gMzQgb2YgdGVzdCAtPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBF
eHBlY3RlZCB2YWx1ZSAnWkJDIFpiYycsIEFjdHVhbCB2YWx1ZSAnQUJDIFpiYyc8YnI+CitGQUlM
RUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9t
IHRlc3QoKV0gU2VjdGlvbiAzNiBvZiB0ZXN0IC08YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICdTSE9VTEQgSEFWRSBGQUxMRU4gSU5UTyBDQVRDSC1C
TE9DSyEnLCBBY3R1YWwgdmFsdWUgJ0FCQyBaYmMnPGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZy
b20gdGVzdCgpXSA8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzOSc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9TY29wZS9y
ZWdyZXNzLTIyMDU4NC5qcyc+anMxXzUvU2NvcGUvcmVncmVzcy0yMjA1ODQuanM8L2E+IGZhaWxl
ZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTQwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdv
dCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUg
dGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CitFeGNlcHRpb246IFJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBTY3JpcHQ8YnI+CitnbG9iYWwgY29kZUAuL2pzMV81L1Njb3BlL3Jl
Z3Jlc3MtMjIwNTg0LmpzOjU2OjExPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDAn
PjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMx
XzUvU2NvcGUvc2NvcGUtMDAxLmpzJz5qczFfNS9TY29wZS9zY29wZS0wMDEuanM8L2E+IGZhaWxl
ZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MzI2OCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgNTMyNjg8L2E+PGJyPgor
IFsgPGEgaHJlZj0nI2ZhaWx1cmUzOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
ZmFpbHVyZTQxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IF08YnI+Cis8dHQ+U1RBVFVTOiBUZXN0aW5nIHNjb3BlIGFmdGVyIGNoYW5naW5n
IG9iai5fX3Byb3RvX188YnI+CitGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgorRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTdGVwIDE6ICBzZXR0aW5nIG9iai5fX3Byb3RvX18gPSBn
bG9iYWwgb2JqZWN0PGJyPgorRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3Rl
ZCB2YWx1ZSAnNScsIEFjdHVhbCB2YWx1ZSAnMSc8YnI+CitGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU3RlcCAyOiAg
c2V0dGluZyBvYmouX19wcm90b19fID0gbnVsbDxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9t
IHRlc3QoKV0gVHlwZSBtaXNtYXRjaCwgZXhwZWN0ZWQgdHlwZSB1bmRlZmluZWQsIGFjdHVhbCB0
eXBlIG51bWJlcjxicj4KK0ZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQg
dmFsdWUgJ3VuZGVmaW5lZCcsIEFjdHVhbCB2YWx1ZSAnMSc8YnI+CitGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQxJz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV82L1Jl
Z3Jlc3MvcmVncmVzcy0zMDE1NzQuanMnPmpzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMDE1NzQuanM8
L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3df
YnVnLmNnaT9pZD0zMDE1NzQnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDMwMTU3
NDwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTQwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyNmYWlsdXJlNDInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlf
dG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5TVEFUVVM6IEU0WCBzaG91bGQgYmUgZW5h
YmxlZCBldmVuIHdoZW4gZTR4PTEgbm90IHNwZWNpZmllZDxicj4KK0ZhaWx1cmUgbWVzc2FnZXMg
d2VyZTo8YnI+CitGQUlMRUQhOiBFNFggc2hvdWxkIGJlIGVuYWJsZWQgZXZlbiB3aGVuIGU0eD0x
IG5vdCBzcGVjaWZpZWQ6IFhNTCgpPGJyPgorRkFJTEVEITogRXhwZWN0ZWQgdmFsdWUgJ05vIGVy
cm9yJywgQWN0dWFsIHZhbHVlICdlcnJvcjogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IFhNTCc8YnI+CitGQUlMRUQhOiA8YnI+CitGQUlMRUQhOiBFNFggc2hvdWxkIGJlIGVu
YWJsZWQgZXZlbiB3aGVuIGU0eD0xIG5vdCBzcGVjaWZpZWQ6IFhNTExpc3QoKTxicj4KK0ZBSUxF
RCE6IEV4cGVjdGVkIHZhbHVlICdObyBlcnJvcicsIEFjdHVhbCB2YWx1ZSAnZXJyb3I6IFJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBYTUwnPGJyPgorRkFJTEVEITogPGJyPgor
PC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDInPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvUmVncmVzcy9yZWdyZXNzLTMwOTI0Mi5q
cyc+anMxXzYvUmVncmVzcy9yZWdyZXNzLTMwOTI0Mi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Cisg
WyA8YSBocmVmPScjZmFpbHVyZTQxJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlNDMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0
Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRw
dXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJzwn
PGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDMnPjwvYT48ZGQ+PGI+VGVzdGNhc2Ug
PGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvUmVncmVzcy9yZWdyZXNzLTMx
NDg4Ny5qcyc+anMxXzYvUmVncmVzcy9yZWdyZXNzLTMxNDg4Ny5qczwvYT4gZmFpbGVkPC9iPiA8
YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTQyJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyNmYWlsdXJlNDQnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5U
b3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+
CitUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2Fz
ZSBvdXRwdXQgd2FzOjxicj4KK0V4Y2VwdGlvbjogU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJzwnPGJyPgorPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDQnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvU3RyaW5nL3JlZ3Jl
c3MtMzA2NTkxLmpzJz5qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1OTEuanM8L2E+IGZhaWxlZDwv
Yj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MDY1OTEnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDMwNjU5MTwvYT48YnI+Cisg
WyA8YSBocmVmPScjZmFpbHVyZTQzJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlNDUnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0
Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRw
dXQgd2FzOjxicj4KK0JVR05VTUJFUjogMzA2NTkxPGJyPgorU1RBVFVTOiBTdHJpbmcgc3RhdGlj
IG1ldGhvZHM8YnI+CitTVEFUVVM6IFNlZSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3No
b3dfYnVnLmNnaT9pZD0zMDQ4Mjg8YnI+CitFeGNlcHRpb246IFR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICdTdHJpbmcuc3BsaXQobmV3IFN0cmluZygn
YWJjJyksICcnKScpPGJyPgorZ2xvYmFsIGNvZGVALi9qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1
OTEuanM6NDg6MjI8YnI+Cis8L3R0Pjxicj4KKzwvZGw+CitbIDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiB8IDxhIGhyZWY9JyNmYWlsX2RldGFpbCc+VG9wIG9mIEZhaWx1cmVz
PC9hPiBdPGJyPgorPGhyPgorPHByZT4KKzxhIG5hbWU9J3JldGVzdF9saXN0Jz48L2E+Cis8aDI+
UmV0ZXN0IExpc3Q8L2gyPjxicj4KKyMgUmV0ZXN0IExpc3QsIHNxdWlycmVsZmlzaCwgZ2VuZXJh
dGVkIFRodSBTZXAgIDUgMTY6MjA6MTEgMjAxMy4KKyMgT3JpZ2luYWwgdGVzdCBiYXNlIHdhczog
QWxsIHRlc3RzLgorIyAxMTE1IG9mIDExMjMgdGVzdChzKSB3ZXJlIGNvbXBsZXRlZCwgNDQgZmFp
bHVyZXMgcmVwb3J0ZWQuCitlY21hXzIvRXhjZXB0aW9ucy9mdW5jdGlvbi0wMDEuanMKK2VjbWFf
Mi9SZWdFeHAvcmVncmVzcy0wMDEuanMKK2VjbWFfMy9GdW5FeHByL2ZlLTAwMS5qcworZWNtYV8z
L1N0YXRlbWVudHMvcmVncmVzcy0xOTQzNjQuanMKK2VjbWFfMy9Vbmljb2RlL3VjLTAwMS5qcwor
anMxXzIvT2JqZWN0cy90b1N0cmluZy0wMDEuanMKK2pzMV8yL2Z1bmN0aW9uL0Z1bmN0aW9uX29i
amVjdC5qcworanMxXzIvZnVuY3Rpb24vZnVuY3Rpb24tMDAxLW4uanMKK2pzMV8yL2Z1bmN0aW9u
L3JlZ2V4cGFyZy0xLmpzCitqczFfMi9vcGVyYXRvci9lcXVhbGl0eS5qcworanMxXzIvcmVnZXhw
L1JlZ0V4cF9sYXN0SW5kZXguanMKK2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTkuanMKK2pzMV8y
L3JlZ2V4cC9yZWdyZXNzLTkxNDEuanMKK2pzMV8yL3JlZ2V4cC9zaW1wbGVfZm9ybS5qcworanMx
XzIvcmVnZXhwL3N0cmluZ19zcGxpdC5qcworanMxXzIvdmVyc2lvbjEyMC9ib29sZWFuLTAwMS5q
cworanMxXzIvdmVyc2lvbjEyMC9yZWdyZXNzLTk5NjYzLmpzCitqczFfMy9TY3JpcHQvZnVuY3Rp
b24tMDAxLW4uanMKK2pzMV8zL1NjcmlwdC9zY3JpcHQtMDAxLmpzCitqczFfMy9yZWdyZXNzL2Z1
bmN0aW9uLTAwMS1uLmpzCitqczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAxLmpzCitqczFf
NS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAyLmpzCitqczFfNS9FeGNlcHRpb25zL2NhdGNoZ3Vh
cmQtMDAzLmpzCitqczFfNS9FeGNlcHRpb25zL2VycnN0YWNrLTAwMS5qcworanMxXzUvRXhjZXB0
aW9ucy9yZWdyZXNzLTUwNDQ3LmpzCitqczFfNS9HZXRTZXQvZ2V0c2V0LTAwMS5qcworanMxXzUv
R2V0U2V0L2dldHNldC0wMDIuanMKK2pzMV81L0dldFNldC9nZXRzZXQtMDAzLmpzCitqczFfNS9P
YmplY3QvcmVncmVzcy05MDU5Ni0wMDEuanMKK2pzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAw
Mi5qcworanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAxLmpzCitqczFfNS9PYmplY3QvcmVn
cmVzcy05NjI4NC0wMDIuanMKK2pzMV81L1JlZ3Jlc3MvcmVncmVzcy00NDAwOS5qcworanMxXzUv
UmVncmVzcy9yZWdyZXNzLTEwMzYwMi5qcworanMxXzUvUmVncmVzcy9yZWdyZXNzLTEwNDA3Ny5q
cworanMxXzUvUmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5qcworanMxXzUvUmVncmVzcy9yZWdyZXNz
LTE3MjY5OS5qcworanMxXzUvUmVncmVzcy9yZWdyZXNzLTE3OTUyNC5qcworanMxXzUvU2NvcGUv
cmVncmVzcy0yMjA1ODQuanMKK2pzMV81L1Njb3BlL3Njb3BlLTAwMS5qcworanMxXzYvUmVncmVz
cy9yZWdyZXNzLTMwMTU3NC5qcworanMxXzYvUmVncmVzcy9yZWdyZXNzLTMwOTI0Mi5qcworanMx
XzYvUmVncmVzcy9yZWdyZXNzLTMxNDg4Ny5qcworanMxXzYvU3RyaW5nL3JlZ3Jlc3MtMzA2NTkx
LmpzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211107</attachid>
            <date>2013-09-09 15:41:17 -0700</date>
            <delta_ts>2013-09-09 16:16:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120912-20130909154117.patch</filename>
            <type>text/plain</type>
            <size>52435</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MzY1NWFmYTg5MmNhZjI1MTFkOTJkN2YwNjNjMDQzODBjNTJmOGY2Li44ZjExOThkNmNmOTFmYjE5
YjJmYmM4N2NiNmMwODNjY2I1NWRlNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAxMy0wOS0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgV2Vha01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIwOTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEVTNiBXZWFrTWFwLiAgQWRkIHRoZSBj
bHVzdGVyIG9mIGJvaWxlcnBsYXRlCisgICAgICAgIGNsYXNzZXMgYXJvdW5kIHRoZSBjb3JlIFdl
YWtNYXBEYXRhIGNsYXNzLgorCisgICAgICAgIFdlYWtNYXBEYXRhIGlzIGEgc2ltcGxlIG9iamVj
dC0+dmFsdWUgaGFzaCB0YWJsZSB0aGF0IHVzZXMgYQorICAgICAgICBjb21ibyBvZiBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyIHRvIGNvbmRpdGlvbmFsbHkga2VlcCB0aGUgd2VhaworICAgICAgICB2
YWx1ZSByZWZlcmVuY2UgbGl2ZSwgYW5kIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIgdG8gY2xlYW4g
dGhlCisgICAgICAgIGRlYWQga2V5cyBmcm9tIHRoZSB0YWJsZSBwb3N0LUdDLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OndlYWtNYXBEYXRhU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTV2Vha01hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1dlYWtN
YXA6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWFrTWFwOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTV2Vha01hcC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SlNXZWFrTWFwOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1dlYWtNYXA6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2Vha01hcDo6d2Vha01hcERhdGEpOgorICAgICAg
ICAoSlNDOjpKU1dlYWtNYXA6OkpTV2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFw
Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdlYWtNYXBDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAg
ICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpXZWFrTWFwQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVj
dG9yOjpXZWFrTWFwQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha01hcERhdGE6OldlYWtNYXBEYXRhKToKKyAg
ICAgICAgKEpTQzo6V2Vha01hcERhdGE6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
V2Vha01hcERhdGE6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpXZWFrTWFwRGF0YTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpzZXQpOgorICAgICAgICAoSlND
OjpXZWFrTWFwRGF0YTo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2Vha01hcERhdGE6OnJlbW92ZSk6
CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpjb250YWlucyk6CisgICAgICAgIChKU0M6Oldl
YWtNYXBEYXRhOjpjbGVhcik6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpEZWFkS2V5Q2xl
YW5lcjo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpE
ZWFkS2V5Q2xlYW5lcjo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIHJ1bnRp
bWUvV2Vha01hcERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpXZWFrTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6V2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjpEZWFkS2V5Q2xlYW5lcik6Cisg
ICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OldlYWtNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Z2V0
V2Vha01hcERhdGEpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwQ2xlYXIpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKToKKyAgICAgICAgKEpTQzo6cHJvdG9G
dW5jV2Vha01hcEdldCk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtNYXBIYXMpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYWtNYXBQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OldlYWtNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OldlYWtNYXBQcm90b3R5cGU6OldlYWtNYXBQcm90b3R5cGUpOgorCiAy
MDEzLTA5LTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmVnaW4gbW92aW5nIG9mZiBvZiBUeXBlVHJhaXRzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA5NmY1NTBmYzdjMmE2ZGFmZDE0Nzk1M2Y1YmI0MTcwZTFmMGM5ZDA1
Li5mMDIwYzNmNzY5YWYwYWYyYmYzZWQ1NWM1NzQ4YTBjYTViZGU0MThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNDIsNiArMzQyLDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICBydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCiAgICAg
cnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcAogICAgIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5j
cHAKKyAgICBydW50aW1lL0pTV2Vha01hcC5jcHAKICAgICBydW50aW1lL0pTV2l0aFNjb3BlLmNw
cAogICAgIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTGl0ZXJhbFBh
cnNlci5jcHAKQEAgLTM5Niw2ICszOTcsOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIHJ1bnRpbWUvVk0uY3BwCiAgICAgcnVudGltZS9XYXRjaGRvZy5jcHAKICAgICBydW50aW1l
L1dhdGNoZG9nTm9uZS5jcHAKKyAgICBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKKyAg
ICBydW50aW1lL1dlYWtNYXBEYXRhLmNwcAorICAgIHJ1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5j
cHAKIAogICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcAogICAgIHRvb2xzL0NvZGVQcm9maWxpbmcu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGIyZThm
MDQzN2Q0MjVhMDY4ZmU1N2FmNWZjNDQ5MjNjZWQ4OWIxODQuLjUzNTQ1NTdiOTkwOTUzY2QwMDMy
YzAwOGZiZmIxZjU2MmIwOGVkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC05MjEsNiArOTIxLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNVaW50MzJBcnJheS5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1VpbnQ4QXJyYXkuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNVaW50OENsYW1wZWRBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1dlYWtNYXAuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNX
aXRoU2NvcGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29w
ZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmggXApA
QCAtMTA3MCw2ICsxMDcyLDEyIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dhdGNoZG9nTm9uZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtHQ01hcC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cERhdGEuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvQ29kZVByb2ZpbGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCmluZGV4IDIzZDY2MWE2ODFiNzZjOTQ2ZmU2MzRhNGJlYWM3YjgyYTcyYmE5MmQuLjVj
NWQyMDdhMDM3ZTlkM2VlN2E4YzQ1MzE3NGE0MTUyZDI2MWRkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNDkzLDYgKzQ5Myw3IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwIiAvPg0KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNUeXBlZEFycmF5cy5jcHAiIC8+DQog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1ZhcmlhYmxlT2JqZWN0LmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTV2Vha01hcC5jcHAiIC8+
DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1dpdGhTY29wZS5jcHAiIC8+
DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1dyYXBwZXJPYmplY3QuY3Bw
IiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTGl0ZXJhbFBhcnNlci5j
cHAiIC8+DQpAQCAtNTQ2LDYgKzU0Nyw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFZNLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFdh
dGNoZG9nLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFdhdGNo
ZG9nTm9uZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFr
TWFwQ29uc3RydWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcV2Vha01hcERhdGEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcV2Vha01hcFByb3RvdHlwZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
dG9vbHNcQ29kZVByb2ZpbGUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRv
b2xzXENvZGVQcm9maWxpbmcuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHlh
cnJcWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIiAvPg0KQEAgLTkzNCw2ICs5MzgsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1VpbnQ4QXJyYXkuaCIgLz4NCiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVWludDhDbGFtcGVkQXJyYXkuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVmFyaWFibGVPYmplY3QuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTV2Vha01hcC5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNXaXRoU2NvcGUuaCIgLz4NCiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTV3JhcHBlck9iamVjdC5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTGl0ZXJhbFBhcnNlci5oIiAvPg0K
QEAgLTEwMDksNiArMTAxNCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XFZNLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXYXRjaGRvZy5o
IiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha0dDTWFwLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFrTWFwQ29uc3RydWN0b3Iu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdlYWtNYXBEYXRhLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFrTWFwUHJvdG90eXBl
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFrUmFuZG9tLmgi
IC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXcml0ZUJhcnJpZXIuaCIg
Lz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0b29sc1xDb2RlUHJvZmlsZS5oIiAvPg0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRl
eCBlM2FmOThkMGZlNzYwOThkYmIwZmZjMWY1YjRkNTM3ODMzMGI5ZTY4Li40NzMzYWU2OTE4MjUw
Y2Y5ZWQ1NDJmOWZlNzM4YmJlM2U1MzA2MzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02MTIsNiArNjEyLDkgQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNXaXRoU2NvcGUuY3BwIj4NCiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1dlYWtNYXAuY3BwIj4NCisgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU1dyYXBwZXJPYmplY3QuY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQpAQCAtODU4LDYgKzg2MSwxNSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb21pc2UuY3BwIj4NCiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxXZWFrTWFwQ29uc3RydWN0b3IuY3BwIj4NCisgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxXZWFrTWFwRGF0YS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXFdlYWtNYXBQcm90b3R5cGUuY3BwIj4NCisgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caGVhcFxDb2RlQmxvY2tTZXQuY3BwIj4NCiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4N
CiAgICAgPC9DbENvbXBpbGU+DQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYTI2
ZWMyZTQyM2YxOTY3ZDgzNmVlYjUyMmUwZGM5NTliMzY0OGFlLi5mZDcwYzM4YjA3YWJiZjI4NzQ3
MThjNDc3ZGJjZTJhOWRlZWY3YzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTM5LDYgKzkzOSwxNCBAQAogCQlBN0MxRUFGMDE3OTg3QUI2MDAyOTlEQjIgLyogSlNTdGFja0lu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
QzFFQUVCMTc5ODdBQjYwMDI5OURCMiAvKiBKU1N0YWNrSW5saW5lcy5oICovOyB9OwogCQlBN0Mx
RUFGMTE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QzFFQUVDMTc5ODdBQjYwMDI5OURCMiAv
KiBTdGFja1Zpc2l0b3IuY3BwICovOyB9OwogCQlBN0MxRUFGMjE3OTg3QUI2MDAyOTlEQjIgLyog
U3RhY2tWaXNpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0MxRUFFRDE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdDQTNBRTMxN0RBNDFB
RTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FERDE3REE0MUFFMDA2NTM4QUYgLyogV2Vh
a01hcENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8q
IFdlYWtNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdDQTNBREUxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rv
ci5oICovOyB9OworCQlBN0NBM0FFNTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NB
M0FERjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5jcHAgKi87IH07CisJCUE3
Q0EzQUU2MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMDE3REE0MUFFMDA2NTM4
QUYgLyogV2Vha01hcFByb3RvdHlwZS5oICovOyB9OworCQlBN0NBM0FFNzE3REE0MUFFMDA2NTM4
QUYgLyogSlNXZWFrTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3Q0EzQUUxMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuY3BwICovOyB9
OworCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2NTM4
QUYgLyogSlNXZWFrTWFwLmggKi87IH07CisJCUE3Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovOyB9Owor
CQlBN0NBM0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhB
RiAvKiBXZWFrTWFwRGF0YS5oICovOyB9OwogCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyog
REZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi87
IH07CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNF
NDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQlB
N0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U1MTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTQ3LDYgKzIxNTUsMTQgQEAKIAkJQTdDMUVB
RUQxNzk4N0FCNjAwMjk5REIyIC8qIFN0YWNrVmlzaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdGFja1Zpc2l0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTdDMjI1Q0MxMzk5ODFGMTAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBLZXl3b3JkTG9va3VwR2VuZXJh
dG9yLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0MyMjVDRDEzOTk4NDlDMDBG
RjE2NjIgLyogS2V5d29yZExvb2t1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBLZXl3b3JkTG9va3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Q0EzQURE
MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDQTNBREUxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBD
b25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFwQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDQTNBREYxN0RBNDFB
RTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2Vha01hcFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3Q0EzQUUwMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDQTNBRTExN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYWtN
YXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FFMjE3REE0MUFFMDA2
NTM4QUYgLyogSlNXZWFrTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2Vha01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FFOTE3REE1MTY4
MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2Vha01hcERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmFzaWNCbG9jay5jcHA7IHBhdGgg
PSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5jcHA7
IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25T
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25T
ZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzM4MCw2ICszMzk2LDE0IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAw
MzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJCTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAv
KiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oICovLAorCQkJCUE3Q0EzQUREMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29u
c3RydWN0b3IuY3BwICovLAorCQkJCUE3Q0EzQURFMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFw
Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBN0NBM0FERjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01h
cFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTdDQTNBRTAxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtN
YXBQcm90b3R5cGUuaCAqLywKKwkJCQlBN0NBM0FFMTE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFr
TWFwLmNwcCAqLywKKwkJCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmgg
Ki8sCisJCQkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLywK
KwkJCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zOTky
LDYgKzQwMTYsNyBAQAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NS
RXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAv
KiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0NBM0FF
QzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJD
b21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBE
RkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQyMTIsNiArNDIz
Nyw3IEBACiAJCQkJMTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3QzBDNEFDMTY4MTAzMDIwMDE3MDExRCAvKiBKU1NjcmlwdFJlZlByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDExMTU3RjMzMkMwMDRBNEU3RCAvKiBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0NBM0FFODE3REE0
MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OUQ5RTE3
RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVFMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3
OTg3QUI2MDAyOTlEQjIgLyogSlNTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDMz
Nyw2ICs0MzYzLDcgQEAKIAkJCQkwRkY3MjlCQTE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJD
b21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkIxNjZBRDM2MDAwMEY1QkEz
IC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMy
NjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE3Q0EzQUU0MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJDMTY2QUQzNjAwMDBGNUJBMyAvKiBQ
cm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJEMTY2
QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkY3MjlCRTE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ0MDIsNiArNDQyOSw3IEBACiAJCQkJQkMxOEM0NkEwRTE2RjVDRDAw
QjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0Ix
MzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIyODYx
NDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
Q0EzQUU2MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRDJDOTI0MTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5ODYsNiArNTAxNCw3IEBACiAJCQkJMTQ3RjM5
Q0MxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUMyRDU4QzM0MTU5MTJGRUUwMDIxQTg0NCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMkYxNUE4RENFMDAwOEYzNjNFIC8qIEdDQXdhcmVK
SVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0NBM0FFQjE3REE1MTY4MDA2
NTM4QUYgLyogV2Vha01hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzIyMzlEMUExNjI2
MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyMTEyMkUx
MTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY5MzMyOUYxNENBN0RDQTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC01MTI3LDYgKzUxNTYsNyBAQAogCQkJCTE0NDY5REUyMTA3RUM3RTcwMDY1
MDQ0NiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURF
MzEwN0VDN0U3MDA2NTA0NDYgLyogTnVtYmVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0NDY5REU0MTA3RUM3RTcwMDY1MDQ0NiAvKiBOdW1iZXJQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTdDQTNBRTMxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkYzRUVCRTE2OENERTkzMDA3N0I5MkEgLyogT2Jq
Q0NhbGxiYWNrRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNTEwN0VDN0U3
MDA2NTA0NDYgLyogT2JqZWN0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0
NjlERTYxMDdFQzdFNzAwNjUwNDQ2IC8qIE9iamVjdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTUxNjAsOSArNTE5MCwxMSBAQAogCQkJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAv
KiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzRDMzNDMTZBQTJEOUIw
MDYyRjAxRCAvKiBQcm90b3R5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MzMyQTMx
NENBN0RENzAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTdDQTNBRTUxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZGNjBBQzMxNjc0MEY4ODAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDExMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVn
RXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdDQTNBRTcxN0RBNDFBRTAwNjUzOEFG
IC8qIEpTV2Vha01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMDE1MUMwNkE5MDA0
NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDhB
MzJCMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQyMTA3RUMwOTMwMDEz
RTdCMiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkKaW5kZXggMWVjNWM3OWE3MTI0MzgxOTMyMmQzYTVmYjdhYzcwMGZkNGViMzhj
Ni4uMmZiZjdmYTZhZjZjZTU1ZWJkY2QyMmIxN2I1MTNhYzFhYzlmNjM3YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkKQEAgLTM1MCw2ICszNTAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50
aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwIFwKICAgICBydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwIFwKICAgICBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwIFwKKyAgICBydW50aW1l
L0pTV2Vha01hcC5jcHAgXAogICAgIHJ1bnRpbWUvSlNXaXRoU2NvcGUuY3BwIFwKICAgICBydW50
aW1lL0pTV3JhcHBlck9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAg
XApAQCAtNDA0LDYgKzQwNSw5IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvVk0uY3BwIFwK
ICAgICBydW50aW1lL1dhdGNoZG9nLmNwcCBcCiAgICAgcnVudGltZS9XYXRjaGRvZ05vbmUuY3Bw
IFwKKyAgICBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvV2Vh
a01hcERhdGEuY3BwIFwKKyAgICBydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwIFwKICAgICB0
b29scy9Db2RlUHJvZmlsZS5jcHAgXAogICAgIHRvb2xzL0NvZGVQcm9maWxpbmcuY3BwIFwKICAg
ICB5YXJyL1lhcnJKSVQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDY0ODBmMGY3ZTI4NjkwMmVhM2EyOTk4YzYxNDEy
NGYyNWNlMzdkYzUuLjU0MjJjN2E0ZjhiODBlNjQzMjJjMTM5NDhlZGFkMjA3MWNlMDQ2NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aApAQCAtMTQzLDYgKzE0Myw3IEBACiAgICAgbWFjcm8oc2l6ZSkgXAogICAgIG1hY3JvKE1hcClc
CiAgICAgbWFjcm8oU2V0KVwKKyAgICBtYWNybyhXZWFrTWFwKVwKICAgICBtYWNybyhhZGQpCiAK
ICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAwNWZlODU3NGQyNjFiYjY0ZTYzMzM1MDdhZGRlNWQ4ODY0ZGJhZjkwLi4zNzFkM2U3ODgzMGJh
YjdiOGUwYjUwZjk2ZjZiMWVjMGQyODE3ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVk
ZSAiSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJv
dG90eXBlcy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlICJKU1dlYWtN
YXAuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVByb2ZpbGVy
LmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC05OSw2ICsxMDAsOSBAQAogI2luY2x1ZGUgIlN0
cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJXZWFrTWFwQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgorI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUu
aCIKIAogI2lmIEVOQUJMRShQUk9NSVNFUykKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKQEAgLTMw
OSw2ICszMTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlw
ZSkKIAogCiAgICAgbV9tYXBEYXRhU3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBE
YXRhOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywganNOdWxsKCkpKTsKKyAgICBt
X3dlYWtNYXBEYXRhU3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBXZWFrTWFwRGF0YTo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIGpzTnVsbCgpKSk7CiAKICNkZWZpbmUg
Q1JFQVRFX1BST1RPVFlQRV9GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwg
cHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKICAgICBtXyAjIyBsb3dlck5hbWUg
IyMgUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBjYXBpdGFsTmFtZSMjUHJvdG90eXBl
OjpjcmVhdGUoZXhlYywgdGhpcywgY2FwaXRhbE5hbWUjI1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOyBcCkBAIC02
NDAsNiArNjQ1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogI3VuZGVmIFZJU0lUX1NJTVBMRV9UWVBFCiAK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tYXBEYXRhU3RydWN0dXJlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93ZWFrTWFwRGF0YVN0cnVjdHVyZSk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBOVU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM7IGktLTsp
IHsKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZWRBcnJheXNbaV0u
cHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IGRhNjE4OTRjNjY2MjFiN2VjNzRkZjg3OGI0NmNmMGMzODJmMTNlMzEuLjgy
ZmYyOWNhNzVjYzM2ZjJkNWI2ZTdjYzE4NDVlYTcyNjkzZGUzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtODAsNiArODAsNyBAQCBz
dHJ1Y3QgSGFzaFRhYmxlOwogICAgIG1hY3JvKE51bWJlciwgbnVtYmVyLCBudW1iZXJPYmplY3Qs
IE51bWJlck9iamVjdCwgTnVtYmVyKSBcCiAgICAgbWFjcm8oRXJyb3IsIGVycm9yLCBlcnJvciwg
RXJyb3JJbnN0YW5jZSwgRXJyb3IpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyLCBhcnJheUJ1
ZmZlciwgYXJyYXlCdWZmZXIsIEpTQXJyYXlCdWZmZXIsIEFycmF5QnVmZmVyKSBcCisgICAgbWFj
cm8oV2Vha01hcCwgd2Vha01hcCwgd2Vha01hcCwgSlNXZWFrTWFwLCBXZWFrTWFwKSBcCiAKICNk
ZWZpbmUgREVDTEFSRV9TSU1QTEVfQlVJTFRJTl9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUs
IHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgY2xhc3MgSlMgIyMgY2Fw
aXRhbE5hbWU7IFwKQEAgLTIwMCw2ICsyMDEsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYgLy8gRU5B
QkxFKFBST01JU0VTKQogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tYXBEYXRhU3Ry
dWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2Vha01hcERhdGFTdHJ1Y3R1
cmU7CiAKICNkZWZpbmUgREVGSU5FX1NUT1JBR0VfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1l
LCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgV3Jp
dGVCYXJyaWVyPGNhcGl0YWxOYW1lICMjIFByb3RvdHlwZT4gbV8gIyMgbG93ZXJOYW1lICMjIFBy
b3RvdHlwZTsgXApAQCAtMzk4LDYgKzQwMCw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGlu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBEYXRh
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBEYXRhU3RydWN0dXJlLmdldCgpOyB9Cisg
ICAgU3RydWN0dXJlKiB3ZWFrTWFwRGF0YVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vh
a01hcERhdGFTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNB
cnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNmI3OTBiMGZl
NThkMjI2YWIxMDE2M2FhZTU2ZTFjNGRhMzY0OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJKU1dlYWtNYXAuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2Vh
a01hcERhdGEuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYWtN
YXA6OnNfaW5mbyA9IHsgIldlYWtNYXAiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTV2Vha01hcCkgfTsKKwordm9pZCBKU1dlYWtNYXA6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgbV93ZWFrTWFwRGF0YS5zZXQodm0sIHRoaXMsIFdlYWtNYXBE
YXRhOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTV2Vha01hcDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisgICAgSlNXZWFrTWFwKiB0aGlzT2Jq
ID0ganNDYXN0PEpTV2Vha01hcCo+KGNlbGwpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
LT5tX3dlYWtNYXBEYXRhKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNXZWFrTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1dlYWtNYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTlmZWVmM2M0ZGNmNmUxOGRkZmI0NGQ5OGY1MWI5MDE4
MzE4ZTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNXZWFrTWFwLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU1dlYWtNYXBfaAorI2RlZmluZSBKU1dlYWtN
YXBfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IFdlYWtNYXBEYXRhOworCitjbGFzcyBKU1dlYWtNYXAgOiBwdWJsaWMgSlNPYmplY3QgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNPYmplY3QgQmFzZTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgSlNXZWFrTWFwKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAg
IEpTV2Vha01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYWtN
YXA+KHZtLmhlYXApKSBKU1dlYWtNYXAodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAg
IHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKKyAgICBXZWFrTWFwRGF0YSogd2Vha01hcERhdGEo
KSB7IHJldHVybiBtX3dlYWtNYXBEYXRhLmdldCgpOyB9CisKKyAgICBKU1ZhbHVlIGdldChDYWxs
RnJhbWUqLCBKU09iamVjdCopOworICAgIGJvb2wgaGFzKENhbGxGcmFtZSosIEpTT2JqZWN0Kik7
CisgICAgYm9vbCByZW1vdmUoQ2FsbEZyYW1lKiwgSlNPYmplY3QqKTsKKworICAgIHZvaWQgc2V0
KENhbGxGcmFtZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgdm9pZCBjbGVhcihDYWxsRnJh
bWUqKTsKKworcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
ICAgIEpTV2Vha01hcChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPFdlYWtNYXBEYXRhPiBt
X3dlYWtNYXBEYXRhOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoSlNXZWFrTWFwX2gp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVj
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMWMzOTNkNzI5MDk0YTBhNjNhZDFiOGYyMTQ4NjM0MGE5Zjdi
NzZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2Vha01hcENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTV2Vha01hcC5oIgorI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBXZWFrTWFwQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShXZWFrTWFwQ29uc3RydWN0b3IpIH07CisKK3ZvaWQgV2Vha01hcENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFdlYWtNYXBQcm90b3R5cGUqIHByb3Rv
dHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT52bSgpLCBwcm90b3R5cGUt
PmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVt
YmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXBDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFz
SW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT53ZWFrTWFwU3RydWN0dXJlKCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYWtNYXA6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1
cmUpKTsKK30KKworQ29uc3RydWN0VHlwZSBXZWFrTWFwQ29uc3RydWN0b3I6OmdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25z
dHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFdlYWtNYXBDb25zdHJ1Y3RvcjsK
KyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIFdlYWtNYXBDb25z
dHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKQoreworICAgIHJldHVybiBD
YWxsVHlwZU5vbmU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha01hcENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM0ODVlZmFhZDBhNjU4YjI1N2Ey
NjhhZGNkZTAxMDliMjAwODM2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV2Vha01h
cENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgV2Vha01hcENvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYWtNYXBQ
cm90b3R5cGU7CisKK2NsYXNzIFdlYWtNYXBDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKwor
ICAgIHN0YXRpYyBXZWFrTWFwQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWFrTWFw
UHJvdG90eXBlKiBwcm90b3R5cGUpCisgICAgeworICAgICAgICBXZWFrTWFwQ29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vha01hcENvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgV2Vha01hcENvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3Rv
dHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgV2Vha01hcENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2UoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSosIFdlYWtNYXBQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30KKworI2VuZGlm
IC8vICFkZWZpbmVkKFdlYWtNYXBDb25zdHJ1Y3Rvcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcERhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhOWZlZjZjNzYyNjQ1N2Ux
NmY0YmMyMGZhMTgxNTg5YTIzNzhkNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKKwor
I2luY2x1ZGUgIkNvcGllZEFsbG9jYXRvci5oIgorI2luY2x1ZGUgIkNvcHlWaXNpdG9ySW5saW5l
cy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorCisjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KKworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IFdlYWtNYXBEYXRhOjpzX2luZm8gPSB7ICJXZWFrTWFwRGF0YSIsICZCYXNlOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2Vha01hcERhdGEpIH07CisKK1dlYWtNYXBEYXRhOjpX
ZWFrTWFwRGF0YShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBC
YXNlKHZtLCBnbG9iYWxPYmplY3QtPndlYWtNYXBEYXRhU3RydWN0dXJlKCkpCisgICAgLCBtX2dj
Q2xlYW5lcih0aGlzKQoreworfQorCit2b2lkIFdlYWtNYXBEYXRhOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCit2b2lkIFdlYWtN
YXBEYXRhOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxXZWFrTWFw
RGF0YSo+KGNlbGwpLT5+V2Vha01hcERhdGEoKTsKK30KKwordm9pZCBXZWFrTWFwRGF0YTo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisgICAgV2Vha01hcERhdGEqIHRoaXNP
YmogPSBqc0Nhc3Q8V2Vha01hcERhdGEqPihjZWxsKTsKKyAgICB2aXNpdG9yLmFkZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXIoJnRoaXNPYmotPm1fZ2NDbGVhbmVyKTsKKyAgICB2aXNpdG9yLmFkZFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoJnRoaXNPYmotPm1fZ2NDbGVhbmVyKTsKKworICAgIC8vIFJv
dWdoIGFwcHJveGltYXRpb24gb2YgdGhlIGV4dGVybmFsIHN0b3JhZ2UgbmVlZGVkIGZvciB0aGUg
aGFzaHRhYmxlLgorICAgIC8vIFRoaXMgc2luJ3QgZXhhY3QsIGJ1dCBpdCBpcyBjbG9zZSBlbm91
Z2gsIGFuZCBwcm9wb3J0aW9uYWwgdG8gdGhlIGFjdHVhbAorICAgIC8vIGV4dGVybmFsIG1lcm1v
cnkgdXNhZ2UuCisgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVVzYWdlKHRoaXNPYmotPm1f
bWFwLmNhcGFjaXR5KCkgKiAoc2l6ZW9mKEpTT2JqZWN0KikgKyBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSkpOworfQorCit2b2lkIFdlYWtNYXBEYXRhOjpzZXQoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTT2JqZWN0KiBrZXksIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byBpdGVyID0g
bV9tYXAuZmluZChrZXkpOworICAgIGlmIChpdGVyICE9IG1fbWFwLmVuZCgpKSB7CisgICAgICAg
IGl0ZXItPnZhbHVlLnNldChjYWxsRnJhbWUtPnZtKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAvLyBIZXJlIHdlIGZvcmNlIHRoZSB3cml0ZSBiYXJyaWVyIG9u
IHRoZSBrZXkuCisgICAgbV9tYXAuYWRkKFdyaXRlQmFycmllcjxKU09iamVjdD4oY2FsbEZyYW1l
LT52bSgpLCB0aGlzLCBrZXkpLmdldCgpLCBXcml0ZUJhcnJpZXI8VW5rbm93bj4oY2FsbEZyYW1l
LT52bSgpLCB0aGlzLCB2YWx1ZSkpOworfQorCitKU1ZhbHVlIFdlYWtNYXBEYXRhOjpnZXQoSlNP
YmplY3QqIGtleSkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CisgICAgaWYg
KGl0ZXIgPT0gbV9tYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IHJldHVybiBpdGVyLT52YWx1ZS5nZXQoKTsKK30KKworYm9vbCBXZWFrTWFwRGF0YTo6cmVtb3Zl
KEpTT2JqZWN0KiBrZXkpCit7CisgICAgYXV0byBpdGVyID0gbV9tYXAuZmluZChrZXkpOworICAg
IGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBt
X21hcC5yZW1vdmUoaXRlcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2Vha01hcERh
dGE6OmNvbnRhaW5zKEpTT2JqZWN0KiBrZXkpCit7CisgICAgcmV0dXJuIG1fbWFwLmNvbnRhaW5z
KGtleSk7Cit9CisKK3ZvaWQgV2Vha01hcERhdGE6OmNsZWFyKCkKK3sKKyAgICBtX21hcC5jbGVh
cigpOworfQorCit2b2lkIFdlYWtNYXBEYXRhOjpEZWFkS2V5Q2xlYW5lcjo6dmlzaXRXZWFrUmVm
ZXJlbmNlcyhTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX2xpdmVLZXlDb3VudCA9IDA7
CisgICAgZm9yIChhdXRvIHB0ciA9IG1fdGFyZ2V0LT5tX21hcC5iZWdpbigpLCBlbmQgPSBtX3Rh
cmdldC0+bV9tYXAuZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgIGlmICghSGVh
cDo6aXNNYXJrZWQocHRyLT5rZXkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG1f
bGl2ZUtleUNvdW50Kys7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZwdHItPnZhbHVlKTsKKyAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlQobV9saXZlS2V5Q291bnQgPD0gbV90YXJnZXQtPm1fbWFw
LnNpemUoKSk7Cit9CisKK3ZvaWQgV2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseSgpCit7CisgICAgaWYgKG1fbGl2ZUtleUNvdW50ID4gbV90YXJnZXQt
Pm1fbWFwLnNpemUoKSAvIDIpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9saXZlS2V5Q291
bnQgPD0gbV90YXJnZXQtPm1fbWFwLnNpemUoKSk7CisgICAgICAgIGludCBkZWFkQ291bnQgPSBt
X3RhcmdldC0+bV9tYXAuc2l6ZSgpIC0gbV9saXZlS2V5Q291bnQ7CisgICAgICAgIGlmICghZGVh
ZENvdW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBWZWN0b3I8SlNPYmplY3QqPiBk
ZWFkRW50cmllczsKKyAgICAgICAgZGVhZEVudHJpZXMucmVzZXJ2ZUNhcGFjaXR5KGRlYWRDb3Vu
dCk7CisgICAgICAgIGZvciAoYXV0byBwdHIgPSBtX3RhcmdldC0+bV9tYXAuYmVnaW4oKSwgZW5k
ID0gbV90YXJnZXQtPm1fbWFwLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0cikgeworICAgICAgICAg
ICAgaWYgKEhlYXA6OmlzTWFya2VkKHB0ci0+a2V5KSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIGRlYWRFbnRyaWVzLnVuY2hlY2tlZEFwcGVuZChwdHItPmtleSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZWFkRW50cmllcy5zaXpl
KCk7IGkrKykKKyAgICAgICAgICAgIG1fdGFyZ2V0LT5tX21hcC5yZW1vdmUoZGVhZEVudHJpZXNb
aV0pOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hcFR5cGUgbmV3TWFwOworICAgICAgICBmb3Ig
KGF1dG8gcHRyID0gbV90YXJnZXQtPm1fbWFwLmJlZ2luKCksIGVuZCA9IG1fdGFyZ2V0LT5tX21h
cC5lbmQoKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAgICAgIGlmICghSGVhcDo6aXNN
YXJrZWQocHRyLT5rZXkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
bmV3TWFwLmFkZChwdHItPmtleSwgcHRyLT52YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgbV90
YXJnZXQtPm1fbWFwLnN3YXAobmV3TWFwKTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExODhjMjQ3ZDUzYTU5
MWI4NjA4MTJmYjZiOGZlNWM1OGEwMzg5MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYWtNYXBEYXRhX2gKKyNkZWZpbmUgV2Vha01hcERhdGFfaAorCisj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYWtJbXBsOworY2xhc3MgV2Vha01hcERhdGE7
CisKK2NsYXNzIFdlYWtNYXBEYXRhIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0
aWMgV2Vha01hcERhdGEqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCisgICAgeworICAgICAgICBXZWFrTWFwRGF0YSogd2Vha01hcERhdGEgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxXZWFrTWFwRGF0YT4odm0uaGVhcCkpIFdlYWtNYXBEYXRhKHZtLCBn
bG9iYWxPYmplY3QpOworICAgICAgICB3ZWFrTWFwRGF0YS0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgICAgICByZXR1cm4gd2Vha01hcERhdGE7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgdm9pZCBzZXQoQ2FsbEZyYW1lKiwg
SlNPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBKU1ZhbHVlIGdldChKU09iamVjdCopOworICAgIGJv
b2wgcmVtb3ZlKEpTT2JqZWN0Kik7CisgICAgdm9pZCByZW1vdmVEZWFkKEpTT2JqZWN0Kik7Cisg
ICAgYm9vbCBjb250YWlucyhKU09iamVjdCopOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIERF
Q0xBUkVfSU5GTzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6
CisgICAgV2Vha01hcERhdGEoVk0mLCBKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIGNs
YXNzIERlYWRLZXlDbGVhbmVyIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1Ymxp
YyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlYWRLZXlD
bGVhbmVyKFdlYWtNYXBEYXRhKiB0YXJnZXQpCisgICAgICAgICAgICA6IG1fdGFyZ2V0KHRhcmdl
dCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCB2
b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CisgICAgICAgIGludCBtX2xpdmVLZXlDb3Vu
dDsKKyAgICAgICAgV2Vha01hcERhdGEqIG1fdGFyZ2V0OworICAgIH07CisgICAgRGVhZEtleUNs
ZWFuZXIgbV9nY0NsZWFuZXI7CisgICAgdHlwZWRlZiBIYXNoTWFwPEpTT2JqZWN0KiwgV3JpdGVC
YXJyaWVyPFVua25vd24+PiBNYXBUeXBlOworICAgIE1hcFR5cGUgbV9tYXA7Cit9OworCit9CisK
KyNlbmRpZiAvKiAhZGVmaW5lZChXZWFrTWFwRGF0YV9oKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWY2
MWQ0NjMzNWNjZWZkYjcxZjU1YWRlZDk1M2Y4OTFmYTJhMTI0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAKQEAgLTAs
MCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWFrTWFwUHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJKU1dlYWtNYXAuaCIKKyNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFdlYWtNYXBQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIldlYWtNYXAiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdl
YWtNYXBQcm90b3R5cGUpIH07CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByb3RvRnVuY1dlYWtNYXBDbGVhcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBEZWxldGUoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwR2V0KEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vh
a01hcEhhcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByb3RvRnVuY1dlYWtNYXBTZXQoRXhlY1N0YXRlKik7CisKK3ZvaWQgV2Vha01hcFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHZtLnByb3Rv
dHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CisKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jbGVhciwgcHJvdG9GdW5jV2Vha01hcENsZWFyLCBEb250RW51
bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVs
ZXRlS2V5d29yZCwgcHJvdG9GdW5jV2Vha01hcERlbGV0ZSwgRG9udEVudW0sIDEpOworICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldCwgcHJvdG9GdW5jV2Vh
a01hcEdldCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJv
cGVydHlOYW1lcygpLmhhcywgcHJvdG9GdW5jV2Vha01hcEhhcywgRG9udEVudW0sIDEpOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLnNldCwgcHJvdG9GdW5j
V2Vha01hcFNldCwgRG9udEVudW0sIDIpOworfQorCitzdGF0aWMgV2Vha01hcERhdGEqIGdldFdl
YWtNYXBEYXRhKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlm
ICghdmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IFdURjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBub24tb2JqZWN0
IikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoSlNXZWFrTWFwKiB3ZWFr
TWFwID0ganNEeW5hbWljQ2FzdDxKU1dlYWtNYXAqPih2YWx1ZSkpCisgICAgICAgIHJldHVybiB3
ZWFrTWFwLT53ZWFrTWFwRGF0YSgpOworCisgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBX
VEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gYSBub24tV2Vha01h
cCBvYmplY3QiKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcHJvdG9GdW5jV2Vha01hcENsZWFyKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghbWFwKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIG1hcC0+Y2xlYXIoKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHByb3RvRnVuY1dlYWtNYXBEZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAg
V2Vha01hcERhdGEqIG1hcCA9IGdldFdlYWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCFtYXApCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOworICAgIGlmICgha2V5LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQSBXZWFr
TWFwIGNhbm5vdCBoYXZlIGEgbm9uLW9iamVjdCBrZXkiKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKG1hcC0+cmVtb3ZlKGFzT2JqZWN0KGtleSkpKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEdldChDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK3sKKyAgICBXZWFrTWFwRGF0YSogbWFwID0gZ2V0V2Vha01hcERhdGEoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW1hcCkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBKU1ZhbHVlIGtleSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFrZXkuaXNPYmplY3QoKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6
QVNDSUlMaXRlcmFsKCJBIFdlYWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0IGtleSIpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtYXAtPmdldChhc09iamVjdChrZXkpKSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcEhhcyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBXZWFrTWFwRGF0YSogbWFwID0gZ2V0V2Vha01hcERh
dGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW1hcCkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBKU1ZhbHVl
IGtleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFrZXkuaXNPYmplY3QoKSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IFdURjo6QVNDSUlMaXRlcmFsKCJBIFdlYWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0IGtl
eSIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4obWFwLT5jb250YWlu
cyhhc09iamVjdChrZXkpKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBy
b3RvRnVuY1dlYWtNYXBTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgV2Vha01hcERh
dGEqIG1hcCA9IGdldFdlYWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFtYXApCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAg
IGlmICgha2V5LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGVkIHRvIHNl
dCBhIG5vbi1vYmplY3Qga2V5IGluIGEgV2Vha01hcCIpKSk7CisgICAgbWFwLT5zZXQoY2FsbEZy
YW1lLCBhc09iamVjdChrZXkpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzg1ZTQ5ZTkzNmJjNDhjMTVmZDFkMjQwMWE3ODIwM2E0YTQ1NjA1ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFdlYWtNYXBQcm90b3R5cGVfaAorI2RlZmluZSBXZWFrTWFwUHJvdG90
eXBlX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBXZWFrTWFwUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIFdlYWtNYXBQ
cm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgV2Vha01hcFByb3Rv
dHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vha01hcFByb3Rv
dHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFdlYWtNYXBQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsK
KyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwor
ICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBXZWFrTWFwUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgICAgIDogQmFzZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCisgICAgeworICAg
IH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kik7
Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChXZWFrTWFwUHJvdG90eXBlX2gpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211112</attachid>
            <date>2013-09-09 16:16:46 -0700</date>
            <delta_ts>2013-09-10 13:40:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120912-20130909161645.patch</filename>
            <type>text/plain</type>
            <size>52467</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MzY1NWFmYTg5MmNhZjI1MTFkOTJkN2YwNjNjMDQzODBjNTJmOGY2Li44ZjExOThkNmNmOTFmYjE5
YjJmYmM4N2NiNmMwODNjY2I1NWRlNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAxMy0wOS0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgV2Vha01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIwOTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEVTNiBXZWFrTWFwLiAgQWRkIHRoZSBj
bHVzdGVyIG9mIGJvaWxlcnBsYXRlCisgICAgICAgIGNsYXNzZXMgYXJvdW5kIHRoZSBjb3JlIFdl
YWtNYXBEYXRhIGNsYXNzLgorCisgICAgICAgIFdlYWtNYXBEYXRhIGlzIGEgc2ltcGxlIG9iamVj
dC0+dmFsdWUgaGFzaCB0YWJsZSB0aGF0IHVzZXMgYQorICAgICAgICBjb21ibyBvZiBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyIHRvIGNvbmRpdGlvbmFsbHkga2VlcCB0aGUgd2VhaworICAgICAgICB2
YWx1ZSByZWZlcmVuY2UgbGl2ZSwgYW5kIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIgdG8gY2xlYW4g
dGhlCisgICAgICAgIGRlYWQga2V5cyBmcm9tIHRoZSB0YWJsZSBwb3N0LUdDLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OndlYWtNYXBEYXRhU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTV2Vha01hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1dlYWtN
YXA6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWFrTWFwOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTV2Vha01hcC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SlNXZWFrTWFwOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1dlYWtNYXA6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2Vha01hcDo6d2Vha01hcERhdGEpOgorICAgICAg
ICAoSlNDOjpKU1dlYWtNYXA6OkpTV2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFw
Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdlYWtNYXBDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAg
ICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpXZWFrTWFwQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVj
dG9yOjpXZWFrTWFwQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha01hcERhdGE6OldlYWtNYXBEYXRhKToKKyAg
ICAgICAgKEpTQzo6V2Vha01hcERhdGE6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
V2Vha01hcERhdGE6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpXZWFrTWFwRGF0YTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpzZXQpOgorICAgICAgICAoSlND
OjpXZWFrTWFwRGF0YTo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2Vha01hcERhdGE6OnJlbW92ZSk6
CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpjb250YWlucyk6CisgICAgICAgIChKU0M6Oldl
YWtNYXBEYXRhOjpjbGVhcik6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpEZWFkS2V5Q2xl
YW5lcjo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpE
ZWFkS2V5Q2xlYW5lcjo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIHJ1bnRp
bWUvV2Vha01hcERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpXZWFrTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6V2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjpEZWFkS2V5Q2xlYW5lcik6Cisg
ICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OldlYWtNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Z2V0
V2Vha01hcERhdGEpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwQ2xlYXIpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKToKKyAgICAgICAgKEpTQzo6cHJvdG9G
dW5jV2Vha01hcEdldCk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtNYXBIYXMpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYWtNYXBQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OldlYWtNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OldlYWtNYXBQcm90b3R5cGU6OldlYWtNYXBQcm90b3R5cGUpOgorCiAy
MDEzLTA5LTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmVnaW4gbW92aW5nIG9mZiBvZiBUeXBlVHJhaXRzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA5NmY1NTBmYzdjMmE2ZGFmZDE0Nzk1M2Y1YmI0MTcwZTFmMGM5ZDA1
Li5mMDIwYzNmNzY5YWYwYWYyYmYzZWQ1NWM1NzQ4YTBjYTViZGU0MThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNDIsNiArMzQyLDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICBydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCiAgICAg
cnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcAogICAgIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5j
cHAKKyAgICBydW50aW1lL0pTV2Vha01hcC5jcHAKICAgICBydW50aW1lL0pTV2l0aFNjb3BlLmNw
cAogICAgIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTGl0ZXJhbFBh
cnNlci5jcHAKQEAgLTM5Niw2ICszOTcsOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIHJ1bnRpbWUvVk0uY3BwCiAgICAgcnVudGltZS9XYXRjaGRvZy5jcHAKICAgICBydW50aW1l
L1dhdGNoZG9nTm9uZS5jcHAKKyAgICBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKKyAg
ICBydW50aW1lL1dlYWtNYXBEYXRhLmNwcAorICAgIHJ1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5j
cHAKIAogICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcAogICAgIHRvb2xzL0NvZGVQcm9maWxpbmcu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGIyZThm
MDQzN2Q0MjVhMDY4ZmU1N2FmNWZjNDQ5MjNjZWQ4OWIxODQuLjUzNTQ1NTdiOTkwOTUzY2QwMDMy
YzAwOGZiZmIxZjU2MmIwOGVkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC05MjEsNiArOTIxLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNVaW50MzJBcnJheS5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1VpbnQ4QXJyYXkuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNVaW50OENsYW1wZWRBcnJheS5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1dlYWtNYXAuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNX
aXRoU2NvcGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29w
ZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmggXApA
QCAtMTA3MCw2ICsxMDcyLDEyIEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dhdGNoZG9nTm9uZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtHQ01hcC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cERhdGEuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvQ29kZVByb2ZpbGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCmluZGV4IDIzZDY2MWE2ODFiNzZjOTQ2ZmU2MzRhNGJlYWM3YjgyYTcyYmE5MmQuLjVj
NWQyMDdhMDM3ZTlkM2VlN2E4YzQ1MzE3NGE0MTUyZDI2MWRkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNDkzLDYgKzQ5Myw3IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwIiAvPg0KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNUeXBlZEFycmF5cy5jcHAiIC8+DQog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1ZhcmlhYmxlT2JqZWN0LmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTV2Vha01hcC5jcHAiIC8+
DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1dpdGhTY29wZS5jcHAiIC8+
DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1dyYXBwZXJPYmplY3QuY3Bw
IiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTGl0ZXJhbFBhcnNlci5j
cHAiIC8+DQpAQCAtNTQ2LDYgKzU0Nyw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFZNLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFdh
dGNoZG9nLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFdhdGNo
ZG9nTm9uZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFr
TWFwQ29uc3RydWN0b3IuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcV2Vha01hcERhdGEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcV2Vha01hcFByb3RvdHlwZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
dG9vbHNcQ29kZVByb2ZpbGUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRv
b2xzXENvZGVQcm9maWxpbmcuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHlh
cnJcWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIiAvPg0KQEAgLTkzNCw2ICs5MzgsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1VpbnQ4QXJyYXkuaCIgLz4NCiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVWludDhDbGFtcGVkQXJyYXkuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVmFyaWFibGVPYmplY3QuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTV2Vha01hcC5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNXaXRoU2NvcGUuaCIgLz4NCiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTV3JhcHBlck9iamVjdC5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTGl0ZXJhbFBhcnNlci5oIiAvPg0K
QEAgLTEwMDksNiArMTAxNCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XFZNLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXYXRjaGRvZy5o
IiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha0dDTWFwLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFrTWFwQ29uc3RydWN0b3Iu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdlYWtNYXBEYXRhLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFrTWFwUHJvdG90eXBl
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFrUmFuZG9tLmgi
IC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXcml0ZUJhcnJpZXIuaCIg
Lz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0b29sc1xDb2RlUHJvZmlsZS5oIiAvPg0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRl
eCBlM2FmOThkMGZlNzYwOThkYmIwZmZjMWY1YjRkNTM3ODMzMGI5ZTY4Li40NzMzYWU2OTE4MjUw
Y2Y5ZWQ1NDJmOWZlNzM4YmJlM2U1MzA2MzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02MTIsNiArNjEyLDkgQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNXaXRoU2NvcGUuY3BwIj4NCiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1dlYWtNYXAuY3BwIj4NCisgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU1dyYXBwZXJPYmplY3QuY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQpAQCAtODU4LDYgKzg2MSwxNSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb21pc2UuY3BwIj4NCiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxXZWFrTWFwQ29uc3RydWN0b3IuY3BwIj4NCisgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxXZWFrTWFwRGF0YS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXFdlYWtNYXBQcm90b3R5cGUuY3BwIj4NCisgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caGVhcFxDb2RlQmxvY2tTZXQuY3BwIj4NCiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4N
CiAgICAgPC9DbENvbXBpbGU+DQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYTI2
ZWMyZTQyM2YxOTY3ZDgzNmVlYjUyMmUwZGM5NTliMzY0OGFlLi5mZDcwYzM4YjA3YWJiZjI4NzQ3
MThjNDc3ZGJjZTJhOWRlZWY3YzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTM5LDYgKzkzOSwxNCBAQAogCQlBN0MxRUFGMDE3OTg3QUI2MDAyOTlEQjIgLyogSlNTdGFja0lu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
QzFFQUVCMTc5ODdBQjYwMDI5OURCMiAvKiBKU1N0YWNrSW5saW5lcy5oICovOyB9OwogCQlBN0Mx
RUFGMTE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QzFFQUVDMTc5ODdBQjYwMDI5OURCMiAv
KiBTdGFja1Zpc2l0b3IuY3BwICovOyB9OwogCQlBN0MxRUFGMjE3OTg3QUI2MDAyOTlEQjIgLyog
U3RhY2tWaXNpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0MxRUFFRDE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdDQTNBRTMxN0RBNDFB
RTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FERDE3REE0MUFFMDA2NTM4QUYgLyogV2Vh
a01hcENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8q
IFdlYWtNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdDQTNBREUxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rv
ci5oICovOyB9OworCQlBN0NBM0FFNTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NB
M0FERjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5jcHAgKi87IH07CisJCUE3
Q0EzQUU2MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMDE3REE0MUFFMDA2NTM4
QUYgLyogV2Vha01hcFByb3RvdHlwZS5oICovOyB9OworCQlBN0NBM0FFNzE3REE0MUFFMDA2NTM4
QUYgLyogSlNXZWFrTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3Q0EzQUUxMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuY3BwICovOyB9
OworCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2NTM4
QUYgLyogSlNXZWFrTWFwLmggKi87IH07CisJCUE3Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovOyB9Owor
CQlBN0NBM0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhB
RiAvKiBXZWFrTWFwRGF0YS5oICovOyB9OwogCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyog
REZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi87
IH07CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNF
NDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQlB
N0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U1MTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTQ3LDYgKzIxNTUsMTQgQEAKIAkJQTdDMUVB
RUQxNzk4N0FCNjAwMjk5REIyIC8qIFN0YWNrVmlzaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdGFja1Zpc2l0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTdDMjI1Q0MxMzk5ODFGMTAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBLZXl3b3JkTG9va3VwR2VuZXJh
dG9yLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0MyMjVDRDEzOTk4NDlDMDBG
RjE2NjIgLyogS2V5d29yZExvb2t1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBLZXl3b3JkTG9va3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Q0EzQURE
MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDQTNBREUxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBD
b25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFwQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDQTNBREYxN0RBNDFB
RTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2Vha01hcFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3Q0EzQUUwMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDQTNBRTExN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYWtN
YXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FFMjE3REE0MUFFMDA2
NTM4QUYgLyogSlNXZWFrTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2Vha01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FFOTE3REE1MTY4
MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2Vha01hcERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmFzaWNCbG9jay5jcHA7IHBhdGgg
PSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5jcHA7
IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25T
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25T
ZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzM4MCw2ICszMzk2LDE0IEBACiAJCQkJMTRCRkNFNjgxMENEQjFGQzAw
MzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJCTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAv
KiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oICovLAorCQkJCUE3Q0EzQUREMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29u
c3RydWN0b3IuY3BwICovLAorCQkJCUE3Q0EzQURFMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFw
Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBN0NBM0FERjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01h
cFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTdDQTNBRTAxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtN
YXBQcm90b3R5cGUuaCAqLywKKwkJCQlBN0NBM0FFMTE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFr
TWFwLmNwcCAqLywKKwkJCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmgg
Ki8sCisJCQkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLywK
KwkJCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zOTky
LDYgKzQwMTYsNyBAQAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NS
RXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAv
KiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0NBM0FF
QzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJD
b21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUZDOUFCMTY4MUEzQjYwMDU2N0Y1MyAvKiBE
RkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQyMTIsNiArNDIz
Nyw3IEBACiAJCQkJMTQ4NzRBRTYxNUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3QzBDNEFDMTY4MTAzMDIwMDE3MDExRCAvKiBKU1NjcmlwdFJlZlByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDExMTU3RjMzMkMwMDRBNEU3RCAvKiBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0NBM0FFODE3REE0
MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OUQ5RTE3
RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDVFMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3
OTg3QUI2MDAyOTlEQjIgLyogSlNTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDMz
Nyw2ICs0MzYzLDcgQEAKIAkJCQkwRkY3MjlCQTE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJD
b21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkIxNjZBRDM2MDAwMEY1QkEz
IC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMy
NjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE3Q0EzQUU0MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJDMTY2QUQzNjAwMDBGNUJBMyAvKiBQ
cm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUJEMTY2
QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkY3MjlCRTE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ0MDIsNiArNDQyOSw3IEBACiAJCQkJQkMxOEM0NkEwRTE2RjVDRDAw
QjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0Ix
MzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ1NzIyODYx
NDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
Q0EzQUU2MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRDJDOTI0MTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5ODYsNiArNTAxNCw3IEBACiAJCQkJMTQ3RjM5
Q0MxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUMyRDU4QzM0MTU5MTJGRUUwMDIxQTg0NCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMkYxNUE4RENFMDAwOEYzNjNFIC8qIEdDQXdhcmVK
SVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0NBM0FFQjE3REE1MTY4MDA2
NTM4QUYgLyogV2Vha01hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzIyMzlEMUExNjI2
MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyMTEyMkUx
MTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY5MzMyOUYxNENBN0RDQTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC01MTI3LDYgKzUxNTYsNyBAQAogCQkJCTE0NDY5REUyMTA3RUM3RTcwMDY1
MDQ0NiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURF
MzEwN0VDN0U3MDA2NTA0NDYgLyogTnVtYmVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0NDY5REU0MTA3RUM3RTcwMDY1MDQ0NiAvKiBOdW1iZXJQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTdDQTNBRTMxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkYzRUVCRTE2OENERTkzMDA3N0I5MkEgLyogT2Jq
Q0NhbGxiYWNrRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNTEwN0VDN0U3
MDA2NTA0NDYgLyogT2JqZWN0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0
NjlERTYxMDdFQzdFNzAwNjUwNDQ2IC8qIE9iamVjdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTUxNjAsOSArNTE5MCwxMSBAQAogCQkJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAv
KiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzRDMzNDMTZBQTJEOUIw
MDYyRjAxRCAvKiBQcm90b3R5cGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MzMyQTMx
NENBN0RENzAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTdDQTNBRTUxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZGNjBBQzMxNjc0MEY4ODAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDExMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVn
RXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdDQTNBRTcxN0RBNDFBRTAwNjUzOEFG
IC8qIEpTV2Vha01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMDE1MUMwNkE5MDA0
NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDhB
MzJCMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQyMTA3RUMwOTMwMDEz
RTdCMiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkKaW5kZXggMWVjNWM3OWE3MTI0MzgxOTMyMmQzYTVmYjdhYzcwMGZkNGViMzhj
Ni4uMmZiZjdmYTZhZjZjZTU1ZWJkY2QyMmIxN2I1MTNhYzFhYzlmNjM3YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkKQEAgLTM1MCw2ICszNTAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50
aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwIFwKICAgICBydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwIFwKICAgICBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwIFwKKyAgICBydW50aW1l
L0pTV2Vha01hcC5jcHAgXAogICAgIHJ1bnRpbWUvSlNXaXRoU2NvcGUuY3BwIFwKICAgICBydW50
aW1lL0pTV3JhcHBlck9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAg
XApAQCAtNDA0LDYgKzQwNSw5IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvVk0uY3BwIFwK
ICAgICBydW50aW1lL1dhdGNoZG9nLmNwcCBcCiAgICAgcnVudGltZS9XYXRjaGRvZ05vbmUuY3Bw
IFwKKyAgICBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvV2Vh
a01hcERhdGEuY3BwIFwKKyAgICBydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwIFwKICAgICB0
b29scy9Db2RlUHJvZmlsZS5jcHAgXAogICAgIHRvb2xzL0NvZGVQcm9maWxpbmcuY3BwIFwKICAg
ICB5YXJyL1lhcnJKSVQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDY0ODBmMGY3ZTI4NjkwMmVhM2EyOTk4YzYxNDEy
NGYyNWNlMzdkYzUuLjU0MjJjN2E0ZjhiODBlNjQzMjJjMTM5NDhlZGFkMjA3MWNlMDQ2NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aApAQCAtMTQzLDYgKzE0Myw3IEBACiAgICAgbWFjcm8oc2l6ZSkgXAogICAgIG1hY3JvKE1hcClc
CiAgICAgbWFjcm8oU2V0KVwKKyAgICBtYWNybyhXZWFrTWFwKVwKICAgICBtYWNybyhhZGQpCiAK
ICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAwNWZlODU3NGQyNjFiYjY0ZTYzMzM1MDdhZGRlNWQ4ODY0ZGJhZjkwLi4zNzFkM2U3ODgzMGJh
YjdiOGUwYjUwZjk2ZjZiMWVjMGQyODE3ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVk
ZSAiSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJv
dG90eXBlcy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKKyNpbmNsdWRlICJKU1dlYWtN
YXAuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVByb2ZpbGVy
LmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC05OSw2ICsxMDAsOSBAQAogI2luY2x1ZGUgIlN0
cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJXZWFrTWFwQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgorI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUu
aCIKIAogI2lmIEVOQUJMRShQUk9NSVNFUykKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKQEAgLTMw
OSw2ICszMTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlw
ZSkKIAogCiAgICAgbV9tYXBEYXRhU3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBE
YXRhOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywganNOdWxsKCkpKTsKKyAgICBt
X3dlYWtNYXBEYXRhU3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlzLCBXZWFrTWFwRGF0YTo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIGpzTnVsbCgpKSk7CiAKICNkZWZpbmUg
Q1JFQVRFX1BST1RPVFlQRV9GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwg
cHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKICAgICBtXyAjIyBsb3dlck5hbWUg
IyMgUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBjYXBpdGFsTmFtZSMjUHJvdG90eXBl
OjpjcmVhdGUoZXhlYywgdGhpcywgY2FwaXRhbE5hbWUjI1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOyBcCkBAIC02
NDAsNiArNjQ1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogI3VuZGVmIFZJU0lUX1NJTVBMRV9UWVBFCiAK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tYXBEYXRhU3RydWN0dXJlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93ZWFrTWFwRGF0YVN0cnVjdHVyZSk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBOVU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM7IGktLTsp
IHsKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZWRBcnJheXNbaV0u
cHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IGRhNjE4OTRjNjY2MjFiN2VjNzRkZjg3OGI0NmNmMGMzODJmMTNlMzEuLjgy
ZmYyOWNhNzVjYzM2ZjJkNWI2ZTdjYzE4NDVlYTcyNjkzZGUzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtODAsNiArODAsNyBAQCBz
dHJ1Y3QgSGFzaFRhYmxlOwogICAgIG1hY3JvKE51bWJlciwgbnVtYmVyLCBudW1iZXJPYmplY3Qs
IE51bWJlck9iamVjdCwgTnVtYmVyKSBcCiAgICAgbWFjcm8oRXJyb3IsIGVycm9yLCBlcnJvciwg
RXJyb3JJbnN0YW5jZSwgRXJyb3IpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyLCBhcnJheUJ1
ZmZlciwgYXJyYXlCdWZmZXIsIEpTQXJyYXlCdWZmZXIsIEFycmF5QnVmZmVyKSBcCisgICAgbWFj
cm8oV2Vha01hcCwgd2Vha01hcCwgd2Vha01hcCwgSlNXZWFrTWFwLCBXZWFrTWFwKSBcCiAKICNk
ZWZpbmUgREVDTEFSRV9TSU1QTEVfQlVJTFRJTl9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUs
IHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgY2xhc3MgSlMgIyMgY2Fw
aXRhbE5hbWU7IFwKQEAgLTIwMCw2ICsyMDEsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYgLy8gRU5B
QkxFKFBST01JU0VTKQogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tYXBEYXRhU3Ry
dWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2Vha01hcERhdGFTdHJ1Y3R1
cmU7CiAKICNkZWZpbmUgREVGSU5FX1NUT1JBR0VfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1l
LCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgV3Jp
dGVCYXJyaWVyPGNhcGl0YWxOYW1lICMjIFByb3RvdHlwZT4gbV8gIyMgbG93ZXJOYW1lICMjIFBy
b3RvdHlwZTsgXApAQCAtMzk4LDYgKzQwMCw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGlu
dGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBEYXRh
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBEYXRhU3RydWN0dXJlLmdldCgpOyB9Cisg
ICAgU3RydWN0dXJlKiB3ZWFrTWFwRGF0YVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vh
a01hcERhdGFTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNB
cnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNmI3OTBiMGZl
NThkMjI2YWIxMDE2M2FhZTU2ZTFjNGRhMzY0OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJKU1dlYWtNYXAuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiV2Vh
a01hcERhdGEuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1dlYWtN
YXA6OnNfaW5mbyA9IHsgIldlYWtNYXAiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTV2Vha01hcCkgfTsKKwordm9pZCBKU1dlYWtNYXA6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgbV93ZWFrTWFwRGF0YS5zZXQodm0sIHRoaXMsIFdlYWtNYXBE
YXRhOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTV2Vha01hcDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisgICAgSlNXZWFrTWFwKiB0aGlzT2Jq
ID0ganNDYXN0PEpTV2Vha01hcCo+KGNlbGwpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
LT5tX3dlYWtNYXBEYXRhKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNXZWFrTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1dlYWtNYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTlmZWVmM2M0ZGNmNmUxOGRkZmI0NGQ5OGY1MWI5MDE4
MzE4ZTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNXZWFrTWFwLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU1dlYWtNYXBfaAorI2RlZmluZSBKU1dlYWtN
YXBfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IFdlYWtNYXBEYXRhOworCitjbGFzcyBKU1dlYWtNYXAgOiBwdWJsaWMgSlNPYmplY3QgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNPYmplY3QgQmFzZTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgSlNXZWFrTWFwKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAg
IEpTV2Vha01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYWtN
YXA+KHZtLmhlYXApKSBKU1dlYWtNYXAodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAg
IHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKKyAgICBXZWFrTWFwRGF0YSogd2Vha01hcERhdGEo
KSB7IHJldHVybiBtX3dlYWtNYXBEYXRhLmdldCgpOyB9CisKKyAgICBKU1ZhbHVlIGdldChDYWxs
RnJhbWUqLCBKU09iamVjdCopOworICAgIGJvb2wgaGFzKENhbGxGcmFtZSosIEpTT2JqZWN0Kik7
CisgICAgYm9vbCByZW1vdmUoQ2FsbEZyYW1lKiwgSlNPYmplY3QqKTsKKworICAgIHZvaWQgc2V0
KENhbGxGcmFtZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSk7CisgICAgdm9pZCBjbGVhcihDYWxsRnJh
bWUqKTsKKworcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
ICAgIEpTV2Vha01hcChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPFdlYWtNYXBEYXRhPiBt
X3dlYWtNYXBEYXRhOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoSlNXZWFrTWFwX2gp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVj
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMWMzOTNkNzI5MDk0YTBhNjNhZDFiOGYyMTQ4NjM0MGE5Zjdi
NzZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2Vha01hcENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTV2Vha01hcC5oIgorI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBXZWFrTWFwQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShXZWFrTWFwQ29uc3RydWN0b3IpIH07CisKK3ZvaWQgV2Vha01hcENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFdlYWtNYXBQcm90b3R5cGUqIHByb3Rv
dHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT52bSgpLCBwcm90b3R5cGUt
PmNsYXNzSW5mbygpLT5jbGFzc05hbWUpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVt
YmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXBDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFz
SW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT53ZWFrTWFwU3RydWN0dXJlKCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1dlYWtNYXA6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1
cmUpKTsKK30KKworQ29uc3RydWN0VHlwZSBXZWFrTWFwQ29uc3RydWN0b3I6OmdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25z
dHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFdlYWtNYXBDb25zdHJ1Y3RvcjsK
KyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIFdlYWtNYXBDb25z
dHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKQoreworICAgIHJldHVybiBD
YWxsVHlwZU5vbmU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha01hcENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM0ODVlZmFhZDBhNjU4YjI1N2Ey
NjhhZGNkZTAxMDliMjAwODM2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV2Vha01h
cENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgV2Vha01hcENvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYWtNYXBQ
cm90b3R5cGU7CisKK2NsYXNzIFdlYWtNYXBDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKwor
ICAgIHN0YXRpYyBXZWFrTWFwQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWFrTWFw
UHJvdG90eXBlKiBwcm90b3R5cGUpCisgICAgeworICAgICAgICBXZWFrTWFwQ29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2Vha01hcENvbnN0cnVj
dG9yPigqZXhlYy0+aGVhcCgpKSkgV2Vha01hcENvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHByb3Rv
dHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgV2Vha01hcENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2UoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSosIFdlYWtNYXBQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30KKworI2VuZGlm
IC8vICFkZWZpbmVkKFdlYWtNYXBDb25zdHJ1Y3Rvcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcERhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhOWZlZjZjNzYyNjQ1N2Ux
NmY0YmMyMGZhMTgxNTg5YTIzNzhkNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKKwor
I2luY2x1ZGUgIkNvcGllZEFsbG9jYXRvci5oIgorI2luY2x1ZGUgIkNvcHlWaXNpdG9ySW5saW5l
cy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorCisjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KKworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IFdlYWtNYXBEYXRhOjpzX2luZm8gPSB7ICJXZWFrTWFwRGF0YSIsICZCYXNlOjpzX2luZm8sIDAs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2Vha01hcERhdGEpIH07CisKK1dlYWtNYXBEYXRhOjpX
ZWFrTWFwRGF0YShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBC
YXNlKHZtLCBnbG9iYWxPYmplY3QtPndlYWtNYXBEYXRhU3RydWN0dXJlKCkpCisgICAgLCBtX2dj
Q2xlYW5lcih0aGlzKQoreworfQorCit2b2lkIFdlYWtNYXBEYXRhOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCit2b2lkIFdlYWtN
YXBEYXRhOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxXZWFrTWFw
RGF0YSo+KGNlbGwpLT5+V2Vha01hcERhdGEoKTsKK30KKwordm9pZCBXZWFrTWFwRGF0YTo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisgICAgV2Vha01hcERhdGEqIHRoaXNP
YmogPSBqc0Nhc3Q8V2Vha01hcERhdGEqPihjZWxsKTsKKyAgICB2aXNpdG9yLmFkZFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXIoJnRoaXNPYmotPm1fZ2NDbGVhbmVyKTsKKyAgICB2aXNpdG9yLmFkZFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoJnRoaXNPYmotPm1fZ2NDbGVhbmVyKTsKKworICAgIC8vIFJv
dWdoIGFwcHJveGltYXRpb24gb2YgdGhlIGV4dGVybmFsIHN0b3JhZ2UgbmVlZGVkIGZvciB0aGUg
aGFzaHRhYmxlLgorICAgIC8vIFRoaXMgc2luJ3QgZXhhY3QsIGJ1dCBpdCBpcyBjbG9zZSBlbm91
Z2gsIGFuZCBwcm9wb3J0aW9uYWwgdG8gdGhlIGFjdHVhbAorICAgIC8vIGV4dGVybmFsIG1lcm1v
cnkgdXNhZ2UuCisgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVVzYWdlKHRoaXNPYmotPm1f
bWFwLmNhcGFjaXR5KCkgKiAoc2l6ZW9mKEpTT2JqZWN0KikgKyBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSkpOworfQorCit2b2lkIFdlYWtNYXBEYXRhOjpzZXQoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTT2JqZWN0KiBrZXksIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byBpdGVyID0g
bV9tYXAuZmluZChrZXkpOworICAgIGlmIChpdGVyICE9IG1fbWFwLmVuZCgpKSB7CisgICAgICAg
IGl0ZXItPnZhbHVlLnNldChjYWxsRnJhbWUtPnZtKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAvLyBIZXJlIHdlIGZvcmNlIHRoZSB3cml0ZSBiYXJyaWVyIG9u
IHRoZSBrZXkuCisgICAgbV9tYXAuYWRkKFdyaXRlQmFycmllcjxKU09iamVjdD4oY2FsbEZyYW1l
LT52bSgpLCB0aGlzLCBrZXkpLmdldCgpLCBXcml0ZUJhcnJpZXI8VW5rbm93bj4oY2FsbEZyYW1l
LT52bSgpLCB0aGlzLCB2YWx1ZSkpOworfQorCitKU1ZhbHVlIFdlYWtNYXBEYXRhOjpnZXQoSlNP
YmplY3QqIGtleSkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CisgICAgaWYg
KGl0ZXIgPT0gbV9tYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IHJldHVybiBpdGVyLT52YWx1ZS5nZXQoKTsKK30KKworYm9vbCBXZWFrTWFwRGF0YTo6cmVtb3Zl
KEpTT2JqZWN0KiBrZXkpCit7CisgICAgYXV0byBpdGVyID0gbV9tYXAuZmluZChrZXkpOworICAg
IGlmIChpdGVyID09IG1fbWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBt
X21hcC5yZW1vdmUoaXRlcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2Vha01hcERh
dGE6OmNvbnRhaW5zKEpTT2JqZWN0KiBrZXkpCit7CisgICAgcmV0dXJuIG1fbWFwLmNvbnRhaW5z
KGtleSk7Cit9CisKK3ZvaWQgV2Vha01hcERhdGE6OmNsZWFyKCkKK3sKKyAgICBtX21hcC5jbGVh
cigpOworfQorCit2b2lkIFdlYWtNYXBEYXRhOjpEZWFkS2V5Q2xlYW5lcjo6dmlzaXRXZWFrUmVm
ZXJlbmNlcyhTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX2xpdmVLZXlDb3VudCA9IDA7
CisgICAgZm9yIChhdXRvIHB0ciA9IG1fdGFyZ2V0LT5tX21hcC5iZWdpbigpLCBlbmQgPSBtX3Rh
cmdldC0+bV9tYXAuZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgIGlmICghSGVh
cDo6aXNNYXJrZWQocHRyLT5rZXkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG1f
bGl2ZUtleUNvdW50Kys7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZwdHItPnZhbHVlKTsKKyAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlQobV9saXZlS2V5Q291bnQgPD0gbV90YXJnZXQtPm1fbWFw
LnNpemUoKSk7Cit9CisKK3ZvaWQgV2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseSgpCit7CisgICAgaWYgKG1fbGl2ZUtleUNvdW50ID4gbV90YXJnZXQt
Pm1fbWFwLnNpemUoKSAvIDIpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9saXZlS2V5Q291
bnQgPD0gbV90YXJnZXQtPm1fbWFwLnNpemUoKSk7CisgICAgICAgIGludCBkZWFkQ291bnQgPSBt
X3RhcmdldC0+bV9tYXAuc2l6ZSgpIC0gbV9saXZlS2V5Q291bnQ7CisgICAgICAgIGlmICghZGVh
ZENvdW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBWZWN0b3I8SlNPYmplY3QqPiBk
ZWFkRW50cmllczsKKyAgICAgICAgZGVhZEVudHJpZXMucmVzZXJ2ZUNhcGFjaXR5KGRlYWRDb3Vu
dCk7CisgICAgICAgIGZvciAoYXV0byBwdHIgPSBtX3RhcmdldC0+bV9tYXAuYmVnaW4oKSwgZW5k
ID0gbV90YXJnZXQtPm1fbWFwLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0cikgeworICAgICAgICAg
ICAgaWYgKEhlYXA6OmlzTWFya2VkKHB0ci0+a2V5KSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIGRlYWRFbnRyaWVzLnVuY2hlY2tlZEFwcGVuZChwdHItPmtleSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZWFkRW50cmllcy5zaXpl
KCk7IGkrKykKKyAgICAgICAgICAgIG1fdGFyZ2V0LT5tX21hcC5yZW1vdmUoZGVhZEVudHJpZXNb
aV0pOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hcFR5cGUgbmV3TWFwOworICAgICAgICBmb3Ig
KGF1dG8gcHRyID0gbV90YXJnZXQtPm1fbWFwLmJlZ2luKCksIGVuZCA9IG1fdGFyZ2V0LT5tX21h
cC5lbmQoKTsgcHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAgICAgIGlmICghSGVhcDo6aXNN
YXJrZWQocHRyLT5rZXkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
bmV3TWFwLmFkZChwdHItPmtleSwgcHRyLT52YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgbV90
YXJnZXQtPm1fbWFwLnN3YXAobmV3TWFwKTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExODhjMjQ3ZDUzYTU5
MWI4NjA4MTJmYjZiOGZlNWM1OGEwMzg5MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYWtNYXBEYXRhX2gKKyNkZWZpbmUgV2Vha01hcERhdGFfaAorCisj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYWtJbXBsOworY2xhc3MgV2Vha01hcERhdGE7
CisKK2NsYXNzIFdlYWtNYXBEYXRhIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0
aWMgV2Vha01hcERhdGEqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCisgICAgeworICAgICAgICBXZWFrTWFwRGF0YSogd2Vha01hcERhdGEgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxXZWFrTWFwRGF0YT4odm0uaGVhcCkpIFdlYWtNYXBEYXRhKHZtLCBn
bG9iYWxPYmplY3QpOworICAgICAgICB3ZWFrTWFwRGF0YS0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgICAgICByZXR1cm4gd2Vha01hcERhdGE7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgdm9pZCBzZXQoQ2FsbEZyYW1lKiwg
SlNPYmplY3QqLCBKU1ZhbHVlKTsKKyAgICBKU1ZhbHVlIGdldChKU09iamVjdCopOworICAgIGJv
b2wgcmVtb3ZlKEpTT2JqZWN0Kik7CisgICAgdm9pZCByZW1vdmVEZWFkKEpTT2JqZWN0Kik7Cisg
ICAgYm9vbCBjb250YWlucyhKU09iamVjdCopOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIERF
Q0xBUkVfSU5GTzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6
CisgICAgV2Vha01hcERhdGEoVk0mLCBKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIGNs
YXNzIERlYWRLZXlDbGVhbmVyIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1Ymxp
YyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlYWRLZXlD
bGVhbmVyKFdlYWtNYXBEYXRhKiB0YXJnZXQpCisgICAgICAgICAgICA6IG1fdGFyZ2V0KHRhcmdl
dCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCB2
b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CisgICAgICAgIGludCBtX2xpdmVLZXlDb3Vu
dDsKKyAgICAgICAgV2Vha01hcERhdGEqIG1fdGFyZ2V0OworICAgIH07CisgICAgRGVhZEtleUNs
ZWFuZXIgbV9nY0NsZWFuZXI7CisgICAgdHlwZWRlZiBIYXNoTWFwPEpTT2JqZWN0KiwgV3JpdGVC
YXJyaWVyPFVua25vd24+PiBNYXBUeXBlOworICAgIE1hcFR5cGUgbV9tYXA7Cit9OworCit9CisK
KyNlbmRpZiAvKiAhZGVmaW5lZChXZWFrTWFwRGF0YV9oKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjJm
ZmEzNmJhMmRiNWZjNDJhNTAwODk4YTE1MDMxMGRlZDNmN2ZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAKQEAgLTAs
MCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWFrTWFwUHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTV2Vha01hcC5oIgor
I2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gV2Vha01hcFByb3RvdHlwZTo6c19pbmZvID0geyAiV2Vha01hcCIsICZCYXNlOjpzX2lu
Zm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2Vha01hcFByb3RvdHlwZSkgfTsKKworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcENsZWFyKEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5j
V2Vha01hcERlbGV0ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHByb3RvRnVuY1dlYWtNYXBHZXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwSGFzKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcFNldChFeGVj
U3RhdGUqKTsKKwordm9pZCBXZWFrTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQo
aW5oZXJpdHMoaW5mbygpKSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlz
KTsKKworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVydHlOYW1lcygpLmNsZWFy
LCBwcm90b0Z1bmNXZWFrTWFwQ2xlYXIsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWxldGVLZXl3b3JkLCBwcm90b0Z1bmNXZWFr
TWFwRGVsZXRlLCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTihleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZ2V0LCBwcm90b0Z1bmNXZWFrTWFwR2V0LCBEb250RW51bSwgMSk7Cisg
ICAgSlNDX05BVElWRV9GVU5DVElPTihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFzLCBwcm90b0Z1
bmNXZWFrTWFwSGFzLCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTihleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuc2V0LCBwcm90b0Z1bmNXZWFrTWFwU2V0LCBEb250RW51bSwgMik7
Cit9CisKK3N0YXRpYyBXZWFrTWFwRGF0YSogZ2V0V2Vha01hcERhdGEoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxl
ZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIGlmIChKU1dlYWtNYXAqIHdlYWtNYXAgPSBqc0R5bmFtaWNDYXN0PEpTV2Vh
a01hcCo+KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHdlYWtNYXAtPndlYWtNYXBEYXRhKCk7CisK
KyAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQg
V2Vha01hcCBmdW5jdGlvbiBvbiBhIG5vbi1XZWFrTWFwIG9iamVjdCIpKTsKKyAgICByZXR1cm4g
MDsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwQ2xl
YXIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgV2Vha01hcERhdGEqIG1hcCA9IGdldFdl
YWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFt
YXApCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
bWFwLT5jbGVhcigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcERlbGV0
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBXZWFrTWFwRGF0YSogbWFwID0gZ2V0V2Vh
a01hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW1h
cCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBK
U1ZhbHVlIGtleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFrZXkuaXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIFdURjo6QVNDSUlMaXRlcmFsKCJBIFdlYWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2Jq
ZWN0IGtleSIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4obWFwLT5y
ZW1vdmUoYXNPYmplY3Qoa2V5KSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwcm90b0Z1bmNXZWFrTWFwR2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFdlYWtN
YXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghbWFwKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
KyAgICBpZiAoIWtleS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkEgV2Vha01hcCBj
YW5ub3QgaGF2ZSBhIG5vbi1vYmplY3Qga2V5IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG1hcC0+Z2V0KGFzT2JqZWN0KGtleSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwSGFzKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghbWFwKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKKyAgICBpZiAoIWtleS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkEgV2Vh
a01hcCBjYW5ub3QgaGF2ZSBhIG5vbi1vYmplY3Qga2V5IikpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihtYXAtPmNvbnRhaW5zKGFzT2JqZWN0KGtleSkpKSk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01hcFNldChDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBXZWFrTWFwRGF0YSogbWFwID0gZ2V0V2Vha01hcERhdGEo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW1hcCkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBKU1ZhbHVlIGtl
eSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKCFrZXkuaXNPYmplY3QoKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdU
Rjo6QVNDSUlMaXRlcmFsKCJBdHRlbXB0ZWQgdG8gc2V0IGEgbm9uLW9iamVjdCBrZXkgaW4gYSBX
ZWFrTWFwIikpKTsKKyAgICBtYXAtPnNldChjYWxsRnJhbWUsIGFzT2JqZWN0KGtleSksIGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODVlNDllOTM2YmM0OGMxNWZkMWQy
NDAxYTc4MjAzYTRhNDU2MDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV2Vha01hcFBy
b3RvdHlwZV9oCisjZGVmaW5lIFdlYWtNYXBQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYWtNYXBQcm90b3R5cGUgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgV2Vha01hcFByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBXZWFrTWFwUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrTWFwUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgV2Vh
a01hcFByb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlz
aENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7
CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYWtNYXBQcm90b3R5cGUo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKGV4
ZWMtPnZtKCksIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30KKworI2VuZGlmIC8vICFk
ZWZpbmVkKFdlYWtNYXBQcm90b3R5cGVfaCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211234</attachid>
            <date>2013-09-10 13:40:14 -0700</date>
            <delta_ts>2013-09-10 13:58:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120912-20130910134013.patch</filename>
            <type>text/plain</type>
            <size>59824</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZmZlZGUxNTU5NGViZDIxZDFiMzhiZTFiYTRkNjc2Zjk0ZDZkN2JlLi4zYzE2NGE1ZTc4MmVjYWMw
ZTlhMzc1ZDliNjQ4NTU3ODZjNjJhNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAxMy0wOS0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgV2Vha01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIwOTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEVTNiBXZWFrTWFwLiAgQWRkIHRoZSBj
bHVzdGVyIG9mIGJvaWxlcnBsYXRlCisgICAgICAgIGNsYXNzZXMgYXJvdW5kIHRoZSBjb3JlIFdl
YWtNYXBEYXRhIGNsYXNzLgorCisgICAgICAgIFdlYWtNYXBEYXRhIGlzIGEgc2ltcGxlIG9iamVj
dC0+dmFsdWUgaGFzaCB0YWJsZSB0aGF0IHVzZXMgYQorICAgICAgICBjb21ibyBvZiBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyIHRvIGNvbmRpdGlvbmFsbHkga2VlcCB0aGUgd2VhaworICAgICAgICB2
YWx1ZSByZWZlcmVuY2UgbGl2ZSwgYW5kIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIgdG8gY2xlYW4g
dGhlCisgICAgICAgIGRlYWQga2V5cyBmcm9tIHRoZSB0YWJsZSBwb3N0LUdDLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OndlYWtNYXBEYXRhU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTV2Vha01hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1dlYWtN
YXA6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWFrTWFwOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTV2Vha01hcC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SlNXZWFrTWFwOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1dlYWtNYXA6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2Vha01hcDo6d2Vha01hcERhdGEpOgorICAgICAg
ICAoSlNDOjpKU1dlYWtNYXA6OkpTV2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFw
Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdlYWtNYXBDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSk6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAg
ICAgICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpXZWFrTWFwQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYWtNYXBDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVj
dG9yOjpXZWFrTWFwQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2Vha01hcERhdGE6OldlYWtNYXBEYXRhKToKKyAg
ICAgICAgKEpTQzo6V2Vha01hcERhdGE6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
V2Vha01hcERhdGE6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpXZWFrTWFwRGF0YTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpzZXQpOgorICAgICAgICAoSlND
OjpXZWFrTWFwRGF0YTo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2Vha01hcERhdGE6OnJlbW92ZSk6
CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpjb250YWlucyk6CisgICAgICAgIChKU0M6Oldl
YWtNYXBEYXRhOjpjbGVhcik6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpEZWFkS2V5Q2xl
YW5lcjo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpE
ZWFkS2V5Q2xlYW5lcjo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIHJ1bnRp
bWUvV2Vha01hcERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpXZWFrTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6V2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjpEZWFkS2V5Q2xlYW5lcik6Cisg
ICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OldlYWtNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Z2V0
V2Vha01hcERhdGEpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwQ2xlYXIpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKToKKyAgICAgICAgKEpTQzo6cHJvdG9G
dW5jV2Vha01hcEdldCk6CisgICAgICAgIChKU0M6OnByb3RvRnVuY1dlYWtNYXBIYXMpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYWtNYXBQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OldlYWtNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OldlYWtNYXBQcm90b3R5cGU6OldlYWtNYXBQcm90b3R5cGUpOgorCiAy
MDEzLTA5LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAganNj
IGNvbW1hbmRsaW5lJ3MgcnVuKCkgZnVuY3Rpb24gc2hvdWxkIHRha2UgZXh0cmEgYXJndW1lbnRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTZmNTUwZmM3YzJhNmRhZmQx
NDc5NTNmNWJiNDE3MGUxZjBjOWQwNS4uZjAyMGMzZjc2OWFmMGFmMmJmM2VkNTVjNTc0OGEwY2E1
YmRlNDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzQyLDYgKzM0
Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU1R5cGVkQXJy
YXlQcm90b3R5cGVzLmNwcAogICAgIHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKICAgICBydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1dlYWtNYXAuY3BwCiAgICAg
cnVudGltZS9KU1dpdGhTY29wZS5jcHAKICAgICBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAK
ICAgICBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC0zOTYsNiArMzk3LDkgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1ZNLmNwcAogICAgIHJ1bnRpbWUvV2F0
Y2hkb2cuY3BwCiAgICAgcnVudGltZS9XYXRjaGRvZ05vbmUuY3BwCisgICAgcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9XZWFrTWFwRGF0YS5jcHAKKyAgICBydW50
aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCiAKICAgICB0b29scy9Db2RlUHJvZmlsZS5jcHAKICAg
ICB0b29scy9Db2RlUHJvZmlsaW5nLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCBiMmU4ZjA0MzdkNDI1YTA2OGZlNTdhZjVmYzQ0OTIzY2VkODliMTg0
Li41MzU0NTU3Yjk5MDk1M2NkMDAzMmMwMDhmYmZiMWY1NjJiMDhlZDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTIxLDYgKzkyMSw4IEBAIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VWludDMyQXJyYXkuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNVaW50OEFy
cmF5LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVWludDhDbGFtcGVkQXJy
YXkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmNwcCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTV2l0aFNjb3BlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU05hbWVTY29wZS5oIFwKQEAgLTEwNzAsNiArMTA3MiwxMiBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZ05vbmUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcERhdGEuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha01hcFByb3RvdHlwZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBQcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1Jh
bmRvbS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxlLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCAyM2Q2NjFhNjgxYjc2Yzk0NmZlNjM0
YTRiZWFjN2I4MmE3MmJhOTJkLi41YzVkMjA3YTAzN2U5ZDNlZTdhOGM0NTMxNzRhNDE1MmQyNjFk
ZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTQ5Myw2ICs0
OTMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1R5cGVkQXJyYXlQ
cm90b3R5cGVzLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
VHlwZWRBcnJheXMuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNWYXJpYWJsZU9iamVjdC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU1dlYWtNYXAuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNXaXRoU2NvcGUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNXcmFwcGVyT2JqZWN0LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXExpdGVyYWxQYXJzZXIuY3BwIiAvPg0KQEAgLTU0Niw2ICs1NDcsOSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxXYXRjaGRvZy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxXYXRjaGRvZ05vbmUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha01hcENvbnN0cnVjdG9yLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFdlYWtNYXBEYXRhLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFdlYWtNYXBQcm90b3R5cGUuY3BwIiAvPg0KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRvb2xzXENvZGVQcm9maWxlLmNwcCIgLz4NCiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx0b29sc1xDb2RlUHJvZmlsaW5nLmNwcCIgLz4NCiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx5YXJyXFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCIgLz4NCkBA
IC05MzQsNiArOTM4LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNV
aW50OEFycmF5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Vp
bnQ4Q2xhbXBlZEFycmF5LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU1ZhcmlhYmxlT2JqZWN0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU1dlYWtNYXAuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTV2l0aFNjb3BlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U1dyYXBwZXJPYmplY3QuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XExpdGVyYWxQYXJzZXIuaCIgLz4NCkBAIC0xMDA5LDYgKzEwMTQsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcV2F0Y2hkb2cuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFdlYWtHQ01hcC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcV2Vha01hcENvbnN0cnVjdG9yLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxXZWFrTWFwRGF0YS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcV2Vha01hcFByb3RvdHlwZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcV2Vha1JhbmRvbS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcV3JpdGVCYXJyaWVyLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cdG9v
bHNcQ29kZVByb2ZpbGUuaCIgLz4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZTNhZjk4ZDBmZTc2MDk4ZGJiMGZmYzFmNWI0ZDUzNzgz
MzBiOWU2OC4uNDczM2FlNjkxODI1MGNmOWVkNTQyZjlmZTczOGJiZTNlNTMwNjMzOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjEy
LDYgKzYxMiw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTV2l0aFNj
b3BlLmNwcCI+DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNXZWFrTWFwLmNwcCI+
DQorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNXcmFwcGVyT2JqZWN0LmNwcCI+DQog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KQEAgLTg1
OCw2ICs4NjEsMTUgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNQcm9t
aXNlLmNwcCI+DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha01hcENvbnN0cnVj
dG9yLmNwcCI+DQorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha01hcERhdGEuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFrTWFwUHJvdG90eXBlLmNwcCI+
DQorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcQ29kZUJsb2NrU2V0LmNwcCI+DQogICAgICAg
PEZpbHRlcj5oZWFwPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYmEyNmVjMmU0MjNmMTk2N2Q4MzZlZWI1MjJlMGRjOTU5YjM2NDhh
ZS4uZmQ3MGMzOGIwN2FiYmYyODc0NzE4YzQ3N2RiY2UyYTlkZWVmN2M4MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTkzOSw2ICs5MzksMTQgQEAKIAkJQTdDMUVBRjAxNzk4N0FC
NjAwMjk5REIyIC8qIEpTU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0MxRUFFQjE3OTg3QUI2MDAyOTlEQjIgLyogSlNTdGFja0lu
bGluZXMuaCAqLzsgfTsKIAkJQTdDMUVBRjExNzk4N0FCNjAwMjk5REIyIC8qIFN0YWNrVmlzaXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Mx
RUFFQzE3OTg3QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmNwcCAqLzsgfTsKIAkJQTdDMUVB
RjIxNzk4N0FCNjAwMjk5REIyIC8qIFN0YWNrVmlzaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDMUVBRUQxNzk4N0FCNjAwMjk5REIyIC8qIFN0
YWNrVmlzaXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE3Q0EzQUUzMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBREQx
N0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUE3Q0Ez
QUU0MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQURFMTdEQTQxQUUwMDY1MzhB
RiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTdDQTNBRTUxN0RBNDFBRTAwNjUz
OEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBREYxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90
b3R5cGUuY3BwICovOyB9OworCQlBN0NBM0FFNjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdDQTNBRTAxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuaCAqLzsgfTsKKwkJ
QTdDQTNBRTcxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMTE3REE0MUFFMDA2NTM4QUYg
LyogSlNXZWFrTWFwLmNwcCAqLzsgfTsKKwkJQTdDQTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovOyB9OworCQlBN0NBM0FF
QjE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdl
YWtNYXBEYXRhLmNwcCAqLzsgfTsKKwkJQTdDQTNBRUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtN
YXBEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLzsgfTsKIAkJQTdEODlD
RjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jhc2ljQmxvY2suY3BwICovOyB9OwogCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyog
REZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmNwcCAqLzsgfTsKIAkJQTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2Nr
SW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjE0Nyw2
ICsyMTU1LDE0IEBACiAJCUE3QzFFQUVEMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tWaXNpdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QzIyNUNDMTM5OTgxRjEwMEZGMTY2MiAvKiBLZXl3
b3JkTG9va3VwR2VuZXJhdG9yLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRo
ID0gS2V5d29yZExvb2t1cEdlbmVyYXRvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTdDMjI1Q0QxMzk5ODQ5QzAwRkYxNjYyIC8qIEtleXdvcmRMb29rdXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2V5d29yZExvb2t1cC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBN0NBM0FERDE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVj
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBDb25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Q0EzQURFMTdEQTQx
QUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2Vha01hcENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3Q0EzQURGMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBQcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FFMDE3REE0MUFFMDA2NTM4QUYg
LyogV2Vha01hcFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWFrTWFwUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Q0EzQUUx
MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNXZWFrTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBEYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdCYXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R0Jhc2ljQmxvY2suY3BwOyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJ
bnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
QmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25T
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzODAsNiArMzM5NiwxNCBAQAog
CQkJCTE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLywKIAkJCQkxNDIw
QkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oICovLAogCQkJCUE3RENCNzc5MTJF
M0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLywKKwkJCQlBN0NBM0FERDE3REE0MUFF
MDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBN0NBM0FERTE3REE0
MUFFMDA2NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTdDQTNBREYxN0RB
NDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwICovLAorCQkJCUE3Q0EzQUUwMTdE
QTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggKi8sCisJCQkJQTdDQTNBRTExN0RB
NDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5jcHAgKi8sCisJCQkJQTdDQTNBRTIxN0RBNDFBRTAw
NjUzOEFGIC8qIEpTV2Vha01hcC5oICovLAorCQkJCUE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAv
KiBXZWFrTWFwRGF0YS5jcHAgKi8sCisJCQkJQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdl
YWtNYXBEYXRhLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMzk5Miw2ICs0MDE2LDcgQEAKIAkJCQkwRkMwOTc2QTE0NjhBNkY3
MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3
OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZC
OTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTdDQTNBRUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyogREZHT1NSRXhp
dENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcwMjVBQTE3MTRCMEZDMDAzODJDMEUg
LyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVGQzlB
QjE2ODFBM0I2MDA1NjdGNTMgLyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC00MjEyLDYgKzQyMzcsNyBAQAogCQkJCTE0ODc0QUU2MTVFQkRFNEEwMDJFMzU4
NyAvKiBKU1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MwQzRBQzE2ODEwMzAyMDAxNzAx
MUQgLyogSlNTY3JpcHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQxMTE1
N0YzMzJDMDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTdDQTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTcyOTlEOUUxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQ1RTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdGFjay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdDMUVBRjAxNzk4N0FCNjAwMjk5REIyIC8qIEpTU3RhY2tJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQzMzcsNiArNDM2Myw3IEBACiAJCQkJMEZGNzI5QkExNjZBRDM2
MDAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RjcyOUJCMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9p
bnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0NBM0FFNDE3REE0MUFFMDA2
NTM4QUYgLyogV2Vha01hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlC
QzE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkY3MjlCRDE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVy
RXhlY3V0aW9uQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00NDAyLDYgKzQ0MjksNyBAQAog
CQkJCUJDMThDNDZBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0MkUzMTNCMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBN0NBM0FFNjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8q
IFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFB
IC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQyQzkyNDE2RDAxRUU5
MDBDNzgwM0YgLyogU3RydWN0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC00OTg2LDYg
KzUwMTQsNyBAQAogCQkJCTE0N0YzOUNDMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvblByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkQ1OEMzNDE1OTEyRkVFMDAyMUE4NDQgLyog
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJGMTVBOERD
RTAwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTdDQTNBRUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUMyMjM5RDFBMTYyNjJCREQwMDVBQzVGRCAvKiBHQ1RocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDMjExMjJFMTE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWRE
YXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTMzMjlGMTRDQTdEQ0EwMDg1RjNDNiAvKiBH
ZXRCeUlkU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTEyNyw2ICs1MTU2LDcgQEAKIAkJ
CQkxNDQ2OURFMjEwN0VDN0U3MDA2NTA0NDYgLyogTnVtYmVyQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0NjlERTMxMDdFQzdFNzAwNjUwNDQ2IC8qIE51bWJlck9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNDEwN0VDN0U3MDA2NTA0NDYgLyogTnVtYmVy
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3Q0EzQUUzMTdEQTQxQUUwMDY1MzhB
RiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZGM0VFQkUx
NjhDREU5MzAwNzdCOTJBIC8qIE9iakNDYWxsYmFja0Z1bmN0aW9uLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ0NjlERTUxMDdFQzdFNzAwNjUwNDQ2IC8qIE9iamVjdENvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0NDY5REU2MTA3RUM3RTcwMDY1MDQ0NiAvKiBPYmplY3RQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MTYwLDkgKzUxOTAsMTEgQEAKIAkJCQlBREUz
OUZGRjE2REQxNDRCMDAwM0NENEEgLyogUHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDc0QzMzQzE2QUEyRDlCMDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOTMzMkEzMTRDQTdERDcwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE3Q0EzQUU1MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFw
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjYwQUMzMTY3NDBGODgwMDAyOTc3
OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQxMTA3
RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3MTJCM0Ix
MUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3
Q0EzQUU3MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODY0MkM1MTAxNTFDMDZBOTAwNDZENEVGIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkQ4QTMyQjE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExGb3JP
U1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDI4MDg0MjEwN0VDMDkzMDAxM0U3QjIgLyogUmVnRXhwQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCmluZGV4IDFlYzVjNzlhNzEyNDM4MTkz
MjJkM2E1ZmI3YWM3MDBmZDRlYjM4YzYuLjJmYmY3ZmE2YWY2Y2U1NWViZGNkMjJiMTdiNTEzYWMx
YWM5ZjYzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCkBAIC0zNTAsNiArMzUwLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcnVudGltZS9KU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBcCiAg
ICAgcnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcCBcCiAgICAgcnVudGltZS9KU1ZhcmlhYmxlT2Jq
ZWN0LmNwcCBcCisgICAgcnVudGltZS9KU1dlYWtNYXAuY3BwIFwKICAgICBydW50aW1lL0pTV2l0
aFNjb3BlLmNwcCBcCiAgICAgcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwIFwKICAgICBydW50
aW1lL0xpdGVyYWxQYXJzZXIuY3BwIFwKQEAgLTQwNCw2ICs0MDUsOSBAQCBTT1VSQ0VTICs9IFwK
ICAgICBydW50aW1lL1ZNLmNwcCBcCiAgICAgcnVudGltZS9XYXRjaGRvZy5jcHAgXAogICAgIHJ1
bnRpbWUvV2F0Y2hkb2dOb25lLmNwcCBcCisgICAgcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3Iu
Y3BwIFwKKyAgICBydW50aW1lL1dlYWtNYXBEYXRhLmNwcCBcCisgICAgcnVudGltZS9XZWFrTWFw
UHJvdG90eXBlLmNwcCBcCiAgICAgdG9vbHMvQ29kZVByb2ZpbGUuY3BwIFwKICAgICB0b29scy9D
b2RlUHJvZmlsaW5nLmNwcCBcCiAgICAgeWFyci9ZYXJySklULmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA2NDgwZjBm
N2UyODY5MDJlYTNhMjk5OGM2MTQxMjRmMjVjZTM3ZGM1Li41NDIyYzdhNGY4YjgwZTY0MzIyYzEz
OTQ4ZWRhZDIwNzFjZTA0NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTE0Myw2ICsxNDMsNyBAQAogICAgIG1hY3JvKHNp
emUpIFwKICAgICBtYWNybyhNYXApXAogICAgIG1hY3JvKFNldClcCisgICAgbWFjcm8oV2Vha01h
cClcCiAgICAgbWFjcm8oYWRkKQogCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFD
SF9LRVlXT1JEKG1hY3JvKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDVmZTg1NzRkMjYxYmI2NGU2MzMzNTA3YWRkZTVkODg2
NGRiYWY5MC4uMzcxZDNlNzg4MzBiYWI3YjhlMGI1MGY5NmY2YjFlYzBkMjgxN2YzYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
NzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIkpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIgogI2lu
Y2x1ZGUgIkpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlz
LmgiCisjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNp
bmNsdWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgpAQCAtOTksNiAr
MTAwLDkgQEAKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0
cmluZ0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiV2Vha01hcENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKKyNpbmNs
dWRlICJXZWFrTWFwUHJvdG90eXBlLmgiCiAKICNpZiBFTkFCTEUoUFJPTUlTRVMpCiAjaW5jbHVk
ZSAiSlNQcm9taXNlLmgiCkBAIC0zMDksNiArMzEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKIAogICAgIG1fbWFwRGF0YVN0cnVjdHVyZS5zZXQo
ZXhlYy0+dm0oKSwgdGhpcywgTWFwRGF0YTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRo
aXMsIGpzTnVsbCgpKSk7CisgICAgbV93ZWFrTWFwRGF0YVN0cnVjdHVyZS5zZXQoZXhlYy0+dm0o
KSwgdGhpcywgV2Vha01hcERhdGE6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBq
c051bGwoKSkpOwogCiAjZGVmaW5lIENSRUFURV9QUk9UT1RZUEVfRk9SX1NJTVBMRV9UWVBFKGNh
cGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBc
CiAgICAgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywg
Y2FwaXRhbE5hbWUjI1Byb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIGNhcGl0YWxOYW1lIyNQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpKTsgXApAQCAtNjQwLDYgKzY0NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICN1bmRl
ZiBWSVNJVF9TSU1QTEVfVFlQRQogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bWFwRGF0YVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2Vh
a01hcERhdGFTdHJ1Y3R1cmUpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gTlVNQkVSX09GX1RZ
UEVEX0FSUkFZX1RZUEVTOyBpLS07KSB7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3R5cGVkQXJyYXlzW2ldLnByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkYTYxODk0YzY2NjIxYjdlYzc0ZGY4
NzhiNDZjZjBjMzgyZjEzZTMxLi44MmZmMjljYTc1Y2MzNmYyZDViNmU3Y2MxODQ1ZWE3MjY5M2Rl
MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTgwLDYgKzgwLDcgQEAgc3RydWN0IEhhc2hUYWJsZTsKICAgICBtYWNybyhOdW1iZXIs
IG51bWJlciwgbnVtYmVyT2JqZWN0LCBOdW1iZXJPYmplY3QsIE51bWJlcikgXAogICAgIG1hY3Jv
KEVycm9yLCBlcnJvciwgZXJyb3IsIEVycm9ySW5zdGFuY2UsIEVycm9yKSBcCiAgICAgbWFjcm8o
SlNBcnJheUJ1ZmZlciwgYXJyYXlCdWZmZXIsIGFycmF5QnVmZmVyLCBKU0FycmF5QnVmZmVyLCBB
cnJheUJ1ZmZlcikgXAorICAgIG1hY3JvKFdlYWtNYXAsIHdlYWtNYXAsIHdlYWtNYXAsIEpTV2Vh
a01hcCwgV2Vha01hcCkgXAogCiAjZGVmaW5lIERFQ0xBUkVfU0lNUExFX0JVSUxUSU5fVFlQRShj
YXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSkg
XAogICAgIGNsYXNzIEpTICMjIGNhcGl0YWxOYW1lOyBcCkBAIC0yMDAsNiArMjAxLDcgQEAgcHJv
dGVjdGVkOgogI2VuZGlmIC8vIEVOQUJMRShQUk9NSVNFUykKIAogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fbWFwRGF0YVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3dlYWtNYXBEYXRhU3RydWN0dXJlOwogCiAjZGVmaW5lIERFRklORV9TVE9SQUdFX0ZPUl9T
SU1QTEVfVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5
cGUsIGpzTmFtZSkgXAogICAgIFdyaXRlQmFycmllcjxjYXBpdGFsTmFtZSAjIyBQcm90b3R5cGU+
IG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGU7IFwKQEAgLTM5OCw2ICs0MDAsNyBAQCBwdWJs
aWM6CiAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogbWFwRGF0YVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwRGF0
YVN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogd2Vha01hcERhdGFTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3dlYWtNYXBEYXRhU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Jl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhw
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJl
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dl
YWtNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZTZiNzkwYjBmZTU4ZDIyNmFiMTAxNjNhYWU1NmUxYzRkYTM2NDkxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmNw
cApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCisK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgorI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gSlNXZWFrTWFwOjpzX2luZm8gPSB7ICJXZWFrTWFwIiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYWtNYXApIH07CisKK3ZvaWQgSlNX
ZWFrTWFwOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG1fd2Vha01hcERhdGEu
c2V0KHZtLCB0aGlzLCBXZWFrTWFwRGF0YTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpKTsKK30K
Kwordm9pZCBKU1dlYWtNYXA6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOwor
ICAgIEpTV2Vha01hcCogdGhpc09iaiA9IGpzQ2FzdDxKU1dlYWtNYXAqPihjZWxsKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iai0+bV93ZWFrTWFwRGF0YSk7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNjMmQ4NDg4NWQz
OWFhOWRmNDNlNTA2OTgyOTViMTljNmI3YWQ3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNXZWFr
TWFwX2gKKyNkZWZpbmUgSlNXZWFrTWFwX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWFrTWFwRGF0YTsKKworY2xhc3MgSlNXZWFrTWFwIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5h
bE9iamVjdCBCYXNlOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU1dlYWtN
YXAqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsK
KyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNXZWFrTWFwKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2Vha01hcD4odm0uaGVhcCkpIEpTV2Vh
a01hcCh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZt
LCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOwor
ICAgIH0KKworICAgIFdlYWtNYXBEYXRhKiB3ZWFrTWFwRGF0YSgpIHsgcmV0dXJuIG1fd2Vha01h
cERhdGEuZ2V0KCk7IH0KKworICAgIEpTVmFsdWUgZ2V0KENhbGxGcmFtZSosIEpTT2JqZWN0Kik7
CisgICAgYm9vbCBoYXMoQ2FsbEZyYW1lKiwgSlNPYmplY3QqKTsKKyAgICBib29sIHJlbW92ZShD
YWxsRnJhbWUqLCBKU09iamVjdCopOworCisgICAgdm9pZCBzZXQoQ2FsbEZyYW1lKiwgSlNPYmpl
Y3QqLCBKU1ZhbHVlKTsKKyAgICB2b2lkIGNsZWFyKENhbGxGcmFtZSopOworCitwcml2YXRlOgor
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgSlNXZWFrTWFwKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisKKyAgICBXcml0ZUJhcnJpZXI8V2Vha01hcERhdGE+IG1fd2Vha01hcERhdGE7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChKU1dlYWtNYXBfaCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmExYzM5M2Q3MjkwOTRhMGE2M2FkMWI4ZjIxNDg2MzQwYTlmN2I3NmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3Bw
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWFrTWFwQ29uc3RydWN0
b3IuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNXZWFr
TWFwLmgiCisjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIFdlYWtNYXBDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rp
b24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYWtNYXBDb25z
dHJ1Y3RvcikgfTsKKwordm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgV2Vha01hcFByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIHByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNz
TmFtZSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+dm0o
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0V2Vha01hcENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4
ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBnbG9iYWxPYmplY3QtPndlYWtNYXBTdHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTV2Vha01hcDo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSkpOworfQorCitDb25zdHJ1
Y3RUeXBlIFdlYWtNYXBDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY29uc3RydWN0V2Vha01hcENvbnN0cnVjdG9yOworICAgIHJldHVybiBDb25zdHJ1
Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgV2Vha01hcENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYpCit7CisgICAgcmV0dXJuIENhbGxUeXBlTm9uZTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yYzQ4NWVmYWFkMGE2NThiMjU3YTI2OGFkY2RlMDEwOWIyMDA4MzYz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXZWFrTWFwQ29uc3RydWN0b3JfaAorI2Rl
ZmluZSBXZWFrTWFwQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2Vha01hcFByb3RvdHlwZTsKKworY2xhc3Mg
V2Vha01hcENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgor
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgc3RhdGljIFdlYWtNYXBD
b25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYWtNYXBQcm90b3R5cGUqIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIFdlYWtNYXBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWFrTWFwQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBXZWFrTWFwQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBj
b25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvdG90eXBlKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBX
ZWFrTWFwQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgV2Vha01hcFBy
b3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlND
ZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoV2Vha01h
cENvbnN0cnVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrTWFwRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE5ZmVmNmM3NjI2NDU3ZTE2ZjRiYzIwZmExODE1ODlhMjM3
OGQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBEYXRhLmNwcApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgorCisjaW5jbHVkZSAiQ29waWVkQWxs
b2NhdG9yLmgiCisjaW5jbHVkZSAiQ29weVZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gV2Vha01hcERhdGE6OnNfaW5m
byA9IHsgIldlYWtNYXBEYXRhIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShXZWFrTWFwRGF0YSkgfTsKKworV2Vha01hcERhdGE6OldlYWtNYXBEYXRhKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICA6IEJhc2Uodm0sIGdsb2JhbE9iamVj
dC0+d2Vha01hcERhdGFTdHJ1Y3R1cmUoKSkKKyAgICAsIG1fZ2NDbGVhbmVyKHRoaXMpCit7Cit9
CisKK3ZvaWQgV2Vha01hcERhdGE6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7Cit9CisKK3ZvaWQgV2Vha01hcERhdGE6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PFdlYWtNYXBEYXRhKj4oY2VsbCktPn5XZWFr
TWFwRGF0YSgpOworfQorCit2b2lkIFdlYWtNYXBEYXRhOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihj
ZWxsLCB2aXNpdG9yKTsKKyAgICBXZWFrTWFwRGF0YSogdGhpc09iaiA9IGpzQ2FzdDxXZWFrTWFw
RGF0YSo+KGNlbGwpOworICAgIHZpc2l0b3IuYWRkVW5jb25kaXRpb25hbEZpbmFsaXplcigmdGhp
c09iai0+bV9nY0NsZWFuZXIpOworICAgIHZpc2l0b3IuYWRkV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
cigmdGhpc09iai0+bV9nY0NsZWFuZXIpOworCisgICAgLy8gUm91Z2ggYXBwcm94aW1hdGlvbiBv
ZiB0aGUgZXh0ZXJuYWwgc3RvcmFnZSBuZWVkZWQgZm9yIHRoZSBoYXNodGFibGUuCisgICAgLy8g
VGhpcyBzaW4ndCBleGFjdCwgYnV0IGl0IGlzIGNsb3NlIGVub3VnaCwgYW5kIHByb3BvcnRpb25h
bCB0byB0aGUgYWN0dWFsCisgICAgLy8gZXh0ZXJuYWwgbWVybW9yeSB1c2FnZS4KKyAgICB2aXNp
dG9yLnJlcG9ydEV4dHJhTWVtb3J5VXNhZ2UodGhpc09iai0+bV9tYXAuY2FwYWNpdHkoKSAqIChz
aXplb2YoSlNPYmplY3QqKSArIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSk7Cit9CisK
K3ZvaWQgV2Vha01hcERhdGE6OnNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIGtl
eSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7Cisg
ICAgaWYgKGl0ZXIgIT0gbV9tYXAuZW5kKCkpIHsKKyAgICAgICAgaXRlci0+dmFsdWUuc2V0KGNh
bGxGcmFtZS0+dm0oKSwgdGhpcywgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IC8vIEhlcmUgd2UgZm9yY2UgdGhlIHdyaXRlIGJhcnJpZXIgb24gdGhlIGtleS4KKyAgICBtX21h
cC5hZGQoV3JpdGVCYXJyaWVyPEpTT2JqZWN0PihjYWxsRnJhbWUtPnZtKCksIHRoaXMsIGtleSku
Z2V0KCksIFdyaXRlQmFycmllcjxVbmtub3duPihjYWxsRnJhbWUtPnZtKCksIHRoaXMsIHZhbHVl
KSk7Cit9CisKK0pTVmFsdWUgV2Vha01hcERhdGE6OmdldChKU09iamVjdCoga2V5KQoreworICAg
IGF1dG8gaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsKKyAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQo
KSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIGl0ZXItPnZhbHVl
LmdldCgpOworfQorCitib29sIFdlYWtNYXBEYXRhOjpyZW1vdmUoSlNPYmplY3QqIGtleSkKK3sK
KyAgICBhdXRvIGl0ZXIgPSBtX21hcC5maW5kKGtleSk7CisgICAgaWYgKGl0ZXIgPT0gbV9tYXAu
ZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fbWFwLnJlbW92ZShpdGVyKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWFrTWFwRGF0YTo6Y29udGFpbnMoSlNPYmpl
Y3QqIGtleSkKK3sKKyAgICByZXR1cm4gbV9tYXAuY29udGFpbnMoa2V5KTsKK30KKwordm9pZCBX
ZWFrTWFwRGF0YTo6Y2xlYXIoKQoreworICAgIG1fbWFwLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2Vh
a01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjp2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIG1fbGl2ZUtleUNvdW50ID0gMDsKKyAgICBmb3IgKGF1dG8gcHRy
ID0gbV90YXJnZXQtPm1fbWFwLmJlZ2luKCksIGVuZCA9IG1fdGFyZ2V0LT5tX21hcC5lbmQoKTsg
cHRyICE9IGVuZDsgKytwdHIpIHsKKyAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChwdHItPmtl
eSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbV9saXZlS2V5Q291bnQrKzsKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnB0ci0+dmFsdWUpOworICAgIH0KKyAgICBSRUxFQVNFX0FT
U0VSVChtX2xpdmVLZXlDb3VudCA8PSBtX3RhcmdldC0+bV9tYXAuc2l6ZSgpKTsKK30KKwordm9p
ZCBXZWFrTWFwRGF0YTo6RGVhZEtleUNsZWFuZXI6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkK
K3sKKyAgICBpZiAobV9saXZlS2V5Q291bnQgPiBtX3RhcmdldC0+bV9tYXAuc2l6ZSgpIC8gMikg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2xpdmVLZXlDb3VudCA8PSBtX3RhcmdldC0+bV9t
YXAuc2l6ZSgpKTsKKyAgICAgICAgaW50IGRlYWRDb3VudCA9IG1fdGFyZ2V0LT5tX21hcC5zaXpl
KCkgLSBtX2xpdmVLZXlDb3VudDsKKyAgICAgICAgaWYgKCFkZWFkQ291bnQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIFZlY3RvcjxKU09iamVjdCo+IGRlYWRFbnRyaWVzOworICAgICAg
ICBkZWFkRW50cmllcy5yZXNlcnZlQ2FwYWNpdHkoZGVhZENvdW50KTsKKyAgICAgICAgZm9yIChh
dXRvIHB0ciA9IG1fdGFyZ2V0LT5tX21hcC5iZWdpbigpLCBlbmQgPSBtX3RhcmdldC0+bV9tYXAu
ZW5kKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CisgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJr
ZWQocHRyLT5rZXkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZGVh
ZEVudHJpZXMudW5jaGVja2VkQXBwZW5kKHB0ci0+a2V5KTsKKyAgICAgICAgfQorICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGRlYWRFbnRyaWVzLnNpemUoKTsgaSsrKQorICAgICAgICAg
ICAgbV90YXJnZXQtPm1fbWFwLnJlbW92ZShkZWFkRW50cmllc1tpXSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgTWFwVHlwZSBuZXdNYXA7CisgICAgICAgIGZvciAoYXV0byBwdHIgPSBtX3Rhcmdl
dC0+bV9tYXAuYmVnaW4oKSwgZW5kID0gbV90YXJnZXQtPm1fbWFwLmVuZCgpOyBwdHIgIT0gZW5k
OyArK3B0cikgeworICAgICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChwdHItPmtleSkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBuZXdNYXAuYWRkKHB0ci0+a2V5
LCBwdHItPnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBtX3RhcmdldC0+bV9tYXAuc3dhcChu
ZXdNYXApOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE4OGMyNDdkNTNhNTkxYjg2MDgxMmZiNmI4ZmU1YzU4
YTAzODkxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBEYXRhLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vh
a01hcERhdGFfaAorI2RlZmluZSBXZWFrTWFwRGF0YV9oCisKKyNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgV2Vha0ltcGw7CitjbGFzcyBXZWFrTWFwRGF0YTsKKworY2xhc3MgV2Vha01hcERh
dGEgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBXZWFrTWFwRGF0YSogY3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAg
IFdlYWtNYXBEYXRhKiB3ZWFrTWFwRGF0YSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YWtNYXBEYXRhPih2bS5oZWFwKSkgV2Vha01hcERhdGEodm0sIGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHdlYWtNYXBEYXRhLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiB3ZWFr
TWFwRGF0YTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKKyAgICB2b2lkIHNldChDYWxsRnJhbWUqLCBKU09iamVjdCosIEpTVmFsdWUp
OworICAgIEpTVmFsdWUgZ2V0KEpTT2JqZWN0Kik7CisgICAgYm9vbCByZW1vdmUoSlNPYmplY3Qq
KTsKKyAgICB2b2lkIHJlbW92ZURlYWQoSlNPYmplY3QqKTsKKyAgICBib29sIGNvbnRhaW5zKEpT
T2JqZWN0Kik7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgREVDTEFSRV9JTkZPOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworcHJpdmF0ZToKKyAgICBXZWFrTWFwRGF0YShW
TSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
KyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgY2xhc3MgRGVhZEtleUNsZWFuZXIg
OiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgRGVhZEtleUNsZWFuZXIoV2Vha01hcERhdGEq
IHRhcmdldCkKKyAgICAgICAgICAgIDogbV90YXJnZXQodGFyZ2V0KQorICAgICAgICB7CisgICAg
ICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJl
bmNlcyhTbG90VmlzaXRvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoKTsKKyAgICAgICAgaW50IG1fbGl2ZUtleUNvdW50OworICAgICAgICBXZWFrTWFw
RGF0YSogbV90YXJnZXQ7CisgICAgfTsKKyAgICBEZWFkS2V5Q2xlYW5lciBtX2djQ2xlYW5lcjsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8SlNPYmplY3QqLCBXcml0ZUJhcnJpZXI8VW5rbm93bj4+IE1h
cFR5cGU7CisgICAgTWFwVHlwZSBtX21hcDsKK307CisKK30KKworI2VuZGlmIC8qICFkZWZpbmVk
KFdlYWtNYXBEYXRhX2gpICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMmZmYTM2YmEyZGI1ZmM0MmE1MDA4
OThhMTUwMzEwZGVkM2Y3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYWtNYXBQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCisjaW5jbHVkZSAiV2Vha01hcERh
dGEuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBXZWFrTWFwUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJXZWFrTWFwIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShXZWFrTWFwUHJvdG90eXBlKSB9OworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwQ2xlYXIoRXhlY1N0YXRlKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vh
a01hcEdldChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByb3RvRnVuY1dlYWtNYXBIYXMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KEV4ZWNTdGF0ZSopOworCit2b2lkIFdl
YWtNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsK
KyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworCisgICAgSlNDX05BVElW
RV9GVU5DVElPTihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2xlYXIsIHByb3RvRnVuY1dlYWtNYXBD
bGVhciwgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmRlbGV0ZUtleXdvcmQsIHByb3RvRnVuY1dlYWtNYXBEZWxldGUsIERvbnRFbnVt
LCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXQs
IHByb3RvRnVuY1dlYWtNYXBHZXQsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5oYXMsIHByb3RvRnVuY1dlYWtNYXBIYXMsIERvbnRF
bnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5z
ZXQsIHByb3RvRnVuY1dlYWtNYXBTZXQsIERvbnRFbnVtLCAyKTsKK30KKworc3RhdGljIFdlYWtN
YXBEYXRhKiBnZXRXZWFrTWFwRGF0YShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24g
b24gbm9uLW9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKEpT
V2Vha01hcCogd2Vha01hcCA9IGpzRHluYW1pY0Nhc3Q8SlNXZWFrTWFwKj4odmFsdWUpKQorICAg
ICAgICByZXR1cm4gd2Vha01hcC0+d2Vha01hcERhdGEoKTsKKworICAgIHRocm93VHlwZUVycm9y
KGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9u
IGEgbm9uLVdlYWtNYXAgb2JqZWN0IikpOworICAgIHJldHVybiAwOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBDbGVhcihDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3sKKyAgICBXZWFrTWFwRGF0YSogbWFwID0gZ2V0V2Vha01hcERhdGEoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW1hcCkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBtYXAtPmNsZWFyKCk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbWFwKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIEpTVmFsdWUga2V5ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWtleS5pc09iamVjdCgpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxp
dGVyYWwoIkEgV2Vha01hcCBjYW5ub3QgaGF2ZSBhIG5vbi1vYmplY3Qga2V5IikpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihtYXAtPnJlbW92ZShhc09iamVjdChrZXkp
KSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBH
ZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgV2Vha01hcERhdGEqIG1hcCA9IGdldFdl
YWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFt
YXApCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
SlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmICgha2V5LmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQSBXZWFrTWFwIGNhbm5vdCBoYXZlIGEgbm9uLW9i
amVjdCBrZXkiKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWFwLT5nZXQoYXNPYmpl
Y3Qoa2V5KSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dl
YWtNYXBIYXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgV2Vha01hcERhdGEqIG1hcCA9
IGdldFdlYWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
aWYgKCFtYXApCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmICgha2V5
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQSBXZWFrTWFwIGNhbm5vdCBoYXZlIGEg
bm9uLW9iamVjdCBrZXkiKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KG1hcC0+Y29udGFpbnMoYXNPYmplY3Qoa2V5KSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQorewor
ICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbWFwKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKKyAgICBpZiAoIWtleS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0
dGVtcHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdlYWtNYXAiKSkpOworICAgIG1h
cC0+c2V0KGNhbGxGcmFtZSwgYXNPYmplY3Qoa2V5KSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFBy
b3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlw
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc4NWU0OWU5MzZiYzQ4YzE1ZmQxZDI0MDFhNzgyMDNhNGE0NTYwNWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
UHJvdG90eXBlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXZWFrTWFwUHJvdG90eXBlX2gKKyNkZWZpbmUg
V2Vha01hcFByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgV2Vha01hcFByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0
YXRpYyBXZWFrTWFwUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAg
IFdlYWtNYXBQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFdlYWtNYXBQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBXZWFrTWFwUHJvdG90eXBlKGV4ZWMs
IHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgV2Vha01hcFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2UoZXhlYy0+dm0oKSwgc3RydWN0dXJl
KQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoV2Vha01hcFByb3Rv
dHlwZV9oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGIzMWI3ODdmYTNiYzYyMWJlYjkxN2JlMzM1ZGFiNGM0ODczODI2MTYu
LmRkOTUwMmE4ZWI3OTU5NmY2MmY5YjZkMzY5M2ViOTM3NTczZDFkZGUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMy0wOS0xMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFN1cHBvcnQgV2Vha01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIwOTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQmFzaWMgdGVzdHMuCisKKyAgICAgICAgKiBqcy9iYXNpYy13ZWFrbWFw
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYmFzaWMtd2Vha21hcC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYmFzaWMtd2Vha21hcC5qczogQWRkZWQu
CisKIDIwMTMtMDktMTAgIERlbmlzIE5vbWl5YW1hICA8ZC5ub21peWFtYUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbR1RLXSBhY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXNlbmRzLW5vdGlm
aWNhdGlvbi5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Jhc2lj
LXdlYWttYXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYmFzaWMtd2Vha21hcC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzEwMWU4NjExYWQyOWI3MDUyZmVjMDg1OTRiYzg1NGZjNDQ4
NGVjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Jhc2ljLXdlYWttYXAtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDYgQEAKK1Rlc3RzIGJhc2ljIGNvcnJlY3RuZXNzIG9mIEVT
IFdlYWtNYXAgb2JqZWN0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFdl
YWtNYXAgaW5zdGFuY2VvZiBXZWFrTWFwIGlzIGZhbHNlCitQQVNTIFdlYWtNYXAucHJvdG90eXBl
IGluc3RhbmNlb2YgV2Vha01hcCBpcyBmYWxzZQorUEFTUyBuZXcgV2Vha01hcCgpIGluc3RhbmNl
b2YgV2Vha01hcCBpcyB0cnVlCitQQVNTIFdlYWtNYXAoKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBGdW5jdGlvbiBpcyBub3QgYSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnV2Vha01hcCgpJyku
CitQQVNTIG1hcC5zZXQoMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVk
IHRvIHNldCBhIG5vbi1vYmplY3Qga2V5IGluIGEgV2Vha01hcC4KK1BBU1MgbWFwLnNldCgwLjUs
IDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBzZXQgYSBub24tb2Jq
ZWN0IGtleSBpbiBhIFdlYWtNYXAuCitQQVNTIG1hcC5zZXQoJ2ZvbycsIDEpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdl
YWtNYXAuCitQQVNTIG1hcC5zZXQodHJ1ZSwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
QXR0ZW1wdGVkIHRvIHNldCBhIG5vbi1vYmplY3Qga2V5IGluIGEgV2Vha01hcC4KK1BBU1MgbWFw
LnNldChmYWxzZSwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIHNl
dCBhIG5vbi1vYmplY3Qga2V5IGluIGEgV2Vha01hcC4KK1BBU1MgbWFwLnNldChudWxsLCAxKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gc2V0IGEgbm9uLW9iamVjdCBr
ZXkgaW4gYSBXZWFrTWFwLgorUEFTUyBtYXAuc2V0KHVuZGVmaW5lZCwgMSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIHNldCBhIG5vbi1vYmplY3Qga2V5IGluIGEgV2Vh
a01hcC4KK1BBU1MgbWFwLmdldCgwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBIFdlYWtN
YXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0IGtleS4KK1BBU1MgbWFwLmdldCgwLjUpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEEgV2Vha01hcCBjYW5ub3QgaGF2ZSBhIG5vbi1vYmplY3Qg
a2V5LgorUEFTUyBtYXAuZ2V0KCdmb28nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBIFdl
YWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0IGtleS4KK1BBU1MgbWFwLmdldCh0cnVlKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBIFdlYWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2Jq
ZWN0IGtleS4KK1BBU1MgbWFwLmdldChmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
QSBXZWFrTWFwIGNhbm5vdCBoYXZlIGEgbm9uLW9iamVjdCBrZXkuCitQQVNTIG1hcC5nZXQobnVs
bCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQSBXZWFrTWFwIGNhbm5vdCBoYXZlIGEgbm9u
LW9iamVjdCBrZXkuCitQQVNTIG1hcC5nZXQodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBBIFdlYWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0IGtleS4KK1BBU1MgbWFw
LmhhcygwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBIFdlYWtNYXAgY2Fubm90IGhhdmUg
YSBub24tb2JqZWN0IGtleS4KK1BBU1MgbWFwLmhhcygwLjUpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEEgV2Vha01hcCBjYW5ub3QgaGF2ZSBhIG5vbi1vYmplY3Qga2V5LgorUEFTUyBtYXAu
aGFzKCdmb28nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBIFdlYWtNYXAgY2Fubm90IGhh
dmUgYSBub24tb2JqZWN0IGtleS4KK1BBU1MgbWFwLmhhcyh0cnVlKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBBIFdlYWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0IGtleS4KK1BBU1Mg
bWFwLmhhcyhmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQSBXZWFrTWFwIGNhbm5v
dCBoYXZlIGEgbm9uLW9iamVjdCBrZXkuCitQQVNTIG1hcC5oYXMobnVsbCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQSBXZWFrTWFwIGNhbm5vdCBoYXZlIGEgbm9uLW9iamVjdCBrZXkuCitQ
QVNTIG1hcC5oYXModW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBIFdlYWtN
YXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0IGtleS4KK1BBU1MgbWFwLmRlbGV0ZSgwKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBBIFdlYWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0
IGtleS4KK1BBU1MgbWFwLmRlbGV0ZSgwLjUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEEg
V2Vha01hcCBjYW5ub3QgaGF2ZSBhIG5vbi1vYmplY3Qga2V5LgorUEFTUyBtYXAuZGVsZXRlKCdm
b28nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBIFdlYWtNYXAgY2Fubm90IGhhdmUgYSBu
b24tb2JqZWN0IGtleS4KK1BBU1MgbWFwLmRlbGV0ZSh0cnVlKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBBIFdlYWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0IGtleS4KK1BBU1MgbWFw
LmRlbGV0ZShmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQSBXZWFrTWFwIGNhbm5v
dCBoYXZlIGEgbm9uLW9iamVjdCBrZXkuCitQQVNTIG1hcC5kZWxldGUobnVsbCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQSBXZWFrTWFwIGNhbm5vdCBoYXZlIGEgbm9uLW9iamVjdCBrZXku
CitQQVNTIG1hcC5kZWxldGUodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBB
IFdlYWtNYXAgY2Fubm90IGhhdmUgYSBub24tb2JqZWN0IGtleS4KK1BBU1MgbWFwLnNldChuZXcg
U3RyaW5nKCdmb28nKSwgJ2ZvbycpIGlzIG1hcAorUEFTUyBtYXAuZ2V0KG5ldyBTdHJpbmcoJ2Zv
bycpKSBpcyB1bmRlZmluZWQKK1BBU1MgbWFwLmhhcyhuZXcgU3RyaW5nKCdmb28nKSkgaXMgZmFs
c2UKK1BBU1MgTWF0aC5hYnMoY3VycmVudE9iamVjdENvdW50IC0ga2V5TGVzc09iamVjdENvdW50
KSA8IDEwMCBpcyB0cnVlCitQQVNTIChrZXlMZXNzT2JqZWN0Q291bnQgLSB2YWx1ZUxlc3NPYmpl
Y3RDb3VudCkgPiAxNTAwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9iYXNpYy13ZWFr
bWFwLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9iYXNpYy13ZWFrbWFwLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDhmYzM3ZThlM2RlNjVlZTU1ODY1MTQ4NWRlNDUyMDA3NzdkMGEyYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL2Jhc2ljLXdlYWttYXAuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYmFzaWMtd2Vha21h
cC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYmFzaWMtd2Vha21hcC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9iYXNpYy13ZWFrbWFwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3NGQ5ZDBlYjQ2ZTZjZWE5ZjA3Mzcx
NjcxMWY5NTZiMTA2MmY5OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYmFzaWMtd2Vha21hcC5qcwpAQCAtMCwwICsxLDc0IEBACitkZXNjcmlwdGlvbigi
VGVzdHMgYmFzaWMgY29ycmVjdG5lc3Mgb2YgRVMgV2Vha01hcCBvYmplY3QiKTsKKworLy8gQ3Vy
cmVudGx5IHdlIGRvbid0IHN1cHBvcnQgaXRlcmF0b3JzLCBzbyB3ZSB0aHJvdworLy8gb24gYW55
IG5vbi10aHJvd2luZyBwYXJhbWV0ZXJzCitzaG91bGRCZUZhbHNlKCJXZWFrTWFwIGluc3RhbmNl
b2YgV2Vha01hcCIpOworc2hvdWxkQmVGYWxzZSgiV2Vha01hcC5wcm90b3R5cGUgaW5zdGFuY2Vv
ZiBXZWFrTWFwIik7CitzaG91bGRCZVRydWUoIm5ldyBXZWFrTWFwKCkgaW5zdGFuY2VvZiBXZWFr
TWFwIik7CisKK3Nob3VsZFRocm93KCJXZWFrTWFwKCkiKTsKKwordmFyIG1hcCA9IG5ldyBXZWFr
TWFwOworc2hvdWxkVGhyb3coIm1hcC5zZXQoMCwgMSkiKQorc2hvdWxkVGhyb3coIm1hcC5zZXQo
MC41LCAxKSIpCitzaG91bGRUaHJvdygibWFwLnNldCgnZm9vJywgMSkiKQorc2hvdWxkVGhyb3co
Im1hcC5zZXQodHJ1ZSwgMSkiKQorc2hvdWxkVGhyb3coIm1hcC5zZXQoZmFsc2UsIDEpIikKK3No
b3VsZFRocm93KCJtYXAuc2V0KG51bGwsIDEpIikKK3Nob3VsZFRocm93KCJtYXAuc2V0KHVuZGVm
aW5lZCwgMSkiKQorc2hvdWxkVGhyb3coIm1hcC5nZXQoMCkiKQorc2hvdWxkVGhyb3coIm1hcC5n
ZXQoMC41KSIpCitzaG91bGRUaHJvdygibWFwLmdldCgnZm9vJykiKQorc2hvdWxkVGhyb3coIm1h
cC5nZXQodHJ1ZSkiKQorc2hvdWxkVGhyb3coIm1hcC5nZXQoZmFsc2UpIikKK3Nob3VsZFRocm93
KCJtYXAuZ2V0KG51bGwpIikKK3Nob3VsZFRocm93KCJtYXAuZ2V0KHVuZGVmaW5lZCkiKQorc2hv
dWxkVGhyb3coIm1hcC5oYXMoMCkiKQorc2hvdWxkVGhyb3coIm1hcC5oYXMoMC41KSIpCitzaG91
bGRUaHJvdygibWFwLmhhcygnZm9vJykiKQorc2hvdWxkVGhyb3coIm1hcC5oYXModHJ1ZSkiKQor
c2hvdWxkVGhyb3coIm1hcC5oYXMoZmFsc2UpIikKK3Nob3VsZFRocm93KCJtYXAuaGFzKG51bGwp
IikKK3Nob3VsZFRocm93KCJtYXAuaGFzKHVuZGVmaW5lZCkiKQorc2hvdWxkVGhyb3coIm1hcC5k
ZWxldGUoMCkiKQorc2hvdWxkVGhyb3coIm1hcC5kZWxldGUoMC41KSIpCitzaG91bGRUaHJvdygi
bWFwLmRlbGV0ZSgnZm9vJykiKQorc2hvdWxkVGhyb3coIm1hcC5kZWxldGUodHJ1ZSkiKQorc2hv
dWxkVGhyb3coIm1hcC5kZWxldGUoZmFsc2UpIikKK3Nob3VsZFRocm93KCJtYXAuZGVsZXRlKG51
bGwpIikKK3Nob3VsZFRocm93KCJtYXAuZGVsZXRlKHVuZGVmaW5lZCkiKQorCitzaG91bGRCZSgi
bWFwLnNldChuZXcgU3RyaW5nKCdmb28nKSwgJ2ZvbycpIiwgIm1hcCIpOworc2hvdWxkQmUoIm1h
cC5nZXQobmV3IFN0cmluZygnZm9vJykpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmVGYWxzZSgi
bWFwLmhhcyhuZXcgU3RyaW5nKCdmb28nKSkiKTsKKwordmFyIGtleXMgPSBbXTsKK3ZhciB2YWx1
ZXMgPSBbXTsKKwordmFyIGNvdW50ID0gMjAwMDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7
IGkrKykgeworCWtleXNbaV0gPSB7fQorCXZhbHVlc1tpXSA9IHt2IDoga2V5c1tpXX0KKwlrZXlz
W2ldLnYgPSB2YWx1ZXNbaV0KK30KK2ZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewor
CW1hcC5zZXQoa2V5c1tpXSwgdmFsdWVzW2ldKQorfQorZ2MoKTsKKworaWYgKHRoaXMuR0NDb250
cm9sbGVyKSB7CisJdmFyIGN1cnJlbnRPYmplY3RDb3VudCA9IEdDQ29udHJvbGxlci5nZXRKU09i
amVjdENvdW50KCkKKyAgICBrZXlzID0gbnVsbDsKKyAgICBnYygpOworICAgIHZhciBrZXlMZXNz
T2JqZWN0Q291bnQgPSBHQ0NvbnRyb2xsZXIuZ2V0SlNPYmplY3RDb3VudCgpCisgICAgLy8gU29t
ZXdoYXQgYXBwcm94aW1hdGUKKyAgICBzaG91bGRCZVRydWUoIk1hdGguYWJzKGN1cnJlbnRPYmpl
Y3RDb3VudCAtIGtleUxlc3NPYmplY3RDb3VudCkgPCAxMDAiKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAJaWYgKG1hcC5nZXQodmFsdWVzW2ldLnYpICE9IHZh
bHVlc1tpXSkKKyAgICAJCWZhaWwoIktleSB3YXMgaW5jb3JyZWN0bHkgcmVtb3ZlZCBmcm9tIHdl
YWsgbWFwIik7CisgICAgfQorICAgIHZhbHVlcyA9IG51bGw7CisgICAgZ2MoKTsKKyAgICB2YXIg
dmFsdWVMZXNzT2JqZWN0Q291bnQgPSBHQ0NvbnRyb2xsZXIuZ2V0SlNPYmplY3RDb3VudCgpCisg
ICAgc2hvdWxkQmVUcnVlKCIoa2V5TGVzc09iamVjdENvdW50IC0gdmFsdWVMZXNzT2JqZWN0Q291
bnQpID4gIiArIChjb3VudCAqIDMgLyA0KSk7Cit9Cg==
</data>
<flag name="review"
          id="233288"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>