<?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>62164</bug_id>
          
          <creation_ts>2011-06-06 16:05:09 -0700</creation_ts>
          <short_desc>Remove &quot;multi-threaded&quot; logic in V8 DOMData, DOMDataStore and friends</short_desc>
          <delta_ts>2011-06-08 10:31:22 -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>WebCore JavaScript</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>
          <dependson>62197</dependson>
    
    <dependson>62233</dependson>
          <blocked>61016</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dmitry Lomov">dslomov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dimich</cc>
    
    <cc>dslomov</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>416091</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-06 16:05:09 -0700</bug_when>
    <thetext>This functionality is untested and unused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416100</commentid>
    <comment_count>1</comment_count>
      <attachid>96147</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-06 16:18:46 -0700</bug_when>
    <thetext>Created attachment 96147
Removing multithreaded logic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416106</commentid>
    <comment_count>2</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-06-06 16:30:22 -0700</bug_when>
    <thetext>Adam, I&apos;m hoping you&apos;ll review this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416128</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-06-06 17:03:23 -0700</bug_when>
    <thetext>I can totally review this, I know this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416152</commentid>
    <comment_count>4</comment_count>
      <attachid>96147</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-06-06 17:21:13 -0700</bug_when>
    <thetext>Comment on attachment 96147
Removing multithreaded logic

Great patch, since you want to use commit-queue, lets make it perfect: could you please add a sentence to ChangeLog explaining that this is an old code from Lockers-based implementation of WebWorkers in V8 bindings, to make sure that DOM objects are released on the right thread even though GC could have happened on any thread. It is currently unused (since current model is one worker per process) and is being removed because new implementation will be using V8 isolates and does not need the DOMStores per thread.
Just to give it more context...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416157</commentid>
    <comment_count>5</comment_count>
      <attachid>96159</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-06 17:27:04 -0700</bug_when>
    <thetext>Created attachment 96159
CR feedback - more context in ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416167</commentid>
    <comment_count>6</comment_count>
      <attachid>96159</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-06 17:35:24 -0700</bug_when>
    <thetext>Comment on attachment 96159
CR feedback - more context in ChangeLog

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

Remove this lock probably removes the need for the visitor pattern, but maybe it&apos;s worth keeping anyway.

&gt; Source/WebCore/bindings/v8/DOMData.cpp:-55
&gt; -    DEFINE_STATIC_LOCAL(WTF::ThreadSpecific&lt;ChildThreadDOMData&gt;, childThreadDOMData, ());

Can we just remove ChildThreadDOMData at this point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416168</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-06 17:35:44 -0700</bug_when>
    <thetext>I&apos;ll let dimich review the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416171</commentid>
    <comment_count>8</comment_count>
      <attachid>96159</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-06 17:40:37 -0700</bug_when>
    <thetext>Comment on attachment 96159
CR feedback - more context in ChangeLog

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

&gt;&gt; Source/WebCore/bindings/v8/DOMData.cpp:-55
&gt;&gt; -    DEFINE_STATIC_LOCAL(WTF::ThreadSpecific&lt;ChildThreadDOMData&gt;, childThreadDOMData, ());
&gt; 
&gt; Can we just remove ChildThreadDOMData at this point?

Good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416181</commentid>
    <comment_count>9</comment_count>
      <attachid>96159</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-06-06 17:53:31 -0700</bug_when>
    <thetext>Comment on attachment 96159
CR feedback - more context in ChangeLog

Adam has inspired me to do a better review :-)

Lets indeed remove all pieces that are not needed anymore:
- Comment in DOMDataStore.cpp, that explains threading considerations should be updated.
- in V8DOMMap.*, lets rename methods like &apos;visitActiveDOMObjectsInCurrentThread&apos; to &apos;visitActiveDOMObjects&apos;, since they are not looking at thread anymore.
- As Adam noted, ChildThreadDOMData can go away - but at the same time MainThreadDOMData can go away as well, so there is only single DOMData class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416254</commentid>
    <comment_count>10</comment_count>
      <attachid>96188</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-06 20:31:31 -0700</bug_when>
    <thetext>Created attachment 96188
More cleanup + renames</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416255</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-06 20:33:40 -0700</bug_when>
    <thetext>Attachment 96188 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/bindings/v8/DOMData.cpp:63:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416258</commentid>
    <comment_count>12</comment_count>
      <attachid>96189</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-06 20:40:07 -0700</bug_when>
    <thetext>Created attachment 96189
Updated threading comment in DOMDataStore.cpp

This patch generates bogus style error (comparison with 0 inside UNLIKELY)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416259</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-06 20:41:31 -0700</bug_when>
    <thetext>Attachment 96189 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/bindings/v8/DOMData.cpp:63:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416315</commentid>
    <comment_count>14</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-06-06 22:05:39 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=96189) [details]
&gt; Updated threading comment in DOMDataStore.cpp
&gt; 
&gt; This patch generates bogus style error (comparison with 0 inside UNLIKELY)

1. You could use !!a instead of a != 0.
2. More importantly, UNLIKELY only appears to be defined for GCC.

I think you can get the same result by reversing the if.

if (!context)
    return m_defaultStore;
return *context-&gt;world()-&gt;domDataStore();

(You could still add LIKELY here if it was useful.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416329</commentid>
    <comment_count>15</comment_count>
      <attachid>96189</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-06 22:21:46 -0700</bug_when>
    <thetext>Comment on attachment 96189
Updated threading comment in DOMDataStore.cpp

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

This looks great.  There&apos;s probably another round of cleanup we can do here, but we can do that in a subsequent patch.

&gt; Source/WebCore/bindings/v8/DOMData.cpp:74
&gt; +
&gt; +

This diff seem unneeded.

&gt; Source/WebCore/bindings/v8/DOMData.h:54
&gt; -        virtual DOMDataStore&amp; getStore() = 0;
&gt; +        DOMDataStore&amp; getStore() { return getMainThreadStore(); }

Now that this function isn&apos;t virtual, it seems like we don&apos;t need to separate these calls, right?

&gt; Source/WebCore/bindings/v8/DOMData.h:62
&gt; -        ThreadIdentifier owningThread() const { return m_owningThread; }
&gt; +        static DOMDataStore&amp; getCurrentMainThreadStore() { return getCurrent()-&gt;getMainThreadStore(); }

Do we still need the concept of &quot;MainThreadStore&quot; or can we remove all mentions of that too now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416362</commentid>
    <comment_count>16</comment_count>
      <attachid>96189</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-06-06 23:19:22 -0700</bug_when>
    <thetext>Comment on attachment 96189
Updated threading comment in DOMDataStore.cpp

Clearing flags on attachment: 96189

Committed r88221: &lt;http://trac.webkit.org/changeset/88221&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416363</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-06-06 23:19:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416399</commentid>
    <comment_count>18</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-06-07 01:28:33 -0700</bug_when>
    <thetext>Build fix landed in http://trac.webkit.org/changeset/88224.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416470</commentid>
    <comment_count>19</comment_count>
      <attachid>96189</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-06-07 06:44:21 -0700</bug_when>
    <thetext>Comment on attachment 96189
Updated threading comment in DOMDataStore.cpp

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416510</commentid>
    <comment_count>20</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-07 08:02:43 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 96189 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96189&amp;action=review
&gt; 
&gt; This looks great.  There&apos;s probably another round of cleanup we can do here, but we can do that in a subsequent patch.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/DOMData.cpp:74
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; This diff seem unneeded.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/DOMData.h:54
&gt; &gt; -        virtual DOMDataStore&amp; getStore() = 0;
&gt; &gt; +        DOMDataStore&amp; getStore() { return getMainThreadStore(); }
&gt; 
&gt; Now that this function isn&apos;t virtual, it seems like we don&apos;t need to separate these calls, right?
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/DOMData.h:62
&gt; &gt; -        ThreadIdentifier owningThread() const { return m_owningThread; }
&gt; &gt; +        static DOMDataStore&amp; getCurrentMainThreadStore() { return getCurrent()-&gt;getMainThreadStore(); }
&gt; 
&gt; Do we still need the concept of &quot;MainThreadStore&quot; or can we remove all mentions of that too now?

All this is going to change soon when we will have one isolate per V8IsolatedWorld.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416511</commentid>
    <comment_count>21</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-07 08:03:42 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; Created an attachment (id=96189) [details] [details]
&gt; &gt; Updated threading comment in DOMDataStore.cpp
&gt; &gt; 
&gt; &gt; This patch generates bogus style error (comparison with 0 inside UNLIKELY)
&gt; 
&gt; 1. You could use !!a instead of a != 0.
&gt; 2. More importantly, UNLIKELY only appears to be defined for GCC.
&gt; 
&gt; I think you can get the same result by reversing the if.
&gt; 
&gt; if (!context)
&gt;     return m_defaultStore;
&gt; return *context-&gt;world()-&gt;domDataStore();
&gt; 
&gt; (You could still add LIKELY here if it was useful.)

I think we should change the style tool to be aware of LIKELY and UNLIKELY.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416512</commentid>
    <comment_count>22</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-06-07 08:07:26 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Build fix landed in http://trac.webkit.org/changeset/88224.

Another build fix for the debug build landed in:
http://trac.webkit.org/changeset/88231</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416525</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-07 08:42:05 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; (You could still add LIKELY here if it was useful.)
&gt; 
&gt; I think we should change the style tool to be aware of LIKELY and UNLIKELY.

Please file a bug and CC dave levin.  Hacking cpp_style.py is quite easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416858</commentid>
    <comment_count>24</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-07 15:39:26 -0700</bug_when>
    <thetext>Patch has broken chromium debug tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416966</commentid>
    <comment_count>25</comment_count>
      <attachid>96342</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-07 17:39:43 -0700</bug_when>
    <thetext>Created attachment 96342
Fixing the chromium tests and chromium debug build issues

This patch removes all ASSERT(WTF::isMainThread()), since chromium worker processes do not execute worker scripts on the WTF main thread.

I am not asking for commit queue because I want to push this patch through Chromium trybots as well, but will appreciate the review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417042</commentid>
    <comment_count>26</comment_count>
      <attachid>96363</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-07 19:51:17 -0700</bug_when>
    <thetext>Created attachment 96363
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417044</commentid>
    <comment_count>27</comment_count>
      <attachid>96363</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-07 19:51:48 -0700</bug_when>
    <thetext>Comment on attachment 96363
Rebased patch

This patch passes chromium trybots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417050</commentid>
    <comment_count>28</comment_count>
      <attachid>96367</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-07 20:30:55 -0700</bug_when>
    <thetext>Created attachment 96367
Removes one more WTF::isMainThread assertion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417335</commentid>
    <comment_count>29</comment_count>
      <attachid>96367</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-08 10:31:15 -0700</bug_when>
    <thetext>Comment on attachment 96367
Removes one more WTF::isMainThread assertion

Clearing flags on attachment: 96367

Committed r88357: &lt;http://trac.webkit.org/changeset/88357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417336</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-08 10:31:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96147</attachid>
            <date>2011-06-06 16:18:46 -0700</date>
            <delta_ts>2011-06-06 17:27:04 -0700</delta_ts>
            <desc>Removing multithreaded logic</desc>
            <filename>62164.patch</filename>
            <type>text/plain</type>
            <size>8193</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YmI5MzQxLi5lZDE5ZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTEtMDYtMDYgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxNjQKKyAgICAgICAgUmVtb3ZlICJtdWx0aS10
aHJlYWRlZCIgbG9naWMgaW4gVjggRE9NRGF0YSwgRE9NRGF0YVN0b3JlIGFuZCBmcmllbmRzCisg
ICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bnRlc3RlZCBhbmQgdW51c2VkCisKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9ET01EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGE6
OkRPTURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YTo6Z2V0Q3VycmVudCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvRE9NRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YTo6
aGFuZGxlV2Vha09iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6RE9NRGF0YVN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpET01EYXRhU3RvcmU6OndlYWtOb2RlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L0RPTURhdGFTdG9yZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnZpc2l0RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6dmlzaXRET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OnZpc2l0QWN0aXZlRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjp2aXNpdERPTVNWR0VsZW1lbnRJbnN0YW5jZXNJbkN1cnJlbnRUaHJlYWQpOgorCiAy
MDExLTA2LTA2ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NRGF0YS5jcHAKaW5kZXggNTY4ZmMyYy4uNmVlZDBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NRGF0YS5jcHAKQEAgLTM5LDggKzM5LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogRE9NRGF0YTo6RE9NRGF0YSgpCi0gICAgOiBtX293bmluZ1RocmVhZChXVEY6OmN1cnJlbnRU
aHJlYWQoKSkKIHsKKyAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiB9CiAKIERPTURh
dGE6On5ET01EYXRhKCkKQEAgLTQ5LDExICs0OSw4IEBAIERPTURhdGE6On5ET01EYXRhKCkKIAog
RE9NRGF0YSogRE9NRGF0YTo6Z2V0Q3VycmVudCgpCiB7Ci0gICAgaWYgKFdURjo6aXNNYWluVGhy
ZWFkKCkpCi0gICAgICAgIHJldHVybiBNYWluVGhyZWFkRE9NRGF0YTo6Z2V0Q3VycmVudCgpOwot
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlRocmVhZFNwZWNpZmljPENoaWxkVGhyZWFk
RE9NRGF0YT4sIGNoaWxkVGhyZWFkRE9NRGF0YSwgKCkpOwotICAgIHJldHVybiBjaGlsZFRocmVh
ZERPTURhdGE7CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIHJldHVybiBN
YWluVGhyZWFkRE9NRGF0YTo6Z2V0Q3VycmVudCgpOwogfQogCiB2b2lkIERPTURhdGE6OmRlcmVm
T2JqZWN0KFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgdm9pZCogZG9tT2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YS5oCmluZGV4IGIwNDI2MDYuLjc3YWMwM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKQEAgLTU4LDggKzU4LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgICAgICBzdGF0aWMgdm9pZCBy
ZW1vdmVPYmplY3RzRnJvbVdyYXBwZXJNYXAoRE9NRGF0YVN0b3JlKiBzdG9yZSwgQWJzdHJhY3RX
ZWFrUmVmZXJlbmNlTWFwPFQsIHY4OjpPYmplY3Q+JiBkb21NYXApOwogCi0gICAgICAgIFRocmVh
ZElkZW50aWZpZXIgb3duaW5nVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9vd25pbmdUaHJlYWQ7
IH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KFdyYXBw
ZXJUeXBlSW5mbyogdHlwZSwgdm9pZCogZG9tT2JqZWN0KTsKIApAQCAtNzMsMTkgKzcxLDE3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICB2OE9iamVjdC5EaXNwb3NlKCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0KLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBt
X293bmluZ1RocmVhZDsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2
b2lkIERPTURhdGE6OmhhbmRsZVdlYWtPYmplY3QoRE9NRGF0YVN0b3JlOjpET01XcmFwcGVyTWFw
VHlwZSBtYXBUeXBlLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB2OE9iamVjdCwgVCogZG9t
T2JqZWN0KQogICAgIHsKKyAgICAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogICAg
ICAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGUgPSBWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBl
KHY4T2JqZWN0KTsKICAgICAgICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRhU3RvcmU6OmFs
bFN0b3JlcygpOwogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgRE9NRGF0YVN0
b3JlKiBzdG9yZSA9IGxpc3RbaV07Ci0gICAgICAgICAgICBBU1NFUlQoc3RvcmUtPmRvbURhdGEo
KS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOwogCiAgICAgICAgICAg
ICBET01XcmFwcGVyTWFwPFQ+KiBkb21NYXAgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyTWFwPFQ+
Kj4oc3RvcmUtPmdldERPTVdyYXBwZXJNYXAobWFwVHlwZSkpOwogICAgICAgICAgICAgaWYgKGRv
bU1hcC0+cmVtb3ZlSWZQcmVzZW50KGRvbU9iamVjdCwgdjhPYmplY3QpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAppbmRleCAyMWI0N2E0Li40ZjE1OWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKQEAgLTkx
LDEzICs5MSwxMyBAQCBET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZShET01EYXRhKiBkb21EYXRh
KQogI2VuZGlmCiAgICAgLCBtX2RvbURhdGEoZG9tRGF0YSkKIHsKLSAgICBXVEY6Ok11dGV4TG9j
a2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOworICAgIEFTU0VSVChX
VEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpLmFwcGVu
ZCh0aGlzKTsKIH0KIAogRE9NRGF0YVN0b3JlOjp+RE9NRGF0YVN0b3JlKCkKIHsKLSAgICBXVEY6
Ok11dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOworICAg
IEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBET01EYXRhU3RvcmU6OmFsbFN0b3Jl
cygpLnJlbW92ZShET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpLmZpbmQodGhpcykpOwogfQogCkBA
IC0xMDcsMTIgKzEwNyw2IEBAIERPTURhdGFMaXN0JiBET01EYXRhU3RvcmU6OmFsbFN0b3Jlcygp
CiAgIHJldHVybiBzdGF0aWNET01EYXRhTGlzdDsKIH0KIAotV1RGOjpNdXRleCYgRE9NRGF0YVN0
b3JlOjphbGxTdG9yZXNNdXRleCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6Ok11
dGV4LCBzdGF0aWNET01EYXRhTGlzdE11dGV4LCAoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY0RPTURh
dGFMaXN0TXV0ZXg7Ci19Ci0KIHZvaWQqIERPTURhdGFTdG9yZTo6Z2V0RE9NV3JhcHBlck1hcChE
T01XcmFwcGVyTWFwVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTU2LDEy
ICsxNTAsMTAgQEAgdm9pZCBET01EYXRhU3RvcmU6OndlYWtOb2RlQ2FsbGJhY2sodjg6OlBlcnNp
c3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogZG9tT2IKICAgICAvLyBOb2RlIHdyYXBwZXJz
IG11c3QgYmUgSlMgb2JqZWN0cy4KICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB2OE9i
amVjdCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKIAotICAgIFdU
Rjo6TXV0ZXhMb2NrZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6YWxsU3RvcmVzTXV0ZXgoKSk7CiAg
ICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBET01EYXRh
U3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKICAgICAgICAgaWYgKHN0b3JlLT5kb21Ob2RlTWFwKCku
cmVtb3ZlSWZQcmVzZW50KG5vZGUsIHY4T2JqZWN0KSkgewotICAgICAgICAgICAgQVNTRVJUKHN0
b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsK
ICAgICAgICAgICAgIG5vZGUtPmRlcmVmKCk7IC8vIE5vYm9keSBvdmVycmlkZXMgTm9kZTo6ZGVy
ZWYgc28gaXQncyBzYWZlCiAgICAgICAgICAgICByZXR1cm47IC8vIFRoZXJlIG1pZ2h0IGJlIGF0
IG1vc3Qgb25lIHdyYXBwZXIgZm9yIHRoZSBub2RlIGluIHdvcmxkJ3MgbWFwcwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCmluZGV4IGZmYjlkZjUu
LjM3M2Q4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCkBA
IC03Nyw4ICs3Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBBIGxpc3Qg
b2YgYWxsIERPTURhdGFTdG9yZSBvYmplY3RzIGluIHRoZSBjdXJyZW50IFY4IGluc3RhbmNlICh0
aHJlYWQpLiBOb3JtYWxseSwgZWFjaCBXb3JsZCBoYXMgYSBET01EYXRhU3RvcmUuCiAgICAgICAg
IHN0YXRpYyBET01EYXRhTGlzdCYgYWxsU3RvcmVzKCk7Ci0gICAgICAgIC8vIE11dGV4IHRvIHBy
b3RlY3QgYWdhaW5zdCBjb25jdXJyZW50IGFjY2VzcyBvZiBET01EYXRhTGlzdC4KLSAgICAgICAg
c3RhdGljIFdURjo6TXV0ZXgmIGFsbFN0b3Jlc011dGV4KCk7CiAKICAgICAgICAgRE9NRGF0YSog
ZG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tRGF0YTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTU1hcC5jcHAKaW5kZXggNDZhMjNhMC4uZDBmMjFhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcApAQCAtMTE2LDEyICsxMTYsMTAgQEAgdm9pZCB2
aXNpdERPTU5vZGVzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3Iq
IHZpc2l0b3IpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogCi0gICAgV1RGOjpNdXRl
eExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpKTsKKyAgICBBU1NF
UlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAgICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRh
U3RvcmU6OmFsbFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXpl
KCk7ICsraSkgewogICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKLSAgICAg
ICAgaWYgKCFzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRU
aHJlYWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHN0b3JlLT5kb21Ob2Rl
TWFwKCkudmlzaXQoc3RvcmUsIHZpc2l0b3IpOwogICAgIH0KQEAgLTEzMSwxMiArMTI5LDEwIEBA
IHZvaWQgdmlzaXRET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8dm9pZD46
OlZpc2l0b3IqIHZpc2l0b3IpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogCi0gICAg
V1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpKTsK
KyAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAgICAgRE9NRGF0YUxpc3QmIGxpc3Qg
PSBET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtp
XTsKLSAgICAgICAgaWYgKCFzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6
OmN1cnJlbnRUaHJlYWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHN0b3Jl
LT5kb21PYmplY3RNYXAoKS52aXNpdChzdG9yZSwgdmlzaXRvcik7CiAgICAgfQpAQCAtMTQ2LDEy
ICsxNDIsMTAgQEAgdm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoRE9N
V3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciogdmlzaXRvcikKIHsKICAgICB2ODo6SGFuZGxlU2Nv
cGUgc2NvcGU7CiAKLSAgICBXVEY6Ok11dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFs
bFN0b3Jlc011dGV4KCkpOworICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBE
T01EYXRhTGlzdCYgbGlzdCA9IERPTURhdGFTdG9yZTo6YWxsU3RvcmVzKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIERPTURhdGFTdG9y
ZSogc3RvcmUgPSBsaXN0W2ldOwotICAgICAgICBpZiAoIXN0b3JlLT5kb21EYXRhKCktPm93bmlu
Z1RocmVhZCgpID09IFdURjo6Y3VycmVudFRocmVhZCgpKQotICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgc3RvcmUtPmFjdGl2ZURvbU9iamVjdE1hcCgpLnZpc2l0KHN0b3JlLCB2aXNp
dG9yKTsKICAgICB9CkBAIC0xNjMsMTIgKzE1NywxMCBAQCB2b2lkIHZpc2l0RE9NU1ZHRWxlbWVu
dEluc3RhbmNlc0luQ3VycmVudFRocmVhZChET01XcmFwcGVyTWFwPFNWR0VsZW1lbnRJbnN0YW5j
ZQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAotICAgIFdURjo6TXV0ZXhMb2NrZXIg
bG9ja2VyKERPTURhdGFTdG9yZTo6YWxsU3RvcmVzTXV0ZXgoKSk7CisgICAgQVNTRVJUKFdURjo6
aXNNYWluVGhyZWFkKCkpOwogICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjph
bGxTdG9yZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07Ci0gICAgICAgIGlmICgh
c3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBzdG9yZS0+ZG9tU3ZnRWxlbWVudElu
c3RhbmNlTWFwKCkudmlzaXQoc3RvcmUsIHZpc2l0b3IpOwogICAgIH0K
</data>
<flag name="review"
          id="89779"
          type_id="1"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96159</attachid>
            <date>2011-06-06 17:27:04 -0700</date>
            <delta_ts>2011-06-06 20:31:31 -0700</delta_ts>
            <desc>CR feedback - more context in ChangeLog</desc>
            <filename>62164.patch</filename>
            <type>text/plain</type>
            <size>8596</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YmI5MzQxLi45ZWRhZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTEtMDYtMDYgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxNjQKKyAgICAgICAgUmVtb3ZlICJtdWx0aS10
aHJlYWRlZCIgbG9naWMgaW4gVjggRE9NRGF0YSwgRE9NRGF0YVN0b3JlIGFuZCBmcmllbmRzCisg
ICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bnRlc3RlZCBhbmQgdW51c2VkOgorICAgICAg
ICBUaGlzIGlzIGFuIG9sZCBjb2RlIGZyb20gTG9ja2Vycy1iYXNlZCBpbXBsZW1lbnRhdGlvbiBv
ZiBXZWJXb3JrZXJzIGluCisgICAgICAgIFY4IGJpbmRpbmdzLCB0byBtYWtlIHN1cmUgdGhhdCBE
T00gb2JqZWN0cyBhcmUgcmVsZWFzZWQgb24gdGhlIHJpZ2h0IHRocmVhZAorICAgICAgICBldmVu
IHRob3VnaCBHQyBjb3VsZCBoYXZlIGhhcHBlbmVkIG9uIGFueSB0aHJlYWQuIEl0IGlzIGN1cnJl
bnRseSB1bnVzZWQgKHNpbmNlCisgICAgICAgIGN1cnJlbnQgbW9kZWwgaXMgb25lIHdvcmtlciBw
ZXIgcHJvY2VzcykgYW5kIGlzIGJlaW5nIHJlbW92ZWQgYmVjYXVzZSBuZXcgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgb2YgV2ViV29ya2VycyB3aWxsIGJlIHVzaW5nIFY4IGlzb2xhdGVzLgorCisg
ICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01E
YXRhOjpET01EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGE6OmdldEN1cnJlbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURh
dGE6OmhhbmRsZVdlYWtPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6On5ET01EYXRhU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp3ZWFrTm9kZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9ET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTU1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp2aXNpdERPTU5vZGVzSW5DdXJyZW50VGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OnZpc2l0RE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjp2aXNpdEFjdGl2ZURPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6dmlzaXRET01TVkdFbGVtZW50SW5zdGFuY2VzSW5DdXJyZW50VGhyZWFkKToK
KwogMjAxMS0wNi0wNiAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTURhdGEuY3BwCmluZGV4IDU2OGZjMmMuLjZlZWQwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RPTURhdGEuY3BwCkBAIC0zOSw4ICszOSw4IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIERPTURhdGE6OkRPTURhdGEoKQotICAgIDogbV9vd25pbmdUaHJlYWQoV1RGOjpjdXJy
ZW50VGhyZWFkKCkpCiB7CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogfQogCiBE
T01EYXRhOjp+RE9NRGF0YSgpCkBAIC00OSwxMSArNDksOCBAQCBET01EYXRhOjp+RE9NRGF0YSgp
CiAKIERPTURhdGEqIERPTURhdGE6OmdldEN1cnJlbnQoKQogewotICAgIGlmIChXVEY6OmlzTWFp
blRocmVhZCgpKQotICAgICAgICByZXR1cm4gTWFpblRocmVhZERPTURhdGE6OmdldEN1cnJlbnQo
KTsKLQotICAgIERFRklORV9TVEFUSUNfTE9DQUwoV1RGOjpUaHJlYWRTcGVjaWZpYzxDaGlsZFRo
cmVhZERPTURhdGE+LCBjaGlsZFRocmVhZERPTURhdGEsICgpKTsKLSAgICByZXR1cm4gY2hpbGRU
aHJlYWRET01EYXRhOworICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1
cm4gTWFpblRocmVhZERPTURhdGE6OmdldEN1cnJlbnQoKTsKIH0KIAogdm9pZCBET01EYXRhOjpk
ZXJlZk9iamVjdChXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIGRvbU9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuaAppbmRleCBiMDQyNjA2Li43N2FjMDNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5oCkBAIC01OCw4ICs1OCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICAgICAgc3RhdGljIHZv
aWQgcmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwKERPTURhdGFTdG9yZSogc3RvcmUsIEFic3Ry
YWN0V2Vha1JlZmVyZW5jZU1hcDxULCB2ODo6T2JqZWN0PiYgZG9tTWFwKTsKIAotICAgICAgICBU
aHJlYWRJZGVudGlmaWVyIG93bmluZ1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nVGhy
ZWFkOyB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgdm9pZCBkZXJlZk9iamVjdChX
cmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIGRvbU9iamVjdCk7CiAKQEAgLTczLDE5ICs3MSwx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgdjhPYmplY3QuRGlzcG9z
ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotCi0gICAgICAgIFRocmVhZElkZW50aWZp
ZXIgbV9vd25pbmdUaHJlYWQ7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgdm9pZCBET01EYXRhOjpoYW5kbGVXZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBl
ck1hcFR5cGUgbWFwVHlwZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gdjhPYmplY3QsIFQq
IGRvbU9iamVjdCkKICAgICB7CisgICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlID0gVjhET01XcmFwcGVyOjpkb21XcmFwcGVy
VHlwZSh2OE9iamVjdCk7CiAgICAgICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3Jl
OjphbGxTdG9yZXMoKTsKICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIERPTURh
dGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOwotICAgICAgICAgICAgQVNTRVJUKHN0b3JlLT5kb21E
YXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKIAogICAgICAg
ICAgICAgRE9NV3JhcHBlck1hcDxUPiogZG9tTWFwID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlck1h
cDxUPio+KHN0b3JlLT5nZXRET01XcmFwcGVyTWFwKG1hcFR5cGUpKTsKICAgICAgICAgICAgIGlm
IChkb21NYXAtPnJlbW92ZUlmUHJlc2VudChkb21PYmplY3QsIHY4T2JqZWN0KSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggMjFiNDdhNC4uNGYx
NTllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBA
IC05MSwxMyArOTEsMTMgQEAgRE9NRGF0YVN0b3JlOjpET01EYXRhU3RvcmUoRE9NRGF0YSogZG9t
RGF0YSkKICNlbmRpZgogICAgICwgbV9kb21EYXRhKGRvbURhdGEpCiB7Ci0gICAgV1RGOjpNdXRl
eExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpKTsKKyAgICBBU1NF
UlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAgICAgRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKS5h
cHBlbmQodGhpcyk7CiB9CiAKIERPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSgpCiB7Ci0gICAg
V1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpKTsK
KyAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAgICAgRE9NRGF0YVN0b3JlOjphbGxT
dG9yZXMoKS5yZW1vdmUoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKS5maW5kKHRoaXMpKTsKIH0K
IApAQCAtMTA3LDEyICsxMDcsNiBAQCBET01EYXRhTGlzdCYgRE9NRGF0YVN0b3JlOjphbGxTdG9y
ZXMoKQogICByZXR1cm4gc3RhdGljRE9NRGF0YUxpc3Q7CiB9CiAKLVdURjo6TXV0ZXgmIERPTURh
dGFTdG9yZTo6YWxsU3RvcmVzTXV0ZXgoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoV1RG
OjpNdXRleCwgc3RhdGljRE9NRGF0YUxpc3RNdXRleCwgKCkpOwotICAgIHJldHVybiBzdGF0aWNE
T01EYXRhTGlzdE11dGV4OwotfQotCiB2b2lkKiBET01EYXRhU3RvcmU6OmdldERPTVdyYXBwZXJN
YXAoRE9NV3JhcHBlck1hcFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTE1
NiwxMiArMTUwLDEwIEBAIHZvaWQgRE9NRGF0YVN0b3JlOjp3ZWFrTm9kZUNhbGxiYWNrKHY4OjpQ
ZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHZvaWQqIGRvbU9iCiAgICAgLy8gTm9kZSB3cmFw
cGVycyBtdXN0IGJlIEpTIG9iamVjdHMuCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
djhPYmplY3QgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CiAKLSAg
ICBXVEY6Ok11dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkp
OwogICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRE9N
RGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07CiAgICAgICAgIGlmIChzdG9yZS0+ZG9tTm9kZU1h
cCgpLnJlbW92ZUlmUHJlc2VudChub2RlLCB2OE9iamVjdCkpIHsKLSAgICAgICAgICAgIEFTU0VS
VChzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQo
KSk7CiAgICAgICAgICAgICBub2RlLT5kZXJlZigpOyAvLyBOb2JvZHkgb3ZlcnJpZGVzIE5vZGU6
OmRlcmVmIHNvIGl0J3Mgc2FmZQogICAgICAgICAgICAgcmV0dXJuOyAvLyBUaGVyZSBtaWdodCBi
ZSBhdCBtb3N0IG9uZSB3cmFwcGVyIGZvciB0aGUgbm9kZSBpbiB3b3JsZCdzIG1hcHMKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAppbmRleCBmZmI5
ZGY1Li4zNzNkODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01E
YXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUu
aApAQCAtNzcsOCArNzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gQSBs
aXN0IG9mIGFsbCBET01EYXRhU3RvcmUgb2JqZWN0cyBpbiB0aGUgY3VycmVudCBWOCBpbnN0YW5j
ZSAodGhyZWFkKS4gTm9ybWFsbHksIGVhY2ggV29ybGQgaGFzIGEgRE9NRGF0YVN0b3JlLgogICAg
ICAgICBzdGF0aWMgRE9NRGF0YUxpc3QmIGFsbFN0b3JlcygpOwotICAgICAgICAvLyBNdXRleCB0
byBwcm90ZWN0IGFnYWluc3QgY29uY3VycmVudCBhY2Nlc3Mgb2YgRE9NRGF0YUxpc3QuCi0gICAg
ICAgIHN0YXRpYyBXVEY6Ok11dGV4JiBhbGxTdG9yZXNNdXRleCgpOwogCiAgICAgICAgIERPTURh
dGEqIGRvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2RvbURhdGE7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01NYXAuY3BwCmluZGV4IDQ2YTIzYTAuLmQwZjIxYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKQEAgLTExNiwxMiArMTE2LDEwIEBAIHZv
aWQgdmlzaXRET01Ob2Rlc0luQ3VycmVudFRocmVhZChET01XcmFwcGVyTWFwPE5vZGU+OjpWaXNp
dG9yKiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAotICAgIFdURjo6
TXV0ZXhMb2NrZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6YWxsU3RvcmVzTXV0ZXgoKSk7CisgICAg
QVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9N
RGF0YVN0b3JlOjphbGxTdG9yZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Qu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07Ci0g
ICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJy
ZW50VGhyZWFkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBzdG9yZS0+ZG9t
Tm9kZU1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsKICAgICB9CkBAIC0xMzEsMTIgKzEyOSwx
MCBAQCB2b2lkIHZpc2l0RE9NT2JqZWN0c0luQ3VycmVudFRocmVhZChET01XcmFwcGVyTWFwPHZv
aWQ+OjpWaXNpdG9yKiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAot
ICAgIFdURjo6TXV0ZXhMb2NrZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6YWxsU3RvcmVzTXV0ZXgo
KSk7CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogICAgIERPTURhdGFMaXN0JiBs
aXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxp
c3RbaV07Ci0gICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBz
dG9yZS0+ZG9tT2JqZWN0TWFwKCkudmlzaXQoc3RvcmUsIHZpc2l0b3IpOwogICAgIH0KQEAgLTE0
NiwxMiArMTQyLDEwIEBAIHZvaWQgdmlzaXRBY3RpdmVET01PYmplY3RzSW5DdXJyZW50VGhyZWFk
KERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZpc2l0b3IpCiB7CiAgICAgdjg6OkhhbmRs
ZVNjb3BlIHNjb3BlOwogCi0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3Jl
OjphbGxTdG9yZXNNdXRleCgpKTsKKyAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAg
ICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBET01EYXRh
U3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKLSAgICAgICAgaWYgKCFzdG9yZS0+ZG9tRGF0YSgpLT5v
d25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIHN0b3JlLT5hY3RpdmVEb21PYmplY3RNYXAoKS52aXNpdChzdG9yZSwg
dmlzaXRvcik7CiAgICAgfQpAQCAtMTYzLDEyICsxNTcsMTAgQEAgdm9pZCB2aXNpdERPTVNWR0Vs
ZW1lbnRJbnN0YW5jZXNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDxTVkdFbGVtZW50SW5z
dGFuY2UKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAKLSAgICBXVEY6Ok11dGV4TG9j
a2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOworICAgIEFTU0VSVChX
VEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBET01EYXRhTGlzdCYgbGlzdCA9IERPTURhdGFTdG9y
ZTo6YWxsU3RvcmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsg
KytpKSB7CiAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOwotICAgICAgICBp
ZiAoIXN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6Y3VycmVudFRocmVh
ZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc3RvcmUtPmRvbVN2Z0VsZW1l
bnRJbnN0YW5jZU1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="89793"
          type_id="1"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96188</attachid>
            <date>2011-06-06 20:31:31 -0700</date>
            <delta_ts>2011-06-06 20:40:07 -0700</delta_ts>
            <desc>More cleanup + renames</desc>
            <filename>62164.patch</filename>
            <type>text/plain</type>
            <size>26554</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYjM3ZDM4Li5jY2NjZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTEtMDYtMDYgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxNjQKKyAgICAgICAgUmVtb3ZlICJtdWx0aS10
aHJlYWRlZCIgbG9naWMgaW4gVjggRE9NRGF0YSwgRE9NRGF0YVN0b3JlIGFuZCBmcmllbmRzCisg
ICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bnRlc3RlZCBhbmQgdW51c2VkOgorICAgICAg
ICBUaGlzIGlzIGFuIG9sZCBjb2RlIGZyb20gTG9ja2Vycy1iYXNlZCBpbXBsZW1lbnRhdGlvbiBv
ZiBXZWJXb3JrZXJzIGluCisgICAgICAgIFY4IGJpbmRpbmdzLCB0byBtYWtlIHN1cmUgdGhhdCBE
T00gb2JqZWN0cyBhcmUgcmVsZWFzZWQgb24gdGhlIHJpZ2h0IHRocmVhZAorICAgICAgICBldmVu
IHRob3VnaCBHQyBjb3VsZCBoYXZlIGhhcHBlbmVkIG9uIGFueSB0aHJlYWQuIEl0IGlzIGN1cnJl
bnRseSB1bnVzZWQgKHNpbmNlCisgICAgICAgIGN1cnJlbnQgbW9kZWwgaXMgb25lIHdvcmtlciBw
ZXIgcHJvY2VzcykgYW5kIGlzIGJlaW5nIHJlbW92ZWQgYmVjYXVzZSBuZXcgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgb2YgV2ViV29ya2VycyB3aWxsIGJlIHVzaW5nIFY4IGlzb2xhdGVzLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0NoaWxkVGhyZWFk
RE9NRGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRE
T01EYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpET01EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TURhdGE6OmdldEN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YTo6Z2V0TWFpblRo
cmVhZFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpET01EYXRhOjpnZXRTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpn
ZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGE6Omhh
bmRsZVdlYWtPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01EYXRhU3RvcmU6On5ET01EYXRhU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NRGF0YVN0b3JlOjp3ZWFrTm9kZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0
YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvTWFpblRocmVhZERPTURhdGEu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTU1hcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRET01EYXRhU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dmlzaXRET01O
b2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjp2aXNpdERPTU9iamVjdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6dmlzaXRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0RE9N
U1ZHRWxlbWVudEluc3RhbmNlcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdD
Q29udHJvbGxlcjo6Z2NFcGlsb2d1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisKIDIwMTEtMDYtMDYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11
cmEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTA2ZTBkMS4uNzg0ZDBhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMTk1MSw4ICsxOTUxLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpjL09iakNO
b2RlRmlsdGVyQ29uZGl0aW9uLm1tJywKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpjL1B1Ymxp
Y0RPTUludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRP
YmplY3QubW0nLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5j
cHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9ET01EYXRhLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvRE9NRGF0YS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUu
Y3BwJywKQEAgLTE5NjgsOCArMTk2Niw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSXNv
bGF0ZWRXb3JsZC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5o
JywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAnLAotICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9O
UFY4T2JqZWN0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9N
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DaGlsZFRocmVhZERPTURhdGEu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2NlMGY0Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNo
aWxkVGhyZWFkRE9NRGF0YS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNoaWxkVGhyZWFk
RE9NRGF0YTo6Q2hpbGRUaHJlYWRET01EYXRhKCkKLSAgICA6IG1fZGVmYXVsdFN0b3JlKHRoaXMp
Ci17Ci19Ci0KLURPTURhdGFTdG9yZSYgQ2hpbGRUaHJlYWRET01EYXRhOjpnZXRTdG9yZSgpCi17
Ci0gICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKLSAgICAvLyBDdXJyZW50bHksIGNo
aWxkIHRocmVhZHMgaGF2ZSBvbmx5IG9uZSB3b3JsZC4KLSAgICByZXR1cm4gbV9kZWZhdWx0U3Rv
cmU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01EYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDUwOTdjODYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ2hp
bGRUaHJlYWRET01EYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBD
aGlsZFRocmVhZERPTURhdGFfaAotI2RlZmluZSBDaGlsZFRocmVhZERPTURhdGFfaAotCi0jaW5j
bHVkZSAiRE9NRGF0YS5oIgotI2luY2x1ZGUgIlNjb3BlZERPTURhdGFTdG9yZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBDaGlsZFRocmVhZERPTURhdGEgOiBwdWJsaWMg
RE9NRGF0YSB7Ci0gICAgcHVibGljOgotICAgICAgICBDaGlsZFRocmVhZERPTURhdGEoKTsKLSAg
ICAgICAgRE9NRGF0YVN0b3JlJiBnZXRTdG9yZSgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
U2NvcGVkRE9NRGF0YVN0b3JlIG1fZGVmYXVsdFN0b3JlOwotICAgIH07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENoaWxkVGhyZWFkRE9NRGF0YV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCmluZGV4IDU2OGZjMmMuLjQyODQ2M2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCkBAIC0zMCwxNyArMzAsMTYgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTURhdGEuaCIKLQotI2luY2x1ZGUgIkNoaWxk
VGhyZWFkRE9NRGF0YS5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWRET01EYXRhLmgiCisjaW5jbHVk
ZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBET01EYXRhOjpET01EYXRhKCkKLSAgICA6IG1fb3duaW5nVGhyZWFkKFdURjo6Y3Vy
cmVudFRocmVhZCgpKQorICAgIDogbV9kZWZhdWx0U3RvcmUodGhpcykKIHsKKyAgICBBU1NFUlQo
V1RGOjppc01haW5UaHJlYWQoKSk7CiB9CiAKIERPTURhdGE6On5ET01EYXRhKCkKQEAgLTQ5LDEx
ICs0OCwyMSBAQCBET01EYXRhOjp+RE9NRGF0YSgpCiAKIERPTURhdGEqIERPTURhdGE6OmdldEN1
cnJlbnQoKQogewotICAgIGlmIChXVEY6OmlzTWFpblRocmVhZCgpKQotICAgICAgICByZXR1cm4g
TWFpblRocmVhZERPTURhdGE6OmdldEN1cnJlbnQoKTsKKyAgICBBU1NFUlQoV1RGOjppc01haW5U
aHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01EYXRhLCBtYWluVGhyZWFkRE9N
RGF0YSwgKCkpOworICAgIHJldHVybiAmbWFpblRocmVhZERPTURhdGE7Cit9CiAKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFdURjo6VGhyZWFkU3BlY2lmaWM8Q2hpbGRUaHJlYWRET01EYXRhPiwg
Y2hpbGRUaHJlYWRET01EYXRhLCAoKSk7Ci0gICAgcmV0dXJuIGNoaWxkVGhyZWFkRE9NRGF0YTsK
K0RPTURhdGFTdG9yZSYgRE9NRGF0YTo6Z2V0TWFpblRocmVhZFN0b3JlKCkKK3sKKyAgICAvLyBU
aGlzIGlzIGJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBub24tdmlydHVhbCBtZXRob2QgZnJvbSBn
ZXRTdG9yZSgpCisgICAgLy8gc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCBieSBnZXRDdXJyZW50
TWFpblRocmVhZFN0b3JlLCB3aGljaCBpcworICAgIC8vIGEgaG90IHNwb3QgaW4gRHJvbWFlbyBE
T00gdGVzdHMuCisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIFY4SXNvbGF0
ZWRDb250ZXh0KiBjb250ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKTsKKyAg
ICBpZiAoVU5MSUtFTFkoY29udGV4dCAhPSAwKSkKKyAgICAgICAgcmV0dXJuICpjb250ZXh0LT53
b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsKKyAgICByZXR1cm4gbV9kZWZhdWx0U3RvcmU7CiB9CiAK
IHZvaWQgRE9NRGF0YTo6ZGVyZWZPYmplY3QoV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2b2lkKiBk
b21PYmplY3QpCkBAIC02MSw0ICs3MCw2IEBAIHZvaWQgRE9NRGF0YTo6ZGVyZWZPYmplY3QoV3Jh
cHBlclR5cGVJbmZvKiB0eXBlLCB2b2lkKiBkb21PYmplY3QpCiAgICAgdHlwZS0+ZGVyZWZPYmpl
Y3QoZG9tT2JqZWN0KTsKIH0KIAorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGEuaAppbmRleCBiMDQyNjA2Li43Y2RhZTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIERPTURh
dGFfaAogCiAjaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiU3RhdGljRE9NRGF0
YVN0b3JlLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTUwLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IH5ET01EYXRhKCk7CiAKICAgICAgICAgc3RhdGljIERPTURhdGEqIGdldEN1cnJlbnQoKTsKLSAg
ICAgICAgdmlydHVhbCBET01EYXRhU3RvcmUmIGdldFN0b3JlKCkgPSAwOworICAgICAgICBET01E
YXRhU3RvcmUmIGdldFN0b3JlKCkgeyByZXR1cm4gZ2V0TWFpblRocmVhZFN0b3JlKCk7IH0KIAog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgICAgICBzdGF0aWMgdm9pZCBoYW5kbGVX
ZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1hcFR5cGUsIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+LCBUKiBkb21PYmplY3QpOwpAQCAtNTgsNyArNTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgICAgIHN0YXRpYyB2
b2lkIHJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcChET01EYXRhU3RvcmUqIHN0b3JlLCBBYnN0
cmFjdFdlYWtSZWZlcmVuY2VNYXA8VCwgdjg6Ok9iamVjdD4mIGRvbU1hcCk7CiAKLSAgICAgICAg
VGhyZWFkSWRlbnRpZmllciBvd25pbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX293bmluZ1Ro
cmVhZDsgfQorICAgICAgICBzdGF0aWMgRE9NRGF0YVN0b3JlJiBnZXRDdXJyZW50TWFpblRocmVh
ZFN0b3JlKCkgeyByZXR1cm4gZ2V0Q3VycmVudCgpLT5nZXRNYWluVGhyZWFkU3RvcmUoKTsgfQog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIHZvaWQgZGVyZWZPYmplY3QoV3JhcHBlclR5
cGVJbmZvKiB0eXBlLCB2b2lkKiBkb21PYmplY3QpOwpAQCAtNzQsMTggKzc1LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBUaHJl
YWRJZGVudGlmaWVyIG1fb3duaW5nVGhyZWFkOworICAgICAgICBET01EYXRhU3RvcmUmIGdldE1h
aW5UaHJlYWRTdG9yZSgpOworICAgICAgICBTdGF0aWNET01EYXRhU3RvcmUgbV9kZWZhdWx0U3Rv
cmU7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBET01EYXRh
OjpoYW5kbGVXZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1hcFR5cGUgbWFwVHlw
ZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gdjhPYmplY3QsIFQqIGRvbU9iamVjdCkKICAg
ICB7CisgICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICAgICAgV3JhcHBl
clR5cGVJbmZvKiB0eXBlID0gVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh2OE9iamVjdCk7
CiAgICAgICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsK
ICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUg
PSBsaXN0W2ldOwotICAgICAgICAgICAgQVNTRVJUKHN0b3JlLT5kb21EYXRhKCktPm93bmluZ1Ro
cmVhZCgpID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKIAogICAgICAgICAgICAgRE9NV3JhcHBl
ck1hcDxUPiogZG9tTWFwID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlck1hcDxUPio+KHN0b3JlLT5n
ZXRET01XcmFwcGVyTWFwKG1hcFR5cGUpKTsKICAgICAgICAgICAgIGlmIChkb21NYXAtPnJlbW92
ZUlmUHJlc2VudChkb21PYmplY3QsIHY4T2JqZWN0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggMjFiNDdhNC4uNGYxNTllNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC05MSwxMyArOTEsMTMg
QEAgRE9NRGF0YVN0b3JlOjpET01EYXRhU3RvcmUoRE9NRGF0YSogZG9tRGF0YSkKICNlbmRpZgog
ICAgICwgbV9kb21EYXRhKGRvbURhdGEpCiB7Ci0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIo
RE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpKTsKKyAgICBBU1NFUlQoV1RGOjppc01haW5U
aHJlYWQoKSk7CiAgICAgRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKS5hcHBlbmQodGhpcyk7CiB9
CiAKIERPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSgpCiB7Ci0gICAgV1RGOjpNdXRleExvY2tl
ciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpKTsKKyAgICBBU1NFUlQoV1RG
Ojppc01haW5UaHJlYWQoKSk7CiAgICAgRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKS5yZW1vdmUo
RE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKS5maW5kKHRoaXMpKTsKIH0KIApAQCAtMTA3LDEyICsx
MDcsNiBAQCBET01EYXRhTGlzdCYgRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKQogICByZXR1cm4g
c3RhdGljRE9NRGF0YUxpc3Q7CiB9CiAKLVdURjo6TXV0ZXgmIERPTURhdGFTdG9yZTo6YWxsU3Rv
cmVzTXV0ZXgoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoV1RGOjpNdXRleCwgc3RhdGlj
RE9NRGF0YUxpc3RNdXRleCwgKCkpOwotICAgIHJldHVybiBzdGF0aWNET01EYXRhTGlzdE11dGV4
OwotfQotCiB2b2lkKiBET01EYXRhU3RvcmU6OmdldERPTVdyYXBwZXJNYXAoRE9NV3JhcHBlck1h
cFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTE1NiwxMiArMTUwLDEwIEBA
IHZvaWQgRE9NRGF0YVN0b3JlOjp3ZWFrTm9kZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpW
YWx1ZT4gdmFsdWUsIHZvaWQqIGRvbU9iCiAgICAgLy8gTm9kZSB3cmFwcGVycyBtdXN0IGJlIEpT
IG9iamVjdHMuCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gdjhPYmplY3QgPSB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CiAKLSAgICBXVEY6Ok11dGV4TG9j
a2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOwogICAgIERPTURhdGFM
aXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9y
ZSA9IGxpc3RbaV07CiAgICAgICAgIGlmIChzdG9yZS0+ZG9tTm9kZU1hcCgpLnJlbW92ZUlmUHJl
c2VudChub2RlLCB2OE9iamVjdCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChzdG9yZS0+ZG9tRGF0
YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CiAgICAgICAgICAg
ICBub2RlLT5kZXJlZigpOyAvLyBOb2JvZHkgb3ZlcnJpZGVzIE5vZGU6OmRlcmVmIHNvIGl0J3Mg
c2FmZQogICAgICAgICAgICAgcmV0dXJuOyAvLyBUaGVyZSBtaWdodCBiZSBhdCBtb3N0IG9uZSB3
cmFwcGVyIGZvciB0aGUgbm9kZSBpbiB3b3JsZCdzIG1hcHMKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAppbmRleCBmZmI5ZGY1Li4zNzNkODVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaApAQCAtNzcsOCArNzcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gQSBsaXN0IG9mIGFsbCBET01E
YXRhU3RvcmUgb2JqZWN0cyBpbiB0aGUgY3VycmVudCBWOCBpbnN0YW5jZSAodGhyZWFkKS4gTm9y
bWFsbHksIGVhY2ggV29ybGQgaGFzIGEgRE9NRGF0YVN0b3JlLgogICAgICAgICBzdGF0aWMgRE9N
RGF0YUxpc3QmIGFsbFN0b3JlcygpOwotICAgICAgICAvLyBNdXRleCB0byBwcm90ZWN0IGFnYWlu
c3QgY29uY3VycmVudCBhY2Nlc3Mgb2YgRE9NRGF0YUxpc3QuCi0gICAgICAgIHN0YXRpYyBXVEY6
Ok11dGV4JiBhbGxTdG9yZXNNdXRleCgpOwogCiAgICAgICAgIERPTURhdGEqIGRvbURhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RvbURhdGE7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvTWFpblRocmVhZERPTURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvTWFpblRocmVhZERPTURhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkOWM4NjVjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5U
aHJlYWRET01EYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiTWFpblRocmVhZERPTURhdGEuaCIKLQotI2luY2x1ZGUgIlY4
SXNvbGF0ZWRDb250ZXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTWFpblRocmVhZERP
TURhdGE6Ok1haW5UaHJlYWRET01EYXRhKCkKLSAgICA6IG1fZGVmYXVsdFN0b3JlKHRoaXMpCi17
Ci19Ci0gICAgCi1NYWluVGhyZWFkRE9NRGF0YSogTWFpblRocmVhZERPTURhdGE6OmdldEN1cnJl
bnQoKQotewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKE1haW5UaHJlYWRET01EYXRhLCBtYWluVGhyZWFkRE9NRGF0YSwgKCkpOwotICAg
IHJldHVybiAmbWFpblRocmVhZERPTURhdGE7Ci19Ci0KLURPTURhdGFTdG9yZSYgTWFpblRocmVh
ZERPTURhdGE6OmdldE1haW5UaHJlYWRTdG9yZSgpCi17Ci0gICAgLy8gVGhpcyBpcyBicm9rZW4g
b3V0IGFzIGEgc2VwYXJhdGUgbm9uLXZpcnR1YWwgbWV0aG9kIGZyb20gZ2V0U3RvcmUoKQotICAg
IC8vIHNvIHRoYXQgaXQgY2FuIGJlIGlubGluZWQgYnkgZ2V0Q3VycmVudE1haW5UaHJlYWRTdG9y
ZSwgd2hpY2ggaXMKLSAgICAvLyBhIGhvdCBzcG90IGluIERyb21hZW8gRE9NIHRlc3RzLgotICAg
IEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKLSAgICBWOElzb2xhdGVkQ29udGV4dCogY29u
dGV4dCA9IFY4SXNvbGF0ZWRDb250ZXh0OjpnZXRFbnRlcmVkKCk7Ci0gICAgaWYgKFVOTElLRUxZ
KGNvbnRleHQgIT0gMCkpCi0gICAgICAgIHJldHVybiAqY29udGV4dC0+d29ybGQoKS0+ZG9tRGF0
YVN0b3JlKCk7Ci0gICAgcmV0dXJuIG1fZGVmYXVsdFN0b3JlOwotfQotCi1ET01EYXRhU3RvcmUm
IE1haW5UaHJlYWRET01EYXRhOjpnZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKCkKLXsKLSAgICBy
ZXR1cm4gZ2V0Q3VycmVudCgpLT5nZXRNYWluVGhyZWFkU3RvcmUoKTsKLX0KLQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9N
YWluVGhyZWFkRE9NRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTWFpblRocmVh
ZERPTURhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThmOTljOS4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWFpblRocmVhZERPTURhdGFfaAot
I2RlZmluZSBNYWluVGhyZWFkRE9NRGF0YV9oCi0KLSNpbmNsdWRlICJET01EYXRhLmgiCi0jaW5j
bHVkZSAiU3RhdGljRE9NRGF0YVN0b3JlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAg
IGNsYXNzIE1haW5UaHJlYWRET01EYXRhIDogcHVibGljIERPTURhdGEgewotICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIE1haW5UaHJlYWRET01EYXRhKiBnZXRDdXJyZW50KCk7IC8vIENhbGxl
ciBtdXN0IGJlIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICAgICAgc3RhdGljIERPTURhdGFTdG9y
ZSYgZ2V0Q3VycmVudE1haW5UaHJlYWRTdG9yZSgpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICB2aXJ0dWFsIERPTURhdGFTdG9yZSYgZ2V0U3RvcmUoKSB7IHJldHVybiBnZXRNYWluVGhyZWFk
U3RvcmUoKTsgfQotICAgICAgICAKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIE1haW5UaHJlYWRE
T01EYXRhKCk7Ci0gICAgICAgIERPTURhdGFTdG9yZSYgZ2V0TWFpblRocmVhZFN0b3JlKCk7Ci0K
LSAgICAgICAgU3RhdGljRE9NRGF0YVN0b3JlIG1fZGVmYXVsdFN0b3JlOwotICAgICAgICAvLyBO
b3RlOiBUaGUgRE9NRGF0YVN0b3JlcyBmb3IgaXNvbGF0ZWQgd29ybGQgYXJlIG93bmVkIGJ5IHRo
ZSB3b3JsZCBvYmplY3QuCi0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gTWFpblRocmVhZERPTURhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01NYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01N
YXAuY3BwCmluZGV4IDQ2YTIzYTAuLjllMDE2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTU1hcC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkRPTURhdGEuaCIK
ICNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJNYWluVGhyZWFkRE9NRGF0YS5o
IgogI2luY2x1ZGUgIlNjb3BlZERPTURhdGFTdG9yZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC01MSwxMiArNTAsOCBAQCBzdGF0aWMgYm9vbCBmYXN0ZXJET01TdG9yZUFjY2VzcyA9IGZh
bHNlOwogCiBzdGF0aWMgaW5saW5lIERPTURhdGFTdG9yZSYgZ2V0RE9NRGF0YVN0b3JlKCkKIHsK
LSAgICBpZiAoTElLRUxZKGZhc3RlckRPTVN0b3JlQWNjZXNzKSkgewotICAgICAgICBBU1NFUlQo
V1RGOjppc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIHJldHVybiBNYWluVGhyZWFkRE9NRGF0YTo6
Z2V0Q3VycmVudE1haW5UaHJlYWRTdG9yZSgpOwotICAgIH0KLQotICAgIHJldHVybiBET01EYXRh
OjpnZXRDdXJyZW50KCktPmdldFN0b3JlKCk7CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFk
KCkpOworICAgIHJldHVybiBET01EYXRhOjpnZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKCk7CiB9
CiAKIHZvaWQgZW5hYmxlRmFzdGVyRE9NU3RvcmVBY2Nlc3MoKQpAQCAtMTEyLDQ2ICsxMDcsNDAg
QEAgdm9pZCByZW1vdmVBbGxET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKCkKICAgICBET01EYXRh
OjpyZW1vdmVPYmplY3RzRnJvbVdyYXBwZXJNYXA8dm9pZD4oJnN0b3JlLCBzdG9yZS5hY3RpdmVE
b21PYmplY3RNYXAoKSk7CiB9CiAKLXZvaWQgdmlzaXRET01Ob2Rlc0luQ3VycmVudFRocmVhZChE
T01XcmFwcGVyTWFwPE5vZGU+OjpWaXNpdG9yKiB2aXNpdG9yKQordm9pZCB2aXNpdERPTU5vZGVz
KERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3IqIHZpc2l0b3IpCiB7CiAgICAgdjg6OkhhbmRs
ZVNjb3BlIHNjb3BlOwogCi0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3Jl
OjphbGxTdG9yZXNNdXRleCgpKTsKKyAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAg
ICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBET01EYXRh
U3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKLSAgICAgICAgaWYgKCFzdG9yZS0+ZG9tRGF0YSgpLT5v
d25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIHN0b3JlLT5kb21Ob2RlTWFwKCkudmlzaXQoc3RvcmUsIHZpc2l0b3Ip
OwogICAgIH0KIH0KIAotdm9pZCB2aXNpdERPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoRE9NV3Jh
cHBlck1hcDx2b2lkPjo6VmlzaXRvciogdmlzaXRvcikKK3ZvaWQgdmlzaXRET01PYmplY3RzKERP
TVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZpc2l0b3IpCiB7CiAgICAgdjg6OkhhbmRsZVNj
b3BlIHNjb3BlOwogCi0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjph
bGxTdG9yZXNNdXRleCgpKTsKKyAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAgICAg
RE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBET01EYXRhU3Rv
cmUqIHN0b3JlID0gbGlzdFtpXTsKLSAgICAgICAgaWYgKCFzdG9yZS0+ZG9tRGF0YSgpLT5vd25p
bmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIHN0b3JlLT5kb21PYmplY3RNYXAoKS52aXNpdChzdG9yZSwgdmlzaXRvcik7
CiAgICAgfQogfQogCi12b2lkIHZpc2l0QWN0aXZlRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZChE
T01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yKiB2aXNpdG9yKQordm9pZCB2aXNpdEFjdGl2ZURP
TU9iamVjdHMoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciogdmlzaXRvcikKIHsKICAgICB2
ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAKLSAgICBXVEY6Ok11dGV4TG9ja2VyIGxvY2tlcihET01E
YXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOworICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVh
ZCgpKTsKICAgICBET01EYXRhTGlzdCYgbGlzdCA9IERPTURhdGFTdG9yZTo6YWxsU3RvcmVzKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAg
IERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOwotICAgICAgICBpZiAoIXN0b3JlLT5kb21E
YXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6Y3VycmVudFRocmVhZCgpKQotICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgc3RvcmUtPmFjdGl2ZURvbU9iamVjdE1hcCgpLnZpc2l0
KHN0b3JlLCB2aXNpdG9yKTsKICAgICB9CkBAIC0xNTksMTYgKzE0OCwxNCBAQCB2b2lkIHZpc2l0
QWN0aXZlRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZChET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNp
dG9yKiB2aXNpdG9yKQogCiAjaWYgRU5BQkxFKFNWRykKIAotdm9pZCB2aXNpdERPTVNWR0VsZW1l
bnRJbnN0YW5jZXNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDxTVkdFbGVtZW50SW5zdGFu
Y2U+OjpWaXNpdG9yKiB2aXNpdG9yKQordm9pZCB2aXNpdERPTVNWR0VsZW1lbnRJbnN0YW5jZXMo
RE9NV3JhcHBlck1hcDxTVkdFbGVtZW50SW5zdGFuY2U+OjpWaXNpdG9yKiB2aXNpdG9yKQogewog
ICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAotICAgIFdURjo6TXV0ZXhMb2NrZXIgbG9ja2Vy
KERPTURhdGFTdG9yZTo6YWxsU3RvcmVzTXV0ZXgoKSk7CisgICAgQVNTRVJUKFdURjo6aXNNYWlu
VGhyZWFkKCkpOwogICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9y
ZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07Ci0gICAgICAgIGlmICghc3RvcmUt
PmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBzdG9yZS0+ZG9tU3ZnRWxlbWVudEluc3RhbmNl
TWFwKCkudmlzaXQoc3RvcmUsIHZpc2l0b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTU1hcC5oCmluZGV4IDUxZDkzM2EuLjg0Y2Y3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01NYXAuaApAQCAtMTU4LDIzICsxNTgsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgLy8gQSBtYXAgZnJvbSBET00gbm9kZSB0byBpdHMgSlMgd3JhcHBlci4KICAgICBE
T01Ob2RlTWFwcGluZyYgZ2V0RE9NTm9kZU1hcCgpOwotICAgIHZvaWQgdmlzaXRET01Ob2Rlc0lu
Q3VycmVudFRocmVhZChET01XcmFwcGVyTWFwPE5vZGU+OjpWaXNpdG9yKik7CisgICAgdm9pZCB2
aXNpdERPTU5vZGVzKERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3IqKTsKIAogICAgIC8vIEEg
bWFwIGZyb20gYSBET00gb2JqZWN0IChub24tbm9kZSkgdG8gaXRzIEpTIHdyYXBwZXIuIFRoaXMg
bWFwIGRvZXMgbm90IGNvbnRhaW4gdGhlIERPTSBvYmplY3RzIHdoaWNoIGNhbiBoYXZlIHBlbmRp
bmcgYWN0aXZpdHkgKGFjdGl2ZSBkb20gb2JqZWN0cykuCiAgICAgRE9NV3JhcHBlck1hcDx2b2lk
PiYgZ2V0RE9NT2JqZWN0TWFwKCk7Ci0gICAgdm9pZCB2aXNpdERPTU9iamVjdHNJbkN1cnJlbnRU
aHJlYWQoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciopOworICAgIHZvaWQgdmlzaXRET01P
YmplY3RzKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqKTsKIAogICAgIC8vIEEgbWFwIGZy
b20gYSBET00gb2JqZWN0IHRvIGl0cyBKUyB3cmFwcGVyIGZvciBET00gb2JqZWN0cyB3aGljaCBj
YW4gaGF2ZSBwZW5kaW5nIGFjdGl2aXR5LgogICAgIERPTVdyYXBwZXJNYXA8dm9pZD4mIGdldEFj
dGl2ZURPTU9iamVjdE1hcCgpOwotICAgIHZvaWQgdmlzaXRBY3RpdmVET01PYmplY3RzSW5DdXJy
ZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqKTsKKyAgICB2b2lkIHZpc2l0
QWN0aXZlRE9NT2JqZWN0cyhET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yKik7CiAKICAgICAv
LyBUaGlzIHNob3VsZCBiZSBjYWxsZWQgdG8gcmVtb3ZlIGFsbCBET00gb2JqZWN0cyBhc3NvY2lh
dGVkIHdpdGggdGhlIGN1cnJlbnQgdGhyZWFkIHdoZW4gaXQgaXMgdGVhcmluZyBkb3duLgotICAg
IHZvaWQgcmVtb3ZlQWxsRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCgpOworICAgIHZvaWQgcmVt
b3ZlQWxsRE9NT2JqZWN0cygpOwogCiAjaWYgRU5BQkxFKFNWRykKICAgICAvLyBBIG1hcCBmb3Ig
U1ZHRWxlbWVudEluc3RhbmNlcyB0byBpdHMgSlMgd3JhcHBlci4KICAgICBET01XcmFwcGVyTWFw
PFNWR0VsZW1lbnRJbnN0YW5jZT4mIGdldERPTVNWR0VsZW1lbnRJbnN0YW5jZU1hcCgpOwotICAg
IHZvaWQgdmlzaXRTVkdFbGVtZW50SW5zdGFuY2VzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJN
YXA8U1ZHRWxlbWVudEluc3RhbmNlPjo6VmlzaXRvciopOworICAgIHZvaWQgdmlzaXRTVkdFbGVt
ZW50SW5zdGFuY2VzKERPTVdyYXBwZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNlPjo6VmlzaXRvciop
OwogI2VuZGlmCiAKICAgICB2b2lkIGVuYWJsZUZhc3RlckRPTVN0b3JlQWNjZXNzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggNzRjMTY1
OS4uZDViNjczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9s
bGVyLmNwcApAQCAtNDU4LDEyICs0NTgsMTIgQEAgdm9pZCBWOEdDQ29udHJvbGxlcjo6Z2NQcm9s
b2d1ZSgpCiAgICAgLy8gUnVuIHRocm91Z2ggYWxsIG9iamVjdHMgd2l0aCBwb3NzaWJsZSBwZW5k
aW5nIGFjdGl2aXR5IG1ha2luZyB0aGVpcgogICAgIC8vIHdyYXBwZXJzIG5vbiB3ZWFrIGlmIHRo
ZXJlIGlzIHBlbmRpbmcgYWN0aXZpdHkuCiAgICAgR0NQcm9sb2d1ZVZpc2l0b3IgcHJvbG9ndWVW
aXNpdG9yOwotICAgIHZpc2l0QWN0aXZlRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCgmcHJvbG9n
dWVWaXNpdG9yKTsKKyAgICB2aXNpdEFjdGl2ZURPTU9iamVjdHMoJnByb2xvZ3VlVmlzaXRvcik7
CiAKICAgICAvLyBDcmVhdGUgb2JqZWN0IGdyb3Vwcy4KICAgICBHcm91cGVyVmlzaXRvciBncm91
cGVyVmlzaXRvcjsKLSAgICB2aXNpdERPTU5vZGVzSW5DdXJyZW50VGhyZWFkKCZncm91cGVyVmlz
aXRvcik7Ci0gICAgdmlzaXRET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKCZncm91cGVyVmlzaXRv
cik7CisgICAgdmlzaXRET01Ob2RlcygmZ3JvdXBlclZpc2l0b3IpOworICAgIHZpc2l0RE9NT2Jq
ZWN0cygmZ3JvdXBlclZpc2l0b3IpOwogICAgIGdyb3VwZXJWaXNpdG9yLmFwcGx5R3JvdXBpbmco
KTsKIAogICAgIC8vIENsZWFuIHNpbmdsZSBlbGVtZW50IGNhY2hlIGZvciBzdHJpbmcgY29udmVy
c2lvbnMuCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBWOEdDQ29udHJvbGxlcjo6Z2NFcGlsb2d1
ZSgpCiAgICAgLy8gUnVuIHRocm91Z2ggYWxsIG9iamVjdHMgd2l0aCBwZW5kaW5nIGFjdGl2aXR5
IG1ha2luZyB0aGVpciB3cmFwcGVycyB3ZWFrCiAgICAgLy8gYWdhaW4uCiAgICAgR0NFcGlsb2d1
ZVZpc2l0b3IgZXBpbG9ndWVWaXNpdG9yOwotICAgIHZpc2l0QWN0aXZlRE9NT2JqZWN0c0luQ3Vy
cmVudFRocmVhZCgmZXBpbG9ndWVWaXNpdG9yKTsKKyAgICB2aXNpdEFjdGl2ZURPTU9iamVjdHMo
JmVwaWxvZ3VlVmlzaXRvcik7CiAKICAgICB3b3JraW5nU2V0RXN0aW1hdGVNQiA9IGdldEFjdHVh
bE1lbW9yeVVzYWdlSW5NQigpOwogCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBWOEdDQ29udHJv
bGxlcjo6Z2NFcGlsb2d1ZSgpCiAgICAgdmlzaXRET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKCZk
b21PYmplY3RWaXNpdG9yKTsKIAogICAgIEVuc3VyZVdlYWtET01Ob2RlVmlzaXRvciB3ZWFrRE9N
Tm9kZVZpc2l0b3I7Ci0gICAgdmlzaXRET01Ob2Rlc0luQ3VycmVudFRocmVhZCgmd2Vha0RPTU5v
ZGVWaXNpdG9yKTsKKyAgICB2aXNpdERPTU5vZGVzKCZ3ZWFrRE9NTm9kZVZpc2l0b3IpOwogCiAg
ICAgZW51bWVyYXRlR2xvYmFsSGFuZGxlcygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ5Yzc2
ZDQuLmJiODVkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdvcmtlclNjcmlwdENv
bnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIoV29ya2VyQ29udGV4dCogd29ya2VyQ29u
dGV4dCkKIAogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIo
KQogewotICAgIHJlbW92ZUFsbERPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoKTsKKyAgICByZW1v
dmVBbGxET01PYmplY3RzKCk7CiB9CiAKIFNjcmlwdFZhbHVlIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCg==
</data>
<flag name="review"
          id="89821"
          type_id="1"
          status="-"
          setter="dslomov"
    />
    <flag name="commit-queue"
          id="89822"
          type_id="3"
          status="-"
          setter="dslomov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96189</attachid>
            <date>2011-06-06 20:40:07 -0700</date>
            <delta_ts>2011-06-07 17:39:43 -0700</delta_ts>
            <desc>Updated threading comment in DOMDataStore.cpp</desc>
            <filename>62164.patch</filename>
            <type>text/plain</type>
            <size>28229</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYjM3ZDM4Li5jY2NjZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTEtMDYtMDYgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxNjQKKyAgICAgICAgUmVtb3ZlICJtdWx0aS10
aHJlYWRlZCIgbG9naWMgaW4gVjggRE9NRGF0YSwgRE9NRGF0YVN0b3JlIGFuZCBmcmllbmRzCisg
ICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bnRlc3RlZCBhbmQgdW51c2VkOgorICAgICAg
ICBUaGlzIGlzIGFuIG9sZCBjb2RlIGZyb20gTG9ja2Vycy1iYXNlZCBpbXBsZW1lbnRhdGlvbiBv
ZiBXZWJXb3JrZXJzIGluCisgICAgICAgIFY4IGJpbmRpbmdzLCB0byBtYWtlIHN1cmUgdGhhdCBE
T00gb2JqZWN0cyBhcmUgcmVsZWFzZWQgb24gdGhlIHJpZ2h0IHRocmVhZAorICAgICAgICBldmVu
IHRob3VnaCBHQyBjb3VsZCBoYXZlIGhhcHBlbmVkIG9uIGFueSB0aHJlYWQuIEl0IGlzIGN1cnJl
bnRseSB1bnVzZWQgKHNpbmNlCisgICAgICAgIGN1cnJlbnQgbW9kZWwgaXMgb25lIHdvcmtlciBw
ZXIgcHJvY2VzcykgYW5kIGlzIGJlaW5nIHJlbW92ZWQgYmVjYXVzZSBuZXcgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgb2YgV2ViV29ya2VycyB3aWxsIGJlIHVzaW5nIFY4IGlzb2xhdGVzLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0NoaWxkVGhyZWFk
RE9NRGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRE
T01EYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpET01EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TURhdGE6OmdldEN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YTo6Z2V0TWFpblRo
cmVhZFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpET01EYXRhOjpnZXRTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpn
ZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGE6Omhh
bmRsZVdlYWtPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01EYXRhU3RvcmU6On5ET01EYXRhU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NRGF0YVN0b3JlOjp3ZWFrTm9kZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0
YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvTWFpblRocmVhZERPTURhdGEu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTU1hcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRET01EYXRhU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dmlzaXRET01O
b2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjp2aXNpdERPTU9iamVjdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6dmlzaXRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0RE9N
U1ZHRWxlbWVudEluc3RhbmNlcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdD
Q29udHJvbGxlcjo6Z2NFcGlsb2d1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisKIDIwMTEtMDYtMDYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11
cmEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTA2ZTBkMS4uNzg0ZDBhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMTk1MSw4ICsxOTUxLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpjL09iakNO
b2RlRmlsdGVyQ29uZGl0aW9uLm1tJywKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpjL1B1Ymxp
Y0RPTUludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRP
YmplY3QubW0nLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5j
cHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9ET01EYXRhLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvRE9NRGF0YS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUu
Y3BwJywKQEAgLTE5NjgsOCArMTk2Niw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSXNv
bGF0ZWRXb3JsZC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5o
JywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAnLAotICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9O
UFY4T2JqZWN0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9N
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DaGlsZFRocmVhZERPTURhdGEu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2NlMGY0Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNo
aWxkVGhyZWFkRE9NRGF0YS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNoaWxkVGhyZWFk
RE9NRGF0YTo6Q2hpbGRUaHJlYWRET01EYXRhKCkKLSAgICA6IG1fZGVmYXVsdFN0b3JlKHRoaXMp
Ci17Ci19Ci0KLURPTURhdGFTdG9yZSYgQ2hpbGRUaHJlYWRET01EYXRhOjpnZXRTdG9yZSgpCi17
Ci0gICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgpKTsKLSAgICAvLyBDdXJyZW50bHksIGNo
aWxkIHRocmVhZHMgaGF2ZSBvbmx5IG9uZSB3b3JsZC4KLSAgICByZXR1cm4gbV9kZWZhdWx0U3Rv
cmU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01EYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDUwOTdjODYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ2hp
bGRUaHJlYWRET01EYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBD
aGlsZFRocmVhZERPTURhdGFfaAotI2RlZmluZSBDaGlsZFRocmVhZERPTURhdGFfaAotCi0jaW5j
bHVkZSAiRE9NRGF0YS5oIgotI2luY2x1ZGUgIlNjb3BlZERPTURhdGFTdG9yZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBDaGlsZFRocmVhZERPTURhdGEgOiBwdWJsaWMg
RE9NRGF0YSB7Ci0gICAgcHVibGljOgotICAgICAgICBDaGlsZFRocmVhZERPTURhdGEoKTsKLSAg
ICAgICAgRE9NRGF0YVN0b3JlJiBnZXRTdG9yZSgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
U2NvcGVkRE9NRGF0YVN0b3JlIG1fZGVmYXVsdFN0b3JlOwotICAgIH07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENoaWxkVGhyZWFkRE9NRGF0YV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCmluZGV4IDU2OGZjMmMuLjQyODQ2M2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCkBAIC0zMCwxNyArMzAsMTYgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTURhdGEuaCIKLQotI2luY2x1ZGUgIkNoaWxk
VGhyZWFkRE9NRGF0YS5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWRET01EYXRhLmgiCisjaW5jbHVk
ZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBET01EYXRhOjpET01EYXRhKCkKLSAgICA6IG1fb3duaW5nVGhyZWFkKFdURjo6Y3Vy
cmVudFRocmVhZCgpKQorICAgIDogbV9kZWZhdWx0U3RvcmUodGhpcykKIHsKKyAgICBBU1NFUlQo
V1RGOjppc01haW5UaHJlYWQoKSk7CiB9CiAKIERPTURhdGE6On5ET01EYXRhKCkKQEAgLTQ5LDEx
ICs0OCwyMSBAQCBET01EYXRhOjp+RE9NRGF0YSgpCiAKIERPTURhdGEqIERPTURhdGE6OmdldEN1
cnJlbnQoKQogewotICAgIGlmIChXVEY6OmlzTWFpblRocmVhZCgpKQotICAgICAgICByZXR1cm4g
TWFpblRocmVhZERPTURhdGE6OmdldEN1cnJlbnQoKTsKKyAgICBBU1NFUlQoV1RGOjppc01haW5U
aHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01EYXRhLCBtYWluVGhyZWFkRE9N
RGF0YSwgKCkpOworICAgIHJldHVybiAmbWFpblRocmVhZERPTURhdGE7Cit9CiAKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFdURjo6VGhyZWFkU3BlY2lmaWM8Q2hpbGRUaHJlYWRET01EYXRhPiwg
Y2hpbGRUaHJlYWRET01EYXRhLCAoKSk7Ci0gICAgcmV0dXJuIGNoaWxkVGhyZWFkRE9NRGF0YTsK
K0RPTURhdGFTdG9yZSYgRE9NRGF0YTo6Z2V0TWFpblRocmVhZFN0b3JlKCkKK3sKKyAgICAvLyBU
aGlzIGlzIGJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBub24tdmlydHVhbCBtZXRob2QgZnJvbSBn
ZXRTdG9yZSgpCisgICAgLy8gc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCBieSBnZXRDdXJyZW50
TWFpblRocmVhZFN0b3JlLCB3aGljaCBpcworICAgIC8vIGEgaG90IHNwb3QgaW4gRHJvbWFlbyBE
T00gdGVzdHMuCisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIFY4SXNvbGF0
ZWRDb250ZXh0KiBjb250ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKTsKKyAg
ICBpZiAoVU5MSUtFTFkoY29udGV4dCAhPSAwKSkKKyAgICAgICAgcmV0dXJuICpjb250ZXh0LT53
b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsKKyAgICByZXR1cm4gbV9kZWZhdWx0U3RvcmU7CiB9CiAK
IHZvaWQgRE9NRGF0YTo6ZGVyZWZPYmplY3QoV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2b2lkKiBk
b21PYmplY3QpCkBAIC02MSw0ICs3MCw2IEBAIHZvaWQgRE9NRGF0YTo6ZGVyZWZPYmplY3QoV3Jh
cHBlclR5cGVJbmZvKiB0eXBlLCB2b2lkKiBkb21PYmplY3QpCiAgICAgdHlwZS0+ZGVyZWZPYmpl
Y3QoZG9tT2JqZWN0KTsKIH0KIAorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGEuaAppbmRleCBiMDQyNjA2Li43Y2RhZTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIERPTURh
dGFfaAogCiAjaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiU3RhdGljRE9NRGF0
YVN0b3JlLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTUwLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IH5ET01EYXRhKCk7CiAKICAgICAgICAgc3RhdGljIERPTURhdGEqIGdldEN1cnJlbnQoKTsKLSAg
ICAgICAgdmlydHVhbCBET01EYXRhU3RvcmUmIGdldFN0b3JlKCkgPSAwOworICAgICAgICBET01E
YXRhU3RvcmUmIGdldFN0b3JlKCkgeyByZXR1cm4gZ2V0TWFpblRocmVhZFN0b3JlKCk7IH0KIAog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgICAgICBzdGF0aWMgdm9pZCBoYW5kbGVX
ZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1hcFR5cGUsIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+LCBUKiBkb21PYmplY3QpOwpAQCAtNTgsNyArNTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgICAgIHN0YXRpYyB2
b2lkIHJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcChET01EYXRhU3RvcmUqIHN0b3JlLCBBYnN0
cmFjdFdlYWtSZWZlcmVuY2VNYXA8VCwgdjg6Ok9iamVjdD4mIGRvbU1hcCk7CiAKLSAgICAgICAg
VGhyZWFkSWRlbnRpZmllciBvd25pbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX293bmluZ1Ro
cmVhZDsgfQorICAgICAgICBzdGF0aWMgRE9NRGF0YVN0b3JlJiBnZXRDdXJyZW50TWFpblRocmVh
ZFN0b3JlKCkgeyByZXR1cm4gZ2V0Q3VycmVudCgpLT5nZXRNYWluVGhyZWFkU3RvcmUoKTsgfQog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIHZvaWQgZGVyZWZPYmplY3QoV3JhcHBlclR5
cGVJbmZvKiB0eXBlLCB2b2lkKiBkb21PYmplY3QpOwpAQCAtNzQsMTggKzc1LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBUaHJl
YWRJZGVudGlmaWVyIG1fb3duaW5nVGhyZWFkOworICAgICAgICBET01EYXRhU3RvcmUmIGdldE1h
aW5UaHJlYWRTdG9yZSgpOworICAgICAgICBTdGF0aWNET01EYXRhU3RvcmUgbV9kZWZhdWx0U3Rv
cmU7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBET01EYXRh
OjpoYW5kbGVXZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1hcFR5cGUgbWFwVHlw
ZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gdjhPYmplY3QsIFQqIGRvbU9iamVjdCkKICAg
ICB7CisgICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICAgICAgV3JhcHBl
clR5cGVJbmZvKiB0eXBlID0gVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh2OE9iamVjdCk7
CiAgICAgICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsK
ICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUg
PSBsaXN0W2ldOwotICAgICAgICAgICAgQVNTRVJUKHN0b3JlLT5kb21EYXRhKCktPm93bmluZ1Ro
cmVhZCgpID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKIAogICAgICAgICAgICAgRE9NV3JhcHBl
ck1hcDxUPiogZG9tTWFwID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlck1hcDxUPio+KHN0b3JlLT5n
ZXRET01XcmFwcGVyTWFwKG1hcFR5cGUpKTsKICAgICAgICAgICAgIGlmIChkb21NYXAtPnJlbW92
ZUlmUHJlc2VudChkb21PYmplY3QsIHY4T2JqZWN0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggMjFiNDdhNC4uMjVjNWZkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC02MSwyNiArNjEsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBvYmplY3QgZ3JvdXBzIGluIEdDIHByb2xvZ3VlIGNh
bGxiYWNrcy4gVGhlIG1hcmstY29tcGFjdAogLy8gY29sbGVjdG9yIHdpbGwgcmVtb3ZlIHRoZXNl
IGdyb3VwcyBhZnRlciBlYWNoIEdDLgogLy8KLS8vIERPTSBvYmplY3RzIHNob3VsZCBiZSBkZXJl
Zi1lZCBmcm9tIHRoZSBvd25pbmcgdGhyZWFkLCBub3QgdGhlIEdDIHRocmVhZAotLy8gdGhhdCBk
b2VzIG5vdCBvd24gdGhlbS4gSW4gVjgsIEdDIGNhbiBraWNrIGluIGZyb20gYW55IHRocmVhZC4g
VG8gZW5zdXJlCi0vLyB0aGF0IERPTSBvYmplY3RzIGFyZSBhbHdheXMgZGVyZWYtZWQgZnJvbSB0
aGUgb3duaW5nIHRocmVhZCB3aGVuIHJ1bm5pbmcKLS8vIFY4IGluIG11bHRpLXRocmVhZGluZyBl
bnZpcm9ubWVudCwgd2UgZG8gZm9sbG93aW5nOgotLy8gMS4gTWFpbnRhaW4gYSB0aHJlYWQgc3Bl
Y2lmaWMgRE9NIHdyYXBwZXIgbWFwIGZvciBlYWNoIG9iamVjdCBtYXAuCi0vLyAgICAoV2UncmUg
dXNpbmcgVExTIHN1cHBvcnQgZnJvbSBXVEYgaW5zdGVhZCBvZiBiYXNlIHNpbmNlIFY4QmluZGlu
Z3MKLS8vICAgICBkb2VzIG5vdCBkZXBlbmQgb24gYmFzZS4gV2UgZnVydGhlciBhc3N1bWUgdGhh
dCBhbGwgY2hpbGQgdGhyZWFkcwotLy8gICAgIHJ1bm5pbmcgVjggaW5zdGFuY2VzIGFyZSBjcmVh
dGVkIGJ5IFdURiBhbmQgdGh1cyBhIGRlc3RydWN0b3Igd2lsbAotLy8gICAgIGJlIGNhbGxlZCB0
byBjbGVhbiB1cCBhbGwgdGhyZWFkIHNwZWNpZmljIGRhdGEuKQotLy8gMi4gV2hlbiBHQyBoYXBw
ZW5zOgotLy8gICAgMi4xLiBJZiB0aGUgZGVhZCBvYmplY3QgaXMgaW4gR0MgdGhyZWFkJ3MgbWFw
LCByZW1vdmUgdGhlIEpTIHJlZmVyZW5jZQotLy8gICAgICAgICBhbmQgZGVyZWYgdGhlIERPTSBv
YmplY3QuCi0vLyAgICAyLjIuIE90aGVyd2lzZSwgZ28gdGhyb3VnaCBhbGwgdGhyZWFkIG1hcHMg
dG8gZmluZCB0aGUgb3duaW5nIHRocmVhZC4KLS8vICAgICAgICAgUmVtb3ZlIHRoZSBKUyByZWZl
cmVuY2UgZnJvbSB0aGUgb3duaW5nIHRocmVhZCdzIG1hcCBhbmQgbW92ZSB0aGUKLS8vICAgICAg
ICAgRE9NIG9iamVjdCB0byBhIGRlbGF5ZWQgcXVldWUuIFBvc3QgYSB0YXNrIHRvIHRoZSBvd25p
bmcgdGhyZWFkCi0vLyAgICAgICAgIHRvIGhhdmUgaXQgZGVyZWYtZWQgZnJvbSB0aGUgb3duaW5n
IHRocmVhZCBhdCBsYXRlciB0aW1lLgotLy8gMy4gV2hlbiBhIHRocmVhZCBpcyB0ZWFyaW5nIGRv
d24sIGludm9rZSBhIGNsZWFudXAgcm91dGluZSB0byBnbyB0aHJvdWdoCi0vLyAgICBhbGwgb2Jq
ZWN0cyBpbiB0aGUgZGVsYXllZCBxdWV1ZSBhbmQgdGhlIHRocmVhZCBtYXAgYW5kIGRlcmVmIGFs
bCBvZgotLy8gICAgdGhlbS4KLQorLy8gRE9NIG9iamVjdHMgYXJlIGFjY2Vzc2VkIGFuZCBkZXJl
Zi1lZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gQWxsIFY4IGFjY2Vzc2VzCisvLyB0byBET00gb2Jq
ZWN0cyBoYXBwZW4gb24gdGhlIG1haW4gdGhyZWFkLgorLy8gV2hlbiBHQyBoYXBwZW5zLCB3ZSBy
ZW1vdmUgdGhlIEpTIHJlZmVyZW5jZSBhbmQgZGVyZWYgdGhlIERPTSBvYmplY3QuCiAKIERPTURh
dGFTdG9yZTo6RE9NRGF0YVN0b3JlKERPTURhdGEqIGRvbURhdGEpCiAgICAgOiBtX2RvbU5vZGVN
YXAoMCkKQEAgLTkxLDEzICs3NCwxMyBAQCBET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZShET01E
YXRhKiBkb21EYXRhKQogI2VuZGlmCiAgICAgLCBtX2RvbURhdGEoZG9tRGF0YSkKIHsKLSAgICBX
VEY6Ok11dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOwor
ICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBET01EYXRhU3RvcmU6OmFsbFN0
b3JlcygpLmFwcGVuZCh0aGlzKTsKIH0KIAogRE9NRGF0YVN0b3JlOjp+RE9NRGF0YVN0b3JlKCkK
IHsKLSAgICBXVEY6Ok11dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011
dGV4KCkpOworICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBET01EYXRhU3Rv
cmU6OmFsbFN0b3JlcygpLnJlbW92ZShET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpLmZpbmQodGhp
cykpOwogfQogCkBAIC0xMDcsMTIgKzkwLDYgQEAgRE9NRGF0YUxpc3QmIERPTURhdGFTdG9yZTo6
YWxsU3RvcmVzKCkKICAgcmV0dXJuIHN0YXRpY0RPTURhdGFMaXN0OwogfQogCi1XVEY6Ok11dGV4
JiBET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFdURjo6TXV0ZXgsIHN0YXRpY0RPTURhdGFMaXN0TXV0ZXgsICgpKTsKLSAgICByZXR1cm4g
c3RhdGljRE9NRGF0YUxpc3RNdXRleDsKLX0KLQogdm9pZCogRE9NRGF0YVN0b3JlOjpnZXRET01X
cmFwcGVyTWFwKERPTVdyYXBwZXJNYXBUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7
CkBAIC0xNTYsMTIgKzEzMywxMCBAQCB2b2lkIERPTURhdGFTdG9yZTo6d2Vha05vZGVDYWxsYmFj
ayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKiBkb21PYgogICAgIC8vIE5v
ZGUgd3JhcHBlcnMgbXVzdCBiZSBKUyBvYmplY3RzLgogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHY4T2JqZWN0ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
OwogCi0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNN
dXRleCgpKTsKICAgICBET01EYXRhTGlzdCYgbGlzdCA9IERPTURhdGFTdG9yZTo6YWxsU3RvcmVz
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOwogICAgICAgICBpZiAoc3RvcmUtPmRv
bU5vZGVNYXAoKS5yZW1vdmVJZlByZXNlbnQobm9kZSwgdjhPYmplY3QpKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50
VGhyZWFkKCkpOwogICAgICAgICAgICAgbm9kZS0+ZGVyZWYoKTsgLy8gTm9ib2R5IG92ZXJyaWRl
cyBOb2RlOjpkZXJlZiBzbyBpdCdzIHNhZmUKICAgICAgICAgICAgIHJldHVybjsgLy8gVGhlcmUg
bWlnaHQgYmUgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUgaW4gd29ybGQncyBtYXBz
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5k
ZXggZmZiOWRmNS4uMzczZDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmgKQEAgLTc3LDggKzc3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IC8vIEEgbGlzdCBvZiBhbGwgRE9NRGF0YVN0b3JlIG9iamVjdHMgaW4gdGhlIGN1cnJlbnQgVjgg
aW5zdGFuY2UgKHRocmVhZCkuIE5vcm1hbGx5LCBlYWNoIFdvcmxkIGhhcyBhIERPTURhdGFTdG9y
ZS4KICAgICAgICAgc3RhdGljIERPTURhdGFMaXN0JiBhbGxTdG9yZXMoKTsKLSAgICAgICAgLy8g
TXV0ZXggdG8gcHJvdGVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgYWNjZXNzIG9mIERPTURhdGFMaXN0
LgotICAgICAgICBzdGF0aWMgV1RGOjpNdXRleCYgYWxsU3RvcmVzTXV0ZXgoKTsKIAogICAgICAg
ICBET01EYXRhKiBkb21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kb21EYXRhOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDljODY1Yy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWRET01E
YXRhLmgiCi0KLSNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLU1haW5UaHJlYWRET01EYXRhOjpNYWluVGhyZWFkRE9NRGF0YSgpCi0gICAgOiBt
X2RlZmF1bHRTdG9yZSh0aGlzKQotewotfQotICAgIAotTWFpblRocmVhZERPTURhdGEqIE1haW5U
aHJlYWRET01EYXRhOjpnZXRDdXJyZW50KCkKLXsKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJl
YWQoKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChNYWluVGhyZWFkRE9NRGF0YSwgbWFpblRo
cmVhZERPTURhdGEsICgpKTsKLSAgICByZXR1cm4gJm1haW5UaHJlYWRET01EYXRhOwotfQotCi1E
T01EYXRhU3RvcmUmIE1haW5UaHJlYWRET01EYXRhOjpnZXRNYWluVGhyZWFkU3RvcmUoKQotewot
ICAgIC8vIFRoaXMgaXMgYnJva2VuIG91dCBhcyBhIHNlcGFyYXRlIG5vbi12aXJ0dWFsIG1ldGhv
ZCBmcm9tIGdldFN0b3JlKCkKLSAgICAvLyBzbyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVkIGJ5IGdl
dEN1cnJlbnRNYWluVGhyZWFkU3RvcmUsIHdoaWNoIGlzCi0gICAgLy8gYSBob3Qgc3BvdCBpbiBE
cm9tYWVvIERPTSB0ZXN0cy4KLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7Ci0gICAg
VjhJc29sYXRlZENvbnRleHQqIGNvbnRleHQgPSBWOElzb2xhdGVkQ29udGV4dDo6Z2V0RW50ZXJl
ZCgpOwotICAgIGlmIChVTkxJS0VMWShjb250ZXh0ICE9IDApKQotICAgICAgICByZXR1cm4gKmNv
bnRleHQtPndvcmxkKCktPmRvbURhdGFTdG9yZSgpOwotICAgIHJldHVybiBtX2RlZmF1bHRTdG9y
ZTsKLX0KLQotRE9NRGF0YVN0b3JlJiBNYWluVGhyZWFkRE9NRGF0YTo6Z2V0Q3VycmVudE1haW5U
aHJlYWRTdG9yZSgpCi17Ci0gICAgcmV0dXJuIGdldEN1cnJlbnQoKS0+Z2V0TWFpblRocmVhZFN0
b3JlKCk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvTWFpblRocmVhZERPTURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU4Zjk5YzkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
TWFpblRocmVhZERPTURhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IE1haW5UaHJlYWRET01EYXRhX2gKLSNkZWZpbmUgTWFpblRocmVhZERPTURhdGFfaAotCi0jaW5j
bHVkZSAiRE9NRGF0YS5oIgotI2luY2x1ZGUgIlN0YXRpY0RPTURhdGFTdG9yZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBNYWluVGhyZWFkRE9NRGF0YSA6IHB1YmxpYyBE
T01EYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkRE9NRGF0YSog
Z2V0Q3VycmVudCgpOyAvLyBDYWxsZXIgbXVzdCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAg
ICAgIHN0YXRpYyBET01EYXRhU3RvcmUmIGdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUoKTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgdmlydHVhbCBET01EYXRhU3RvcmUmIGdldFN0b3JlKCkg
eyByZXR1cm4gZ2V0TWFpblRocmVhZFN0b3JlKCk7IH0KLSAgICAgICAgCi0KLSAgICBwcml2YXRl
OgotICAgICAgICBNYWluVGhyZWFkRE9NRGF0YSgpOwotICAgICAgICBET01EYXRhU3RvcmUmIGdl
dE1haW5UaHJlYWRTdG9yZSgpOwotCi0gICAgICAgIFN0YXRpY0RPTURhdGFTdG9yZSBtX2RlZmF1
bHRTdG9yZTsKLSAgICAgICAgLy8gTm90ZTogVGhlIERPTURhdGFTdG9yZXMgZm9yIGlzb2xhdGVk
IHdvcmxkIGFyZSBvd25lZCBieSB0aGUgd29ybGQgb2JqZWN0LgotICAgIH07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIE1haW5UaHJlYWRET01EYXRhX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAppbmRleCA0NmEyM2EwLi45ZTAxNjY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAK
ICNpbmNsdWRlICJET01EYXRhLmgiCiAjaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCi0jaW5jbHVk
ZSAiTWFpblRocmVhZERPTURhdGEuaCIKICNpbmNsdWRlICJTY29wZWRET01EYXRhU3RvcmUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsMTIgKzUwLDggQEAgc3RhdGljIGJvb2wgZmFz
dGVyRE9NU3RvcmVBY2Nlc3MgPSBmYWxzZTsKIAogc3RhdGljIGlubGluZSBET01EYXRhU3RvcmUm
IGdldERPTURhdGFTdG9yZSgpCiB7Ci0gICAgaWYgKExJS0VMWShmYXN0ZXJET01TdG9yZUFjY2Vz
cykpIHsKLSAgICAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwotICAgICAgICByZXR1
cm4gTWFpblRocmVhZERPTURhdGE6OmdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUoKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gRE9NRGF0YTo6Z2V0Q3VycmVudCgpLT5nZXRTdG9yZSgpOworICAgIEFT
U0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gRE9NRGF0YTo6Z2V0Q3VycmVu
dE1haW5UaHJlYWRTdG9yZSgpOwogfQogCiB2b2lkIGVuYWJsZUZhc3RlckRPTVN0b3JlQWNjZXNz
KCkKQEAgLTExMiw0NiArMTA3LDQwIEBAIHZvaWQgcmVtb3ZlQWxsRE9NT2JqZWN0c0luQ3VycmVu
dFRocmVhZCgpCiAgICAgRE9NRGF0YTo6cmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwPHZvaWQ+
KCZzdG9yZSwgc3RvcmUuYWN0aXZlRG9tT2JqZWN0TWFwKCkpOwogfQogCi12b2lkIHZpc2l0RE9N
Tm9kZXNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDxOb2RlPjo6VmlzaXRvciogdmlzaXRv
cikKK3ZvaWQgdmlzaXRET01Ob2RlcyhET01XcmFwcGVyTWFwPE5vZGU+OjpWaXNpdG9yKiB2aXNp
dG9yKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAotICAgIFdURjo6TXV0ZXhMb2Nr
ZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6YWxsU3RvcmVzTXV0ZXgoKSk7CisgICAgQVNTRVJUKFdU
Rjo6aXNNYWluVGhyZWFkKCkpOwogICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3Jl
OjphbGxTdG9yZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07Ci0gICAgICAgIGlm
ICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFk
KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBzdG9yZS0+ZG9tTm9kZU1hcCgp
LnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsKICAgICB9CiB9CiAKLXZvaWQgdmlzaXRET01PYmplY3Rz
SW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZpc2l0b3IpCit2
b2lkIHZpc2l0RE9NT2JqZWN0cyhET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yKiB2aXNpdG9y
KQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKIAotICAgIFdURjo6TXV0ZXhMb2NrZXIg
bG9ja2VyKERPTURhdGFTdG9yZTo6YWxsU3RvcmVzTXV0ZXgoKSk7CisgICAgQVNTRVJUKFdURjo6
aXNNYWluVGhyZWFkKCkpOwogICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjph
bGxTdG9yZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07Ci0gICAgICAgIGlmICgh
c3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBzdG9yZS0+ZG9tT2JqZWN0TWFwKCku
dmlzaXQoc3RvcmUsIHZpc2l0b3IpOwogICAgIH0KIH0KIAotdm9pZCB2aXNpdEFjdGl2ZURPTU9i
amVjdHNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciogdmlzaXRv
cikKK3ZvaWQgdmlzaXRBY3RpdmVET01PYmplY3RzKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0
b3IqIHZpc2l0b3IpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogCi0gICAgV1RGOjpN
dXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpKTsKKyAgICBB
U1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAgICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01E
YXRhU3RvcmU6OmFsbFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5z
aXplKCk7ICsraSkgewogICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKLSAg
ICAgICAgaWYgKCFzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJl
bnRUaHJlYWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHN0b3JlLT5hY3Rp
dmVEb21PYmplY3RNYXAoKS52aXNpdChzdG9yZSwgdmlzaXRvcik7CiAgICAgfQpAQCAtMTU5LDE2
ICsxNDgsMTQgQEAgdm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoRE9N
V3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciogdmlzaXRvcikKIAogI2lmIEVOQUJMRShTVkcpCiAK
LXZvaWQgdmlzaXRET01TVkdFbGVtZW50SW5zdGFuY2VzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBw
ZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNlPjo6VmlzaXRvciogdmlzaXRvcikKK3ZvaWQgdmlzaXRE
T01TVkdFbGVtZW50SW5zdGFuY2VzKERPTVdyYXBwZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNlPjo6
VmlzaXRvciogdmlzaXRvcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAKLSAgICBX
VEY6Ok11dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOwor
ICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBET01EYXRhTGlzdCYgbGlzdCA9
IERPTURhdGFTdG9yZTo6YWxsU3RvcmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
aXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ld
OwotICAgICAgICBpZiAoIXN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6
Y3VycmVudFRocmVhZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc3RvcmUt
PmRvbVN2Z0VsZW1lbnRJbnN0YW5jZU1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAppbmRleCA1MWQ5MzNhLi44NGNmNzU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgKQEAgLTE1OCwyMyArMTU4LDIz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIC8vIEEgbWFwIGZyb20gRE9NIG5vZGUgdG8g
aXRzIEpTIHdyYXBwZXIuCiAgICAgRE9NTm9kZU1hcHBpbmcmIGdldERPTU5vZGVNYXAoKTsKLSAg
ICB2b2lkIHZpc2l0RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDxOb2RlPjo6
VmlzaXRvciopOworICAgIHZvaWQgdmlzaXRET01Ob2RlcyhET01XcmFwcGVyTWFwPE5vZGU+OjpW
aXNpdG9yKik7CiAKICAgICAvLyBBIG1hcCBmcm9tIGEgRE9NIG9iamVjdCAobm9uLW5vZGUpIHRv
IGl0cyBKUyB3cmFwcGVyLiBUaGlzIG1hcCBkb2VzIG5vdCBjb250YWluIHRoZSBET00gb2JqZWN0
cyB3aGljaCBjYW4gaGF2ZSBwZW5kaW5nIGFjdGl2aXR5IChhY3RpdmUgZG9tIG9iamVjdHMpLgog
ICAgIERPTVdyYXBwZXJNYXA8dm9pZD4mIGdldERPTU9iamVjdE1hcCgpOwotICAgIHZvaWQgdmlz
aXRET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3Iq
KTsKKyAgICB2b2lkIHZpc2l0RE9NT2JqZWN0cyhET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9y
Kik7CiAKICAgICAvLyBBIG1hcCBmcm9tIGEgRE9NIG9iamVjdCB0byBpdHMgSlMgd3JhcHBlciBm
b3IgRE9NIG9iamVjdHMgd2hpY2ggY2FuIGhhdmUgcGVuZGluZyBhY3Rpdml0eS4KICAgICBET01X
cmFwcGVyTWFwPHZvaWQ+JiBnZXRBY3RpdmVET01PYmplY3RNYXAoKTsKLSAgICB2b2lkIHZpc2l0
QWN0aXZlRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZChET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNp
dG9yKik7CisgICAgdm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHMoRE9NV3JhcHBlck1hcDx2b2lk
Pjo6VmlzaXRvciopOwogCiAgICAgLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHRvIHJlbW92ZSBh
bGwgRE9NIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHRocmVhZCB3aGVuIGl0
IGlzIHRlYXJpbmcgZG93bi4KLSAgICB2b2lkIHJlbW92ZUFsbERPTU9iamVjdHNJbkN1cnJlbnRU
aHJlYWQoKTsKKyAgICB2b2lkIHJlbW92ZUFsbERPTU9iamVjdHMoKTsKIAogI2lmIEVOQUJMRShT
VkcpCiAgICAgLy8gQSBtYXAgZm9yIFNWR0VsZW1lbnRJbnN0YW5jZXMgdG8gaXRzIEpTIHdyYXBw
ZXIuCiAgICAgRE9NV3JhcHBlck1hcDxTVkdFbGVtZW50SW5zdGFuY2U+JiBnZXRET01TVkdFbGVt
ZW50SW5zdGFuY2VNYXAoKTsKLSAgICB2b2lkIHZpc2l0U1ZHRWxlbWVudEluc3RhbmNlc0luQ3Vy
cmVudFRocmVhZChET01XcmFwcGVyTWFwPFNWR0VsZW1lbnRJbnN0YW5jZT46OlZpc2l0b3IqKTsK
KyAgICB2b2lkIHZpc2l0U1ZHRWxlbWVudEluc3RhbmNlcyhET01XcmFwcGVyTWFwPFNWR0VsZW1l
bnRJbnN0YW5jZT46OlZpc2l0b3IqKTsKICNlbmRpZgogCiAgICAgdm9pZCBlbmFibGVGYXN0ZXJE
T01TdG9yZUFjY2VzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDc0YzE2NTkuLmQ1YjY3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAgLTQ1OCwxMiArNDU4LDEyIEBAIHZvaWQg
VjhHQ0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUoKQogICAgIC8vIFJ1biB0aHJvdWdoIGFsbCBvYmpl
Y3RzIHdpdGggcG9zc2libGUgcGVuZGluZyBhY3Rpdml0eSBtYWtpbmcgdGhlaXIKICAgICAvLyB3
cmFwcGVycyBub24gd2VhayBpZiB0aGVyZSBpcyBwZW5kaW5nIGFjdGl2aXR5LgogICAgIEdDUHJv
bG9ndWVWaXNpdG9yIHByb2xvZ3VlVmlzaXRvcjsKLSAgICB2aXNpdEFjdGl2ZURPTU9iamVjdHNJ
bkN1cnJlbnRUaHJlYWQoJnByb2xvZ3VlVmlzaXRvcik7CisgICAgdmlzaXRBY3RpdmVET01PYmpl
Y3RzKCZwcm9sb2d1ZVZpc2l0b3IpOwogCiAgICAgLy8gQ3JlYXRlIG9iamVjdCBncm91cHMuCiAg
ICAgR3JvdXBlclZpc2l0b3IgZ3JvdXBlclZpc2l0b3I7Ci0gICAgdmlzaXRET01Ob2Rlc0luQ3Vy
cmVudFRocmVhZCgmZ3JvdXBlclZpc2l0b3IpOwotICAgIHZpc2l0RE9NT2JqZWN0c0luQ3VycmVu
dFRocmVhZCgmZ3JvdXBlclZpc2l0b3IpOworICAgIHZpc2l0RE9NTm9kZXMoJmdyb3VwZXJWaXNp
dG9yKTsKKyAgICB2aXNpdERPTU9iamVjdHMoJmdyb3VwZXJWaXNpdG9yKTsKICAgICBncm91cGVy
VmlzaXRvci5hcHBseUdyb3VwaW5nKCk7CiAKICAgICAvLyBDbGVhbiBzaW5nbGUgZWxlbWVudCBj
YWNoZSBmb3Igc3RyaW5nIGNvbnZlcnNpb25zLgpAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgVjhH
Q0NvbnRyb2xsZXI6OmdjRXBpbG9ndWUoKQogICAgIC8vIFJ1biB0aHJvdWdoIGFsbCBvYmplY3Rz
IHdpdGggcGVuZGluZyBhY3Rpdml0eSBtYWtpbmcgdGhlaXIgd3JhcHBlcnMgd2VhawogICAgIC8v
IGFnYWluLgogICAgIEdDRXBpbG9ndWVWaXNpdG9yIGVwaWxvZ3VlVmlzaXRvcjsKLSAgICB2aXNp
dEFjdGl2ZURPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoJmVwaWxvZ3VlVmlzaXRvcik7CisgICAg
dmlzaXRBY3RpdmVET01PYmplY3RzKCZlcGlsb2d1ZVZpc2l0b3IpOwogCiAgICAgd29ya2luZ1Nl
dEVzdGltYXRlTUIgPSBnZXRBY3R1YWxNZW1vcnlVc2FnZUluTUIoKTsKIApAQCAtNTM5LDcgKzUz
OSw3IEBAIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjRXBpbG9ndWUoKQogICAgIHZpc2l0RE9NT2Jq
ZWN0c0luQ3VycmVudFRocmVhZCgmZG9tT2JqZWN0VmlzaXRvcik7CiAKICAgICBFbnN1cmVXZWFr
RE9NTm9kZVZpc2l0b3Igd2Vha0RPTU5vZGVWaXNpdG9yOwotICAgIHZpc2l0RE9NTm9kZXNJbkN1
cnJlbnRUaHJlYWQoJndlYWtET01Ob2RlVmlzaXRvcik7CisgICAgdmlzaXRET01Ob2Rlcygmd2Vh
a0RPTU5vZGVWaXNpdG9yKTsKIAogICAgIGVudW1lcmF0ZUdsb2JhbEhhbmRsZXMoKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCBkOWM3NmQ0Li5iYjg1ZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTgsNyAr
NTgsNyBAQCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdv
cmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiAKIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6On5X
b3JrZXJTY3JpcHRDb250cm9sbGVyKCkKIHsKLSAgICByZW1vdmVBbGxET01PYmplY3RzSW5DdXJy
ZW50VGhyZWFkKCk7CisgICAgcmVtb3ZlQWxsRE9NT2JqZWN0cygpOwogfQogCiBTY3JpcHRWYWx1
ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96342</attachid>
            <date>2011-06-07 17:39:43 -0700</date>
            <delta_ts>2011-06-07 19:51:17 -0700</delta_ts>
            <desc>Fixing the chromium tests and chromium debug build issues</desc>
            <filename>62164.patch</filename>
            <type>text/plain</type>
            <size>27206</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYzVlM2NjLi5kZjliNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTEtMDYtMDcgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxNjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMTY0CisgICAgICAgIFJlbW92ZSAibXVsdGktdGhy
ZWFkZWQiIGxvZ2ljIGluIFY4IERPTURhdGEsIERPTURhdGFTdG9yZSBhbmQgZnJpZW5kcworICAg
ICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW50ZXN0ZWQgYW5kIHVudXNlZDoKKyAgICAgICAg
VGhpcyBpcyBhbiBvbGQgY29kZSBmcm9tIExvY2tlcnMtYmFzZWQgaW1wbGVtZW50YXRpb24gb2Yg
V2ViV29ya2VycyBpbgorICAgICAgICBWOCBiaW5kaW5ncywgdG8gbWFrZSBzdXJlIHRoYXQgRE9N
IG9iamVjdHMgYXJlIHJlbGVhc2VkIG9uIHRoZSByaWdodCB0aHJlYWQKKyAgICAgICAgZXZlbiB0
aG91Z2ggR0MgY291bGQgaGF2ZSBoYXBwZW5lZCBvbiBhbnkgdGhyZWFkLiBJdCBpcyBjdXJyZW50
bHkgdW51c2VkIChzaW5jZQorICAgICAgICBjdXJyZW50IG1vZGVsIGlzIG9uZSB3b3JrZXIgcGVy
IHByb2Nlc3MpIGFuZCBpcyBiZWluZyByZW1vdmVkIGJlY2F1c2UgbmV3IGltcGxlbWVudGF0aW9u
CisgICAgICAgIG9mIFdlYldvcmtlcnMgd2lsbCBiZSB1c2luZyBWOCBpc29sYXRlcy4KKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9DaGlsZFRocmVhZERPTURhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0RPTURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YTo6RE9NRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpnZXRDdXJyZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTURhdGE6OmdldE1haW5UaHJlYWRTdG9yZSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
RE9NRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YTo6Z2V0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRGF0YTo6Z2V0Q3VycmVudE1haW5UaHJlYWRTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01EYXRhOjpoYW5kbGVXZWFrT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9ET01EYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpE
T01EYXRhU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp+RE9NRGF0YVN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d2Vha05vZGVDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmg6CisgICAgICAgICogYmluZGlu
Z3MvdjgvTWFpblRocmVhZERPTURhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L01haW5UaHJlYWRET01EYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhET01NYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NRGF0YVN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbW92ZUFsbERPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6dmlz
aXRET01Ob2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjp2aXNpdERPTU9iamVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6dmlzaXRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnZp
c2l0RE9NU1ZHRWxlbWVudEluc3RhbmNlcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01N
YXAuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOEdDQ29udHJvbGxlcjo6Z2NFcGlsb2d1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisKIDIwMTEtMDYtMDcgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJl
YXMgS2xpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZjJkOWIzYi4uZjUyODU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMTk1MSw4ICsxOTUxLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpj
L09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tJywKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpj
L1B1YmxpY0RPTUludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0nLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9N
RGF0YS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9ET01EYXRhLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvRE9NRGF0YS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9ET01EYXRh
U3RvcmUuY3BwJywKQEAgLTE5NjgsOCArMTk2Niw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvSXNvbGF0ZWRXb3JsZC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9KYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxG
cmFtZS5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAn
LAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9OUFY4T2JqZWN0LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L09wdGlvbnNPYmpl
Y3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMjg4ZWQyOS4uN2UwMTcyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KQEAgLTg4LDExICs4OCw5IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4
VWludDE2QXJyYXlDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWlu
dDMyQXJyYXlDdXN0b20uY3BwIFwKICAgICAgICAgXAotICAgICAgICBiaW5kaW5ncy92OC9DaGls
ZFRocmVhZERPTURhdGEuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5j
cHAgXAogICAgICAgICBiaW5kaW5ncy92OC9ET01EYXRhLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L3Y4L0RPTURhdGFTdG9yZS5jcHAgXAotICAgICAgICBiaW5kaW5ncy92OC9NYWluVGhyZWFkRE9N
RGF0YS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgXAogICAgICAgICBiaW5kaW5n
cy92OC9SZXRhaW5lZERPTUluZm8uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9DaGlsZFRocmVhZERPTURhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3N2NlMGY0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0NoaWxk
VGhyZWFkRE9NRGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkNoaWxkVGhyZWFkRE9NRGF0YS5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUNoaWxkVGhyZWFkRE9NRGF0YTo6Q2hpbGRUaHJlYWRET01EYXRhKCkKLSAg
ICA6IG1fZGVmYXVsdFN0b3JlKHRoaXMpCi17Ci19Ci0KLURPTURhdGFTdG9yZSYgQ2hpbGRUaHJl
YWRET01EYXRhOjpnZXRTdG9yZSgpCi17Ci0gICAgQVNTRVJUKCFXVEY6OmlzTWFpblRocmVhZCgp
KTsKLSAgICAvLyBDdXJyZW50bHksIGNoaWxkIHRocmVhZHMgaGF2ZSBvbmx5IG9uZSB3b3JsZC4K
LSAgICByZXR1cm4gbV9kZWZhdWx0U3RvcmU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01EYXRhLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwOTdjODYuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01EYXRhLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDaGlsZFRocmVhZERPTURhdGFfaAotI2RlZmluZSBDaGls
ZFRocmVhZERPTURhdGFfaAotCi0jaW5jbHVkZSAiRE9NRGF0YS5oIgotI2luY2x1ZGUgIlNjb3Bl
ZERPTURhdGFTdG9yZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBDaGls
ZFRocmVhZERPTURhdGEgOiBwdWJsaWMgRE9NRGF0YSB7Ci0gICAgcHVibGljOgotICAgICAgICBD
aGlsZFRocmVhZERPTURhdGEoKTsKLSAgICAgICAgRE9NRGF0YVN0b3JlJiBnZXRTdG9yZSgpOwot
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgU2NvcGVkRE9NRGF0YVN0b3JlIG1fZGVmYXVsdFN0b3Jl
OwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENoaWxkVGhy
ZWFkRE9NRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCmluZGV4IDU2
OGZjMmMuLjc5MjAyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCkBA
IC0zMCwxNiArMzAsMTQgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTURh
dGEuaCIKLQotI2luY2x1ZGUgIkNoaWxkVGhyZWFkRE9NRGF0YS5oIgotI2luY2x1ZGUgIk1haW5U
aHJlYWRET01EYXRhLmgiCisjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRl
ICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRp
b24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBET01EYXRhOjpET01EYXRhKCkKLSAgICA6
IG1fb3duaW5nVGhyZWFkKFdURjo6Y3VycmVudFRocmVhZCgpKQorICAgIDogbV9kZWZhdWx0U3Rv
cmUodGhpcykKIHsKIH0KIApAQCAtNDksMTEgKzQ3LDE5IEBAIERPTURhdGE6On5ET01EYXRhKCkK
IAogRE9NRGF0YSogRE9NRGF0YTo6Z2V0Q3VycmVudCgpCiB7Ci0gICAgaWYgKFdURjo6aXNNYWlu
VGhyZWFkKCkpCi0gICAgICAgIHJldHVybiBNYWluVGhyZWFkRE9NRGF0YTo6Z2V0Q3VycmVudCgp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRE9NRGF0YSwgbWFpblRocmVhZERPTURhdGEsICgp
KTsKKyAgICByZXR1cm4gJm1haW5UaHJlYWRET01EYXRhOworfQogCi0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChXVEY6OlRocmVhZFNwZWNpZmljPENoaWxkVGhyZWFkRE9NRGF0YT4sIGNoaWxkVGhy
ZWFkRE9NRGF0YSwgKCkpOwotICAgIHJldHVybiBjaGlsZFRocmVhZERPTURhdGE7CitET01EYXRh
U3RvcmUmIERPTURhdGE6OmdldE1haW5UaHJlYWRTdG9yZSgpCit7CisgICAgLy8gVGhpcyBpcyBi
cm9rZW4gb3V0IGFzIGEgc2VwYXJhdGUgbm9uLXZpcnR1YWwgbWV0aG9kIGZyb20gZ2V0U3RvcmUo
KQorICAgIC8vIHNvIHRoYXQgaXQgY2FuIGJlIGlubGluZWQgYnkgZ2V0Q3VycmVudE1haW5UaHJl
YWRTdG9yZSwgd2hpY2ggaXMKKyAgICAvLyBhIGhvdCBzcG90IGluIERyb21hZW8gRE9NIHRlc3Rz
LgorICAgIFY4SXNvbGF0ZWRDb250ZXh0KiBjb250ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6Omdl
dEVudGVyZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoY29udGV4dCAhPSAwKSkKKyAgICAgICAgcmV0
dXJuICpjb250ZXh0LT53b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsKKyAgICByZXR1cm4gbV9kZWZh
dWx0U3RvcmU7CiB9CiAKIHZvaWQgRE9NRGF0YTo6ZGVyZWZPYmplY3QoV3JhcHBlclR5cGVJbmZv
KiB0eXBlLCB2b2lkKiBkb21PYmplY3QpCkBAIC02MSw0ICs2Nyw2IEBAIHZvaWQgRE9NRGF0YTo6
ZGVyZWZPYmplY3QoV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2b2lkKiBkb21PYmplY3QpCiAgICAg
dHlwZS0+ZGVyZWZPYmplY3QoZG9tT2JqZWN0KTsKIH0KIAorCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuaAppbmRleCBiMDQyNjA2Li42ODhj
YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjZGVmaW5lIERPTURhdGFfaAogCiAjaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCisjaW5jbHVk
ZSAiU3RhdGljRE9NRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIH5ET01EYXRhKCk7CiAKICAgICAgICAgc3RhdGljIERPTURhdGEqIGdl
dEN1cnJlbnQoKTsKLSAgICAgICAgdmlydHVhbCBET01EYXRhU3RvcmUmIGdldFN0b3JlKCkgPSAw
OworICAgICAgICBET01EYXRhU3RvcmUmIGdldFN0b3JlKCkgeyByZXR1cm4gZ2V0TWFpblRocmVh
ZFN0b3JlKCk7IH0KIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgICAgICBzdGF0
aWMgdm9pZCBoYW5kbGVXZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1hcFR5cGUs
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+LCBUKiBkb21PYmplY3QpOwpAQCAtNTgsNyArNTks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgICAgIHN0YXRpYyB2b2lkIHJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcChET01EYXRhU3Rv
cmUqIHN0b3JlLCBBYnN0cmFjdFdlYWtSZWZlcmVuY2VNYXA8VCwgdjg6Ok9iamVjdD4mIGRvbU1h
cCk7CiAKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBvd25pbmdUaHJlYWQoKSBjb25zdCB7IHJl
dHVybiBtX293bmluZ1RocmVhZDsgfQorICAgICAgICBzdGF0aWMgRE9NRGF0YVN0b3JlJiBnZXRD
dXJyZW50TWFpblRocmVhZFN0b3JlKCkgeyByZXR1cm4gZ2V0Q3VycmVudCgpLT5nZXRNYWluVGhy
ZWFkU3RvcmUoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIHZvaWQgZGVyZWZP
YmplY3QoV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2b2lkKiBkb21PYmplY3QpOwpAQCAtNzQsNyAr
NzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtX293bmluZ1RocmVhZDsKKyAgICAgICAgRE9NRGF0
YVN0b3JlJiBnZXRNYWluVGhyZWFkU3RvcmUoKTsKKyAgICAgICAgU3RhdGljRE9NRGF0YVN0b3Jl
IG1fZGVmYXVsdFN0b3JlOwogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
ODUsNyArODcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgKytpKSB7
CiAgICAgICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKLSAgICAgICAgICAg
IEFTU0VSVChzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRU
aHJlYWQoKSk7CiAKICAgICAgICAgICAgIERPTVdyYXBwZXJNYXA8VD4qIGRvbU1hcCA9IHN0YXRp
Y19jYXN0PERPTVdyYXBwZXJNYXA8VD4qPihzdG9yZS0+Z2V0RE9NV3JhcHBlck1hcChtYXBUeXBl
KSk7CiAgICAgICAgICAgICBpZiAoZG9tTWFwLT5yZW1vdmVJZlByZXNlbnQoZG9tT2JqZWN0LCB2
OE9iamVjdCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3Bw
CmluZGV4IDIxYjQ3YTQuLjAzZTZlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmNwcApAQCAtOTEsMTMgKzkxLDExIEBAIERPTURhdGFTdG9yZTo6RE9NRGF0
YVN0b3JlKERPTURhdGEqIGRvbURhdGEpCiAjZW5kaWYKICAgICAsIG1fZG9tRGF0YShkb21EYXRh
KQogewotICAgIFdURjo6TXV0ZXhMb2NrZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6YWxsU3RvcmVz
TXV0ZXgoKSk7CiAgICAgRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKS5hcHBlbmQodGhpcyk7CiB9
CiAKIERPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSgpCiB7Ci0gICAgV1RGOjpNdXRleExvY2tl
ciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpKTsKICAgICBET01EYXRhU3Rv
cmU6OmFsbFN0b3JlcygpLnJlbW92ZShET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpLmZpbmQodGhp
cykpOwogfQogCkBAIC0xMDcsMTIgKzEwNSw2IEBAIERPTURhdGFMaXN0JiBET01EYXRhU3RvcmU6
OmFsbFN0b3JlcygpCiAgIHJldHVybiBzdGF0aWNET01EYXRhTGlzdDsKIH0KIAotV1RGOjpNdXRl
eCYgRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChXVEY6Ok11dGV4LCBzdGF0aWNET01EYXRhTGlzdE11dGV4LCAoKSk7Ci0gICAgcmV0dXJu
IHN0YXRpY0RPTURhdGFMaXN0TXV0ZXg7Ci19Ci0KIHZvaWQqIERPTURhdGFTdG9yZTo6Z2V0RE9N
V3JhcHBlck1hcChET01XcmFwcGVyTWFwVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkg
ewpAQCAtMTU2LDEyICsxNDgsMTAgQEAgdm9pZCBET01EYXRhU3RvcmU6OndlYWtOb2RlQ2FsbGJh
Y2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogZG9tT2IKICAgICAvLyBO
b2RlIHdyYXBwZXJzIG11c3QgYmUgSlMgb2JqZWN0cy4KICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB2OE9iamVjdCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVl
KTsKIAotICAgIFdURjo6TXV0ZXhMb2NrZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6YWxsU3RvcmVz
TXV0ZXgoKSk7CiAgICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRhU3RvcmU6OmFsbFN0b3Jl
cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgewogICAg
ICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKICAgICAgICAgaWYgKHN0b3JlLT5k
b21Ob2RlTWFwKCkucmVtb3ZlSWZQcmVzZW50KG5vZGUsIHY4T2JqZWN0KSkgewotICAgICAgICAg
ICAgQVNTRVJUKHN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6Y3VycmVu
dFRocmVhZCgpKTsKICAgICAgICAgICAgIG5vZGUtPmRlcmVmKCk7IC8vIE5vYm9keSBvdmVycmlk
ZXMgTm9kZTo6ZGVyZWYgc28gaXQncyBzYWZlCiAgICAgICAgICAgICByZXR1cm47IC8vIFRoZXJl
IG1pZ2h0IGJlIGF0IG1vc3Qgb25lIHdyYXBwZXIgZm9yIHRoZSBub2RlIGluIHdvcmxkJ3MgbWFw
cwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01E
YXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCmlu
ZGV4IGZmYjlkZjUuLjM3M2Q4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5oCkBAIC03Nyw4ICs3Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICAvLyBBIGxpc3Qgb2YgYWxsIERPTURhdGFTdG9yZSBvYmplY3RzIGluIHRoZSBjdXJyZW50IFY4
IGluc3RhbmNlICh0aHJlYWQpLiBOb3JtYWxseSwgZWFjaCBXb3JsZCBoYXMgYSBET01EYXRhU3Rv
cmUuCiAgICAgICAgIHN0YXRpYyBET01EYXRhTGlzdCYgYWxsU3RvcmVzKCk7Ci0gICAgICAgIC8v
IE11dGV4IHRvIHByb3RlY3QgYWdhaW5zdCBjb25jdXJyZW50IGFjY2VzcyBvZiBET01EYXRhTGlz
dC4KLSAgICAgICAgc3RhdGljIFdURjo6TXV0ZXgmIGFsbFN0b3Jlc011dGV4KCk7CiAKICAgICAg
ICAgRE9NRGF0YSogZG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tRGF0YTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5Yzg2NWMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvTWFpblRocmVhZERPTURhdGEuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNYWluVGhyZWFkRE9N
RGF0YS5oIgotCi0jaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1NYWluVGhyZWFkRE9NRGF0YTo6TWFpblRocmVhZERPTURhdGEoKQotICAgIDog
bV9kZWZhdWx0U3RvcmUodGhpcykKLXsKLX0KLSAgICAKLU1haW5UaHJlYWRET01EYXRhKiBNYWlu
VGhyZWFkRE9NRGF0YTo6Z2V0Q3VycmVudCgpCi17Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhy
ZWFkKCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoTWFpblRocmVhZERPTURhdGEsIG1haW5U
aHJlYWRET01EYXRhLCAoKSk7Ci0gICAgcmV0dXJuICZtYWluVGhyZWFkRE9NRGF0YTsKLX0KLQot
RE9NRGF0YVN0b3JlJiBNYWluVGhyZWFkRE9NRGF0YTo6Z2V0TWFpblRocmVhZFN0b3JlKCkKLXsK
LSAgICAvLyBUaGlzIGlzIGJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBub24tdmlydHVhbCBtZXRo
b2QgZnJvbSBnZXRTdG9yZSgpCi0gICAgLy8gc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCBieSBn
ZXRDdXJyZW50TWFpblRocmVhZFN0b3JlLCB3aGljaCBpcwotICAgIC8vIGEgaG90IHNwb3QgaW4g
RHJvbWFlbyBET00gdGVzdHMuCi0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwotICAg
IFY4SXNvbGF0ZWRDb250ZXh0KiBjb250ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVy
ZWQoKTsKLSAgICBpZiAoVU5MSUtFTFkoY29udGV4dCAhPSAwKSkKLSAgICAgICAgcmV0dXJuICpj
b250ZXh0LT53b3JsZCgpLT5kb21EYXRhU3RvcmUoKTsKLSAgICByZXR1cm4gbV9kZWZhdWx0U3Rv
cmU7Ci19Ci0KLURPTURhdGFTdG9yZSYgTWFpblRocmVhZERPTURhdGE6OmdldEN1cnJlbnRNYWlu
VGhyZWFkU3RvcmUoKQotewotICAgIHJldHVybiBnZXRDdXJyZW50KCktPmdldE1haW5UaHJlYWRT
dG9yZSgpOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlOGY5OWM5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L01haW5UaHJlYWRET01EYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBNYWluVGhyZWFkRE9NRGF0YV9oCi0jZGVmaW5lIE1haW5UaHJlYWRET01EYXRhX2gKLQotI2lu
Y2x1ZGUgIkRPTURhdGEuaCIKLSNpbmNsdWRlICJTdGF0aWNET01EYXRhU3RvcmUuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgTWFpblRocmVhZERPTURhdGEgOiBwdWJsaWMg
RE9NRGF0YSB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgTWFpblRocmVhZERPTURhdGEq
IGdldEN1cnJlbnQoKTsgLy8gQ2FsbGVyIG11c3QgYmUgb24gdGhlIG1haW4gdGhyZWFkLgotICAg
ICAgICBzdGF0aWMgRE9NRGF0YVN0b3JlJiBnZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKCk7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgRE9NRGF0YVN0b3JlJiBnZXRTdG9yZSgp
IHsgcmV0dXJuIGdldE1haW5UaHJlYWRTdG9yZSgpOyB9Ci0gICAgICAgIAotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgTWFpblRocmVhZERPTURhdGEoKTsKLSAgICAgICAgRE9NRGF0YVN0b3JlJiBn
ZXRNYWluVGhyZWFkU3RvcmUoKTsKLQotICAgICAgICBTdGF0aWNET01EYXRhU3RvcmUgbV9kZWZh
dWx0U3RvcmU7Ci0gICAgICAgIC8vIE5vdGU6IFRoZSBET01EYXRhU3RvcmVzIGZvciBpc29sYXRl
ZCB3b3JsZCBhcmUgb3duZWQgYnkgdGhlIHdvcmxkIG9iamVjdC4KLSAgICB9OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBNYWluVGhyZWFkRE9NRGF0YV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKaW5kZXggNDZhMjNhMC4uYjM4NzNhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcApAQCAtMzMsNyArMzMsNiBAQAog
CiAjaW5jbHVkZSAiRE9NRGF0YS5oIgogI2luY2x1ZGUgIkRPTURhdGFTdG9yZS5oIgotI2luY2x1
ZGUgIk1haW5UaHJlYWRET01EYXRhLmgiCiAjaW5jbHVkZSAiU2NvcGVkRE9NRGF0YVN0b3JlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDEyICs1MCw3IEBAIHN0YXRpYyBib29sIGZh
c3RlckRPTVN0b3JlQWNjZXNzID0gZmFsc2U7CiAKIHN0YXRpYyBpbmxpbmUgRE9NRGF0YVN0b3Jl
JiBnZXRET01EYXRhU3RvcmUoKQogewotICAgIGlmIChMSUtFTFkoZmFzdGVyRE9NU3RvcmVBY2Nl
c3MpKSB7Ci0gICAgICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgcmV0
dXJuIE1haW5UaHJlYWRET01EYXRhOjpnZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIERPTURhdGE6OmdldEN1cnJlbnQoKS0+Z2V0U3RvcmUoKTsKKyAgICBy
ZXR1cm4gRE9NRGF0YTo6Z2V0Q3VycmVudE1haW5UaHJlYWRTdG9yZSgpOwogfQogCiB2b2lkIGVu
YWJsZUZhc3RlckRPTVN0b3JlQWNjZXNzKCkKQEAgLTg4LDcgKzgyLDcgQEAgRE9NV3JhcHBlck1h
cDxTVkdFbGVtZW50SW5zdGFuY2U+JiBnZXRET01TVkdFbGVtZW50SW5zdGFuY2VNYXAoKQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKIAotdm9pZCByZW1vdmVBbGxET01PYmplY3RzSW5DdXJyZW50
VGhyZWFkKCkKK3ZvaWQgcmVtb3ZlQWxsRE9NT2JqZWN0cygpCiB7CiAgICAgRE9NRGF0YVN0b3Jl
JiBzdG9yZSA9IGdldERPTURhdGFTdG9yZSgpOwogCkBAIC0xMTIsNDYgKzEwNiwzOCBAQCB2b2lk
IHJlbW92ZUFsbERPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoKQogICAgIERPTURhdGE6OnJlbW92
ZU9iamVjdHNGcm9tV3JhcHBlck1hcDx2b2lkPigmc3RvcmUsIHN0b3JlLmFjdGl2ZURvbU9iamVj
dE1hcCgpKTsKIH0KIAotdm9pZCB2aXNpdERPTU5vZGVzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBw
ZXJNYXA8Tm9kZT46OlZpc2l0b3IqIHZpc2l0b3IpCit2b2lkIHZpc2l0RE9NTm9kZXMoRE9NV3Jh
cHBlck1hcDxOb2RlPjo6VmlzaXRvciogdmlzaXRvcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUg
c2NvcGU7CiAKLSAgICBXVEY6Ok11dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0
b3Jlc011dGV4KCkpOworICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKICAgICBET01E
YXRhTGlzdCYgbGlzdCA9IERPTURhdGFTdG9yZTo6YWxsU3RvcmVzKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIERPTURhdGFTdG9yZSog
c3RvcmUgPSBsaXN0W2ldOwotICAgICAgICBpZiAoIXN0b3JlLT5kb21EYXRhKCktPm93bmluZ1Ro
cmVhZCgpID09IFdURjo6Y3VycmVudFRocmVhZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgc3RvcmUtPmRvbU5vZGVNYXAoKS52aXNpdChzdG9yZSwgdmlzaXRvcik7CiAgICAg
fQogfQogCi12b2lkIHZpc2l0RE9NT2JqZWN0c0luQ3VycmVudFRocmVhZChET01XcmFwcGVyTWFw
PHZvaWQ+OjpWaXNpdG9yKiB2aXNpdG9yKQordm9pZCB2aXNpdERPTU9iamVjdHMoRE9NV3JhcHBl
ck1hcDx2b2lkPjo6VmlzaXRvciogdmlzaXRvcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2Nv
cGU7CiAKLSAgICBXVEY6Ok11dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jl
c011dGV4KCkpOwogICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9y
ZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07Ci0gICAgICAgIGlmICghc3RvcmUt
PmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBzdG9yZS0+ZG9tT2JqZWN0TWFwKCkudmlzaXQo
c3RvcmUsIHZpc2l0b3IpOwogICAgIH0KIH0KIAotdm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHNJ
bkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciogdmlzaXRvcikKK3Zv
aWQgdmlzaXRBY3RpdmVET01PYmplY3RzKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZp
c2l0b3IpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogCi0gICAgV1RGOjpNdXRleExv
Y2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpKTsKICAgICBET01EYXRh
TGlzdCYgbGlzdCA9IERPTURhdGFTdG9yZTo6YWxsU3RvcmVzKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIERPTURhdGFTdG9yZSogc3Rv
cmUgPSBsaXN0W2ldOwotICAgICAgICBpZiAoIXN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVh
ZCgpID09IFdURjo6Y3VycmVudFRocmVhZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgc3RvcmUtPmFjdGl2ZURvbU9iamVjdE1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsK
ICAgICB9CkBAIC0xNTksMTYgKzE0NSwxMyBAQCB2b2lkIHZpc2l0QWN0aXZlRE9NT2JqZWN0c0lu
Q3VycmVudFRocmVhZChET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yKiB2aXNpdG9yKQogCiAj
aWYgRU5BQkxFKFNWRykKIAotdm9pZCB2aXNpdERPTVNWR0VsZW1lbnRJbnN0YW5jZXNJbkN1cnJl
bnRUaHJlYWQoRE9NV3JhcHBlck1hcDxTVkdFbGVtZW50SW5zdGFuY2U+OjpWaXNpdG9yKiB2aXNp
dG9yKQordm9pZCB2aXNpdERPTVNWR0VsZW1lbnRJbnN0YW5jZXMoRE9NV3JhcHBlck1hcDxTVkdF
bGVtZW50SW5zdGFuY2U+OjpWaXNpdG9yKiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKIAotICAgIFdURjo6TXV0ZXhMb2NrZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6YWxs
U3RvcmVzTXV0ZXgoKSk7CiAgICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRhU3RvcmU6OmFs
bFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkg
ewogICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKLSAgICAgICAgaWYgKCFz
dG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHN0b3JlLT5kb21TdmdFbGVtZW50SW5z
dGFuY2VNYXAoKS52aXNpdChzdG9yZSwgdmlzaXRvcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NTWFwLmgKaW5kZXggNTFkOTMzYS4uODRjZjc1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTU1hcC5oCkBAIC0xNTgsMjMgKzE1OCwyMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAvLyBBIG1hcCBmcm9tIERPTSBub2RlIHRvIGl0cyBKUyB3cmFwcGVyLgog
ICAgIERPTU5vZGVNYXBwaW5nJiBnZXRET01Ob2RlTWFwKCk7Ci0gICAgdm9pZCB2aXNpdERPTU5v
ZGVzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3IqKTsKKyAgICB2
b2lkIHZpc2l0RE9NTm9kZXMoRE9NV3JhcHBlck1hcDxOb2RlPjo6VmlzaXRvciopOwogCiAgICAg
Ly8gQSBtYXAgZnJvbSBhIERPTSBvYmplY3QgKG5vbi1ub2RlKSB0byBpdHMgSlMgd3JhcHBlci4g
VGhpcyBtYXAgZG9lcyBub3QgY29udGFpbiB0aGUgRE9NIG9iamVjdHMgd2hpY2ggY2FuIGhhdmUg
cGVuZGluZyBhY3Rpdml0eSAoYWN0aXZlIGRvbSBvYmplY3RzKS4KICAgICBET01XcmFwcGVyTWFw
PHZvaWQ+JiBnZXRET01PYmplY3RNYXAoKTsKLSAgICB2b2lkIHZpc2l0RE9NT2JqZWN0c0luQ3Vy
cmVudFRocmVhZChET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yKik7CisgICAgdm9pZCB2aXNp
dERPTU9iamVjdHMoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciopOwogCiAgICAgLy8gQSBt
YXAgZnJvbSBhIERPTSBvYmplY3QgdG8gaXRzIEpTIHdyYXBwZXIgZm9yIERPTSBvYmplY3RzIHdo
aWNoIGNhbiBoYXZlIHBlbmRpbmcgYWN0aXZpdHkuCiAgICAgRE9NV3JhcHBlck1hcDx2b2lkPiYg
Z2V0QWN0aXZlRE9NT2JqZWN0TWFwKCk7Ci0gICAgdm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHNJ
bkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciopOworICAgIHZvaWQg
dmlzaXRBY3RpdmVET01PYmplY3RzKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqKTsKIAog
ICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB0byByZW1vdmUgYWxsIERPTSBvYmplY3RzIGFz
c29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB0aHJlYWQgd2hlbiBpdCBpcyB0ZWFyaW5nIGRvd24u
Ci0gICAgdm9pZCByZW1vdmVBbGxET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKCk7CisgICAgdm9p
ZCByZW1vdmVBbGxET01PYmplY3RzKCk7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8vIEEgbWFw
IGZvciBTVkdFbGVtZW50SW5zdGFuY2VzIHRvIGl0cyBKUyB3cmFwcGVyLgogICAgIERPTVdyYXBw
ZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNlPiYgZ2V0RE9NU1ZHRWxlbWVudEluc3RhbmNlTWFwKCk7
Ci0gICAgdm9pZCB2aXNpdFNWR0VsZW1lbnRJbnN0YW5jZXNJbkN1cnJlbnRUaHJlYWQoRE9NV3Jh
cHBlck1hcDxTVkdFbGVtZW50SW5zdGFuY2U+OjpWaXNpdG9yKik7CisgICAgdm9pZCB2aXNpdFNW
R0VsZW1lbnRJbnN0YW5jZXMoRE9NV3JhcHBlck1hcDxTVkdFbGVtZW50SW5zdGFuY2U+OjpWaXNp
dG9yKik7CiAjZW5kaWYKIAogICAgIHZvaWQgZW5hYmxlRmFzdGVyRE9NU3RvcmVBY2Nlc3MoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCA3
NGMxNjU5Li5mYWYyMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEdDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuY3BwCkBAIC00NTIsMTggKzQ1MiwxOCBAQCB2b2lkIFY4R0NDb250cm9sbGVyOjpn
Y1Byb2xvZ3VlKCkKIAogI2lmbmRlZiBOREVCVUcKICAgICBET01PYmplY3RWaXNpdG9yIGRvbU9i
amVjdFZpc2l0b3I7Ci0gICAgdmlzaXRET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKCZkb21PYmpl
Y3RWaXNpdG9yKTsKKyAgICB2aXNpdERPTU9iamVjdHMoJmRvbU9iamVjdFZpc2l0b3IpOwogI2Vu
ZGlmCiAKICAgICAvLyBSdW4gdGhyb3VnaCBhbGwgb2JqZWN0cyB3aXRoIHBvc3NpYmxlIHBlbmRp
bmcgYWN0aXZpdHkgbWFraW5nIHRoZWlyCiAgICAgLy8gd3JhcHBlcnMgbm9uIHdlYWsgaWYgdGhl
cmUgaXMgcGVuZGluZyBhY3Rpdml0eS4KICAgICBHQ1Byb2xvZ3VlVmlzaXRvciBwcm9sb2d1ZVZp
c2l0b3I7Ci0gICAgdmlzaXRBY3RpdmVET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKCZwcm9sb2d1
ZVZpc2l0b3IpOworICAgIHZpc2l0QWN0aXZlRE9NT2JqZWN0cygmcHJvbG9ndWVWaXNpdG9yKTsK
IAogICAgIC8vIENyZWF0ZSBvYmplY3QgZ3JvdXBzLgogICAgIEdyb3VwZXJWaXNpdG9yIGdyb3Vw
ZXJWaXNpdG9yOwotICAgIHZpc2l0RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQoJmdyb3VwZXJWaXNp
dG9yKTsKLSAgICB2aXNpdERPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoJmdyb3VwZXJWaXNpdG9y
KTsKKyAgICB2aXNpdERPTU5vZGVzKCZncm91cGVyVmlzaXRvcik7CisgICAgdmlzaXRET01PYmpl
Y3RzKCZncm91cGVyVmlzaXRvcik7CiAgICAgZ3JvdXBlclZpc2l0b3IuYXBwbHlHcm91cGluZygp
OwogCiAgICAgLy8gQ2xlYW4gc2luZ2xlIGVsZW1lbnQgY2FjaGUgZm9yIHN0cmluZyBjb252ZXJz
aW9ucy4KQEAgLTUyOSwxNyArNTI5LDE3IEBAIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjRXBpbG9n
dWUoKQogICAgIC8vIFJ1biB0aHJvdWdoIGFsbCBvYmplY3RzIHdpdGggcGVuZGluZyBhY3Rpdml0
eSBtYWtpbmcgdGhlaXIgd3JhcHBlcnMgd2VhawogICAgIC8vIGFnYWluLgogICAgIEdDRXBpbG9n
dWVWaXNpdG9yIGVwaWxvZ3VlVmlzaXRvcjsKLSAgICB2aXNpdEFjdGl2ZURPTU9iamVjdHNJbkN1
cnJlbnRUaHJlYWQoJmVwaWxvZ3VlVmlzaXRvcik7CisgICAgdmlzaXRBY3RpdmVET01PYmplY3Rz
KCZlcGlsb2d1ZVZpc2l0b3IpOwogCiAgICAgd29ya2luZ1NldEVzdGltYXRlTUIgPSBnZXRBY3R1
YWxNZW1vcnlVc2FnZUluTUIoKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAvLyBDaGVjayBhbGwg
c3Vydml2YWxzIGFyZSB3ZWFrLgogICAgIERPTU9iamVjdFZpc2l0b3IgZG9tT2JqZWN0VmlzaXRv
cjsKLSAgICB2aXNpdERPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoJmRvbU9iamVjdFZpc2l0b3Ip
OworICAgIHZpc2l0RE9NT2JqZWN0cygmZG9tT2JqZWN0VmlzaXRvcik7CiAKICAgICBFbnN1cmVX
ZWFrRE9NTm9kZVZpc2l0b3Igd2Vha0RPTU5vZGVWaXNpdG9yOwotICAgIHZpc2l0RE9NTm9kZXNJ
bkN1cnJlbnRUaHJlYWQoJndlYWtET01Ob2RlVmlzaXRvcik7CisgICAgdmlzaXRET01Ob2Rlcygm
d2Vha0RPTU5vZGVWaXNpdG9yKTsKIAogICAgIGVudW1lcmF0ZUdsb2JhbEhhbmRsZXMoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCBkOWM3NmQ0Li5iYjg1ZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVy
KFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiAKIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
On5Xb3JrZXJTY3JpcHRDb250cm9sbGVyKCkKIHsKLSAgICByZW1vdmVBbGxET01PYmplY3RzSW5D
dXJyZW50VGhyZWFkKCk7CisgICAgcmVtb3ZlQWxsRE9NT2JqZWN0cygpOwogfQogCiBTY3JpcHRW
YWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96363</attachid>
            <date>2011-06-07 19:51:17 -0700</date>
            <delta_ts>2011-06-07 20:30:55 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>another-patch</filename>
            <type>text/plain</type>
            <size>27154</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyOGI1NjFlLi5mM2ZmYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTEtMDYtMDcgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxNjQKKyAgICAgICAgUmVtb3ZlICJtdWx0aS10
aHJlYWRlZCIgbG9naWMgaW4gVjggRE9NRGF0YSwgRE9NRGF0YVN0b3JlIGFuZCBmcmllbmRzCisg
ICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bnRlc3RlZCBhbmQgdW51c2VkOgorICAgICAg
ICBUaGlzIGlzIGFuIG9sZCBjb2RlIGZyb20gTG9ja2Vycy1iYXNlZCBpbXBsZW1lbnRhdGlvbiBv
ZiBXZWJXb3JrZXJzIGluCisgICAgICAgIFY4IGJpbmRpbmdzLCB0byBtYWtlIHN1cmUgdGhhdCBE
T00gb2JqZWN0cyBhcmUgcmVsZWFzZWQgb24gdGhlIHJpZ2h0IHRocmVhZAorICAgICAgICBldmVu
IHRob3VnaCBHQyBjb3VsZCBoYXZlIGhhcHBlbmVkIG9uIGFueSB0aHJlYWQuIEl0IGlzIGN1cnJl
bnRseSB1bnVzZWQgKHNpbmNlCisgICAgICAgIGN1cnJlbnQgbW9kZWwgaXMgb25lIHdvcmtlciBw
ZXIgcHJvY2VzcykgYW5kIGlzIGJlaW5nIHJlbW92ZWQgYmVjYXVzZSBuZXcgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgb2YgV2ViV29ya2VycyB3aWxsIGJlIHVzaW5nIFY4IGlzb2xhdGVzLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01EYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvdjgvRE9NRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpET01EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGE6OmdldEN1cnJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRGF0YTo6Z2V0TWFpblRocmVhZFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9ET01EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpnZXRTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01EYXRhOjpnZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTURhdGE6OmhhbmRsZVdlYWtPYmplY3QpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6
OkRPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6On5ET01EYXRh
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp3ZWFrTm9kZUNhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3MvdjgvTWFpblRocmVhZERPTURhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOERPTU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRET01EYXRhU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVtb3ZlQWxsRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjp2
aXNpdERPTU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0RE9NT2JqZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpdEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
dmlzaXRET01TVkdFbGVtZW50SW5zdGFuY2VzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERP
TU1hcC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpnY1Byb2xvZ3VlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4R0NDb250cm9sbGVyOjpnY0VwaWxvZ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dENvbnRyb2xsZXI6On5Xb3JrZXJTY3JpcHRDb250cm9sbGVyKToKKwogMjAxMS0wNi0wNyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2MjcwODgxLi40MjAyOTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0xOTUwLDggKzE5NTAsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdz
L29iamMvT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW0nLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpj
L1dlYlNjcmlwdE9iamVjdC5tbScsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvQ2hpbGRUaHJl
YWRET01EYXRhLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01E
YXRhLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9ET01EYXRhLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0RP
TURhdGFTdG9yZS5jcHAnLApAQCAtMTk2Nyw4ICsxOTY1LDYgQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9Jc29sYXRlZFdvcmxkLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9KYXZhU2NyaXB0
Q2FsbEZyYW1lLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRh
LmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvTWFpblRocmVhZERPTURhdGEuaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L05QVjhPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvT3B0aW9u
c09iamVjdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAwNGM0OWQ0Li41M2MwNjBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwpAQCAtODgsMTEgKzg4LDkgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhVaW50MTZBcnJheUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20v
VjhVaW50MzJBcnJheUN1c3RvbS5jcHAgXAogICAgICAgICBcCi0gICAgICAgIGJpbmRpbmdzL3Y4
L0NoaWxkVGhyZWFkRE9NRGF0YS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9EYXRlRXh0ZW5z
aW9uLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBcCi0gICAgICAgIGJpbmRpbmdzL3Y4L01haW5UaHJl
YWRET01EYXRhLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc3Y2UwZjQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Q2hpbGRUaHJlYWRET01EYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2hpbGRUaHJlYWRET01EYXRhLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQ2hpbGRUaHJlYWRET01EYXRhOjpDaGlsZFRocmVhZERPTURhdGEo
KQotICAgIDogbV9kZWZhdWx0U3RvcmUodGhpcykKLXsKLX0KLQotRE9NRGF0YVN0b3JlJiBDaGls
ZFRocmVhZERPTURhdGE6OmdldFN0b3JlKCkKLXsKLSAgICBBU1NFUlQoIVdURjo6aXNNYWluVGhy
ZWFkKCkpOwotICAgIC8vIEN1cnJlbnRseSwgY2hpbGQgdGhyZWFkcyBoYXZlIG9ubHkgb25lIHdv
cmxkLgotICAgIHJldHVybiBtX2RlZmF1bHRTdG9yZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRE
T01EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DaGlsZFRocmVhZERPTURhdGEu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA5N2M4Ni4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DaGlsZFRocmVhZERPTURhdGEuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENoaWxkVGhyZWFkRE9NRGF0YV9oCi0jZGVmaW5l
IENoaWxkVGhyZWFkRE9NRGF0YV9oCi0KLSNpbmNsdWRlICJET01EYXRhLmgiCi0jaW5jbHVkZSAi
U2NvcGVkRE9NRGF0YVN0b3JlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNz
IENoaWxkVGhyZWFkRE9NRGF0YSA6IHB1YmxpYyBET01EYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIENoaWxkVGhyZWFkRE9NRGF0YSgpOwotICAgICAgICBET01EYXRhU3RvcmUmIGdldFN0b3Jl
KCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTY29wZWRET01EYXRhU3RvcmUgbV9kZWZhdWx0
U3RvcmU7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ2hp
bGRUaHJlYWRET01EYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAKaW5k
ZXggNTY4ZmMyYy4uNzkyMDIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5j
cHAKQEAgLTMwLDE2ICszMCwxNCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RE9NRGF0YS5oIgotCi0jaW5jbHVkZSAiQ2hpbGRUaHJlYWRET01EYXRhLmgiCi0jaW5jbHVkZSAi
TWFpblRocmVhZERPTURhdGEuaCIKKyNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1M
b2NhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTURhdGE6OkRPTURhdGEoKQot
ICAgIDogbV9vd25pbmdUaHJlYWQoV1RGOjpjdXJyZW50VGhyZWFkKCkpCisgICAgOiBtX2RlZmF1
bHRTdG9yZSh0aGlzKQogewogfQogCkBAIC00OSwxMSArNDcsMTkgQEAgRE9NRGF0YTo6fkRPTURh
dGEoKQogCiBET01EYXRhKiBET01EYXRhOjpnZXRDdXJyZW50KCkKIHsKLSAgICBpZiAoV1RGOjpp
c01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuIE1haW5UaHJlYWRET01EYXRhOjpnZXRDdXJy
ZW50KCk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01EYXRhLCBtYWluVGhyZWFkRE9NRGF0
YSwgKCkpOworICAgIHJldHVybiAmbWFpblRocmVhZERPTURhdGE7Cit9CiAKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFdURjo6VGhyZWFkU3BlY2lmaWM8Q2hpbGRUaHJlYWRET01EYXRhPiwgY2hp
bGRUaHJlYWRET01EYXRhLCAoKSk7Ci0gICAgcmV0dXJuIGNoaWxkVGhyZWFkRE9NRGF0YTsKK0RP
TURhdGFTdG9yZSYgRE9NRGF0YTo6Z2V0TWFpblRocmVhZFN0b3JlKCkKK3sKKyAgICAvLyBUaGlz
IGlzIGJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBub24tdmlydHVhbCBtZXRob2QgZnJvbSBnZXRT
dG9yZSgpCisgICAgLy8gc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCBieSBnZXRDdXJyZW50TWFp
blRocmVhZFN0b3JlLCB3aGljaCBpcworICAgIC8vIGEgaG90IHNwb3QgaW4gRHJvbWFlbyBET00g
dGVzdHMuCisgICAgVjhJc29sYXRlZENvbnRleHQqIGNvbnRleHQgPSBWOElzb2xhdGVkQ29udGV4
dDo6Z2V0RW50ZXJlZCgpOworICAgIGlmIChVTkxJS0VMWShjb250ZXh0ICE9IDApKQorICAgICAg
ICByZXR1cm4gKmNvbnRleHQtPndvcmxkKCktPmRvbURhdGFTdG9yZSgpOworICAgIHJldHVybiBt
X2RlZmF1bHRTdG9yZTsKIH0KIAogdm9pZCBET01EYXRhOjpkZXJlZk9iamVjdChXcmFwcGVyVHlw
ZUluZm8qIHR5cGUsIHZvaWQqIGRvbU9iamVjdCkKQEAgLTYxLDQgKzY3LDYgQEAgdm9pZCBET01E
YXRhOjpkZXJlZk9iamVjdChXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIGRvbU9iamVjdCkK
ICAgICB0eXBlLT5kZXJlZk9iamVjdChkb21PYmplY3QpOwogfQogCisKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5oCmluZGV4IGIwNDI2MDYu
LjY4OGNiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNkZWZpbmUgRE9NRGF0YV9oCiAKICNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKKyNp
bmNsdWRlICJTdGF0aWNET01EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgfkRPTURhdGEoKTsKIAogICAgICAgICBzdGF0aWMgRE9NRGF0
YSogZ2V0Q3VycmVudCgpOwotICAgICAgICB2aXJ0dWFsIERPTURhdGFTdG9yZSYgZ2V0U3RvcmUo
KSA9IDA7CisgICAgICAgIERPTURhdGFTdG9yZSYgZ2V0U3RvcmUoKSB7IHJldHVybiBnZXRNYWlu
VGhyZWFkU3RvcmUoKTsgfQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgICAg
IHN0YXRpYyB2b2lkIGhhbmRsZVdlYWtPYmplY3QoRE9NRGF0YVN0b3JlOjpET01XcmFwcGVyTWFw
VHlwZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4sIFQqIGRvbU9iamVjdCk7CkBAIC01OCw3
ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICAgICAgc3RhdGljIHZvaWQgcmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwKERPTURh
dGFTdG9yZSogc3RvcmUsIEFic3RyYWN0V2Vha1JlZmVyZW5jZU1hcDxULCB2ODo6T2JqZWN0PiYg
ZG9tTWFwKTsKIAotICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG93bmluZ1RocmVhZCgpIGNvbnN0
IHsgcmV0dXJuIG1fb3duaW5nVGhyZWFkOyB9CisgICAgICAgIHN0YXRpYyBET01EYXRhU3RvcmUm
IGdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUoKSB7IHJldHVybiBnZXRDdXJyZW50KCktPmdldE1h
aW5UaHJlYWRTdG9yZSgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgdm9pZCBk
ZXJlZk9iamVjdChXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIGRvbU9iamVjdCk7CkBAIC03
NCw3ICs3NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKIAotICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG1fb3duaW5nVGhyZWFkOworICAgICAgICBE
T01EYXRhU3RvcmUmIGdldE1haW5UaHJlYWRTdG9yZSgpOworICAgICAgICBTdGF0aWNET01EYXRh
U3RvcmUgbV9kZWZhdWx0U3RvcmU7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CkBAIC04NSw3ICs4Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBmb3Vu
ZCA9IGZhbHNlOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOwotICAgICAg
ICAgICAgQVNTRVJUKHN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6Y3Vy
cmVudFRocmVhZCgpKTsKIAogICAgICAgICAgICAgRE9NV3JhcHBlck1hcDxUPiogZG9tTWFwID0g
c3RhdGljX2Nhc3Q8RE9NV3JhcHBlck1hcDxUPio+KHN0b3JlLT5nZXRET01XcmFwcGVyTWFwKG1h
cFR5cGUpKTsKICAgICAgICAgICAgIGlmIChkb21NYXAtPnJlbW92ZUlmUHJlc2VudChkb21PYmpl
Y3QsIHY4T2JqZWN0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9y
ZS5jcHAKaW5kZXggMjFiNDdhNC4uMDNlNmU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC05MSwxMyArOTEsMTEgQEAgRE9NRGF0YVN0b3JlOjpE
T01EYXRhU3RvcmUoRE9NRGF0YSogZG9tRGF0YSkKICNlbmRpZgogICAgICwgbV9kb21EYXRhKGRv
bURhdGEpCiB7Ci0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxT
dG9yZXNNdXRleCgpKTsKICAgICBET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpLmFwcGVuZCh0aGlz
KTsKIH0KIAogRE9NRGF0YVN0b3JlOjp+RE9NRGF0YVN0b3JlKCkKIHsKLSAgICBXVEY6Ok11dGV4
TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOwogICAgIERPTURh
dGFTdG9yZTo6YWxsU3RvcmVzKCkucmVtb3ZlKERPTURhdGFTdG9yZTo6YWxsU3RvcmVzKCkuZmlu
ZCh0aGlzKSk7CiB9CiAKQEAgLTEwNywxMiArMTA1LDYgQEAgRE9NRGF0YUxpc3QmIERPTURhdGFT
dG9yZTo6YWxsU3RvcmVzKCkKICAgcmV0dXJuIHN0YXRpY0RPTURhdGFMaXN0OwogfQogCi1XVEY6
Ok11dGV4JiBET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFdURjo6TXV0ZXgsIHN0YXRpY0RPTURhdGFMaXN0TXV0ZXgsICgpKTsKLSAgICBy
ZXR1cm4gc3RhdGljRE9NRGF0YUxpc3RNdXRleDsKLX0KLQogdm9pZCogRE9NRGF0YVN0b3JlOjpn
ZXRET01XcmFwcGVyTWFwKERPTVdyYXBwZXJNYXBUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0
eXBlKSB7CkBAIC0xNTYsMTIgKzE0OCwxMCBAQCB2b2lkIERPTURhdGFTdG9yZTo6d2Vha05vZGVD
YWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKiBkb21PYgogICAg
IC8vIE5vZGUgd3JhcHBlcnMgbXVzdCBiZSBKUyBvYmplY3RzLgogICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+IHY4T2JqZWN0ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3Qo
dmFsdWUpOwogCi0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxT
dG9yZXNNdXRleCgpKTsKICAgICBET01EYXRhTGlzdCYgbGlzdCA9IERPTURhdGFTdG9yZTo6YWxs
U3RvcmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgKytpKSB7
CiAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOwogICAgICAgICBpZiAoc3Rv
cmUtPmRvbU5vZGVNYXAoKS5yZW1vdmVJZlByZXNlbnQobm9kZSwgdjhPYmplY3QpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpj
dXJyZW50VGhyZWFkKCkpOwogICAgICAgICAgICAgbm9kZS0+ZGVyZWYoKTsgLy8gTm9ib2R5IG92
ZXJyaWRlcyBOb2RlOjpkZXJlZiBzbyBpdCdzIHNhZmUKICAgICAgICAgICAgIHJldHVybjsgLy8g
VGhlcmUgbWlnaHQgYmUgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUgaW4gd29ybGQn
cyBtYXBzCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmgKaW5kZXggZmZiOWRmNS4uMzczZDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmgKQEAgLTc3LDggKzc3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIC8vIEEgbGlzdCBvZiBhbGwgRE9NRGF0YVN0b3JlIG9iamVjdHMgaW4gdGhlIGN1cnJl
bnQgVjggaW5zdGFuY2UgKHRocmVhZCkuIE5vcm1hbGx5LCBlYWNoIFdvcmxkIGhhcyBhIERPTURh
dGFTdG9yZS4KICAgICAgICAgc3RhdGljIERPTURhdGFMaXN0JiBhbGxTdG9yZXMoKTsKLSAgICAg
ICAgLy8gTXV0ZXggdG8gcHJvdGVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgYWNjZXNzIG9mIERPTURh
dGFMaXN0LgotICAgICAgICBzdGF0aWMgV1RGOjpNdXRleCYgYWxsU3RvcmVzTXV0ZXgoKTsKIAog
ICAgICAgICBET01EYXRhKiBkb21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kb21EYXRhOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDljODY1Yy4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1haW5UaHJl
YWRET01EYXRhLmgiCi0KLSNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLU1haW5UaHJlYWRET01EYXRhOjpNYWluVGhyZWFkRE9NRGF0YSgpCi0g
ICAgOiBtX2RlZmF1bHRTdG9yZSh0aGlzKQotewotfQotICAgIAotTWFpblRocmVhZERPTURhdGEq
IE1haW5UaHJlYWRET01EYXRhOjpnZXRDdXJyZW50KCkKLXsKLSAgICBBU1NFUlQoV1RGOjppc01h
aW5UaHJlYWQoKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChNYWluVGhyZWFkRE9NRGF0YSwg
bWFpblRocmVhZERPTURhdGEsICgpKTsKLSAgICByZXR1cm4gJm1haW5UaHJlYWRET01EYXRhOwot
fQotCi1ET01EYXRhU3RvcmUmIE1haW5UaHJlYWRET01EYXRhOjpnZXRNYWluVGhyZWFkU3RvcmUo
KQotewotICAgIC8vIFRoaXMgaXMgYnJva2VuIG91dCBhcyBhIHNlcGFyYXRlIG5vbi12aXJ0dWFs
IG1ldGhvZCBmcm9tIGdldFN0b3JlKCkKLSAgICAvLyBzbyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVk
IGJ5IGdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUsIHdoaWNoIGlzCi0gICAgLy8gYSBob3Qgc3Bv
dCBpbiBEcm9tYWVvIERPTSB0ZXN0cy4KLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
Ci0gICAgVjhJc29sYXRlZENvbnRleHQqIGNvbnRleHQgPSBWOElzb2xhdGVkQ29udGV4dDo6Z2V0
RW50ZXJlZCgpOwotICAgIGlmIChVTkxJS0VMWShjb250ZXh0ICE9IDApKQotICAgICAgICByZXR1
cm4gKmNvbnRleHQtPndvcmxkKCktPmRvbURhdGFTdG9yZSgpOwotICAgIHJldHVybiBtX2RlZmF1
bHRTdG9yZTsKLX0KLQotRE9NRGF0YVN0b3JlJiBNYWluVGhyZWFkRE9NRGF0YTo6Z2V0Q3VycmVu
dE1haW5UaHJlYWRTdG9yZSgpCi17Ci0gICAgcmV0dXJuIGdldEN1cnJlbnQoKS0+Z2V0TWFpblRo
cmVhZFN0b3JlKCk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTWFpblRocmVhZERPTURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU4Zjk5YzkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvTWFpblRocmVhZERPTURhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIE1haW5UaHJlYWRET01EYXRhX2gKLSNkZWZpbmUgTWFpblRocmVhZERPTURhdGFfaAot
Ci0jaW5jbHVkZSAiRE9NRGF0YS5oIgotI2luY2x1ZGUgIlN0YXRpY0RPTURhdGFTdG9yZS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBNYWluVGhyZWFkRE9NRGF0YSA6IHB1
YmxpYyBET01EYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkRE9N
RGF0YSogZ2V0Q3VycmVudCgpOyAvLyBDYWxsZXIgbXVzdCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQu
Ci0gICAgICAgIHN0YXRpYyBET01EYXRhU3RvcmUmIGdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUo
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgdmlydHVhbCBET01EYXRhU3RvcmUmIGdldFN0
b3JlKCkgeyByZXR1cm4gZ2V0TWFpblRocmVhZFN0b3JlKCk7IH0KLSAgICAgICAgCi0KLSAgICBw
cml2YXRlOgotICAgICAgICBNYWluVGhyZWFkRE9NRGF0YSgpOwotICAgICAgICBET01EYXRhU3Rv
cmUmIGdldE1haW5UaHJlYWRTdG9yZSgpOwotCi0gICAgICAgIFN0YXRpY0RPTURhdGFTdG9yZSBt
X2RlZmF1bHRTdG9yZTsKLSAgICAgICAgLy8gTm90ZTogVGhlIERPTURhdGFTdG9yZXMgZm9yIGlz
b2xhdGVkIHdvcmxkIGFyZSBvd25lZCBieSB0aGUgd29ybGQgb2JqZWN0LgotICAgIH07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIE1haW5UaHJlYWRET01EYXRhX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAppbmRleCA0NmEyM2EwLi5iMzg3M2Ey
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCkBAIC0zMyw3ICszMyw2
IEBACiAKICNpbmNsdWRlICJET01EYXRhLmgiCiAjaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCi0j
aW5jbHVkZSAiTWFpblRocmVhZERPTURhdGEuaCIKICNpbmNsdWRlICJTY29wZWRET01EYXRhU3Rv
cmUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsMTIgKzUwLDcgQEAgc3RhdGljIGJv
b2wgZmFzdGVyRE9NU3RvcmVBY2Nlc3MgPSBmYWxzZTsKIAogc3RhdGljIGlubGluZSBET01EYXRh
U3RvcmUmIGdldERPTURhdGFTdG9yZSgpCiB7Ci0gICAgaWYgKExJS0VMWShmYXN0ZXJET01TdG9y
ZUFjY2VzcykpIHsKLSAgICAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwotICAgICAg
ICByZXR1cm4gTWFpblRocmVhZERPTURhdGE6OmdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUoKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gRE9NRGF0YTo6Z2V0Q3VycmVudCgpLT5nZXRTdG9yZSgpOwor
ICAgIHJldHVybiBET01EYXRhOjpnZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKCk7CiB9CiAKIHZv
aWQgZW5hYmxlRmFzdGVyRE9NU3RvcmVBY2Nlc3MoKQpAQCAtODgsNyArODIsNyBAQCBET01XcmFw
cGVyTWFwPFNWR0VsZW1lbnRJbnN0YW5jZT4mIGdldERPTVNWR0VsZW1lbnRJbnN0YW5jZU1hcCgp
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogCi12b2lkIHJlbW92ZUFsbERPTU9iamVjdHNJbkN1
cnJlbnRUaHJlYWQoKQordm9pZCByZW1vdmVBbGxET01PYmplY3RzKCkKIHsKICAgICBET01EYXRh
U3RvcmUmIHN0b3JlID0gZ2V0RE9NRGF0YVN0b3JlKCk7CiAKQEAgLTExMiw0NiArMTA2LDM4IEBA
IHZvaWQgcmVtb3ZlQWxsRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCgpCiAgICAgRE9NRGF0YTo6
cmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwPHZvaWQ+KCZzdG9yZSwgc3RvcmUuYWN0aXZlRG9t
T2JqZWN0TWFwKCkpOwogfQogCi12b2lkIHZpc2l0RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQoRE9N
V3JhcHBlck1hcDxOb2RlPjo6VmlzaXRvciogdmlzaXRvcikKK3ZvaWQgdmlzaXRET01Ob2RlcyhE
T01XcmFwcGVyTWFwPE5vZGU+OjpWaXNpdG9yKiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVT
Y29wZSBzY29wZTsKIAotICAgIFdURjo6TXV0ZXhMb2NrZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6
YWxsU3RvcmVzTXV0ZXgoKSk7CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogICAg
IERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRE9NRGF0YVN0
b3JlKiBzdG9yZSA9IGxpc3RbaV07Ci0gICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3du
aW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICBzdG9yZS0+ZG9tTm9kZU1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsK
ICAgICB9CiB9CiAKLXZvaWQgdmlzaXRET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBw
ZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZpc2l0b3IpCit2b2lkIHZpc2l0RE9NT2JqZWN0cyhET01X
cmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yKiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKIAotICAgIFdURjo6TXV0ZXhMb2NrZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6YWxs
U3RvcmVzTXV0ZXgoKSk7CiAgICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRhU3RvcmU6OmFs
bFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkg
ewogICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKLSAgICAgICAgaWYgKCFz
dG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHN0b3JlLT5kb21PYmplY3RNYXAoKS52
aXNpdChzdG9yZSwgdmlzaXRvcik7CiAgICAgfQogfQogCi12b2lkIHZpc2l0QWN0aXZlRE9NT2Jq
ZWN0c0luQ3VycmVudFRocmVhZChET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yKiB2aXNpdG9y
KQordm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHMoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRv
ciogdmlzaXRvcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAKLSAgICBXVEY6Ok11
dGV4TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOwogICAgIERP
TURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRE9NRGF0YVN0b3Jl
KiBzdG9yZSA9IGxpc3RbaV07Ci0gICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5n
VGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBzdG9yZS0+YWN0aXZlRG9tT2JqZWN0TWFwKCkudmlzaXQoc3RvcmUsIHZpc2l0
b3IpOwogICAgIH0KQEAgLTE1OSwxNiArMTQ1LDEzIEBAIHZvaWQgdmlzaXRBY3RpdmVET01PYmpl
Y3RzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZpc2l0b3Ip
CiAKICNpZiBFTkFCTEUoU1ZHKQogCi12b2lkIHZpc2l0RE9NU1ZHRWxlbWVudEluc3RhbmNlc0lu
Q3VycmVudFRocmVhZChET01XcmFwcGVyTWFwPFNWR0VsZW1lbnRJbnN0YW5jZT46OlZpc2l0b3Iq
IHZpc2l0b3IpCit2b2lkIHZpc2l0RE9NU1ZHRWxlbWVudEluc3RhbmNlcyhET01XcmFwcGVyTWFw
PFNWR0VsZW1lbnRJbnN0YW5jZT46OlZpc2l0b3IqIHZpc2l0b3IpCiB7CiAgICAgdjg6OkhhbmRs
ZVNjb3BlIHNjb3BlOwogCi0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3Jl
OjphbGxTdG9yZXNNdXRleCgpKTsKICAgICBET01EYXRhTGlzdCYgbGlzdCA9IERPTURhdGFTdG9y
ZTo6YWxsU3RvcmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsg
KytpKSB7CiAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOwotICAgICAgICBp
ZiAoIXN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6Y3VycmVudFRocmVh
ZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc3RvcmUtPmRvbVN2Z0VsZW1l
bnRJbnN0YW5jZU1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01NYXAuaAppbmRleCA1MWQ5MzNhLi44NGNmNzU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgKQEAgLTE1OCwyMyArMTU4LDIzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIC8vIEEgbWFwIGZyb20gRE9NIG5vZGUgdG8gaXRzIEpTIHdyYXBw
ZXIuCiAgICAgRE9NTm9kZU1hcHBpbmcmIGdldERPTU5vZGVNYXAoKTsKLSAgICB2b2lkIHZpc2l0
RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDxOb2RlPjo6VmlzaXRvciopOwor
ICAgIHZvaWQgdmlzaXRET01Ob2RlcyhET01XcmFwcGVyTWFwPE5vZGU+OjpWaXNpdG9yKik7CiAK
ICAgICAvLyBBIG1hcCBmcm9tIGEgRE9NIG9iamVjdCAobm9uLW5vZGUpIHRvIGl0cyBKUyB3cmFw
cGVyLiBUaGlzIG1hcCBkb2VzIG5vdCBjb250YWluIHRoZSBET00gb2JqZWN0cyB3aGljaCBjYW4g
aGF2ZSBwZW5kaW5nIGFjdGl2aXR5IChhY3RpdmUgZG9tIG9iamVjdHMpLgogICAgIERPTVdyYXBw
ZXJNYXA8dm9pZD4mIGdldERPTU9iamVjdE1hcCgpOwotICAgIHZvaWQgdmlzaXRET01PYmplY3Rz
SW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqKTsKKyAgICB2b2lk
IHZpc2l0RE9NT2JqZWN0cyhET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yKik7CiAKICAgICAv
LyBBIG1hcCBmcm9tIGEgRE9NIG9iamVjdCB0byBpdHMgSlMgd3JhcHBlciBmb3IgRE9NIG9iamVj
dHMgd2hpY2ggY2FuIGhhdmUgcGVuZGluZyBhY3Rpdml0eS4KICAgICBET01XcmFwcGVyTWFwPHZv
aWQ+JiBnZXRBY3RpdmVET01PYmplY3RNYXAoKTsKLSAgICB2b2lkIHZpc2l0QWN0aXZlRE9NT2Jq
ZWN0c0luQ3VycmVudFRocmVhZChET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yKik7CisgICAg
dm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHMoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciop
OwogCiAgICAgLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHRvIHJlbW92ZSBhbGwgRE9NIG9iamVj
dHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHRocmVhZCB3aGVuIGl0IGlzIHRlYXJpbmcg
ZG93bi4KLSAgICB2b2lkIHJlbW92ZUFsbERPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoKTsKKyAg
ICB2b2lkIHJlbW92ZUFsbERPTU9iamVjdHMoKTsKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgLy8g
QSBtYXAgZm9yIFNWR0VsZW1lbnRJbnN0YW5jZXMgdG8gaXRzIEpTIHdyYXBwZXIuCiAgICAgRE9N
V3JhcHBlck1hcDxTVkdFbGVtZW50SW5zdGFuY2U+JiBnZXRET01TVkdFbGVtZW50SW5zdGFuY2VN
YXAoKTsKLSAgICB2b2lkIHZpc2l0U1ZHRWxlbWVudEluc3RhbmNlc0luQ3VycmVudFRocmVhZChE
T01XcmFwcGVyTWFwPFNWR0VsZW1lbnRJbnN0YW5jZT46OlZpc2l0b3IqKTsKKyAgICB2b2lkIHZp
c2l0U1ZHRWxlbWVudEluc3RhbmNlcyhET01XcmFwcGVyTWFwPFNWR0VsZW1lbnRJbnN0YW5jZT46
OlZpc2l0b3IqKTsKICNlbmRpZgogCiAgICAgdm9pZCBlbmFibGVGYXN0ZXJET01TdG9yZUFjY2Vz
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDc0YzE2NTkuLmZhZjIwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEdDQ29udHJvbGxlci5jcHAKQEAgLTQ1MiwxOCArNDUyLDE4IEBAIHZvaWQgVjhHQ0NvbnRyb2xs
ZXI6OmdjUHJvbG9ndWUoKQogCiAjaWZuZGVmIE5ERUJVRwogICAgIERPTU9iamVjdFZpc2l0b3Ig
ZG9tT2JqZWN0VmlzaXRvcjsKLSAgICB2aXNpdERPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoJmRv
bU9iamVjdFZpc2l0b3IpOworICAgIHZpc2l0RE9NT2JqZWN0cygmZG9tT2JqZWN0VmlzaXRvcik7
CiAjZW5kaWYKIAogICAgIC8vIFJ1biB0aHJvdWdoIGFsbCBvYmplY3RzIHdpdGggcG9zc2libGUg
cGVuZGluZyBhY3Rpdml0eSBtYWtpbmcgdGhlaXIKICAgICAvLyB3cmFwcGVycyBub24gd2VhayBp
ZiB0aGVyZSBpcyBwZW5kaW5nIGFjdGl2aXR5LgogICAgIEdDUHJvbG9ndWVWaXNpdG9yIHByb2xv
Z3VlVmlzaXRvcjsKLSAgICB2aXNpdEFjdGl2ZURPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoJnBy
b2xvZ3VlVmlzaXRvcik7CisgICAgdmlzaXRBY3RpdmVET01PYmplY3RzKCZwcm9sb2d1ZVZpc2l0
b3IpOwogCiAgICAgLy8gQ3JlYXRlIG9iamVjdCBncm91cHMuCiAgICAgR3JvdXBlclZpc2l0b3Ig
Z3JvdXBlclZpc2l0b3I7Ci0gICAgdmlzaXRET01Ob2Rlc0luQ3VycmVudFRocmVhZCgmZ3JvdXBl
clZpc2l0b3IpOwotICAgIHZpc2l0RE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCgmZ3JvdXBlclZp
c2l0b3IpOworICAgIHZpc2l0RE9NTm9kZXMoJmdyb3VwZXJWaXNpdG9yKTsKKyAgICB2aXNpdERP
TU9iamVjdHMoJmdyb3VwZXJWaXNpdG9yKTsKICAgICBncm91cGVyVmlzaXRvci5hcHBseUdyb3Vw
aW5nKCk7CiAKICAgICAvLyBDbGVhbiBzaW5nbGUgZWxlbWVudCBjYWNoZSBmb3Igc3RyaW5nIGNv
bnZlcnNpb25zLgpAQCAtNTI5LDE3ICs1MjksMTcgQEAgdm9pZCBWOEdDQ29udHJvbGxlcjo6Z2NF
cGlsb2d1ZSgpCiAgICAgLy8gUnVuIHRocm91Z2ggYWxsIG9iamVjdHMgd2l0aCBwZW5kaW5nIGFj
dGl2aXR5IG1ha2luZyB0aGVpciB3cmFwcGVycyB3ZWFrCiAgICAgLy8gYWdhaW4uCiAgICAgR0NF
cGlsb2d1ZVZpc2l0b3IgZXBpbG9ndWVWaXNpdG9yOwotICAgIHZpc2l0QWN0aXZlRE9NT2JqZWN0
c0luQ3VycmVudFRocmVhZCgmZXBpbG9ndWVWaXNpdG9yKTsKKyAgICB2aXNpdEFjdGl2ZURPTU9i
amVjdHMoJmVwaWxvZ3VlVmlzaXRvcik7CiAKICAgICB3b3JraW5nU2V0RXN0aW1hdGVNQiA9IGdl
dEFjdHVhbE1lbW9yeVVzYWdlSW5NQigpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIENoZWNr
IGFsbCBzdXJ2aXZhbHMgYXJlIHdlYWsuCiAgICAgRE9NT2JqZWN0VmlzaXRvciBkb21PYmplY3RW
aXNpdG9yOwotICAgIHZpc2l0RE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCgmZG9tT2JqZWN0Vmlz
aXRvcik7CisgICAgdmlzaXRET01PYmplY3RzKCZkb21PYmplY3RWaXNpdG9yKTsKIAogICAgIEVu
c3VyZVdlYWtET01Ob2RlVmlzaXRvciB3ZWFrRE9NTm9kZVZpc2l0b3I7Ci0gICAgdmlzaXRET01O
b2Rlc0luQ3VycmVudFRocmVhZCgmd2Vha0RPTU5vZGVWaXNpdG9yKTsKKyAgICB2aXNpdERPTU5v
ZGVzKCZ3ZWFrRE9NTm9kZVZpc2l0b3IpOwogCiAgICAgZW51bWVyYXRlR2xvYmFsSGFuZGxlcygp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ5Yzc2ZDQuLmJiODVkMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRy
b2xsZXIoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKIAogV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIoKQogewotICAgIHJlbW92ZUFsbERPTU9iamVj
dHNJbkN1cnJlbnRUaHJlYWQoKTsKKyAgICByZW1vdmVBbGxET01PYmplY3RzKCk7CiB9CiAKIFNj
cmlwdFZhbHVlIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96367</attachid>
            <date>2011-06-07 20:30:55 -0700</date>
            <delta_ts>2011-06-08 10:31:15 -0700</delta_ts>
            <desc>Removes one more WTF::isMainThread assertion</desc>
            <filename>another-patch</filename>
            <type>text/plain</type>
            <size>27120</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyOGI1NjFlLi5mM2ZmYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTEtMDYtMDcgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxNjQKKyAgICAgICAgUmVtb3ZlICJtdWx0aS10
aHJlYWRlZCIgbG9naWMgaW4gVjggRE9NRGF0YSwgRE9NRGF0YVN0b3JlIGFuZCBmcmllbmRzCisg
ICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bnRlc3RlZCBhbmQgdW51c2VkOgorICAgICAg
ICBUaGlzIGlzIGFuIG9sZCBjb2RlIGZyb20gTG9ja2Vycy1iYXNlZCBpbXBsZW1lbnRhdGlvbiBv
ZiBXZWJXb3JrZXJzIGluCisgICAgICAgIFY4IGJpbmRpbmdzLCB0byBtYWtlIHN1cmUgdGhhdCBE
T00gb2JqZWN0cyBhcmUgcmVsZWFzZWQgb24gdGhlIHJpZ2h0IHRocmVhZAorICAgICAgICBldmVu
IHRob3VnaCBHQyBjb3VsZCBoYXZlIGhhcHBlbmVkIG9uIGFueSB0aHJlYWQuIEl0IGlzIGN1cnJl
bnRseSB1bnVzZWQgKHNpbmNlCisgICAgICAgIGN1cnJlbnQgbW9kZWwgaXMgb25lIHdvcmtlciBw
ZXIgcHJvY2VzcykgYW5kIGlzIGJlaW5nIHJlbW92ZWQgYmVjYXVzZSBuZXcgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgb2YgV2ViV29ya2VycyB3aWxsIGJlIHVzaW5nIFY4IGlzb2xhdGVzLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01EYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvdjgvRE9NRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpET01EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGE6OmdldEN1cnJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRGF0YTo6Z2V0TWFpblRocmVhZFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9ET01EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpnZXRTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01EYXRhOjpnZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTURhdGE6OmhhbmRsZVdlYWtPYmplY3QpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6
OkRPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6On5ET01EYXRh
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp3ZWFrTm9kZUNhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3MvdjgvTWFpblRocmVhZERPTURhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOERPTU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRET01EYXRhU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVtb3ZlQWxsRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjp2
aXNpdERPTU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0RE9NT2JqZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjp2aXNpdEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
dmlzaXRET01TVkdFbGVtZW50SW5zdGFuY2VzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERP
TU1hcC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpnY1Byb2xvZ3VlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4R0NDb250cm9sbGVyOjpnY0VwaWxvZ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dENvbnRyb2xsZXI6On5Xb3JrZXJTY3JpcHRDb250cm9sbGVyKToKKwogMjAxMS0wNi0wNyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2MjcwODgxLi40MjAyOTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0xOTUwLDggKzE5NTAsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdz
L29iamMvT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW0nLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpj
L1dlYlNjcmlwdE9iamVjdC5tbScsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvQ2hpbGRUaHJl
YWRET01EYXRhLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01E
YXRhLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9ET01EYXRhLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0RP
TURhdGFTdG9yZS5jcHAnLApAQCAtMTk2Nyw4ICsxOTY1LDYgQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9Jc29sYXRlZFdvcmxkLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9KYXZhU2NyaXB0
Q2FsbEZyYW1lLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRh
LmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvTWFpblRocmVhZERPTURhdGEuaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L05QVjhPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvT3B0aW9u
c09iamVjdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAwNGM0OWQ0Li41M2MwNjBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwpAQCAtODgsMTEgKzg4LDkgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhVaW50MTZBcnJheUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20v
VjhVaW50MzJBcnJheUN1c3RvbS5jcHAgXAogICAgICAgICBcCi0gICAgICAgIGJpbmRpbmdzL3Y4
L0NoaWxkVGhyZWFkRE9NRGF0YS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9EYXRlRXh0ZW5z
aW9uLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBcCi0gICAgICAgIGJpbmRpbmdzL3Y4L01haW5UaHJl
YWRET01EYXRhLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRET01EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0NoaWxkVGhyZWFkRE9NRGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc3Y2UwZjQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Q2hpbGRUaHJlYWRET01EYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2hpbGRUaHJlYWRET01EYXRhLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQ2hpbGRUaHJlYWRET01EYXRhOjpDaGlsZFRocmVhZERPTURhdGEo
KQotICAgIDogbV9kZWZhdWx0U3RvcmUodGhpcykKLXsKLX0KLQotRE9NRGF0YVN0b3JlJiBDaGls
ZFRocmVhZERPTURhdGE6OmdldFN0b3JlKCkKLXsKLSAgICBBU1NFUlQoIVdURjo6aXNNYWluVGhy
ZWFkKCkpOwotICAgIC8vIEN1cnJlbnRseSwgY2hpbGQgdGhyZWFkcyBoYXZlIG9ubHkgb25lIHdv
cmxkLgotICAgIHJldHVybiBtX2RlZmF1bHRTdG9yZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ2hpbGRUaHJlYWRE
T01EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DaGlsZFRocmVhZERPTURhdGEu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA5N2M4Ni4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DaGlsZFRocmVhZERPTURhdGEuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENoaWxkVGhyZWFkRE9NRGF0YV9oCi0jZGVmaW5l
IENoaWxkVGhyZWFkRE9NRGF0YV9oCi0KLSNpbmNsdWRlICJET01EYXRhLmgiCi0jaW5jbHVkZSAi
U2NvcGVkRE9NRGF0YVN0b3JlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNz
IENoaWxkVGhyZWFkRE9NRGF0YSA6IHB1YmxpYyBET01EYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIENoaWxkVGhyZWFkRE9NRGF0YSgpOwotICAgICAgICBET01EYXRhU3RvcmUmIGdldFN0b3Jl
KCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTY29wZWRET01EYXRhU3RvcmUgbV9kZWZhdWx0
U3RvcmU7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ2hp
bGRUaHJlYWRET01EYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAKaW5k
ZXggNTY4ZmMyYy4uNzkyMDIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5j
cHAKQEAgLTMwLDE2ICszMCwxNCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RE9NRGF0YS5oIgotCi0jaW5jbHVkZSAiQ2hpbGRUaHJlYWRET01EYXRhLmgiCi0jaW5jbHVkZSAi
TWFpblRocmVhZERPTURhdGEuaCIKKyNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1M
b2NhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERPTURhdGE6OkRPTURhdGEoKQot
ICAgIDogbV9vd25pbmdUaHJlYWQoV1RGOjpjdXJyZW50VGhyZWFkKCkpCisgICAgOiBtX2RlZmF1
bHRTdG9yZSh0aGlzKQogewogfQogCkBAIC00OSwxMSArNDcsMTkgQEAgRE9NRGF0YTo6fkRPTURh
dGEoKQogCiBET01EYXRhKiBET01EYXRhOjpnZXRDdXJyZW50KCkKIHsKLSAgICBpZiAoV1RGOjpp
c01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuIE1haW5UaHJlYWRET01EYXRhOjpnZXRDdXJy
ZW50KCk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01EYXRhLCBtYWluVGhyZWFkRE9NRGF0
YSwgKCkpOworICAgIHJldHVybiAmbWFpblRocmVhZERPTURhdGE7Cit9CiAKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFdURjo6VGhyZWFkU3BlY2lmaWM8Q2hpbGRUaHJlYWRET01EYXRhPiwgY2hp
bGRUaHJlYWRET01EYXRhLCAoKSk7Ci0gICAgcmV0dXJuIGNoaWxkVGhyZWFkRE9NRGF0YTsKK0RP
TURhdGFTdG9yZSYgRE9NRGF0YTo6Z2V0TWFpblRocmVhZFN0b3JlKCkKK3sKKyAgICAvLyBUaGlz
IGlzIGJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBub24tdmlydHVhbCBtZXRob2QgZnJvbSBnZXRT
dG9yZSgpCisgICAgLy8gc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCBieSBnZXRDdXJyZW50TWFp
blRocmVhZFN0b3JlLCB3aGljaCBpcworICAgIC8vIGEgaG90IHNwb3QgaW4gRHJvbWFlbyBET00g
dGVzdHMuCisgICAgVjhJc29sYXRlZENvbnRleHQqIGNvbnRleHQgPSBWOElzb2xhdGVkQ29udGV4
dDo6Z2V0RW50ZXJlZCgpOworICAgIGlmIChVTkxJS0VMWShjb250ZXh0ICE9IDApKQorICAgICAg
ICByZXR1cm4gKmNvbnRleHQtPndvcmxkKCktPmRvbURhdGFTdG9yZSgpOworICAgIHJldHVybiBt
X2RlZmF1bHRTdG9yZTsKIH0KIAogdm9pZCBET01EYXRhOjpkZXJlZk9iamVjdChXcmFwcGVyVHlw
ZUluZm8qIHR5cGUsIHZvaWQqIGRvbU9iamVjdCkKQEAgLTYxLDQgKzY3LDYgQEAgdm9pZCBET01E
YXRhOjpkZXJlZk9iamVjdChXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIGRvbU9iamVjdCkK
ICAgICB0eXBlLT5kZXJlZk9iamVjdChkb21PYmplY3QpOwogfQogCisKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5oCmluZGV4IGIwNDI2MDYu
LjY4OGNiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNkZWZpbmUgRE9NRGF0YV9oCiAKICNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKKyNp
bmNsdWRlICJTdGF0aWNET01EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgfkRPTURhdGEoKTsKIAogICAgICAgICBzdGF0aWMgRE9NRGF0
YSogZ2V0Q3VycmVudCgpOwotICAgICAgICB2aXJ0dWFsIERPTURhdGFTdG9yZSYgZ2V0U3RvcmUo
KSA9IDA7CisgICAgICAgIERPTURhdGFTdG9yZSYgZ2V0U3RvcmUoKSB7IHJldHVybiBnZXRNYWlu
VGhyZWFkU3RvcmUoKTsgfQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgICAg
IHN0YXRpYyB2b2lkIGhhbmRsZVdlYWtPYmplY3QoRE9NRGF0YVN0b3JlOjpET01XcmFwcGVyTWFw
VHlwZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4sIFQqIGRvbU9iamVjdCk7CkBAIC01OCw3
ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICAgICAgc3RhdGljIHZvaWQgcmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwKERPTURh
dGFTdG9yZSogc3RvcmUsIEFic3RyYWN0V2Vha1JlZmVyZW5jZU1hcDxULCB2ODo6T2JqZWN0PiYg
ZG9tTWFwKTsKIAotICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG93bmluZ1RocmVhZCgpIGNvbnN0
IHsgcmV0dXJuIG1fb3duaW5nVGhyZWFkOyB9CisgICAgICAgIHN0YXRpYyBET01EYXRhU3RvcmUm
IGdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUoKSB7IHJldHVybiBnZXRDdXJyZW50KCktPmdldE1h
aW5UaHJlYWRTdG9yZSgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgdm9pZCBk
ZXJlZk9iamVjdChXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIGRvbU9iamVjdCk7CkBAIC03
NCw3ICs3NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIH0KICAgICAgICAg
fTsKIAotICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG1fb3duaW5nVGhyZWFkOworICAgICAgICBE
T01EYXRhU3RvcmUmIGdldE1haW5UaHJlYWRTdG9yZSgpOworICAgICAgICBTdGF0aWNET01EYXRh
U3RvcmUgbV9kZWZhdWx0U3RvcmU7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CkBAIC04NSw3ICs4Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBmb3Vu
ZCA9IGZhbHNlOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOwotICAgICAg
ICAgICAgQVNTRVJUKHN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09IFdURjo6Y3Vy
cmVudFRocmVhZCgpKTsKIAogICAgICAgICAgICAgRE9NV3JhcHBlck1hcDxUPiogZG9tTWFwID0g
c3RhdGljX2Nhc3Q8RE9NV3JhcHBlck1hcDxUPio+KHN0b3JlLT5nZXRET01XcmFwcGVyTWFwKG1h
cFR5cGUpKTsKICAgICAgICAgICAgIGlmIChkb21NYXAtPnJlbW92ZUlmUHJlc2VudChkb21PYmpl
Y3QsIHY4T2JqZWN0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9y
ZS5jcHAKaW5kZXggMjFiNDdhNC4uMDNlNmU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC05MSwxMyArOTEsMTEgQEAgRE9NRGF0YVN0b3JlOjpE
T01EYXRhU3RvcmUoRE9NRGF0YSogZG9tRGF0YSkKICNlbmRpZgogICAgICwgbV9kb21EYXRhKGRv
bURhdGEpCiB7Ci0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxT
dG9yZXNNdXRleCgpKTsKICAgICBET01EYXRhU3RvcmU6OmFsbFN0b3JlcygpLmFwcGVuZCh0aGlz
KTsKIH0KIAogRE9NRGF0YVN0b3JlOjp+RE9NRGF0YVN0b3JlKCkKIHsKLSAgICBXVEY6Ok11dGV4
TG9ja2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOwogICAgIERPTURh
dGFTdG9yZTo6YWxsU3RvcmVzKCkucmVtb3ZlKERPTURhdGFTdG9yZTo6YWxsU3RvcmVzKCkuZmlu
ZCh0aGlzKSk7CiB9CiAKQEAgLTEwNywxMiArMTA1LDYgQEAgRE9NRGF0YUxpc3QmIERPTURhdGFT
dG9yZTo6YWxsU3RvcmVzKCkKICAgcmV0dXJuIHN0YXRpY0RPTURhdGFMaXN0OwogfQogCi1XVEY6
Ok11dGV4JiBET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFdURjo6TXV0ZXgsIHN0YXRpY0RPTURhdGFMaXN0TXV0ZXgsICgpKTsKLSAgICBy
ZXR1cm4gc3RhdGljRE9NRGF0YUxpc3RNdXRleDsKLX0KLQogdm9pZCogRE9NRGF0YVN0b3JlOjpn
ZXRET01XcmFwcGVyTWFwKERPTVdyYXBwZXJNYXBUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0
eXBlKSB7CkBAIC0xNTYsMTIgKzE0OCwxMCBAQCB2b2lkIERPTURhdGFTdG9yZTo6d2Vha05vZGVD
YWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKiBkb21PYgogICAg
IC8vIE5vZGUgd3JhcHBlcnMgbXVzdCBiZSBKUyBvYmplY3RzLgogICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+IHY4T2JqZWN0ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3Qo
dmFsdWUpOwogCi0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIoRE9NRGF0YVN0b3JlOjphbGxT
dG9yZXNNdXRleCgpKTsKICAgICBET01EYXRhTGlzdCYgbGlzdCA9IERPTURhdGFTdG9yZTo6YWxs
U3RvcmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgKytpKSB7
CiAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0W2ldOwogICAgICAgICBpZiAoc3Rv
cmUtPmRvbU5vZGVNYXAoKS5yZW1vdmVJZlByZXNlbnQobm9kZSwgdjhPYmplY3QpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpj
dXJyZW50VGhyZWFkKCkpOwogICAgICAgICAgICAgbm9kZS0+ZGVyZWYoKTsgLy8gTm9ib2R5IG92
ZXJyaWRlcyBOb2RlOjpkZXJlZiBzbyBpdCdzIHNhZmUKICAgICAgICAgICAgIHJldHVybjsgLy8g
VGhlcmUgbWlnaHQgYmUgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUgaW4gd29ybGQn
cyBtYXBzCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmgKaW5kZXggZmZiOWRmNS4uMzczZDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmgKQEAgLTc3LDggKzc3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIC8vIEEgbGlzdCBvZiBhbGwgRE9NRGF0YVN0b3JlIG9iamVjdHMgaW4gdGhlIGN1cnJl
bnQgVjggaW5zdGFuY2UgKHRocmVhZCkuIE5vcm1hbGx5LCBlYWNoIFdvcmxkIGhhcyBhIERPTURh
dGFTdG9yZS4KICAgICAgICAgc3RhdGljIERPTURhdGFMaXN0JiBhbGxTdG9yZXMoKTsKLSAgICAg
ICAgLy8gTXV0ZXggdG8gcHJvdGVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgYWNjZXNzIG9mIERPTURh
dGFMaXN0LgotICAgICAgICBzdGF0aWMgV1RGOjpNdXRleCYgYWxsU3RvcmVzTXV0ZXgoKTsKIAog
ICAgICAgICBET01EYXRhKiBkb21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kb21EYXRhOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDljODY1Yy4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1haW5UaHJl
YWRET01EYXRhLmgiCi0KLSNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLU1haW5UaHJlYWRET01EYXRhOjpNYWluVGhyZWFkRE9NRGF0YSgpCi0g
ICAgOiBtX2RlZmF1bHRTdG9yZSh0aGlzKQotewotfQotICAgIAotTWFpblRocmVhZERPTURhdGEq
IE1haW5UaHJlYWRET01EYXRhOjpnZXRDdXJyZW50KCkKLXsKLSAgICBBU1NFUlQoV1RGOjppc01h
aW5UaHJlYWQoKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChNYWluVGhyZWFkRE9NRGF0YSwg
bWFpblRocmVhZERPTURhdGEsICgpKTsKLSAgICByZXR1cm4gJm1haW5UaHJlYWRET01EYXRhOwot
fQotCi1ET01EYXRhU3RvcmUmIE1haW5UaHJlYWRET01EYXRhOjpnZXRNYWluVGhyZWFkU3RvcmUo
KQotewotICAgIC8vIFRoaXMgaXMgYnJva2VuIG91dCBhcyBhIHNlcGFyYXRlIG5vbi12aXJ0dWFs
IG1ldGhvZCBmcm9tIGdldFN0b3JlKCkKLSAgICAvLyBzbyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVk
IGJ5IGdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUsIHdoaWNoIGlzCi0gICAgLy8gYSBob3Qgc3Bv
dCBpbiBEcm9tYWVvIERPTSB0ZXN0cy4KLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
Ci0gICAgVjhJc29sYXRlZENvbnRleHQqIGNvbnRleHQgPSBWOElzb2xhdGVkQ29udGV4dDo6Z2V0
RW50ZXJlZCgpOwotICAgIGlmIChVTkxJS0VMWShjb250ZXh0ICE9IDApKQotICAgICAgICByZXR1
cm4gKmNvbnRleHQtPndvcmxkKCktPmRvbURhdGFTdG9yZSgpOwotICAgIHJldHVybiBtX2RlZmF1
bHRTdG9yZTsKLX0KLQotRE9NRGF0YVN0b3JlJiBNYWluVGhyZWFkRE9NRGF0YTo6Z2V0Q3VycmVu
dE1haW5UaHJlYWRTdG9yZSgpCi17Ci0gICAgcmV0dXJuIGdldEN1cnJlbnQoKS0+Z2V0TWFpblRo
cmVhZFN0b3JlKCk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTWFpblRocmVhZERPTURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU4Zjk5YzkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvTWFpblRocmVhZERPTURhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIE1haW5UaHJlYWRET01EYXRhX2gKLSNkZWZpbmUgTWFpblRocmVhZERPTURhdGFfaAot
Ci0jaW5jbHVkZSAiRE9NRGF0YS5oIgotI2luY2x1ZGUgIlN0YXRpY0RPTURhdGFTdG9yZS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBNYWluVGhyZWFkRE9NRGF0YSA6IHB1
YmxpYyBET01EYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBNYWluVGhyZWFkRE9N
RGF0YSogZ2V0Q3VycmVudCgpOyAvLyBDYWxsZXIgbXVzdCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQu
Ci0gICAgICAgIHN0YXRpYyBET01EYXRhU3RvcmUmIGdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUo
KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgdmlydHVhbCBET01EYXRhU3RvcmUmIGdldFN0
b3JlKCkgeyByZXR1cm4gZ2V0TWFpblRocmVhZFN0b3JlKCk7IH0KLSAgICAgICAgCi0KLSAgICBw
cml2YXRlOgotICAgICAgICBNYWluVGhyZWFkRE9NRGF0YSgpOwotICAgICAgICBET01EYXRhU3Rv
cmUmIGdldE1haW5UaHJlYWRTdG9yZSgpOwotCi0gICAgICAgIFN0YXRpY0RPTURhdGFTdG9yZSBt
X2RlZmF1bHRTdG9yZTsKLSAgICAgICAgLy8gTm90ZTogVGhlIERPTURhdGFTdG9yZXMgZm9yIGlz
b2xhdGVkIHdvcmxkIGFyZSBvd25lZCBieSB0aGUgd29ybGQgb2JqZWN0LgotICAgIH07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIE1haW5UaHJlYWRET01EYXRhX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAppbmRleCA0NmEyM2EwLi44NDc0MDg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCkBAIC0zMyw3ICszMyw2
IEBACiAKICNpbmNsdWRlICJET01EYXRhLmgiCiAjaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCi0j
aW5jbHVkZSAiTWFpblRocmVhZERPTURhdGEuaCIKICNpbmNsdWRlICJTY29wZWRET01EYXRhU3Rv
cmUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsMTIgKzUwLDcgQEAgc3RhdGljIGJv
b2wgZmFzdGVyRE9NU3RvcmVBY2Nlc3MgPSBmYWxzZTsKIAogc3RhdGljIGlubGluZSBET01EYXRh
U3RvcmUmIGdldERPTURhdGFTdG9yZSgpCiB7Ci0gICAgaWYgKExJS0VMWShmYXN0ZXJET01TdG9y
ZUFjY2VzcykpIHsKLSAgICAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwotICAgICAg
ICByZXR1cm4gTWFpblRocmVhZERPTURhdGE6OmdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUoKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gRE9NRGF0YTo6Z2V0Q3VycmVudCgpLT5nZXRTdG9yZSgpOwor
ICAgIHJldHVybiBET01EYXRhOjpnZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKCk7CiB9CiAKIHZv
aWQgZW5hYmxlRmFzdGVyRE9NU3RvcmVBY2Nlc3MoKQpAQCAtODgsNyArODIsNyBAQCBET01XcmFw
cGVyTWFwPFNWR0VsZW1lbnRJbnN0YW5jZT4mIGdldERPTVNWR0VsZW1lbnRJbnN0YW5jZU1hcCgp
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogCi12b2lkIHJlbW92ZUFsbERPTU9iamVjdHNJbkN1
cnJlbnRUaHJlYWQoKQordm9pZCByZW1vdmVBbGxET01PYmplY3RzKCkKIHsKICAgICBET01EYXRh
U3RvcmUmIHN0b3JlID0gZ2V0RE9NRGF0YVN0b3JlKCk7CiAKQEAgLTExMiw0NiArMTA2LDM3IEBA
IHZvaWQgcmVtb3ZlQWxsRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCgpCiAgICAgRE9NRGF0YTo6
cmVtb3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwPHZvaWQ+KCZzdG9yZSwgc3RvcmUuYWN0aXZlRG9t
T2JqZWN0TWFwKCkpOwogfQogCi12b2lkIHZpc2l0RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQoRE9N
V3JhcHBlck1hcDxOb2RlPjo6VmlzaXRvciogdmlzaXRvcikKK3ZvaWQgdmlzaXRET01Ob2RlcyhE
T01XcmFwcGVyTWFwPE5vZGU+OjpWaXNpdG9yKiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVT
Y29wZSBzY29wZTsKIAotICAgIFdURjo6TXV0ZXhMb2NrZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6
YWxsU3RvcmVzTXV0ZXgoKSk7CiAgICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRhU3RvcmU6
OmFsbFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsr
aSkgewogICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKLSAgICAgICAgaWYg
KCFzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQo
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHN0b3JlLT5kb21Ob2RlTWFwKCku
dmlzaXQoc3RvcmUsIHZpc2l0b3IpOwogICAgIH0KIH0KIAotdm9pZCB2aXNpdERPTU9iamVjdHNJ
bkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciogdmlzaXRvcikKK3Zv
aWQgdmlzaXRET01PYmplY3RzKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZpc2l0b3Ip
CiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogCi0gICAgV1RGOjpNdXRleExvY2tlciBs
b2NrZXIoRE9NRGF0YVN0b3JlOjphbGxTdG9yZXNNdXRleCgpKTsKICAgICBET01EYXRhTGlzdCYg
bGlzdCA9IERPTURhdGFTdG9yZTo6YWxsU3RvcmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBs
aXN0W2ldOwotICAgICAgICBpZiAoIXN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09
IFdURjo6Y3VycmVudFRocmVhZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
c3RvcmUtPmRvbU9iamVjdE1hcCgpLnZpc2l0KHN0b3JlLCB2aXNpdG9yKTsKICAgICB9CiB9CiAK
LXZvaWQgdmlzaXRBY3RpdmVET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8
dm9pZD46OlZpc2l0b3IqIHZpc2l0b3IpCit2b2lkIHZpc2l0QWN0aXZlRE9NT2JqZWN0cyhET01X
cmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yKiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKIAotICAgIFdURjo6TXV0ZXhMb2NrZXIgbG9ja2VyKERPTURhdGFTdG9yZTo6YWxs
U3RvcmVzTXV0ZXgoKSk7CiAgICAgRE9NRGF0YUxpc3QmIGxpc3QgPSBET01EYXRhU3RvcmU6OmFs
bFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkg
ewogICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKLSAgICAgICAgaWYgKCFz
dG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHN0b3JlLT5hY3RpdmVEb21PYmplY3RN
YXAoKS52aXNpdChzdG9yZSwgdmlzaXRvcik7CiAgICAgfQpAQCAtMTU5LDE2ICsxNDQsMTMgQEAg
dm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDx2
b2lkPjo6VmlzaXRvciogdmlzaXRvcikKIAogI2lmIEVOQUJMRShTVkcpCiAKLXZvaWQgdmlzaXRE
T01TVkdFbGVtZW50SW5zdGFuY2VzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8U1ZHRWxl
bWVudEluc3RhbmNlPjo6VmlzaXRvciogdmlzaXRvcikKK3ZvaWQgdmlzaXRET01TVkdFbGVtZW50
SW5zdGFuY2VzKERPTVdyYXBwZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNlPjo6VmlzaXRvciogdmlz
aXRvcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAKLSAgICBXVEY6Ok11dGV4TG9j
a2VyIGxvY2tlcihET01EYXRhU3RvcmU6OmFsbFN0b3Jlc011dGV4KCkpOwogICAgIERPTURhdGFM
aXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9y
ZSA9IGxpc3RbaV07Ci0gICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFk
KCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBzdG9yZS0+ZG9tU3ZnRWxlbWVudEluc3RhbmNlTWFwKCkudmlzaXQoc3RvcmUsIHZpc2l0
b3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oCmluZGV4IDUxZDkz
M2EuLjg0Y2Y3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaApAQCAtMTU4
LDIzICsxNTgsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgLy8gQSBtYXAgZnJvbSBE
T00gbm9kZSB0byBpdHMgSlMgd3JhcHBlci4KICAgICBET01Ob2RlTWFwcGluZyYgZ2V0RE9NTm9k
ZU1hcCgpOwotICAgIHZvaWQgdmlzaXRET01Ob2Rlc0luQ3VycmVudFRocmVhZChET01XcmFwcGVy
TWFwPE5vZGU+OjpWaXNpdG9yKik7CisgICAgdm9pZCB2aXNpdERPTU5vZGVzKERPTVdyYXBwZXJN
YXA8Tm9kZT46OlZpc2l0b3IqKTsKIAogICAgIC8vIEEgbWFwIGZyb20gYSBET00gb2JqZWN0IChu
b24tbm9kZSkgdG8gaXRzIEpTIHdyYXBwZXIuIFRoaXMgbWFwIGRvZXMgbm90IGNvbnRhaW4gdGhl
IERPTSBvYmplY3RzIHdoaWNoIGNhbiBoYXZlIHBlbmRpbmcgYWN0aXZpdHkgKGFjdGl2ZSBkb20g
b2JqZWN0cykuCiAgICAgRE9NV3JhcHBlck1hcDx2b2lkPiYgZ2V0RE9NT2JqZWN0TWFwKCk7Ci0g
ICAgdm9pZCB2aXNpdERPTU9iamVjdHNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDx2b2lk
Pjo6VmlzaXRvciopOworICAgIHZvaWQgdmlzaXRET01PYmplY3RzKERPTVdyYXBwZXJNYXA8dm9p
ZD46OlZpc2l0b3IqKTsKIAogICAgIC8vIEEgbWFwIGZyb20gYSBET00gb2JqZWN0IHRvIGl0cyBK
UyB3cmFwcGVyIGZvciBET00gb2JqZWN0cyB3aGljaCBjYW4gaGF2ZSBwZW5kaW5nIGFjdGl2aXR5
LgogICAgIERPTVdyYXBwZXJNYXA8dm9pZD4mIGdldEFjdGl2ZURPTU9iamVjdE1hcCgpOwotICAg
IHZvaWQgdmlzaXRBY3RpdmVET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8
dm9pZD46OlZpc2l0b3IqKTsKKyAgICB2b2lkIHZpc2l0QWN0aXZlRE9NT2JqZWN0cyhET01XcmFw
cGVyTWFwPHZvaWQ+OjpWaXNpdG9yKik7CiAKICAgICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsZWQg
dG8gcmVtb3ZlIGFsbCBET00gb2JqZWN0cyBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdGhy
ZWFkIHdoZW4gaXQgaXMgdGVhcmluZyBkb3duLgotICAgIHZvaWQgcmVtb3ZlQWxsRE9NT2JqZWN0
c0luQ3VycmVudFRocmVhZCgpOworICAgIHZvaWQgcmVtb3ZlQWxsRE9NT2JqZWN0cygpOwogCiAj
aWYgRU5BQkxFKFNWRykKICAgICAvLyBBIG1hcCBmb3IgU1ZHRWxlbWVudEluc3RhbmNlcyB0byBp
dHMgSlMgd3JhcHBlci4KICAgICBET01XcmFwcGVyTWFwPFNWR0VsZW1lbnRJbnN0YW5jZT4mIGdl
dERPTVNWR0VsZW1lbnRJbnN0YW5jZU1hcCgpOwotICAgIHZvaWQgdmlzaXRTVkdFbGVtZW50SW5z
dGFuY2VzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNlPjo6
VmlzaXRvciopOworICAgIHZvaWQgdmlzaXRTVkdFbGVtZW50SW5zdGFuY2VzKERPTVdyYXBwZXJN
YXA8U1ZHRWxlbWVudEluc3RhbmNlPjo6VmlzaXRvciopOwogI2VuZGlmCiAKICAgICB2b2lkIGVu
YWJsZUZhc3RlckRPTVN0b3JlQWNjZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggNzRjMTY1OS4uZmFmMjA5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcApAQCAtNDUyLDE4ICs0NTIs
MTggQEAgdm9pZCBWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSgpCiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgRE9NT2JqZWN0VmlzaXRvciBkb21PYmplY3RWaXNpdG9yOwotICAgIHZpc2l0RE9NT2Jq
ZWN0c0luQ3VycmVudFRocmVhZCgmZG9tT2JqZWN0VmlzaXRvcik7CisgICAgdmlzaXRET01PYmpl
Y3RzKCZkb21PYmplY3RWaXNpdG9yKTsKICNlbmRpZgogCiAgICAgLy8gUnVuIHRocm91Z2ggYWxs
IG9iamVjdHMgd2l0aCBwb3NzaWJsZSBwZW5kaW5nIGFjdGl2aXR5IG1ha2luZyB0aGVpcgogICAg
IC8vIHdyYXBwZXJzIG5vbiB3ZWFrIGlmIHRoZXJlIGlzIHBlbmRpbmcgYWN0aXZpdHkuCiAgICAg
R0NQcm9sb2d1ZVZpc2l0b3IgcHJvbG9ndWVWaXNpdG9yOwotICAgIHZpc2l0QWN0aXZlRE9NT2Jq
ZWN0c0luQ3VycmVudFRocmVhZCgmcHJvbG9ndWVWaXNpdG9yKTsKKyAgICB2aXNpdEFjdGl2ZURP
TU9iamVjdHMoJnByb2xvZ3VlVmlzaXRvcik7CiAKICAgICAvLyBDcmVhdGUgb2JqZWN0IGdyb3Vw
cy4KICAgICBHcm91cGVyVmlzaXRvciBncm91cGVyVmlzaXRvcjsKLSAgICB2aXNpdERPTU5vZGVz
SW5DdXJyZW50VGhyZWFkKCZncm91cGVyVmlzaXRvcik7Ci0gICAgdmlzaXRET01PYmplY3RzSW5D
dXJyZW50VGhyZWFkKCZncm91cGVyVmlzaXRvcik7CisgICAgdmlzaXRET01Ob2RlcygmZ3JvdXBl
clZpc2l0b3IpOworICAgIHZpc2l0RE9NT2JqZWN0cygmZ3JvdXBlclZpc2l0b3IpOwogICAgIGdy
b3VwZXJWaXNpdG9yLmFwcGx5R3JvdXBpbmcoKTsKIAogICAgIC8vIENsZWFuIHNpbmdsZSBlbGVt
ZW50IGNhY2hlIGZvciBzdHJpbmcgY29udmVyc2lvbnMuCkBAIC01MjksMTcgKzUyOSwxNyBAQCB2
b2lkIFY4R0NDb250cm9sbGVyOjpnY0VwaWxvZ3VlKCkKICAgICAvLyBSdW4gdGhyb3VnaCBhbGwg
b2JqZWN0cyB3aXRoIHBlbmRpbmcgYWN0aXZpdHkgbWFraW5nIHRoZWlyIHdyYXBwZXJzIHdlYWsK
ICAgICAvLyBhZ2Fpbi4KICAgICBHQ0VwaWxvZ3VlVmlzaXRvciBlcGlsb2d1ZVZpc2l0b3I7Ci0g
ICAgdmlzaXRBY3RpdmVET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKCZlcGlsb2d1ZVZpc2l0b3Ip
OworICAgIHZpc2l0QWN0aXZlRE9NT2JqZWN0cygmZXBpbG9ndWVWaXNpdG9yKTsKIAogICAgIHdv
cmtpbmdTZXRFc3RpbWF0ZU1CID0gZ2V0QWN0dWFsTWVtb3J5VXNhZ2VJbk1CKCk7CiAKICNpZm5k
ZWYgTkRFQlVHCiAgICAgLy8gQ2hlY2sgYWxsIHN1cnZpdmFscyBhcmUgd2Vhay4KICAgICBET01P
YmplY3RWaXNpdG9yIGRvbU9iamVjdFZpc2l0b3I7Ci0gICAgdmlzaXRET01PYmplY3RzSW5DdXJy
ZW50VGhyZWFkKCZkb21PYmplY3RWaXNpdG9yKTsKKyAgICB2aXNpdERPTU9iamVjdHMoJmRvbU9i
amVjdFZpc2l0b3IpOwogCiAgICAgRW5zdXJlV2Vha0RPTU5vZGVWaXNpdG9yIHdlYWtET01Ob2Rl
VmlzaXRvcjsKLSAgICB2aXNpdERPTU5vZGVzSW5DdXJyZW50VGhyZWFkKCZ3ZWFrRE9NTm9kZVZp
c2l0b3IpOworICAgIHZpc2l0RE9NTm9kZXMoJndlYWtET01Ob2RlVmlzaXRvcik7CiAKICAgICBl
bnVtZXJhdGVHbG9iYWxIYW5kbGVzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZDljNzZkNC4u
YmI4NWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0
KQogCiBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcigpCiB7
Ci0gICAgcmVtb3ZlQWxsRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCgpOworICAgIHJlbW92ZUFs
bERPTU9iamVjdHMoKTsKIH0KIAogU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>