<?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>123208</bug_id>
          
          <creation_ts>2013-10-23 08:08:25 -0700</creation_ts>
          <short_desc>[CSS Grid Layout] Add support for order inside grid items</short_desc>
          <delta_ts>2013-10-28 10:34:16 -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>CSS</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>BlinkMergeCandidate</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>118620</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
    
    <cc>svillar</cc>
    
    <cc>syoichi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>942688</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-23 08:08:25 -0700</bug_when>
    <thetext>We should merge:

    Add support for &apos;order&apos; on grid items
    
    The property is used to modify painting order and the order in which
    we consider grid items for the auto-flow algorithm.
    
    The code is build on the existing OrderIterator and matches what
    flexbox does. Also to avoid adding an extra child walk, refactored
    the explicit grid initialization so that we do also initialize the
    OrderIterator&apos;s Vector. This refactoring saves a child walk as we
    now compute both explicit grid&apos;s sizes in a single child walk.
    
    BUG=257078
    TESTS=fast/css-grid-layout/grid-item-order-auto-flow-resolution.html
          fast/css-grid-layout/grid-item-order-paint-order-expected.html
    
    Review URL: https://chromiumcodereview.appspot.com/18516007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943040</commentid>
    <comment_count>1</comment_count>
      <attachid>215041</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-24 03:09:23 -0700</bug_when>
    <thetext>Created attachment 215041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943066</commentid>
    <comment_count>2</comment_count>
      <attachid>215041</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-24 04:14:15 -0700</bug_when>
    <thetext>Comment on attachment 215041
Patch

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

&gt; Source/WebCore/rendering/OrderIterator.cpp:81
&gt; +    do {
&gt; +        if (!m_currentChild) {
&gt; +            if (m_orderValuesIterator == m_orderValues.end())
&gt; +                return 0;
&gt; +            if (m_orderValuesIterator) {
&gt; +                ++m_orderValuesIterator;
&gt; +                if (m_orderValuesIterator == m_orderValues.end())
&gt; +                    return 0;
&gt; +            } else
&gt; +                m_orderValuesIterator = m_orderValues.begin();
&gt; +
&gt; +            m_currentChild = m_containerBox-&gt;firstChildBox();
&gt; +        } else
&gt; +            m_currentChild = m_currentChild-&gt;nextSiblingBox();
&gt; +    } while (!m_currentChild || m_currentChild-&gt;style()-&gt;order() != *m_orderValuesIterator);

This would read better if it used continue:

if (m_currentChild) {
   m_currentChild = m_currentChild-&gt;nextSiblingBox();
   continue;
}
... etc

&gt; Source/WebCore/rendering/OrderIterator.h:42
&gt; +class OrderIterator {

OrderIterator is a rather generic name. Order of what? Maybe something like GridOrderIterator?

&gt; Source/WebCore/rendering/OrderIterator.h:53
&gt; +    RenderBox* currentChild() const { return m_currentChild; }
&gt; +    RenderBox* first();
&gt; +    RenderBox* next();
&gt; +    void reset();

It would be nice if iterators would implement stl style iterator interface. In the future we will be able to use C++11 range for loops.

&gt; Source/WebCore/rendering/OrderIterator.h:59
&gt; +    Vector&lt;int&gt;::const_iterator m_orderValuesIterator;

Please use unsigned instead of Vector&lt;int&gt;::const_iterator and call it m_orderIndex or similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943076</commentid>
    <comment_count>3</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-24 04:48:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 215041 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215041&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/OrderIterator.cpp:81
&gt; &gt; +    do {
&gt; &gt; +        if (!m_currentChild) {
&gt; &gt; +            if (m_orderValuesIterator == m_orderValues.end())
&gt; &gt; +                return 0;
&gt; &gt; +            if (m_orderValuesIterator) {
&gt; &gt; +                ++m_orderValuesIterator;
&gt; &gt; +                if (m_orderValuesIterator == m_orderValues.end())
&gt; &gt; +                    return 0;
&gt; &gt; +            } else
&gt; &gt; +                m_orderValuesIterator = m_orderValues.begin();
&gt; &gt; +
&gt; &gt; +            m_currentChild = m_containerBox-&gt;firstChildBox();
&gt; &gt; +        } else
&gt; &gt; +            m_currentChild = m_currentChild-&gt;nextSiblingBox();
&gt; &gt; +    } while (!m_currentChild || m_currentChild-&gt;style()-&gt;order() != *m_orderValuesIterator);
&gt; 
&gt; This would read better if it used continue:
&gt; 
&gt; if (m_currentChild) {
&gt;    m_currentChild = m_currentChild-&gt;nextSiblingBox();
&gt;    continue;
&gt; }
&gt; ... etc

Will change it

&gt; &gt; Source/WebCore/rendering/OrderIterator.h:42
&gt; &gt; +class OrderIterator {
&gt; 
&gt; OrderIterator is a rather generic name. Order of what? Maybe something like GridOrderIterator?
&gt; 

Well that was the name when the class was inside RenderFlexibleBox, GridOrderIterator sounds too specific to grid layout and this is shared with flexbox

&gt; &gt; Source/WebCore/rendering/OrderIterator.h:53
&gt; &gt; +    RenderBox* currentChild() const { return m_currentChild; }
&gt; &gt; +    RenderBox* first();
&gt; &gt; +    RenderBox* next();
&gt; &gt; +    void reset();
&gt; 
&gt; It would be nice if iterators would implement stl style iterator interface. In the future we will be able to use C++11 range for loops.
&gt; 

Makes sense

&gt; &gt; Source/WebCore/rendering/OrderIterator.h:59
&gt; &gt; +    Vector&lt;int&gt;::const_iterator m_orderValuesIterator;
&gt; 
&gt; Please use unsigned instead of Vector&lt;int&gt;::const_iterator and call it m_orderIndex or similar.

Actually shouldn&apos;t it be OrderIterator::const_iterator ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943089</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-24 05:59:16 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Well that was the name when the class was inside RenderFlexibleBox, GridOrderIterator sounds too specific to grid layout and this is shared with flex box

Something else then perhaps. Its real name used to be WebCore::RenderFlexibleBox::OrderIterator which is very specific. Now it is WebCore::OrderIterator which is rather generic. 

&gt; Actually shouldn&apos;t it be OrderIterator::const_iterator ?

You can&apos;t really define implementation OrderIterator in terms of itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943125</commentid>
    <comment_count>5</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-24 08:19:59 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Well that was the name when the class was inside RenderFlexibleBox, GridOrderIterator sounds too specific to grid layout and this is shared with flex box
&gt; 
&gt; Something else then perhaps. Its real name used to be WebCore::RenderFlexibleBox::OrderIterator which is very specific. Now it is WebCore::OrderIterator which is rather generic. 
&gt; 
&gt; &gt; Actually shouldn&apos;t it be OrderIterator::const_iterator ?
&gt; 
&gt; You can&apos;t really define implementation OrderIterator in terms of itself.

Beh, just thought that code was inside the RenderGrid...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943131</commentid>
    <comment_count>6</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-24 08:41:42 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Well that was the name when the class was inside RenderFlexibleBox, GridOrderIterator sounds too specific to grid layout and this is shared with flex box
&gt; 
&gt; Something else then perhaps. Its real name used to be WebCore::RenderFlexibleBox::OrderIterator which is very specific. Now it is WebCore::OrderIterator which is rather generic. 
&gt; 
&gt; &gt; Actually shouldn&apos;t it be OrderIterator::const_iterator ?
&gt; 
&gt; You can&apos;t really define implementation OrderIterator in terms of itself.

I meant OrderValues::const_iterator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943162</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-24 09:24:46 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I meant OrderValues::const_iterator

We generally use plain numbers for Vector indexes as it is much more understandable. Vector iterators exist to allow use of STL style algorithms over vectors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944056</commentid>
    <comment_count>8</comment_count>
      <attachid>215296</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-28 05:16:30 -0700</bug_when>
    <thetext>Created attachment 215296
Uploading again for review as I used std::move as suggested by Darin in http://wkb.ug/118620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944057</commentid>
    <comment_count>9</comment_count>
      <attachid>215297</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-28 05:17:31 -0700</bug_when>
    <thetext>Created attachment 215297
Patch

Uploading again for review as I used std::move as suggested by Darin in http://wkb.ug/118620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944058</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-28 05:19:21 -0700</bug_when>
    <thetext>Attachment 215297 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/css-grid-layout/grid-item-order-auto-flow-resolution-expected.txt&apos;, u&apos;LayoutTests/fast/css-grid-layout/grid-item-order-auto-flow-resolution.html&apos;, u&apos;LayoutTests/fast/css-grid-layout/grid-item-order-paint-order-expected.html&apos;, u&apos;LayoutTests/fast/css-grid-layout/grid-item-order-paint-order.html&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/rendering/OrderIterator.cpp&apos;, u&apos;Source/WebCore/rendering/OrderIterator.h&apos;, u&apos;Source/WebCore/rendering/RenderFlexibleBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFlexibleBox.h&apos;, u&apos;Source/WebCore/rendering/RenderGrid.cpp&apos;, u&apos;Source/WebCore/rendering/RenderGrid.h&apos;]&quot; exit_code: 1
Source/WebCore/rendering/OrderIterator.h:48:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944100</commentid>
    <comment_count>11</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-28 08:52:47 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Attachment 215297 [details] did not pass style-queue:
&gt; Source/WebCore/rendering/OrderIterator.h:48:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
&gt; Total errors found: 1 in 16 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

False positive, the script is not prepared for the T&amp;&amp; syntax</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944115</commentid>
    <comment_count>12</comment_count>
      <attachid>215297</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-28 09:18:57 -0700</bug_when>
    <thetext>Comment on attachment 215297
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944118</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-28 09:20:26 -0700</bug_when>
    <thetext>&gt; False positive, the script is not prepared for the T&amp;&amp; syntax

Would be nice to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944119</commentid>
    <comment_count>14</comment_count>
      <attachid>215297</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-28 09:29:09 -0700</bug_when>
    <thetext>Comment on attachment 215297
Patch

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

&gt; Source/WebCore/rendering/OrderIterator.cpp:91
&gt; +    m_currentChild = 0;

nullptr

&gt; Source/WebCore/rendering/OrderIterator.cpp:92
&gt; +    m_orderIndex = -1;

A little irritating to use a magic number for this. Named constant would be better.

&gt; Source/WebCore/rendering/OrderIterator.h:43
&gt; +    WTF_MAKE_NONCOPYABLE(OrderIterator);

If m_containerBox was a reference, we would not need to use WTF_MAKE_NONCOPYABLE, because a reference is automatically noncopyable.

&gt; Source/WebCore/rendering/OrderIterator.h:45
&gt; +    OrderIterator(const RenderBox*);

Should be a reference, not a pointer.

&gt; Source/WebCore/rendering/OrderIterator.h:53
&gt; +    void reset();

This should be private. It’s only used inside the class.

&gt; Source/WebCore/rendering/OrderIterator.h:56
&gt; +    const RenderBox* m_containerBox;

Should be a reference, not a pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944129</commentid>
    <comment_count>15</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-28 09:56:35 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; False positive, the script is not prepared for the T&amp;&amp; syntax
&gt; 
&gt; Would be nice to fix that.

I already reported it in bug 123406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944130</commentid>
    <comment_count>16</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-28 09:57:46 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 215297 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215297&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/OrderIterator.cpp:91
&gt; &gt; +    m_currentChild = 0;
&gt; 
&gt; nullptr
&gt; 
&gt; &gt; Source/WebCore/rendering/OrderIterator.cpp:92
&gt; &gt; +    m_orderIndex = -1;
&gt; 
&gt; A little irritating to use a magic number for this. Named constant would be better.
&gt; 
&gt; &gt; Source/WebCore/rendering/OrderIterator.h:43
&gt; &gt; +    WTF_MAKE_NONCOPYABLE(OrderIterator);
&gt; 
&gt; If m_containerBox was a reference, we would not need to use WTF_MAKE_NONCOPYABLE, because a reference is automatically noncopyable.
&gt; 
&gt; &gt; Source/WebCore/rendering/OrderIterator.h:45
&gt; &gt; +    OrderIterator(const RenderBox*);
&gt; 
&gt; Should be a reference, not a pointer.
&gt; 
&gt; &gt; Source/WebCore/rendering/OrderIterator.h:53
&gt; &gt; +    void reset();
&gt; 
&gt; This should be private. It’s only used inside the class.
&gt; 
&gt; &gt; Source/WebCore/rendering/OrderIterator.h:56
&gt; &gt; +    const RenderBox* m_containerBox;
&gt; 
&gt; Should be a reference, not a pointer.

Thanks for the review. Note that I just moved most of the code to a new file in order to share it, that&apos;s why I tried to minimize the changes to the original code, but I&apos;m ok with improving it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944132</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-28 10:02:07 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Note that I just moved most of the code to a new file in order to share it, that&apos;s why I tried to minimize the changes to the original code, but I&apos;m ok with improving it.

Yup, I noticed it was just a move. Not urgent to make those changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944146</commentid>
    <comment_count>18</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-10-28 10:34:16 -0700</bug_when>
    <thetext>Committed r158115: &lt;http://trac.webkit.org/changeset/158115&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215041</attachid>
            <date>2013-10-24 03:09:23 -0700</date>
            <delta_ts>2013-10-28 05:16:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123208-20131024120921.patch</filename>
            <type>text/plain</type>
            <size>33721</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmNhNGMxYjU5OTVmYjBk
YzIyYjczY2JlMjFmMWRmZmExZWI0MjYzOC4uNGFiN2ViNWExOTI0YWQ1YTk0ZmNkMzY5NTJkNTU2
ZDc1NmQxNGI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTI0ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEFkZCBzdXBwb3J0IGZvciBvcmRlciBpbnNpZGUgZ3JpZCBpdGVtcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMjA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gQmxpbmsg
cjE1MzQ1NyBhbmQgcjE1MzUzNiBieSA8amNoYWZmcmFpeEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgQWRkZWQgc3VwcG9ydCBmb3Igc29ydGluZyBncmlkIGl0ZW1zIGJ5IHVzaW5nIC13ZWJraXQt
b3JkZXIKKyAgICAgICAgcHJvcGVydHkuIFVzZWQgT3JkZXJJdGVyYXRvciB0byBpbXBsZW1lbnQg
aXQgc28gaXQgaGFkIHRvIGJlIG1vdmVkCisgICAgICAgIG91dCBvZiBSZW5kZXJGbGV4aWJsZUJv
eCB0byBiZSBzaGFyZWQgd2l0aCBSZW5kZXJHcmlkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nz
cy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24uaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50
LW9yZGVyLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuY3BwOiBBZGRlZC4gUmlwcGVkIG91dCBvZiBSZW5k
ZXJGbGV4aWJsZUJveC4KKyAgICAgICAgKFdlYkNvcmU6Ok9yZGVySXRlcmF0b3I6Ok9yZGVySXRl
cmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6T3JkZXJJdGVyYXRvcjo6c2V0T3JkZXJWYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6T3JkZXJJdGVyYXRvcjo6Zmlyc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3JkZXJJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpPcmRlckl0ZXJh
dG9yOjpyZXNldCk6CisgICAgICAgICogcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpPcmRlckl0ZXJhdG9yOjpjdXJyZW50Q2hpbGQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6UmVuZGVyR3JpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwYWludENoaWxkcmVuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR3JpZC5oOgorCiAyMDEzLTEwLTE0ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8
c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBhIFZlY3RvciBpbnN0ZWFkIG9mIEhh
c2hTZXQgdG8gY29tcHV0ZWQgdGhlIG9yZGVyVmFsdWVzIGluIFJlbmRlckZsZXhpYmxlQm94CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGM5ZDU0NDQ3NWJjYzc2NGY0NGRlNWUyOTkyOWMzOWI5YmVi
MzRkNWYuLmExMTM3ZTRmYjM0NTM2YWMxMmFlMGExNDk3M2M0MDk0OTRmZTgxNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0yMDg1LDYgKzIwODUsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5jcHAKICAgICByZW5kZXJpbmcvTGF5b3V0U3Rh
dGUuY3BwCiAgICAgcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKKyAgICByZW5kZXJpbmcvT3JkZXJJ
dGVyYXRvci5jcHAKICAgICByZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcAogICAg
IHJlbmRlcmluZy9SZW5kZXJBcmVuYS5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA4OWE4YTA1MmY2YWRjMmYwNjIzN2Ex
NWFmYTNiYjdhZmExYmU1YTkwLi5lMDE4MjAxZTdhOTNhZjI3YjM2YmQ5NTE4ZmZjOGQ2OTdhNzA5
ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQyOTcsNiArNDI5Nyw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0
aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL092ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9PcmRlckl0ZXJhdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWdp
bmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBhYTg2ZjU0NjA5ZjM4ZWQ4YmY0
MDE2YzY2Yzk5NTgzZjU3OTYyMDBkLi4xYjU4YzY5MDZlYWU3ZmU2ZTkyN2Y4YmIwOGU5MmUyYWYx
YTM2Njc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKQEAgLTk1NTAsNiArOTU1MCw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExpbmVXaWR0aC5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcT3JkZXJJdGVyYXRvci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcCI+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xOTU3NSw2ICsx
OTU3Niw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGluZUluZm8u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lTGF5b3V0U3Rh
dGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lV2lkdGgu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xPcmRlckl0ZXJhdG9y
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUGFpbnRJbmZvLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUGFpbnRQaGFzZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFBvaW50ZXJFdmVudHNIaXRS
dWxlcy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDE4YjkwOTBmZWI1MjFkYzFiYzI0YzA2M2ZjNjMyMTVmNzVhZjM5NDIu
Ljk4NDQ2OWRmMjY0OTM0NGEyZjg1NTNjZmU2OWRkNzAzYTRhMzY4NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNjcsNiAr
NTM2Nyw4IEBACiAJCUNERTNBODU0MTdGNUZDRTYwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0
ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
M0E4NTIxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGLmggKi87IH07CiAJ
CUNERTNBODU3MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NTE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tICovOyB9OwogCQlD
REUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NjE3RjYw
MjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi87IH07CisJCUNERTdG
QzQ0MTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTdGQzQyMTgxOTA0QjEwMDJCQkI3NyAv
KiBPcmRlckl0ZXJhdG9yLmNwcCAqLzsgfTsKKwkJQ0RFN0ZDNDUxODE5MDRCMTAwMkJCQjc3IC8q
IE9yZGVySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERTdGQzQzMTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmggKi87IH07
CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRE
RTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1
NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2Vu
ZXJpYy5jcHAgKi87IH07CiAJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0
NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9OwpAQCAtMTIzMjMsNiArMTIzMjUsOCBA
QAogCQlDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDLm1tOyBwYXRoID0gb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERTNBODU2MTdGNjAyMDQwMEM1QkUyMCAv
KiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmg7IHBhdGggPSBvYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREU2NTYwRTE3
Q0E2RTc2MDA1MjZCQTcgLyogbWVkaWFDb250cm9sc0FwcGxlLmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBw
YXRoID0gbWVkaWFDb250cm9sc0FwcGxlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREU3RkM0MjE4MTkwNEIxMDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcmRlckl0ZXJhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFN0ZDNDMxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRl
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JkZXJJdGVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMxRjEg
LyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBs
YXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
bGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYy
RjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA1MDMsNiArMjA1MDcsOCBAQAogCQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0Eg
LyogcmVuZGVyaW5nICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlDREU3RkM0MjE4MTkwNEIxMDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi8sCisJ
CQkJQ0RFN0ZDNDMxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCAqLywKIAkJCQk0
MzkwNDZDMjEyREEyNUNFMDBBRjgwQTIgLyogbWF0aG1sICovLAogCQkJCUZEMDhBODc5MTc1RDM5
MjYwMDJDRDM2MCAvKiBzaGFwZXMgKi8sCiAJCQkJQkM4QzhGQUEwRERDRDJGMjAwQjU5MkY0IC8q
IHN0eWxlICovLApAQCAtMjQ3MDEsNiArMjQ3MDcsNyBAQAogCQkJCUNEM0UyNTFDMTgwNDZCMDYw
MEUyN0Y1NiAvKiBHcmlkQ29vcmRpbmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRTI1MjQx
ODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZVZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREVGNEZENzE3RTg1QzhGMDBBRUUyNEIgLyogR3JpZExlbmd0aC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0RFN0ZDNDUxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjc3MjUsNiArMjc3MzIsNyBAQAogCQkJCUJDMTBENzY3MTdEOEVFNkUw
MDVFMjYyNiAvKiBSZW5kZXJCbG9ja0Zsb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBDQjAw
MjQxN0RGODI2NjAwMTc4OTZCIC8qIExpbmVXaWR0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RDNFMjUyMzE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQ0RFN0ZDNDQxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
T3JkZXJJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2I0ZDE2MDUxODYxMDE5Zjc4NWVkYzJiM2QyODZmOTU0YjM2MWM2
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJh
dG9yLmNwcApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlh
IFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiT3Jk
ZXJJdGVyYXRvci5oIgorCisjaW5jbHVkZSAiUmVuZGVyRmxleGlibGVCb3guaCIKKyNpbmNsdWRl
ICJSZW5kZXJHcmlkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworT3JkZXJJdGVyYXRvcjo6
T3JkZXJJdGVyYXRvcihjb25zdCBSZW5kZXJCb3gqIGNvbnRhaW5lckJveCkKKyAgICA6IG1fY29u
dGFpbmVyQm94KGNvbnRhaW5lckJveCkKKyAgICAsIG1fY3VycmVudENoaWxkKDApCisgICAgLCBt
X29yZGVyVmFsdWVzSXRlcmF0b3IoMCkKK3sKK30KKwordm9pZCBPcmRlckl0ZXJhdG9yOjpzZXRP
cmRlclZhbHVlcyhjb25zdCBPcmRlclZhbHVlcyYgb3JkZXJWYWx1ZXMpCit7CisgICAgcmVzZXQo
KTsKKyAgICBtX29yZGVyVmFsdWVzID0gb3JkZXJWYWx1ZXM7CisgICAgaWYgKG1fb3JkZXJWYWx1
ZXMuc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpzb3J0KG1fb3JkZXJW
YWx1ZXMuYmVnaW4oKSwgbV9vcmRlclZhbHVlcy5lbmQoKSk7CisgICAgYXV0byBuZXh0RWxlbWVu
dCA9IHN0ZDo6dW5pcXVlKG1fb3JkZXJWYWx1ZXMuYmVnaW4oKSwgbV9vcmRlclZhbHVlcy5lbmQo
KSk7CisgICAgbV9vcmRlclZhbHVlcy5zaHJpbmtDYXBhY2l0eShuZXh0RWxlbWVudCAtIG1fb3Jk
ZXJWYWx1ZXMuYmVnaW4oKSk7Cit9CisKK1JlbmRlckJveCogT3JkZXJJdGVyYXRvcjo6Zmlyc3Qo
KQoreworICAgIHJlc2V0KCk7CisgICAgcmV0dXJuIG5leHQoKTsKK30KKworUmVuZGVyQm94KiBP
cmRlckl0ZXJhdG9yOjpuZXh0KCkKK3sKKyAgICBkbyB7CisgICAgICAgIGlmICghbV9jdXJyZW50
Q2hpbGQpIHsKKyAgICAgICAgICAgIGlmIChtX29yZGVyVmFsdWVzSXRlcmF0b3IgPT0gbV9vcmRl
clZhbHVlcy5lbmQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlm
IChtX29yZGVyVmFsdWVzSXRlcmF0b3IpIHsKKyAgICAgICAgICAgICAgICArK21fb3JkZXJWYWx1
ZXNJdGVyYXRvcjsKKyAgICAgICAgICAgICAgICBpZiAobV9vcmRlclZhbHVlc0l0ZXJhdG9yID09
IG1fb3JkZXJWYWx1ZXMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9vcmRlclZhbHVlc0l0ZXJhdG9yID0g
bV9vcmRlclZhbHVlcy5iZWdpbigpOworCisgICAgICAgICAgICBtX2N1cnJlbnRDaGlsZCA9IG1f
Y29udGFpbmVyQm94LT5maXJzdENoaWxkQm94KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbV9jdXJyZW50Q2hpbGQgPSBtX2N1cnJlbnRDaGlsZC0+bmV4dFNpYmxpbmdCb3goKTsKKyAg
ICB9IHdoaWxlICghbV9jdXJyZW50Q2hpbGQgfHwgbV9jdXJyZW50Q2hpbGQtPnN0eWxlKCktPm9y
ZGVyKCkgIT0gKm1fb3JkZXJWYWx1ZXNJdGVyYXRvcik7CisKKyAgICByZXR1cm4gbV9jdXJyZW50
Q2hpbGQ7Cit9CisKK3ZvaWQgT3JkZXJJdGVyYXRvcjo6cmVzZXQoKQoreworICAgIG1fY3VycmVu
dENoaWxkID0gMDsKKyAgICBtX29yZGVyVmFsdWVzSXRlcmF0b3IgPSAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3Jk
ZXJJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNzZlNjBlY2M5ODkzNjI4NDJhMmViMGQzZmQ1Mzg4MTNiNjFkNDJmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuaApA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIE9yZGVySXRlcmF0b3JfaAorI2RlZmluZSBPcmRlckl0ZXJh
dG9yX2gKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJCb3g7CisKK2NsYXNz
IE9yZGVySXRlcmF0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE9yZGVySXRlcmF0b3Ip
OworcHVibGljOgorICAgIE9yZGVySXRlcmF0b3IoY29uc3QgUmVuZGVyQm94Kik7CisKKyAgICB0
eXBlZGVmIFZlY3RvcjxpbnQsIDE+IE9yZGVyVmFsdWVzOworICAgIHZvaWQgc2V0T3JkZXJWYWx1
ZXMoY29uc3QgT3JkZXJWYWx1ZXMmKTsKKworICAgIFJlbmRlckJveCogY3VycmVudENoaWxkKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q2hpbGQ7IH0KKyAgICBSZW5kZXJCb3gqIGZpcnN0KCk7
CisgICAgUmVuZGVyQm94KiBuZXh0KCk7CisgICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgor
ICAgIGNvbnN0IFJlbmRlckJveCogbV9jb250YWluZXJCb3g7CisgICAgUmVuZGVyQm94KiBtX2N1
cnJlbnRDaGlsZDsKKyAgICBWZWN0b3I8aW50PiBtX29yZGVyVmFsdWVzOworICAgIFZlY3Rvcjxp
bnQ+Ojpjb25zdF9pdGVyYXRvciBtX29yZGVyVmFsdWVzSXRlcmF0b3I7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAgT3JkZXJJdGVyYXRvcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCBiMWJlNTJjNTJm
ZjBmZTFiNTg5N2NlYjRhZjg2ODIzOWEzOGI2OWJjLi43ZDU5NmEyMzZmYWNkYTNiMDE3ODFiOTFl
YmI0NjkxNTU4MGQ1ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAKQEAgLTM5LDU4ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVuZGVyRmxleGlibGVCb3g6Ok9yZGVySXRlcmF0b3I6Ok9yZGVySXRlcmF0b3IoY29uc3Qg
UmVuZGVyRmxleGlibGVCb3gqIGZsZXhpYmxlQm94KQotICAgIDogbV9mbGV4aWJsZUJveChmbGV4
aWJsZUJveCkKLSAgICAsIG1fY3VycmVudENoaWxkKDApCi0gICAgLCBtX29yZGVyVmFsdWVzSXRl
cmF0b3IoMCkKLXsKLX0KLQotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6T3JkZXJJdGVyYXRvcjo6
c2V0T3JkZXJWYWx1ZXMoY29uc3QgT3JkZXJWYWx1ZXMmIG9yZGVyVmFsdWVzKQotewotICAgIHJl
c2V0KCk7Ci0gICAgbV9vcmRlclZhbHVlcyA9IG9yZGVyVmFsdWVzOwotICAgIGlmIChtX29yZGVy
VmFsdWVzLnNpemUoKSA8IDIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0ZDo6c29ydChtX29y
ZGVyVmFsdWVzLmJlZ2luKCksIG1fb3JkZXJWYWx1ZXMuZW5kKCkpOwotICAgIGF1dG8gbmV4dEVs
ZW1lbnQgPSBzdGQ6OnVuaXF1ZShtX29yZGVyVmFsdWVzLmJlZ2luKCksIG1fb3JkZXJWYWx1ZXMu
ZW5kKCkpOwotICAgIG1fb3JkZXJWYWx1ZXMuc2hyaW5rQ2FwYWNpdHkobmV4dEVsZW1lbnQgLSBt
X29yZGVyVmFsdWVzLmJlZ2luKCkpOwotfQotCi1SZW5kZXJCb3gqIFJlbmRlckZsZXhpYmxlQm94
OjpPcmRlckl0ZXJhdG9yOjpmaXJzdCgpCi17Ci0gICAgcmVzZXQoKTsKLSAgICByZXR1cm4gbmV4
dCgpOwotfQotCi1SZW5kZXJCb3gqIFJlbmRlckZsZXhpYmxlQm94OjpPcmRlckl0ZXJhdG9yOjpu
ZXh0KCkKLXsKLSAgICBkbyB7Ci0gICAgICAgIGlmICghbV9jdXJyZW50Q2hpbGQpIHsKLSAgICAg
ICAgICAgIGlmIChtX29yZGVyVmFsdWVzSXRlcmF0b3IgPT0gbV9vcmRlclZhbHVlcy5lbmQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGlmIChtX29yZGVyVmFsdWVz
SXRlcmF0b3IpIHsKLSAgICAgICAgICAgICAgICArK21fb3JkZXJWYWx1ZXNJdGVyYXRvcjsKLSAg
ICAgICAgICAgICAgICBpZiAobV9vcmRlclZhbHVlc0l0ZXJhdG9yID09IG1fb3JkZXJWYWx1ZXMu
ZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgbV9vcmRlclZhbHVlc0l0ZXJhdG9yID0gbV9vcmRlclZhbHVlcy5i
ZWdpbigpOwotCi0gICAgICAgICAgICBtX2N1cnJlbnRDaGlsZCA9IG1fZmxleGlibGVCb3gtPmZp
cnN0Q2hpbGRCb3goKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2N1cnJlbnRDaGls
ZCA9IG1fY3VycmVudENoaWxkLT5uZXh0U2libGluZ0JveCgpOwotICAgIH0gd2hpbGUgKCFtX2N1
cnJlbnRDaGlsZCB8fCBtX2N1cnJlbnRDaGlsZC0+c3R5bGUoKS0+b3JkZXIoKSAhPSAqbV9vcmRl
clZhbHVlc0l0ZXJhdG9yKTsKLQotICAgIHJldHVybiBtX2N1cnJlbnRDaGlsZDsKLX0KLQotdm9p
ZCBSZW5kZXJGbGV4aWJsZUJveDo6T3JkZXJJdGVyYXRvcjo6cmVzZXQoKQotewotICAgIG1fY3Vy
cmVudENoaWxkID0gMDsKLSAgICBtX29yZGVyVmFsdWVzSXRlcmF0b3IgPSAwOwotfQotCiBzdHJ1
Y3QgUmVuZGVyRmxleGlibGVCb3g6OkxpbmVDb250ZXh0IHsKICAgICBMaW5lQ29udGV4dChMYXlv
dXRVbml0IGNyb3NzQXhpc09mZnNldCwgTGF5b3V0VW5pdCBjcm9zc0F4aXNFeHRlbnQsIHNpemVf
dCBudW1iZXJPZkNoaWxkcmVuLCBMYXlvdXRVbml0IG1heEFzY2VudCkKICAgICAgICAgOiBjcm9z
c0F4aXNPZmZzZXQoY3Jvc3NBeGlzT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guaAppbmRleCBhNTliMzhjNjE5MGJlODMxMGMyYTJjOTI0YTNmYjRl
ZGNlMmE1Nzk4Li41MTg2OGExM2E3ZTJhYTQzMTMyOTM2NzQ4ODUxNTdlOWZkOTlhYWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtMzEsNiAr
MzEsNyBAQAogI2lmbmRlZiBSZW5kZXJGbGV4aWJsZUJveF9oCiAjZGVmaW5lIFJlbmRlckZsZXhp
YmxlQm94X2gKIAorI2luY2x1ZGUgIk9yZGVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJC
bG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MywyNSArNzQsNiBAQCBwcml2YXRl
OgogICAgICAgICBOb0ZsaXBGb3JSb3dSZXZlcnNlLAogICAgIH07CiAKLSAgICBjbGFzcyBPcmRl
ckl0ZXJhdG9yIHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoT3JkZXJJdGVyYXRvcik7
Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIFZlY3RvcjxpbnQsIDE+IE9yZGVyVmFsdWVz
OwotCi0gICAgICAgIE9yZGVySXRlcmF0b3IoY29uc3QgUmVuZGVyRmxleGlibGVCb3gqKTsKLSAg
ICAgICAgdm9pZCBzZXRPcmRlclZhbHVlcyhjb25zdCBPcmRlclZhbHVlcyYpOwotICAgICAgICBS
ZW5kZXJCb3gqIGN1cnJlbnRDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudENoaWxkOyB9
Ci0gICAgICAgIFJlbmRlckJveCogZmlyc3QoKTsKLSAgICAgICAgUmVuZGVyQm94KiBuZXh0KCk7
Ci0gICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IFJl
bmRlckZsZXhpYmxlQm94KiBtX2ZsZXhpYmxlQm94OwotICAgICAgICBSZW5kZXJCb3gqIG1fY3Vy
cmVudENoaWxkOwotICAgICAgICBPcmRlclZhbHVlcyBtX29yZGVyVmFsdWVzOwotICAgICAgICBW
ZWN0b3I8aW50Pjo6Y29uc3RfaXRlcmF0b3IgbV9vcmRlclZhbHVlc0l0ZXJhdG9yOwotICAgIH07
Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgTGF5b3V0VW5pdD4gSW5m
bGV4aWJsZUZsZXhJdGVtU2l6ZTsKICAgICB0eXBlZGVmIFZlY3RvcjxSZW5kZXJCb3gqPiBPcmRl
cmVkRmxleEl0ZW1MaXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAK
aW5kZXggYWNiNjMxM2Y4ZDE0MmY4Njk0ZTRjOTdjNDA5YmZlNmM3ZDE2NmNkMi4uOTMzZjBlN2Mx
OGIzZGU3ZWE4NGZhZTk4YWQ3MzQxYzA4ZjQ1YjliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEz
IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQzLDYgKzE0
Myw3IEBAIHByaXZhdGU6CiAKIFJlbmRlckdyaWQ6OlJlbmRlckdyaWQoRWxlbWVudCYgZWxlbWVu
dCkKICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIDApCisgICAgLCBtX29yZGVySXRlcmF0b3Io
dGhpcykKIHsKICAgICAvLyBBbGwgb2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxvY2sgbGV2ZWwu
CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOwpAQCAtNDI3LDI0ICs0MjgsNiBAQCBzaXpl
X3QgUmVuZGVyR3JpZDo6ZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoR3JpZFBvc2l0aW9uU2lkZSBz
aWRlKSBjb25zdAogICAgIHJldHVybiAoc2lkZSA9PSBDb2x1bW5TdGFydFNpZGUgfHwgc2lkZSA9
PSBDb2x1bW5FbmRTaWRlKSA/IGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KCkgOiBleHBsaWNpdEdy
aWRSb3dDb3VudCgpOwogfQogCi1zaXplX3QgUmVuZGVyR3JpZDo6bWF4aW11bUluZGV4SW5EaXJl
Y3Rpb24oVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIHNpemVf
dCBtYXhpbXVtSW5kZXggPSBzdGQ6Om1heDxzaXplX3Q+KDEsIChkaXJlY3Rpb24gPT0gRm9yQ29s
dW1ucykgPyBleHBsaWNpdEdyaWRDb2x1bW5Db3VudCgpIDogZXhwbGljaXRHcmlkUm93Q291bnQo
KSk7Ci0KLSAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgIE93blB0cjxHcmlk
U3Bhbj4gcG9zaXRpb25zID0gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIGRp
cmVjdGlvbik7Ci0KLSAgICAgICAgLy8gfHBvc2l0aW9uc3wgaXMgbnVsbCBpZiB3ZSBuZWVkIHRv
IHJ1biB0aGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtLiBPdXIgZXN0aW1hdGlvbiBpZ25vcmVz
Ci0gICAgICAgIC8vIHRoaXMgY2FzZSBhcyB0aGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHdp
bGwgZ3JvdyB0aGUgZ3JpZCBhcyBuZWVkZWQuCi0gICAgICAgIGlmICghcG9zaXRpb25zKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgbWF4aW11bUluZGV4ID0gc3RkOjptYXgobWF4
aW11bUluZGV4LCBwb3NpdGlvbnMtPmZpbmFsUG9zaXRpb25JbmRleCArIDEpOwotICAgIH0KLQot
ICAgIHJldHVybiBtYXhpbXVtSW5kZXg7Ci19Ci0KIExheW91dFVuaXQgUmVuZGVyR3JpZDo6bG9n
aWNhbENvbnRlbnRIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBWZWN0b3I8R3JpZFRy
YWNrPiYgY29sdW1uVHJhY2tzKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgZm9yY2Ug
YSBsYXlvdXQgZXZlcnkgdGltZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBidXQKQEAgLTYyNSwx
NSArNjA4LDEyIEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCgpCiAgICAgQVNT
RVJUKCFncmlkV2FzUG9wdWxhdGVkKCkpOwogICAgIEFTU0VSVChtX2dyaWRJdGVtQ29vcmRpbmF0
ZS5pc0VtcHR5KCkpOwogCi0gICAgbV9ncmlkLmdyb3cobWF4aW11bUluZGV4SW5EaXJlY3Rpb24o
Rm9yUm93cykpOwotICAgIHNpemVfdCBtYXhpbXVtQ29sdW1uSW5kZXggPSBtYXhpbXVtSW5kZXhJ
bkRpcmVjdGlvbihGb3JDb2x1bW5zKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3Jp
ZC5zaXplKCk7ICsraSkKLSAgICAgICAgbV9ncmlkW2ldLmdyb3cobWF4aW11bUNvbHVtbkluZGV4
KTsKKyAgICBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoKTsKIAogICAgIFZl
Y3RvcjxSZW5kZXJCb3gqPiBhdXRvTWFqb3JBeGlzQXV0b0dyaWRJdGVtczsKICAgICBWZWN0b3I8
UmVuZGVyQm94Kj4gc3BlY2lmaWVkTWFqb3JBeGlzQXV0b0dyaWRJdGVtczsKICAgICBHcmlkQXV0
b0Zsb3cgYXV0b0Zsb3cgPSBzdHlsZSgpLT5ncmlkQXV0b0Zsb3coKTsKLSAgICBmb3IgKFJlbmRl
ckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZ0JveCgpKSB7CisgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJh
dG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IFdlIG5ldmVyIHJlLXJlc29sdmUgcG9zaXRpb25zIGlmIHRoZSBncmlk
IGlzIGdyb3duIGR1cmluZyBhdXRvLXBsYWNlbWVudCB3aGljaCBtYXkgbGVhZCBhdXRvIC8gPGlu
dGVnZXI+CiAgICAgICAgIC8vIHBvc2l0aW9ucyB0byBub3QgbWF0Y2ggdGhlIGF1dGhvcidzIGlu
dGVudC4gVGhlIHNwZWNpZmljYXRpb24gaXMgdW5jbGVhciBvbiB3aGF0IHNob3VsZCBiZSBkb25l
IGluIHRoaXMgY2FzZS4KICAgICAgICAgT3duUHRyPEdyaWRTcGFuPiByb3dQb3NpdGlvbnMgPSBy
ZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjaGlsZCwgRm9yUm93cyk7CkBAIC02NjMsNiAr
NjQzLDM5IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCgpCiAgICAgcGxhY2VB
dXRvTWFqb3JBeGlzSXRlbXNPbkdyaWQoYXV0b01ham9yQXhpc0F1dG9HcmlkSXRlbXMpOwogfQog
Cit2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcigp
Cit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBmaW5kIGEgd2F5IHRvIHNoYXJlIE9yZGVyVmFs
dWVzJ3MgaW5pdGlhbGl6YXRpb24gY29kZSB3aXRoIFJlbmRlckZsZXhpYmxlQm94LgorICAgIE9y
ZGVySXRlcmF0b3I6Ok9yZGVyVmFsdWVzIG9yZGVyVmFsdWVzOworICAgIHNpemVfdCBtYXhpbXVt
Um93SW5kZXggPSBzdGQ6Om1heDxzaXplX3Q+KDEsIGV4cGxpY2l0R3JpZFJvd0NvdW50KCkpOwor
ICAgIHNpemVfdCBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heDxzaXplX3Q+KDEsIGV4cGxp
Y2l0R3JpZENvbHVtbkNvdW50KCkpOworCisgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmly
c3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewor
ICAgICAgICAvLyBBdm9pZCBncm93aW5nIHRoZSB2ZWN0b3IgZm9yIHRoZSBjb21tb24tY2FzZSBk
ZWZhdWx0IHZhbHVlIG9mIDAuIFRoaXMgb3B0aW1pemVzIHRoZSBtb3N0IGNvbW1vbiBjYXNlIHdo
aWNoIGlzCisgICAgICAgIC8vIG9uZSBvciBhIGZldyB2YWx1ZXMgd2l0aCB0aGUgZGVmYXVsdCBv
cmRlciAwCisgICAgICAgIGludCBvcmRlciA9IGNoaWxkLT5zdHlsZSgpLT5vcmRlcigpOworICAg
ICAgICBpZiAob3JkZXJWYWx1ZXMuaXNFbXB0eSgpIHx8IG9yZGVyVmFsdWVzLmxhc3QoKSAhPSBv
cmRlcikKKyAgICAgICAgICAgIG9yZGVyVmFsdWVzLmFwcGVuZChvcmRlcik7CisKKyAgICAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBieXBhc3NlcyB0aGUgY2FjaGUgKGNhY2hlZEdyaWRDb29yZGluYXRl
KCkpIGFzIGl0IGlzIHVzZWQgdG8gYnVpbGQgaXQuCisgICAgICAgIE93blB0cjxHcmlkU3Bhbj4g
cm93UG9zaXRpb25zID0gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIEZvclJv
d3MpOworICAgICAgICBPd25QdHI8R3JpZFNwYW4+IGNvbHVtblBvc2l0aW9ucyA9IHJlc29sdmVH
cmlkUG9zaXRpb25zRnJvbVN0eWxlKGNoaWxkLCBGb3JDb2x1bW5zKTsKKworICAgICAgICAvLyB8
cG9zaXRpb25zfCBpcyAwIGlmIHdlIG5lZWQgdG8gcnVuIHRoZSBhdXRvLXBsYWNlbWVudCBhbGdv
cml0aG0uIE91ciBlc3RpbWF0aW9uIGlnbm9yZXMKKyAgICAgICAgLy8gdGhpcyBjYXNlIGFzIHRo
ZSBhdXRvLXBsYWNlbWVudCBhbGdvcml0aG0gd2lsbCBncm93IHRoZSBncmlkIGFzIG5lZWRlZC4K
KyAgICAgICAgaWYgKHJvd1Bvc2l0aW9ucykKKyAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9
IHN0ZDo6bWF4KG1heGltdW1Sb3dJbmRleCwgcm93UG9zaXRpb25zLT5maW5hbFBvc2l0aW9uSW5k
ZXggKyAxKTsKKyAgICAgICAgaWYgKGNvbHVtblBvc2l0aW9ucykKKyAgICAgICAgICAgIG1heGlt
dW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRleCwgY29sdW1uUG9zaXRp
b25zLT5maW5hbFBvc2l0aW9uSW5kZXggKyAxKTsKKyAgICB9CisKKyAgICBtX2dyaWQuZ3Jvdyht
YXhpbXVtUm93SW5kZXgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ncmlkLnNpemUo
KTsgKytpKQorICAgICAgICBtX2dyaWRbaV0uZ3JvdyhtYXhpbXVtQ29sdW1uSW5kZXgpOworCisg
ICAgbV9vcmRlckl0ZXJhdG9yLnNldE9yZGVyVmFsdWVzKG9yZGVyVmFsdWVzKTsKK30KKwogdm9p
ZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKFZlY3RvcjxS
ZW5kZXJCb3gqPiBhdXRvR3JpZEl0ZW1zKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXV0b0dyaWRJdGVtcy5zaXplKCk7ICsraSkgewpAQCAtMTAxNCw2ICsxMDI3LDEyIEBAIExheW91
dFBvaW50IFJlbmRlckdyaWQ6OmZpbmRDaGlsZExvZ2ljYWxQb3NpdGlvbihSZW5kZXJCb3gqIGNo
aWxkLCBjb25zdCBWZWN0b3I8CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAordm9pZCBSZW5kZXJH
cmlkOjpwYWludENoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KQor
eworICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5maXJzdCgpOyBj
aGlsZDsgY2hpbGQgPSBtX29yZGVySXRlcmF0b3IubmV4dCgpKQorICAgICAgICBwYWludENoaWxk
KCpjaGlsZCwgcGFpbnRJbmZvLCBwYWludE9mZnNldCwgZm9yQ2hpbGQsIHVzZVByaW50UmVjdCk7
Cit9CisKIGNvbnN0IGNoYXIqIFJlbmRlckdyaWQ6OnJlbmRlck5hbWUoKSBjb25zdAogewogICAg
IGlmIChpc0Zsb2F0aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRl
eCAzMTk0MTA3YjcxNGI5NmU2Y2VkMzc5ZDRlZDUxOWYyNmZkYWFjMWI2Li5lYzE3MTYzN2ZjNTg4
ZWI2YzRkZWUzMWFhNmQ1MmZmZGYyMzY4MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNiw2ICsyNyw3IEBACiAjaWZuZGVmIFJlbmRlckdyaWRfaAogI2RlZmluZSBSZW5kZXJH
cmlkX2gKIAorI2luY2x1ZGUgIk9yZGVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9j
ay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Myw2ICs3NSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbnNlcnRJdGVtSW50b0dyaWQoUmVuZGVyQm94Kiwgc2l6ZV90IHJvd1RyYWNrLCBz
aXplX3QgY29sdW1uVHJhY2spOwogICAgIHZvaWQgaW5zZXJ0SXRlbUludG9HcmlkKFJlbmRlckJv
eCosIGNvbnN0IEdyaWRDb29yZGluYXRlJik7CiAgICAgdm9pZCBwbGFjZUl0ZW1zT25HcmlkKCk7
CisgICAgdm9pZCBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoKTsKICAgICB2
b2lkIHBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoVmVjdG9yPFJlbmRlckJveCo+
KTsKICAgICB2b2lkIHBsYWNlQXV0b01ham9yQXhpc0l0ZW1zT25HcmlkKFZlY3RvcjxSZW5kZXJC
b3gqPik7CiAgICAgdm9pZCBwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKFJlbmRlckJveCop
OwpAQCAtOTUsNyArOTgsNiBAQCBwcml2YXRlOgogICAgIHNpemVfdCBleHBsaWNpdEdyaWRDb2x1
bW5Db3VudCgpIGNvbnN0OwogICAgIHNpemVfdCBleHBsaWNpdEdyaWRSb3dDb3VudCgpIGNvbnN0
OwogICAgIHNpemVfdCBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShHcmlkUG9zaXRpb25TaWRlKSBj
b25zdDsKLSAgICBzaXplX3QgbWF4aW11bUluZGV4SW5EaXJlY3Rpb24oVHJhY2tTaXppbmdEaXJl
Y3Rpb24pIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQ29udGVudEhlaWdodEZvckNo
aWxkKFJlbmRlckJveCosIFZlY3RvcjxHcmlkVHJhY2s+Jik7CiAgICAgTGF5b3V0VW5pdCBtaW5D
b250ZW50Rm9yQ2hpbGQoUmVuZGVyQm94KiwgVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZlY3RvcjxH
cmlkVHJhY2s+JiBjb2x1bW5UcmFja3MpOwpAQCAtMTE0LDYgKzExNiw4IEBAIHByaXZhdGU6CiAK
ICAgICBMYXlvdXRVbml0IGdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCog
Y2hpbGQsIFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYpIGNv
bnN0OwogCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBmb3JTZWxm
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJv
b2wgdXNlUHJpbnRSZWN0KSBPVkVSUklERSBGSU5BTDsKKwogI2lmbmRlZiBOREVCVUcKICAgICBi
b29sIHRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aChUcmFja1NpemluZ0RpcmVjdGlv
biwgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mKTsKICAgICBib29sIGdyaWRXYXNQb3B1bGF0ZWQo
KSBjb25zdCB7IHJldHVybiAhbV9ncmlkLmlzRW1wdHkoKSAmJiAhbV9ncmlkWzBdLmlzRW1wdHko
KTsgfQpAQCAtMTMyLDYgKzEzNiw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8VmVjdG9yPFZl
Y3RvcjxSZW5kZXJCb3gqLCAxPj4+IG1fZ3JpZDsKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckJv
eCosIEdyaWRDb29yZGluYXRlPiBtX2dyaWRJdGVtQ29vcmRpbmF0ZTsKKyAgICBPcmRlckl0ZXJh
dG9yIG1fb3JkZXJJdGVyYXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA0MmZlNTRjMmFiMzhlMGNkYThiZDdiOTY2ZmVkNGYxYTY5Zjg3OWMwLi44YWY2ZTFmNTg0Zjg0
YmZmNjg3NGE5NzhkNDFkMDY1ODAyNTQ4Yjk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMt
MTAtMjQgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0NTUyBHcmlkIExheW91dF0gQWRkIHN1cHBvcnQgZm9yIG9yZGVyIGluc2lkZSBncmlkIGl0
ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMy
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcm9t
IEJsaW5rIHIxNTM1MzYgYnkgPGpjaGFmZnJhaXhAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFk
ZGVkIGEgY291cGxlIG9mIHRlc3RzIHRvIHZlcmlmeSB0aGF0IHdlIHJlc3BlY3QgdGhlIHNwZWNp
ZmllZAorICAgICAgICBvcmRlciBvZiBncmlkIGl0ZW1zIGJvdGggaW4gdGhlIGF1dG8tcGxhY2Vt
ZW50IGFsZ29yaXRobSBhbmQgaW4KKyAgICAgICAgdGhlIGZpbmFsIHBhaW50aW5nLgorCisgICAg
ICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLWF1dG8tZmxvdy1yZXNv
bHV0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlv
dXQvZ3JpZC1pdGVtLW9yZGVyLWF1dG8tZmxvdy1yZXNvbHV0aW9uLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtaXRlbS1vcmRlci1wYWludC1vcmRlci1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlk
LWl0ZW0tb3JkZXItcGFpbnQtb3JkZXIuaHRtbDogQWRkZWQuCisKIDIwMTMtMTAtMjMgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgRnJlc2hseSBsYW5kZWQg
d2ViZ2wtMS4wLjEgdGVzdHMgYXJlIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVt
LW9yZGVyLWF1dG8tZmxvdy1yZXNvbHV0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmY4
Njg5Mzg5MTVhYzc1ZGM5M2QzZDFhYWQwZmVkYTI0NzJkYTdhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLWF1dG8tZmxv
dy1yZXNvbHV0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCBjaGVj
a3MgdGhhdCB0aGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHRha2VzICdvcmRlcicgaW50byBh
Y2NvdW50IHdoZW4gcGxhY2luZyBncmlkIGl0ZW1zLgorCitQQVNTCitQQVNTCitQQVNTCitQQVNT
CitQQVNTCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91
dC9ncmlkLWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtaXRlbS1vcmRlci1hdXRvLWZsb3ctcmVzb2x1dGlv
bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFkMzIxYzE0NzRlMmNiZDMzZDk3MTBlNTI1NjNmNGNmNjYzNjk5
YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9n
cmlkLWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24uaHRtbApAQCAtMCwwICsxLDc0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91
dEVuYWJsZWQiLCAxKTsKKzwvc2NyaXB0PgorPGxpbmsgaHJlZj0icmVzb3VyY2VzL2dyaWQuY3Nz
IiByZWw9InN0eWxlc2hlZXQiPgorPHN0eWxlPgorLmdyaWQgeworICAgIGRpc3BsYXk6IC13ZWJr
aXQtZ3JpZDsKKyAgICAtd2Via2l0LWdyaWQtZGVmaW5pdGlvbi1jb2x1bW5zOiA1MHB4IDEwMHB4
OworICAgIC13ZWJraXQtZ3JpZC1kZWZpbml0aW9uLXJvd3M6IDUwcHggMTAwcHg7Cit9CisKKy5u
ZWdhdGl2ZU9yZGVyIHsKKyAgICAtd2Via2l0LW9yZGVyOiAtMTsKK30KKworLnBvc2l0aXZlT3Jk
ZXIgeworICAgIC13ZWJraXQtb3JkZXI6IDEwOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvY2hlY2stbGF5b3V0LmpzIj48L3NjcmlwdD4KKzxib2R5
IG9ubG9hZD0iY2hlY2tMYXlvdXQoJy5ncmlkJykiPgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3Mg
dGhhdCB0aGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHRha2VzICdvcmRlcicgaW50byBhY2Nv
dW50IHdoZW4gcGxhY2luZyBncmlkIGl0ZW1zLjwvcD4KKworICAgIDwhLS0gU3RlcCAxLCBncmlk
IGl0ZW0gd2l0aCBhIG1ham9yLWF4aXMgcG9zaXRpb24gdGhhdCBpcyBub3QgJ2F1dG8nLiAtLT4K
KyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgorICAgICAgICA8ZGl2IGNsYXNz
PSJncmlkIGdyaWRBdXRvRmxvd1JvdyI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRv
R3JpZEFyZWEgZmlyc3RSb3dBdXRvQ29sdW1uIiBkYXRhLW9mZnNldC14PSI1MCIgZGF0YS1vZmZz
ZXQteT0iMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
NTAiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIGZpcnN0
Um93QXV0b0NvbHVtbiBuZWdhdGl2ZU9yZGVyIiBkYXRhLW9mZnNldC14PSIwIiBkYXRhLW9mZnNl
dC15PSIwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjUw
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmUiPgorICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWRBdXRvRmxv
d1JvdyI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEgZmlyc3RSb3dB
dXRvQ29sdW1uIHBvc2l0aXZlT3JkZXIiIGRhdGEtb2Zmc2V0LXg9IjUwIiBkYXRhLW9mZnNldC15
PSIwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI1MCI+
PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEgZmlyc3RSb3dB
dXRvQ29sdW1uIiBkYXRhLW9mZnNldC14PSIwIiBkYXRhLW9mZnNldC15PSIwIiBkYXRhLWV4cGVj
dGVkLXdpZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjUwIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIFN0ZXAgNC4xLCBncmlkIGl0ZW1zIHdpdGgg
YSBtaW5vci1heGlzIHBvc2l0aW9uIHRoYXQgaXMgbm90ICdhdXRvJy4gLS0+CisgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlk
QXV0b0Zsb3dDb2x1bW4iPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVh
IHNlY29uZFJvd0F1dG9Db2x1bW4iIGRhdGEtb2Zmc2V0LXg9IjUwIiBkYXRhLW9mZnNldC15PSI1
MCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTAwIj48
L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InNpemVkVG9HcmlkQXJlYSBzZWNvbmRSb3dB
dXRvQ29sdW1uIG5lZ2F0aXZlT3JkZXIiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9
IjUwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkQXV0b0Zsb3dD
b2x1bW4iPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIHNlY29uZFJv
d0F1dG9Db2x1bW4gcG9zaXRpdmVPcmRlciIgZGF0YS1vZmZzZXQteD0iNTAiIGRhdGEtb2Zmc2V0
LXk9IjUwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIx
MDAiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIHNlY29u
ZFJvd0F1dG9Db2x1bW4iIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRh
LWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+PC9kaXY+Cisg
ICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPCEtLSBTdGVwIDQuMiwgYm90aCBtaW5v
ciBhbmQgbWFqb3ItYXhpcyBwb3NpdGlvbiBhcmUgJ2F1dG8nLiAtLT4KKyAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmUiPgorICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWRBdXRv
Rmxvd0NvbHVtbiI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEiIGRh
dGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1
MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJzaXplZFRvR3JpZEFyZWEgbmVnYXRpdmVPcmRlciIgZGF0YS1vZmZzZXQteD0iMCIgZGF0
YS1vZmZzZXQteT0iMCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtZXhwZWN0ZWQtaGVp
Z2h0PSI1MCI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlk
QXV0b0Zsb3dDb2x1bW4iPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVh
IHBvc2l0aXZlT3JkZXIiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRh
LWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+PC9kaXY+Cisg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEiIGRhdGEtb2Zmc2V0LXg9IjAi
IGRhdGEtb2Zmc2V0LXk9IjAiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjUwIiBkYXRhLWV4cGVjdGVk
LWhlaWdodD0iNTAiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQv
Z3JpZC1pdGVtLW9yZGVyLXBhaW50LW9yZGVyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItcGFpbnQtb3JkZXItZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NjFhZjYwNTNlY2ViYjFiOGJhZGMyNjM2YWI0Y2VjYTYyOWZkOTFj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3Jp
ZC1pdGVtLW9yZGVyLXBhaW50LW9yZGVyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxOSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmdyaWQgeworICAgIHdp
ZHRoOiAxMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBjaGVj
a3MgdGhhdCAnb3JkZXInIGNoYW5nZXMgdGhlIHBhaW50IG9yZGVyaW5nLjwvcD4KKyAgICA8cD5U
aGVyZSBzaG91bGQgYmUgMiBncmVlbiBzcXVhcmVzIGJlbG93LjwvcD4KKyAgICA8ZGl2IGNsYXNz
PSJncmlkIj48L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9ImdyaWQiPjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3Jp
ZC1pdGVtLW9yZGVyLXBhaW50LW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlk
LWxheW91dC9ncmlkLWl0ZW0tb3JkZXItcGFpbnQtb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTI3
NTJkMGU5ODk0MDYwZGI0M2M2YWNkNzRlOTRhMzdiYTQxNjM5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50LW9y
ZGVyLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91dEVuYWJsZWQiLCAxKTsKKzwvc2NyaXB0
PgorPGxpbmsgaHJlZj0icmVzb3VyY2VzL2dyaWQuY3NzIiByZWw9InN0eWxlc2hlZXQiPgorPHN0
eWxlPgorLmdyaWQgeworICAgIGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKKyAgICAtd2Via2l0LWdy
aWQtZGVmaW5pdGlvbi1yb3dzOiAxMDBweDsKKyAgICAtd2Via2l0LWdyaWQtZGVmaW5pdGlvbi1j
b2x1bW5zOiAxMDBweDsKKyAgICB3aWR0aDogLXdlYmtpdC1maXQtY29udGVudDsKK30KKy5zaXpl
ZFRvR3JpZEFyZWEgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorCisucmVkIHsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cit9CisKKy5uZWdhdGl2ZU9yZGVyIHsKKyAgICAt
d2Via2l0LW9yZGVyOiAtMTsKK30KKworLnBvc2l0aXZlT3JkZXIgeworICAgIC13ZWJraXQtb3Jk
ZXI6IDEwOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBj
aGVja3MgdGhhdCAnb3JkZXInIGNoYW5nZXMgdGhlIHBhaW50IG9yZGVyaW5nLjwvcD4KKyAgICA8
cD5UaGVyZSBzaG91bGQgYmUgMiBncmVlbiBzcXVhcmVzIGJlbG93LjwvcD4KKyAgICA8ZGl2IGNs
YXNzPSJncmlkIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIGZpcnN0Um93
Rmlyc3RDb2x1bW4iPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEg
Zmlyc3RSb3dGaXJzdENvbHVtbiBuZWdhdGl2ZU9yZGVyIHJlZCI+PC9kaXY+CisgICAgPC9kaXY+
CisKKyAgICA8ZGl2IGNsYXNzPSJncmlkIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dy
aWRBcmVhIGZpcnN0Um93Rmlyc3RDb2x1bW4gcG9zaXRpdmVPcmRlciI+PC9kaXY+CisgICAgICAg
IDxkaXYgY2xhc3M9InNpemVkVG9HcmlkQXJlYSBmaXJzdFJvd0ZpcnN0Q29sdW1uIHJlZCI+PC9k
aXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215296</attachid>
            <date>2013-10-28 05:16:30 -0700</date>
            <delta_ts>2013-10-28 05:17:22 -0700</delta_ts>
            <desc>Uploading again for review as I used std::move as suggested by Darin in http://wkb.ug/118620</desc>
            <filename>bug-123208-20131028131628.patch</filename>
            <type>text/plain</type>
            <size>34327</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMzN2E5OGE2NTg5YmI3
ZWMwYjYxNDZkODY5OGE1NDA0ZTdkYWJhMi4uNTY3MDEwZmY5NmEyMDE4MGQ4ZWMwMjY4YTU2YTU1
MDExMzk2NmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTI4ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEFkZCBzdXBwb3J0IGZvciBvcmRlciBpbnNpZGUgZ3JpZCBpdGVtcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMjA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gQmxpbmsg
cjE1MzQ1NyBhbmQgcjE1MzUzNiBieSA8amNoYWZmcmFpeEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgQWRkZWQgc3VwcG9ydCBmb3Igc29ydGluZyBncmlkIGl0ZW1zIGJ5IHVzaW5nIC13ZWJraXQt
b3JkZXIKKyAgICAgICAgcHJvcGVydHkuIFVzZWQgT3JkZXJJdGVyYXRvciB0byBpbXBsZW1lbnQg
aXQgc28gaXQgaGFkIHRvIGJlIG1vdmVkCisgICAgICAgIG91dCBvZiBSZW5kZXJGbGV4aWJsZUJv
eCB0byBiZSBzaGFyZWQgd2l0aCBSZW5kZXJHcmlkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nz
cy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24uaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50
LW9yZGVyLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBuZXcgZmlsZS4K
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9PcmRlckl0
ZXJhdG9yLmNwcDogQWRkZWQuIFJpcHBlZCBvdXQgb2YgUmVuZGVyRmxleGlibGVCb3guCisgICAg
ICAgIChXZWJDb3JlOjpPcmRlckl0ZXJhdG9yOjpPcmRlckl0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9yZGVySXRlcmF0b3I6OnNldE9yZGVyVmFsdWVzKTogVXNlIHN0ZDo6bW92ZSBzZW1h
bnRpY3MuCisgICAgICAgIChXZWJDb3JlOjpPcmRlckl0ZXJhdG9yOjpmaXJzdCk6IFVzZSBhbiBp
bnRlZ2VyIGFzIGl0ZXJhdG9yLgorICAgICAgICAoV2ViQ29yZTo6T3JkZXJJdGVyYXRvcjo6bmV4
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6T3JkZXJJdGVyYXRvcjo6cmVzZXQpOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok9yZGVySXRlcmF0b3I6OmN1cnJlbnRDaGlsZCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpSZW5kZXJHcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OnBhaW50Q2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJHcmlkLmg6CisKIDIwMTMtMTAtMjggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJlLWVuYWJsZSBzaW1wbGUgbGluZSBsYXlvdXQgZm9yIEdUSwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCAyMjBmNDgxNzYzMDkwMzM5NTdmZjI5MzBjZjZlOWZjZmFiNmU5
MWI3Li4wNzYyN2VmOTljNmQzNmZhMDBjNTcxZWQyNDkwOTZlZDgxOTE2YmU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMjA4Nyw2ICsyMDg3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IHJlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuY3BwCiAgICAgcmVuZGVyaW5nL0xheW91dFN0YXRl
LmNwcAogICAgIHJlbmRlcmluZy9MaW5lV2lkdGguY3BwCisgICAgcmVuZGVyaW5nL09yZGVySXRl
cmF0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAKICAgICBy
ZW5kZXJpbmcvUmVuZGVyQXJlbmEuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMzdlNDJmZjA1ZGZiMTZhOWQ5NzQyOGYx
YjdkNWNjMWE0YmJjZTYzNC4uNGZiNDEyMWI1ZWMzYTY1ZWM0NDUwYTc4Y2QzNmM2YjRjMzcxMWY2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00Mjk4LDYgKzQyOTgsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGgu
aCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBcCisJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvT3JkZXJJdGVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFnaW5h
dGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggZThhNzZlODIxNzg4Zjk1MmQzZjhl
YTUyYjU4ZjYxMWNiMjIyNzFkNi4uYmQyMWJlYmMxMjhhNThkNDBiMDQ5MzQ4ZjdhYzE4YTNkZGMw
YjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC05NTM5LDYgKzk1MzksNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lV2lkdGguY3BwIiAvPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccmVuZGVyaW5nXE9yZGVySXRlcmF0b3IuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFBvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAiPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTk1NjUsNiArMTk1
NjYsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExpbmVJbmZvLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGluZUxheW91dFN0YXRl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGluZVdpZHRoLmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcT3JkZXJJdGVyYXRvci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFBhaW50SW5mby5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFBhaW50UGhhc2UuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xQb2ludGVyRXZlbnRzSGl0UnVs
ZXMuaCIgLz4KQEAgLTIwNzYwLDQgKzIwNzYyLDQgQEAKICAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25UYXJnZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
QnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdldHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08
L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYz
NGNjZTYzNGViN2YxOWM0M2YxMjVlMzAzM2MwOWNmMmIyZTA1NDAuLjkxMmYwZWQyMTFmODg3NmY5
MmVjMTc2NzY1ODk4ZDk5YWIzYThjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNjcsNiArNTM2Nyw4IEBACiAJCUNERTNB
ODU0MTdGNUZDRTYwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFM0E4NTIxN0Y1RkNFNjAwQzVC
RTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGLmggKi87IH07CiAJCUNERTNBODU3MTdGNjAyMDQw
MEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyog
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tICovOyB9OwogCQlDREUzQTg1ODE3RjYwMjA0MDBD
NUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi87IH07CisJCUNERTdGQzQ0MTgxOTA0QjEwMDJCQkI3
NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERTdGQzQyMTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmNw
cCAqLzsgfTsKKwkJQ0RFN0ZDNDUxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTdGQzQzMTgx
OTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmggKi87IH07CiAJCUNERUE3NjMwMTQ2MDhB
NTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRm
b3JtQ2xvY2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9j
a0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CiAJ
CUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyog
Q2xvY2suY3BwICovOyB9OwpAQCAtMTIzMzcsNiArMTIzMzksOCBAQAogCQlDREUzQTg1NTE3RjYw
MjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tOyBw
YXRoID0gb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERTNBODU2MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDLmg7IHBhdGggPSBvYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREU2NTYwRTE3Q0E2RTc2MDA1MjZCQTcgLyog
bWVkaWFDb250cm9sc0FwcGxlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gbWVkaWFDb250cm9s
c0FwcGxlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU3RkM0MjE4MTkwNEIx
MDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPcmRlckl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFN0ZDNDMxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JkZXJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMxRjEgLyogQ2xvY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyRjE0NjA4NEVFMDA4QjMxRjEg
LyogUGxhdGZvcm1DbG9ja0NBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtQ2xvY2tDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NDIsNiAr
MjA1NDYsOCBAQAogCQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0EgLyogcmVuZGVyaW5nICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREU3RkM0MjE4MTkw
NEIxMDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi8sCisJCQkJQ0RFN0ZDNDMxODE5MDRC
MTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCAqLywKIAkJCQk0MzkwNDZDMjEyREEyNUNFMDBB
RjgwQTIgLyogbWF0aG1sICovLAogCQkJCUZEMDhBODc5MTc1RDM5MjYwMDJDRDM2MCAvKiBzaGFw
ZXMgKi8sCiAJCQkJQkM4QzhGQUEwRERDRDJGMjAwQjU5MkY0IC8qIHN0eWxlICovLApAQCAtMjQ3
NTIsNiArMjQ3NTgsNyBAQAogCQkJCUNEM0UyNTFDMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29v
cmRpbmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRTI1MjQxODA0NkJDRDAwRTI3RjU2IC8q
IENTU0dyaWRUZW1wbGF0ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREVGNEZENzE3RTg1
QzhGMDBBRUUyNEIgLyogR3JpZExlbmd0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RFN0ZDNDUx
ODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc3
ODMsNiArMjc3OTAsNyBAQAogCQkJCUJDMTBENzY3MTdEOEVFNkUwMDVFMjYyNiAvKiBSZW5kZXJC
bG9ja0Zsb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBDQjAwMjQxN0RGODI2NjAwMTc4OTZC
IC8qIExpbmVXaWR0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDNFMjUyMzE4MDQ2QkNEMDBF
MjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RF
N0ZDNDQxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmUzZmMyYTg3NDU0NTBkY2JhNzFkNjZmYTQ5ZmQ0OGE2NDgzN2I0NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcApAQCAtMCwwICsx
LDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiT3JkZXJJdGVyYXRvci5oIgorCisj
aW5jbHVkZSAiUmVuZGVyRmxleGlibGVCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworT3JkZXJJdGVyYXRvcjo6T3JkZXJJdGVyYXRvcihjb25z
dCBSZW5kZXJCb3gqIGNvbnRhaW5lckJveCkKKyAgICA6IG1fY29udGFpbmVyQm94KGNvbnRhaW5l
ckJveCkKK3sKKyAgICByZXNldCgpOworfQorCit2b2lkIE9yZGVySXRlcmF0b3I6OnNldE9yZGVy
VmFsdWVzKE9yZGVyVmFsdWVzJiYgb3JkZXJWYWx1ZXMpCit7CisgICAgcmVzZXQoKTsKKyAgICBt
X29yZGVyVmFsdWVzID0gc3RkOjptb3ZlKG9yZGVyVmFsdWVzKTsKKyAgICBpZiAobV9vcmRlclZh
bHVlcy5zaXplKCkgPCAyKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6OnNvcnQobV9vcmRl
clZhbHVlcy5iZWdpbigpLCBtX29yZGVyVmFsdWVzLmVuZCgpKTsKKyAgICBhdXRvIG5leHRFbGVt
ZW50ID0gc3RkOjp1bmlxdWUobV9vcmRlclZhbHVlcy5iZWdpbigpLCBtX29yZGVyVmFsdWVzLmVu
ZCgpKTsKKyAgICBtX29yZGVyVmFsdWVzLnNocmlua0NhcGFjaXR5KG5leHRFbGVtZW50IC0gbV9v
cmRlclZhbHVlcy5iZWdpbigpKTsKK30KKworUmVuZGVyQm94KiBPcmRlckl0ZXJhdG9yOjpmaXJz
dCgpCit7CisgICAgcmVzZXQoKTsKKyAgICByZXR1cm4gbmV4dCgpOworfQorCitSZW5kZXJCb3gq
IE9yZGVySXRlcmF0b3I6Om5leHQoKQoreworICAgIGludCBlbmRJbmRleCA9IG1fb3JkZXJWYWx1
ZXMuc2l6ZSgpOworICAgIGRvIHsKKyAgICAgICAgaWYgKG1fY3VycmVudENoaWxkKSB7CisgICAg
ICAgICAgICBtX2N1cnJlbnRDaGlsZCA9IG1fY3VycmVudENoaWxkLT5uZXh0U2libGluZ0JveCgp
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9vcmRl
ckluZGV4ID09IGVuZEluZGV4KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgaWYgKG1fb3JkZXJJbmRleCAhPSAtMSkgeworICAgICAgICAgICAgKyttX29yZGVySW5kZXg7
CisgICAgICAgICAgICBpZiAobV9vcmRlckluZGV4ID09IGVuZEluZGV4KQorICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fb3JkZXJJ
bmRleCA9IDA7CisKKyAgICAgICAgbV9jdXJyZW50Q2hpbGQgPSBtX2NvbnRhaW5lckJveC0+Zmly
c3RDaGlsZEJveCgpOworICAgIH0gd2hpbGUgKCFtX2N1cnJlbnRDaGlsZCB8fCBtX2N1cnJlbnRD
aGlsZC0+c3R5bGUoKS0+b3JkZXIoKSAhPSBtX29yZGVyVmFsdWVzW21fb3JkZXJJbmRleF0pOwor
CisgICAgcmV0dXJuIG1fY3VycmVudENoaWxkOworfQorCit2b2lkIE9yZGVySXRlcmF0b3I6OnJl
c2V0KCkKK3sKKyAgICBtX2N1cnJlbnRDaGlsZCA9IDA7CisgICAgbV9vcmRlckluZGV4ID0gLTE7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3Jk
ZXJJdGVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2Y2ZkNjAwNzIyMjk5MjNiM2JlYWE3OGZlYWMxYjFm
NjM3NDhkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3Jk
ZXJJdGVyYXRvci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBJ
Z2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT3JkZXJJdGVyYXRvcl9oCisjZGVm
aW5lIE9yZGVySXRlcmF0b3JfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRl
ckJveDsKKworY2xhc3MgT3JkZXJJdGVyYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
T3JkZXJJdGVyYXRvcik7CitwdWJsaWM6CisgICAgT3JkZXJJdGVyYXRvcihjb25zdCBSZW5kZXJC
b3gqKTsKKworICAgIHR5cGVkZWYgVmVjdG9yPGludCwgMT4gT3JkZXJWYWx1ZXM7CisgICAgdm9p
ZCBzZXRPcmRlclZhbHVlcyhPcmRlclZhbHVlcyYmKTsKKworICAgIFJlbmRlckJveCogY3VycmVu
dENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q2hpbGQ7IH0KKyAgICBSZW5kZXJCb3gq
IGZpcnN0KCk7CisgICAgUmVuZGVyQm94KiBuZXh0KCk7CisgICAgdm9pZCByZXNldCgpOworCitw
cml2YXRlOgorICAgIGNvbnN0IFJlbmRlckJveCogbV9jb250YWluZXJCb3g7CisgICAgUmVuZGVy
Qm94KiBtX2N1cnJlbnRDaGlsZDsKKyAgICBPcmRlclZhbHVlcyBtX29yZGVyVmFsdWVzOworICAg
IGludCBtX29yZGVySW5kZXg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyAgT3JkZXJJdGVyYXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAppbmRleCBkYzdkNmZkZTU4YTE4MWE1MmQ5MDA3OTMxYmI2NjAxZjBi
MDFkMzljLi5mNzgzNjcxMjRkNDgwNjA3ODhjMjY4Yjk3NzY1NDg1YjhlZTNjY2EwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTM5LDU4
ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRmxleGlibGVCb3g6Ok9y
ZGVySXRlcmF0b3I6Ok9yZGVySXRlcmF0b3IoY29uc3QgUmVuZGVyRmxleGlibGVCb3gqIGZsZXhp
YmxlQm94KQotICAgIDogbV9mbGV4aWJsZUJveChmbGV4aWJsZUJveCkKLSAgICAsIG1fY3VycmVu
dENoaWxkKDApCi0gICAgLCBtX29yZGVyVmFsdWVzSXRlcmF0b3IoMCkKLXsKLX0KLQotdm9pZCBS
ZW5kZXJGbGV4aWJsZUJveDo6T3JkZXJJdGVyYXRvcjo6c2V0T3JkZXJWYWx1ZXMoY29uc3QgT3Jk
ZXJWYWx1ZXMmIG9yZGVyVmFsdWVzKQotewotICAgIHJlc2V0KCk7Ci0gICAgbV9vcmRlclZhbHVl
cyA9IG9yZGVyVmFsdWVzOwotICAgIGlmIChtX29yZGVyVmFsdWVzLnNpemUoKSA8IDIpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHN0ZDo6c29ydChtX29yZGVyVmFsdWVzLmJlZ2luKCksIG1fb3Jk
ZXJWYWx1ZXMuZW5kKCkpOwotICAgIGF1dG8gbmV4dEVsZW1lbnQgPSBzdGQ6OnVuaXF1ZShtX29y
ZGVyVmFsdWVzLmJlZ2luKCksIG1fb3JkZXJWYWx1ZXMuZW5kKCkpOwotICAgIG1fb3JkZXJWYWx1
ZXMuc2hyaW5rQ2FwYWNpdHkobmV4dEVsZW1lbnQgLSBtX29yZGVyVmFsdWVzLmJlZ2luKCkpOwot
fQotCi1SZW5kZXJCb3gqIFJlbmRlckZsZXhpYmxlQm94OjpPcmRlckl0ZXJhdG9yOjpmaXJzdCgp
Ci17Ci0gICAgcmVzZXQoKTsKLSAgICByZXR1cm4gbmV4dCgpOwotfQotCi1SZW5kZXJCb3gqIFJl
bmRlckZsZXhpYmxlQm94OjpPcmRlckl0ZXJhdG9yOjpuZXh0KCkKLXsKLSAgICBkbyB7Ci0gICAg
ICAgIGlmICghbV9jdXJyZW50Q2hpbGQpIHsKLSAgICAgICAgICAgIGlmIChtX29yZGVyVmFsdWVz
SXRlcmF0b3IgPT0gbV9vcmRlclZhbHVlcy5lbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgICAgIGlmIChtX29yZGVyVmFsdWVzSXRlcmF0b3IpIHsKLSAgICAgICAgICAg
ICAgICArK21fb3JkZXJWYWx1ZXNJdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBpZiAobV9vcmRl
clZhbHVlc0l0ZXJhdG9yID09IG1fb3JkZXJWYWx1ZXMuZW5kKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV9vcmRl
clZhbHVlc0l0ZXJhdG9yID0gbV9vcmRlclZhbHVlcy5iZWdpbigpOwotCi0gICAgICAgICAgICBt
X2N1cnJlbnRDaGlsZCA9IG1fZmxleGlibGVCb3gtPmZpcnN0Q2hpbGRCb3goKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBtX2N1cnJlbnRDaGlsZCA9IG1fY3VycmVudENoaWxkLT5uZXh0
U2libGluZ0JveCgpOwotICAgIH0gd2hpbGUgKCFtX2N1cnJlbnRDaGlsZCB8fCBtX2N1cnJlbnRD
aGlsZC0+c3R5bGUoKS0+b3JkZXIoKSAhPSAqbV9vcmRlclZhbHVlc0l0ZXJhdG9yKTsKLQotICAg
IHJldHVybiBtX2N1cnJlbnRDaGlsZDsKLX0KLQotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6T3Jk
ZXJJdGVyYXRvcjo6cmVzZXQoKQotewotICAgIG1fY3VycmVudENoaWxkID0gMDsKLSAgICBtX29y
ZGVyVmFsdWVzSXRlcmF0b3IgPSAwOwotfQotCiBzdHJ1Y3QgUmVuZGVyRmxleGlibGVCb3g6Okxp
bmVDb250ZXh0IHsKICAgICBMaW5lQ29udGV4dChMYXlvdXRVbml0IGNyb3NzQXhpc09mZnNldCwg
TGF5b3V0VW5pdCBjcm9zc0F4aXNFeHRlbnQsIHNpemVfdCBudW1iZXJPZkNoaWxkcmVuLCBMYXlv
dXRVbml0IG1heEFzY2VudCkKICAgICAgICAgOiBjcm9zc0F4aXNPZmZzZXQoY3Jvc3NBeGlzT2Zm
c2V0KQpAQCAtMzQ1LDcgKzI5Myw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBWZWN0b3I8TGluZUNv
bnRleHQ+IGxpbmVDb250ZXh0czsKICAgICBPcmRlckl0ZXJhdG9yOjpPcmRlclZhbHVlcyBvcmRl
clZhbHVlczsKICAgICBjb21wdXRlTWFpbkF4aXNQcmVmZXJyZWRTaXplcyhvcmRlclZhbHVlcyk7
Ci0gICAgbV9vcmRlckl0ZXJhdG9yLnNldE9yZGVyVmFsdWVzKG9yZGVyVmFsdWVzKTsKKyAgICBt
X29yZGVySXRlcmF0b3Iuc2V0T3JkZXJWYWx1ZXMoc3RkOjptb3ZlKG9yZGVyVmFsdWVzKSk7CiAK
ICAgICBDaGlsZEZyYW1lUmVjdHMgb2xkQ2hpbGRSZWN0czsKICAgICBhcHBlbmRDaGlsZEZyYW1l
UmVjdHMob2xkQ2hpbGRSZWN0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5oCmluZGV4IGEzODUyMTY2YjUxZTRkYjVkNDM2ZjFlMmVlMjNlYTRjZjk5OWI1
NzYuLjc3ZDRiZmFkMTJlZDhjZWYxOTZhMDM3NTAwZTg0YTQ3YjI2YWZjZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaWZuZGVmIFJlbmRlckZsZXhpYmxlQm94X2gKICNkZWZpbmUgUmVuZGVyRmxleGlibGVCb3hf
aAogCisjaW5jbHVkZSAiT3JkZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTczLDI1ICs3NCw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIE5vRmxpcEZvclJvd1JldmVyc2UsCiAgICAgfTsKIAotICAgIGNsYXNzIE9yZGVySXRlcmF0
b3IgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPcmRlckl0ZXJhdG9yKTsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgVmVjdG9yPGludCwgMT4gT3JkZXJWYWx1ZXM7Ci0KLSAg
ICAgICAgT3JkZXJJdGVyYXRvcihjb25zdCBSZW5kZXJGbGV4aWJsZUJveCopOwotICAgICAgICB2
b2lkIHNldE9yZGVyVmFsdWVzKGNvbnN0IE9yZGVyVmFsdWVzJik7Ci0gICAgICAgIFJlbmRlckJv
eCogY3VycmVudENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q2hpbGQ7IH0KLSAgICAg
ICAgUmVuZGVyQm94KiBmaXJzdCgpOwotICAgICAgICBSZW5kZXJCb3gqIG5leHQoKTsKLSAgICAg
ICAgdm9pZCByZXNldCgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgUmVuZGVyRmxl
eGlibGVCb3gqIG1fZmxleGlibGVCb3g7Ci0gICAgICAgIFJlbmRlckJveCogbV9jdXJyZW50Q2hp
bGQ7Ci0gICAgICAgIE9yZGVyVmFsdWVzIG1fb3JkZXJWYWx1ZXM7Ci0gICAgICAgIFZlY3Rvcjxp
bnQ+Ojpjb25zdF9pdGVyYXRvciBtX29yZGVyVmFsdWVzSXRlcmF0b3I7Ci0gICAgfTsKLQogICAg
IHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0PiBJbmZsZXhpYmxl
RmxleEl0ZW1TaXplOwogICAgIHR5cGVkZWYgVmVjdG9yPFJlbmRlckJveCo+IE9yZGVyZWRGbGV4
SXRlbUxpc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA3
NTRhN2FmY2YwMTZhMzhmNWMzNjc2YjhmNmYyMmFkZTYyN2I0NjNkLi5iMzk1Yzg1ZGM5ZDVhZDAz
YzYxYTRjODViN2RlNGRiNjVhMmFlYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlh
IFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDMsNiArMTQzLDcgQEAg
cHJpdmF0ZToKIAogUmVuZGVyR3JpZDo6UmVuZGVyR3JpZChFbGVtZW50JiBlbGVtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIHN0ZDo6
bW92ZShzdHlsZSksIDApCisgICAgLCBtX29yZGVySXRlcmF0b3IodGhpcykKIHsKICAgICAvLyBB
bGwgb2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxvY2sgbGV2ZWwuCiAgICAgc2V0Q2hpbGRyZW5J
bmxpbmUoZmFsc2UpOwpAQCAtNDI3LDI0ICs0MjgsNiBAQCBzaXplX3QgUmVuZGVyR3JpZDo6ZXhw
bGljaXRHcmlkU2l6ZUZvclNpZGUoR3JpZFBvc2l0aW9uU2lkZSBzaWRlKSBjb25zdAogICAgIHJl
dHVybiAoc2lkZSA9PSBDb2x1bW5TdGFydFNpZGUgfHwgc2lkZSA9PSBDb2x1bW5FbmRTaWRlKSA/
IGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KCkgOiBleHBsaWNpdEdyaWRSb3dDb3VudCgpOwogfQog
Ci1zaXplX3QgUmVuZGVyR3JpZDo6bWF4aW11bUluZGV4SW5EaXJlY3Rpb24oVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIHNpemVfdCBtYXhpbXVtSW5kZXggPSBz
dGQ6Om1heDxzaXplX3Q+KDEsIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBleHBsaWNpdEdy
aWRDb2x1bW5Db3VudCgpIDogZXhwbGljaXRHcmlkUm93Q291bnQoKSk7Ci0KLSAgICBmb3IgKFJl
bmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgIE93blB0cjxHcmlkU3Bhbj4gcG9zaXRpb25zID0g
cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIGRpcmVjdGlvbik7Ci0KLSAgICAg
ICAgLy8gfHBvc2l0aW9uc3wgaXMgbnVsbCBpZiB3ZSBuZWVkIHRvIHJ1biB0aGUgYXV0by1wbGFj
ZW1lbnQgYWxnb3JpdGhtLiBPdXIgZXN0aW1hdGlvbiBpZ25vcmVzCi0gICAgICAgIC8vIHRoaXMg
Y2FzZSBhcyB0aGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHdpbGwgZ3JvdyB0aGUgZ3JpZCBh
cyBuZWVkZWQuCi0gICAgICAgIGlmICghcG9zaXRpb25zKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgbWF4aW11bUluZGV4ID0gc3RkOjptYXgobWF4aW11bUluZGV4LCBwb3NpdGlv
bnMtPmZpbmFsUG9zaXRpb25JbmRleCArIDEpOwotICAgIH0KLQotICAgIHJldHVybiBtYXhpbXVt
SW5kZXg7Ci19Ci0KIExheW91dFVuaXQgUmVuZGVyR3JpZDo6bG9naWNhbENvbnRlbnRIZWlnaHRG
b3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tz
KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgZm9yY2UgYSBsYXlvdXQgZXZlcnkgdGlt
ZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBidXQKQEAgLTYyNSwxNSArNjA4LDEyIEBAIHZvaWQg
UmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCgpCiAgICAgQVNTRVJUKCFncmlkV2FzUG9wdWxh
dGVkKCkpOwogICAgIEFTU0VSVChtX2dyaWRJdGVtQ29vcmRpbmF0ZS5pc0VtcHR5KCkpOwogCi0g
ICAgbV9ncmlkLmdyb3cobWF4aW11bUluZGV4SW5EaXJlY3Rpb24oRm9yUm93cykpOwotICAgIHNp
emVfdCBtYXhpbXVtQ29sdW1uSW5kZXggPSBtYXhpbXVtSW5kZXhJbkRpcmVjdGlvbihGb3JDb2x1
bW5zKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3JpZC5zaXplKCk7ICsraSkKLSAg
ICAgICAgbV9ncmlkW2ldLmdyb3cobWF4aW11bUNvbHVtbkluZGV4KTsKKyAgICBwb3B1bGF0ZUV4
cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoKTsKIAogICAgIFZlY3RvcjxSZW5kZXJCb3gqPiBh
dXRvTWFqb3JBeGlzQXV0b0dyaWRJdGVtczsKICAgICBWZWN0b3I8UmVuZGVyQm94Kj4gc3BlY2lm
aWVkTWFqb3JBeGlzQXV0b0dyaWRJdGVtczsKICAgICBHcmlkQXV0b0Zsb3cgYXV0b0Zsb3cgPSBz
dHlsZSgpLT5ncmlkQXV0b0Zsb3coKTsKLSAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJz
dENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7Cisg
ICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxk
OyBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdl
IG5ldmVyIHJlLXJlc29sdmUgcG9zaXRpb25zIGlmIHRoZSBncmlkIGlzIGdyb3duIGR1cmluZyBh
dXRvLXBsYWNlbWVudCB3aGljaCBtYXkgbGVhZCBhdXRvIC8gPGludGVnZXI+CiAgICAgICAgIC8v
IHBvc2l0aW9ucyB0byBub3QgbWF0Y2ggdGhlIGF1dGhvcidzIGludGVudC4gVGhlIHNwZWNpZmlj
YXRpb24gaXMgdW5jbGVhciBvbiB3aGF0IHNob3VsZCBiZSBkb25lIGluIHRoaXMgY2FzZS4KICAg
ICAgICAgT3duUHRyPEdyaWRTcGFuPiByb3dQb3NpdGlvbnMgPSByZXNvbHZlR3JpZFBvc2l0aW9u
c0Zyb21TdHlsZShjaGlsZCwgRm9yUm93cyk7CkBAIC02NjMsNiArNjQzLDM5IEBAIHZvaWQgUmVu
ZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCgpCiAgICAgcGxhY2VBdXRvTWFqb3JBeGlzSXRlbXNP
bkdyaWQoYXV0b01ham9yQXhpc0F1dG9HcmlkSXRlbXMpOwogfQogCit2b2lkIFJlbmRlckdyaWQ6
OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcigpCit7CisgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBmaW5kIGEgd2F5IHRvIHNoYXJlIE9yZGVyVmFsdWVzJ3MgaW5pdGlhbGl6YXRp
b24gY29kZSB3aXRoIFJlbmRlckZsZXhpYmxlQm94LgorICAgIE9yZGVySXRlcmF0b3I6Ok9yZGVy
VmFsdWVzIG9yZGVyVmFsdWVzOworICAgIHNpemVfdCBtYXhpbXVtUm93SW5kZXggPSBzdGQ6Om1h
eDxzaXplX3Q+KDEsIGV4cGxpY2l0R3JpZFJvd0NvdW50KCkpOworICAgIHNpemVfdCBtYXhpbXVt
Q29sdW1uSW5kZXggPSBzdGQ6Om1heDxzaXplX3Q+KDEsIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50
KCkpOworCisgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgeworICAgICAgICAvLyBBdm9pZCBn
cm93aW5nIHRoZSB2ZWN0b3IgZm9yIHRoZSBjb21tb24tY2FzZSBkZWZhdWx0IHZhbHVlIG9mIDAu
IFRoaXMgb3B0aW1pemVzIHRoZSBtb3N0IGNvbW1vbiBjYXNlIHdoaWNoIGlzCisgICAgICAgIC8v
IG9uZSBvciBhIGZldyB2YWx1ZXMgd2l0aCB0aGUgZGVmYXVsdCBvcmRlciAwCisgICAgICAgIGlu
dCBvcmRlciA9IGNoaWxkLT5zdHlsZSgpLT5vcmRlcigpOworICAgICAgICBpZiAob3JkZXJWYWx1
ZXMuaXNFbXB0eSgpIHx8IG9yZGVyVmFsdWVzLmxhc3QoKSAhPSBvcmRlcikKKyAgICAgICAgICAg
IG9yZGVyVmFsdWVzLmFwcGVuZChvcmRlcik7CisKKyAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBi
eXBhc3NlcyB0aGUgY2FjaGUgKGNhY2hlZEdyaWRDb29yZGluYXRlKCkpIGFzIGl0IGlzIHVzZWQg
dG8gYnVpbGQgaXQuCisgICAgICAgIE93blB0cjxHcmlkU3Bhbj4gcm93UG9zaXRpb25zID0gcmVz
b2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIEZvclJvd3MpOworICAgICAgICBPd25Q
dHI8R3JpZFNwYW4+IGNvbHVtblBvc2l0aW9ucyA9IHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0
eWxlKGNoaWxkLCBGb3JDb2x1bW5zKTsKKworICAgICAgICAvLyB8cG9zaXRpb25zfCBpcyAwIGlm
IHdlIG5lZWQgdG8gcnVuIHRoZSBhdXRvLXBsYWNlbWVudCBhbGdvcml0aG0uIE91ciBlc3RpbWF0
aW9uIGlnbm9yZXMKKyAgICAgICAgLy8gdGhpcyBjYXNlIGFzIHRoZSBhdXRvLXBsYWNlbWVudCBh
bGdvcml0aG0gd2lsbCBncm93IHRoZSBncmlkIGFzIG5lZWRlZC4KKyAgICAgICAgaWYgKHJvd1Bv
c2l0aW9ucykKKyAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGltdW1S
b3dJbmRleCwgcm93UG9zaXRpb25zLT5maW5hbFBvc2l0aW9uSW5kZXggKyAxKTsKKyAgICAgICAg
aWYgKGNvbHVtblBvc2l0aW9ucykKKyAgICAgICAgICAgIG1heGltdW1Db2x1bW5JbmRleCA9IHN0
ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRleCwgY29sdW1uUG9zaXRpb25zLT5maW5hbFBvc2l0aW9u
SW5kZXggKyAxKTsKKyAgICB9CisKKyAgICBtX2dyaWQuZ3JvdyhtYXhpbXVtUm93SW5kZXgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ncmlkLnNpemUoKTsgKytpKQorICAgICAgICBt
X2dyaWRbaV0uZ3JvdyhtYXhpbXVtQ29sdW1uSW5kZXgpOworCisgICAgbV9vcmRlckl0ZXJhdG9y
LnNldE9yZGVyVmFsdWVzKHN0ZDo6bW92ZShvcmRlclZhbHVlcykpOworfQorCiB2b2lkIFJlbmRl
ckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoVmVjdG9yPFJlbmRlckJv
eCo+IGF1dG9HcmlkSXRlbXMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdXRvR3Jp
ZEl0ZW1zLnNpemUoKTsgKytpKSB7CkBAIC0xMDE0LDYgKzEwMjcsMTIgQEAgTGF5b3V0UG9pbnQg
UmVuZGVyR3JpZDo6ZmluZENoaWxkTG9naWNhbFBvc2l0aW9uKFJlbmRlckJveCogY2hpbGQsIGNv
bnN0IFZlY3RvcjwKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCit2b2lkIFJlbmRlckdyaWQ6OnBh
aW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpCit7CisgICAg
Zm9yIChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBj
aGlsZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpCisgICAgICAgIHBhaW50Q2hpbGQoKmNoaWxk
LCBwYWludEluZm8sIHBhaW50T2Zmc2V0LCBmb3JDaGlsZCwgdXNlUHJpbnRSZWN0KTsKK30KKwog
Y29uc3QgY2hhciogUmVuZGVyR3JpZDo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlz
RmxvYXRpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IDQ1Njgx
MmRmODg5MzA4YmMxMmQ3OWFjOGE1OTUwMzMwMTU2NWQ5MDQuLmMzYWZhMzMxZDEyZDZkODY5OTky
MDQwODY4YzUxYWJhZTAxYjQyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
LDYgKzI3LDcgQEAKICNpZm5kZWYgUmVuZGVyR3JpZF9oCiAjZGVmaW5lIFJlbmRlckdyaWRfaAog
CisjaW5jbHVkZSAiT3JkZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTczLDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluc2VydEl0ZW1JbnRvR3JpZChSZW5kZXJCb3gqLCBzaXplX3Qgcm93VHJhY2ssIHNpemVfdCBj
b2x1bW5UcmFjayk7CiAgICAgdm9pZCBpbnNlcnRJdGVtSW50b0dyaWQoUmVuZGVyQm94KiwgY29u
c3QgR3JpZENvb3JkaW5hdGUmKTsKICAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoKTsKKyAgICB2
b2lkIHBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcigpOwogICAgIHZvaWQgcGxh
Y2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChWZWN0b3I8UmVuZGVyQm94Kj4pOwogICAg
IHZvaWQgcGxhY2VBdXRvTWFqb3JBeGlzSXRlbXNPbkdyaWQoVmVjdG9yPFJlbmRlckJveCo+KTsK
ICAgICB2b2lkIHBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQoUmVuZGVyQm94Kik7CkBAIC05
NSw3ICs5OCw2IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IGV4cGxpY2l0R3JpZENvbHVtbkNvdW50
KCkgY29uc3Q7CiAgICAgc2l6ZV90IGV4cGxpY2l0R3JpZFJvd0NvdW50KCkgY29uc3Q7CiAgICAg
c2l6ZV90IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKEdyaWRQb3NpdGlvblNpZGUpIGNvbnN0Owot
ICAgIHNpemVfdCBtYXhpbXVtSW5kZXhJbkRpcmVjdGlvbihUcmFja1NpemluZ0RpcmVjdGlvbikg
Y29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxDb250ZW50SGVpZ2h0Rm9yQ2hpbGQoUmVu
ZGVyQm94KiwgVmVjdG9yPEdyaWRUcmFjaz4mKTsKICAgICBMYXlvdXRVbml0IG1pbkNvbnRlbnRG
b3JDaGlsZChSZW5kZXJCb3gqLCBUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFj
az4mIGNvbHVtblRyYWNrcyk7CkBAIC0xMTQsNiArMTE2LDggQEAgcHJpdmF0ZToKIAogICAgIExh
eW91dFVuaXQgZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCwg
VHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JikgY29uc3Q7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQ
cmludFJlY3QpIE9WRVJSSURFIEZJTkFMOworCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgdHJh
Y2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25z
dCBWZWN0b3I8R3JpZFRyYWNrPiYpOwogICAgIGJvb2wgZ3JpZFdhc1BvcHVsYXRlZCgpIGNvbnN0
IHsgcmV0dXJuICFtX2dyaWQuaXNFbXB0eSgpICYmICFtX2dyaWRbMF0uaXNFbXB0eSgpOyB9CkBA
IC0xMzIsNiArMTM2LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8VmVjdG9yPFJl
bmRlckJveCosIDE+Pj4gbV9ncmlkOwogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgR3Jp
ZENvb3JkaW5hdGU+IG1fZ3JpZEl0ZW1Db29yZGluYXRlOworICAgIE9yZGVySXRlcmF0b3IgbV9v
cmRlckl0ZXJhdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUzMzI2
Y2ZkNGMwMWE3NTBjODU2MTRiZDFiMzg0YWJhNGVkZTI3OWMuLmNiNGNlZjM5ZjU0Mzc1ZGE5NTRj
MTMzYmMzYmRmNDc1NjI2OGQwOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0xMC0yOCAg
U2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ1NT
IEdyaWQgTGF5b3V0XSBBZGQgc3VwcG9ydCBmb3Igb3JkZXIgaW5zaWRlIGdyaWQgaXRlbXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzIwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyb20gQmxpbmsg
cjE1MzUzNiBieSA8amNoYWZmcmFpeEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkZWQgYSBj
b3VwbGUgb2YgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgd2UgcmVzcGVjdCB0aGUgc3BlY2lmaWVkCisg
ICAgICAgIG9yZGVyIG9mIGdyaWQgaXRlbXMgYm90aCBpbiB0aGUgYXV0by1wbGFjZW1lbnQgYWxn
b3JpdGhtIGFuZCBpbgorICAgICAgICB0aGUgZmluYWwgcGFpbnRpbmcuCisKKyAgICAgICAgKiBm
YXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlk
LWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50LW9yZGVyLWV4cGVjdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtaXRlbS1v
cmRlci1wYWludC1vcmRlci5odG1sOiBBZGRlZC4KKwogMjAxMy0xMC0yNiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaHkgV2ViR0wgdGVzdCBp
cyBjcmFzaHkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9n
cmlkLWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLWF1dG8tZmxvdy1yZXNv
bHV0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmY4Njg5Mzg5MTVhYzc1ZGM5M2QzZDFh
YWQwZmVkYTI0NzJkYTdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLWF1dG8tZmxvdy1yZXNvbHV0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgYXV0by1wbGFj
ZW1lbnQgYWxnb3JpdGhtIHRha2VzICdvcmRlcicgaW50byBhY2NvdW50IHdoZW4gcGxhY2luZyBn
cmlkIGl0ZW1zLgorCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItYXV0
by1mbG93LXJlc29sdXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0
L2dyaWQtaXRlbS1vcmRlci1hdXRvLWZsb3ctcmVzb2x1dGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFk
MzIxYzE0NzRlMmNiZDMzZDk3MTBlNTI1NjNmNGNmNjYzNjk5YmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItYXV0by1m
bG93LXJlc29sdXRpb24uaHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91dEVuYWJsZWQiLCAxKTsKKzwvc2Ny
aXB0PgorPGxpbmsgaHJlZj0icmVzb3VyY2VzL2dyaWQuY3NzIiByZWw9InN0eWxlc2hlZXQiPgor
PHN0eWxlPgorLmdyaWQgeworICAgIGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKKyAgICAtd2Via2l0
LWdyaWQtZGVmaW5pdGlvbi1jb2x1bW5zOiA1MHB4IDEwMHB4OworICAgIC13ZWJraXQtZ3JpZC1k
ZWZpbml0aW9uLXJvd3M6IDUwcHggMTAwcHg7Cit9CisKKy5uZWdhdGl2ZU9yZGVyIHsKKyAgICAt
d2Via2l0LW9yZGVyOiAtMTsKK30KKworLnBvc2l0aXZlT3JkZXIgeworICAgIC13ZWJraXQtb3Jk
ZXI6IDEwOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvY2hlY2stbGF5b3V0LmpzIj48L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQo
Jy5ncmlkJykiPgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgYXV0by1wbGFjZW1l
bnQgYWxnb3JpdGhtIHRha2VzICdvcmRlcicgaW50byBhY2NvdW50IHdoZW4gcGxhY2luZyBncmlk
IGl0ZW1zLjwvcD4KKworICAgIDwhLS0gU3RlcCAxLCBncmlkIGl0ZW0gd2l0aCBhIG1ham9yLWF4
aXMgcG9zaXRpb24gdGhhdCBpcyBub3QgJ2F1dG8nLiAtLT4KKyAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmUiPgorICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWRBdXRvRmxvd1Jv
dyI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEgZmlyc3RSb3dBdXRv
Q29sdW1uIiBkYXRhLW9mZnNldC14PSI1MCIgZGF0YS1vZmZzZXQteT0iMCIgZGF0YS1leHBlY3Rl
ZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNTAiPjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIGZpcnN0Um93QXV0b0NvbHVtbiBuZWdhdGl2
ZU9yZGVyIiBkYXRhLW9mZnNldC14PSIwIiBkYXRhLW9mZnNldC15PSIwIiBkYXRhLWV4cGVjdGVk
LXdpZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjUwIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgor
ICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWRBdXRvRmxvd1JvdyI+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEgZmlyc3RSb3dBdXRvQ29sdW1uIHBvc2l0aXZlT3Jk
ZXIiIGRhdGEtb2Zmc2V0LXg9IjUwIiBkYXRhLW9mZnNldC15PSIwIiBkYXRhLWV4cGVjdGVkLXdp
ZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI1MCI+PC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEgZmlyc3RSb3dBdXRvQ29sdW1uIiBkYXRhLW9mZnNl
dC14PSIwIiBkYXRhLW9mZnNldC15PSIwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjUwIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisK
KyAgICA8IS0tIFN0ZXAgNC4xLCBncmlkIGl0ZW1zIHdpdGggYSBtaW5vci1heGlzIHBvc2l0aW9u
IHRoYXQgaXMgbm90ICdhdXRvJy4gLS0+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkQXV0b0Zsb3dDb2x1bW4iPgorICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIHNlY29uZFJvd0F1dG9Db2x1bW4i
IGRhdGEtb2Zmc2V0LXg9IjUwIiBkYXRhLW9mZnNldC15PSI1MCIgZGF0YS1leHBlY3RlZC13aWR0
aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTAwIj48L2Rpdj4KKyAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNpemVkVG9HcmlkQXJlYSBzZWNvbmRSb3dBdXRvQ29sdW1uIG5lZ2F0aXZlT3Jk
ZXIiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVkLXdp
ZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj4KKyAg
ICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkQXV0b0Zsb3dDb2x1bW4iPgorICAgICAgICAgICAg
PGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIHNlY29uZFJvd0F1dG9Db2x1bW4gcG9zaXRpdmVP
cmRlciIgZGF0YS1vZmZzZXQteD0iNTAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVk
LXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiPjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIHNlY29uZFJvd0F1dG9Db2x1bW4iIGRhdGEt
b2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
ZGl2PgorCisgICAgPCEtLSBTdGVwIDQuMiwgYm90aCBtaW5vciBhbmQgbWFqb3ItYXhpcyBwb3Np
dGlvbiBhcmUgJ2F1dG8nLiAtLT4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUi
PgorICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWRBdXRvRmxvd0NvbHVtbiI+CisgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEt
b2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWln
aHQ9IjEwMCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEg
bmVnYXRpdmVPcmRlciIgZGF0YS1vZmZzZXQteD0iMCIgZGF0YS1vZmZzZXQteT0iMCIgZGF0YS1l
eHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI1MCI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkQXV0b0Zsb3dDb2x1bW4iPgorICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIHBvc2l0aXZlT3JkZXIiIGRhdGEt
b2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzaXplZFRvR3JpZEFyZWEiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjAiIGRh
dGEtZXhwZWN0ZWQtd2lkdGg9IjUwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNTAiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50
LW9yZGVyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9n
cmlkLWl0ZW0tb3JkZXItcGFpbnQtb3JkZXItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjFh
ZjYwNTNlY2ViYjFiOGJhZGMyNjM2YWI0Y2VjYTYyOWZkOTFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50LW9y
ZGVyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHN0eWxlPgorLmdyaWQgeworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWln
aHQ6IDEwMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCAnb3JkZXInIGNoYW5n
ZXMgdGhlIHBhaW50IG9yZGVyaW5nLjwvcD4KKyAgICA8cD5UaGVyZSBzaG91bGQgYmUgMiBncmVl
biBzcXVhcmVzIGJlbG93LjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJncmlkIj48L2Rpdj4KKworICAg
IDxkaXYgY2xhc3M9ImdyaWQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50LW9y
ZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3Jk
ZXItcGFpbnQtb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTI3NTJkMGU5ODk0MDYwZGI0M2M2YWNk
NzRlOTRhMzdiYTQxNjM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50LW9yZGVyLmh0bWwKQEAgLTAsMCArMSw0
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
Q1NTR3JpZExheW91dEVuYWJsZWQiLCAxKTsKKzwvc2NyaXB0PgorPGxpbmsgaHJlZj0icmVzb3Vy
Y2VzL2dyaWQuY3NzIiByZWw9InN0eWxlc2hlZXQiPgorPHN0eWxlPgorLmdyaWQgeworICAgIGRp
c3BsYXk6IC13ZWJraXQtZ3JpZDsKKyAgICAtd2Via2l0LWdyaWQtZGVmaW5pdGlvbi1yb3dzOiAx
MDBweDsKKyAgICAtd2Via2l0LWdyaWQtZGVmaW5pdGlvbi1jb2x1bW5zOiAxMDBweDsKKyAgICB3
aWR0aDogLXdlYmtpdC1maXQtY29udGVudDsKK30KKy5zaXplZFRvR3JpZEFyZWEgeworICAgIGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOworfQorCisucmVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7Cit9CisKKy5uZWdhdGl2ZU9yZGVyIHsKKyAgICAtd2Via2l0LW9yZGVyOiAtMTsKK30K
KworLnBvc2l0aXZlT3JkZXIgeworICAgIC13ZWJraXQtb3JkZXI6IDEwOworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCAnb3JkZXInIGNo
YW5nZXMgdGhlIHBhaW50IG9yZGVyaW5nLjwvcD4KKyAgICA8cD5UaGVyZSBzaG91bGQgYmUgMiBn
cmVlbiBzcXVhcmVzIGJlbG93LjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJncmlkIj4KKyAgICAgICAg
PGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIGZpcnN0Um93Rmlyc3RDb2x1bW4iPjwvZGl2Pgor
ICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEgZmlyc3RSb3dGaXJzdENvbHVtbiBu
ZWdhdGl2ZU9yZGVyIHJlZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJn
cmlkIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIGZpcnN0Um93Rmlyc3RD
b2x1bW4gcG9zaXRpdmVPcmRlciI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9InNpemVkVG9H
cmlkQXJlYSBmaXJzdFJvd0ZpcnN0Q29sdW1uIHJlZCI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215297</attachid>
            <date>2013-10-28 05:17:31 -0700</date>
            <delta_ts>2013-10-28 09:29:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123208-20131028131729.patch</filename>
            <type>text/plain</type>
            <size>34327</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMzN2E5OGE2NTg5YmI3
ZWMwYjYxNDZkODY5OGE1NDA0ZTdkYWJhMi4uNTY3MDEwZmY5NmEyMDE4MGQ4ZWMwMjY4YTU2YTU1
MDExMzk2NmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTI4ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEFkZCBzdXBwb3J0IGZvciBvcmRlciBpbnNpZGUgZ3JpZCBpdGVtcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMjA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gQmxpbmsg
cjE1MzQ1NyBhbmQgcjE1MzUzNiBieSA8amNoYWZmcmFpeEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgQWRkZWQgc3VwcG9ydCBmb3Igc29ydGluZyBncmlkIGl0ZW1zIGJ5IHVzaW5nIC13ZWJraXQt
b3JkZXIKKyAgICAgICAgcHJvcGVydHkuIFVzZWQgT3JkZXJJdGVyYXRvciB0byBpbXBsZW1lbnQg
aXQgc28gaXQgaGFkIHRvIGJlIG1vdmVkCisgICAgICAgIG91dCBvZiBSZW5kZXJGbGV4aWJsZUJv
eCB0byBiZSBzaGFyZWQgd2l0aCBSZW5kZXJHcmlkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nz
cy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24uaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50
LW9yZGVyLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBuZXcgZmlsZS4K
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9PcmRlckl0
ZXJhdG9yLmNwcDogQWRkZWQuIFJpcHBlZCBvdXQgb2YgUmVuZGVyRmxleGlibGVCb3guCisgICAg
ICAgIChXZWJDb3JlOjpPcmRlckl0ZXJhdG9yOjpPcmRlckl0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9yZGVySXRlcmF0b3I6OnNldE9yZGVyVmFsdWVzKTogVXNlIHN0ZDo6bW92ZSBzZW1h
bnRpY3MuCisgICAgICAgIChXZWJDb3JlOjpPcmRlckl0ZXJhdG9yOjpmaXJzdCk6IFVzZSBhbiBp
bnRlZ2VyIGFzIGl0ZXJhdG9yLgorICAgICAgICAoV2ViQ29yZTo6T3JkZXJJdGVyYXRvcjo6bmV4
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6T3JkZXJJdGVyYXRvcjo6cmVzZXQpOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok9yZGVySXRlcmF0b3I6OmN1cnJlbnRDaGlsZCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpSZW5kZXJHcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OnBhaW50Q2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJHcmlkLmg6CisKIDIwMTMtMTAtMjggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJlLWVuYWJsZSBzaW1wbGUgbGluZSBsYXlvdXQgZm9yIEdUSwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCAyMjBmNDgxNzYzMDkwMzM5NTdmZjI5MzBjZjZlOWZjZmFiNmU5
MWI3Li4wNzYyN2VmOTljNmQzNmZhMDBjNTcxZWQyNDkwOTZlZDgxOTE2YmU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMjA4Nyw2ICsyMDg3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IHJlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuY3BwCiAgICAgcmVuZGVyaW5nL0xheW91dFN0YXRl
LmNwcAogICAgIHJlbmRlcmluZy9MaW5lV2lkdGguY3BwCisgICAgcmVuZGVyaW5nL09yZGVySXRl
cmF0b3IuY3BwCiAgICAgcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAKICAgICBy
ZW5kZXJpbmcvUmVuZGVyQXJlbmEuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMzdlNDJmZjA1ZGZiMTZhOWQ5NzQyOGYx
YjdkNWNjMWE0YmJjZTYzNC4uNGZiNDEyMWI1ZWMzYTY1ZWM0NDUwYTc4Y2QzNmM2YjRjMzcxMWY2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00Mjk4LDYgKzQyOTgsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGgu
aCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBcCisJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvT3JkZXJJdGVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFnaW5h
dGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggZThhNzZlODIxNzg4Zjk1MmQzZjhl
YTUyYjU4ZjYxMWNiMjIyNzFkNi4uYmQyMWJlYmMxMjhhNThkNDBiMDQ5MzQ4ZjdhYzE4YTNkZGMw
YjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC05NTM5LDYgKzk1MzksNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lV2lkdGguY3BwIiAvPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccmVuZGVyaW5nXE9yZGVySXRlcmF0b3IuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFBvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAiPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTk1NjUsNiArMTk1
NjYsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExpbmVJbmZvLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGluZUxheW91dFN0YXRl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGluZVdpZHRoLmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcT3JkZXJJdGVyYXRvci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFBhaW50SW5mby5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFBhaW50UGhhc2UuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xQb2ludGVyRXZlbnRzSGl0UnVs
ZXMuaCIgLz4KQEAgLTIwNzYwLDQgKzIwNzYyLDQgQEAKICAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25UYXJnZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
QnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdldHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08
L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYz
NGNjZTYzNGViN2YxOWM0M2YxMjVlMzAzM2MwOWNmMmIyZTA1NDAuLjkxMmYwZWQyMTFmODg3NmY5
MmVjMTc2NzY1ODk4ZDk5YWIzYThjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNjcsNiArNTM2Nyw4IEBACiAJCUNERTNB
ODU0MTdGNUZDRTYwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFM0E4NTIxN0Y1RkNFNjAwQzVC
RTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGLmggKi87IH07CiAJCUNERTNBODU3MTdGNjAyMDQw
MEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyog
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tICovOyB9OwogCQlDREUzQTg1ODE3RjYwMjA0MDBD
NUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi87IH07CisJCUNERTdGQzQ0MTgxOTA0QjEwMDJCQkI3
NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERTdGQzQyMTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmNw
cCAqLzsgfTsKKwkJQ0RFN0ZDNDUxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTdGQzQzMTgx
OTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmggKi87IH07CiAJCUNERUE3NjMwMTQ2MDhB
NTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRm
b3JtQ2xvY2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9j
a0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CiAJ
CUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyog
Q2xvY2suY3BwICovOyB9OwpAQCAtMTIzMzcsNiArMTIzMzksOCBAQAogCQlDREUzQTg1NTE3RjYw
MjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tOyBw
YXRoID0gb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNERTNBODU2MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDLmg7IHBhdGggPSBvYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREU2NTYwRTE3Q0E2RTc2MDA1MjZCQTcgLyog
bWVkaWFDb250cm9sc0FwcGxlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gbWVkaWFDb250cm9s
c0FwcGxlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU3RkM0MjE4MTkwNEIx
MDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPcmRlckl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFN0ZDNDMxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JkZXJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMxRjEgLyogQ2xvY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyRjE0NjA4NEVFMDA4QjMxRjEg
LyogUGxhdGZvcm1DbG9ja0NBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtQ2xvY2tDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NDIsNiAr
MjA1NDYsOCBAQAogCQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0EgLyogcmVuZGVyaW5nICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREU3RkM0MjE4MTkw
NEIxMDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi8sCisJCQkJQ0RFN0ZDNDMxODE5MDRC
MTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCAqLywKIAkJCQk0MzkwNDZDMjEyREEyNUNFMDBB
RjgwQTIgLyogbWF0aG1sICovLAogCQkJCUZEMDhBODc5MTc1RDM5MjYwMDJDRDM2MCAvKiBzaGFw
ZXMgKi8sCiAJCQkJQkM4QzhGQUEwRERDRDJGMjAwQjU5MkY0IC8qIHN0eWxlICovLApAQCAtMjQ3
NTIsNiArMjQ3NTgsNyBAQAogCQkJCUNEM0UyNTFDMTgwNDZCMDYwMEUyN0Y1NiAvKiBHcmlkQ29v
cmRpbmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRTI1MjQxODA0NkJDRDAwRTI3RjU2IC8q
IENTU0dyaWRUZW1wbGF0ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREVGNEZENzE3RTg1
QzhGMDBBRUUyNEIgLyogR3JpZExlbmd0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RFN0ZDNDUx
ODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc3
ODMsNiArMjc3OTAsNyBAQAogCQkJCUJDMTBENzY3MTdEOEVFNkUwMDVFMjYyNiAvKiBSZW5kZXJC
bG9ja0Zsb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBDQjAwMjQxN0RGODI2NjAwMTc4OTZC
IC8qIExpbmVXaWR0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDNFMjUyMzE4MDQ2QkNEMDBF
MjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RF
N0ZDNDQxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmUzZmMyYTg3NDU0NTBkY2JhNzFkNjZmYTQ5ZmQ0OGE2NDgzN2I0NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcApAQCAtMCwwICsx
LDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiT3JkZXJJdGVyYXRvci5oIgorCisj
aW5jbHVkZSAiUmVuZGVyRmxleGlibGVCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworT3JkZXJJdGVyYXRvcjo6T3JkZXJJdGVyYXRvcihjb25z
dCBSZW5kZXJCb3gqIGNvbnRhaW5lckJveCkKKyAgICA6IG1fY29udGFpbmVyQm94KGNvbnRhaW5l
ckJveCkKK3sKKyAgICByZXNldCgpOworfQorCit2b2lkIE9yZGVySXRlcmF0b3I6OnNldE9yZGVy
VmFsdWVzKE9yZGVyVmFsdWVzJiYgb3JkZXJWYWx1ZXMpCit7CisgICAgcmVzZXQoKTsKKyAgICBt
X29yZGVyVmFsdWVzID0gc3RkOjptb3ZlKG9yZGVyVmFsdWVzKTsKKyAgICBpZiAobV9vcmRlclZh
bHVlcy5zaXplKCkgPCAyKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6OnNvcnQobV9vcmRl
clZhbHVlcy5iZWdpbigpLCBtX29yZGVyVmFsdWVzLmVuZCgpKTsKKyAgICBhdXRvIG5leHRFbGVt
ZW50ID0gc3RkOjp1bmlxdWUobV9vcmRlclZhbHVlcy5iZWdpbigpLCBtX29yZGVyVmFsdWVzLmVu
ZCgpKTsKKyAgICBtX29yZGVyVmFsdWVzLnNocmlua0NhcGFjaXR5KG5leHRFbGVtZW50IC0gbV9v
cmRlclZhbHVlcy5iZWdpbigpKTsKK30KKworUmVuZGVyQm94KiBPcmRlckl0ZXJhdG9yOjpmaXJz
dCgpCit7CisgICAgcmVzZXQoKTsKKyAgICByZXR1cm4gbmV4dCgpOworfQorCitSZW5kZXJCb3gq
IE9yZGVySXRlcmF0b3I6Om5leHQoKQoreworICAgIGludCBlbmRJbmRleCA9IG1fb3JkZXJWYWx1
ZXMuc2l6ZSgpOworICAgIGRvIHsKKyAgICAgICAgaWYgKG1fY3VycmVudENoaWxkKSB7CisgICAg
ICAgICAgICBtX2N1cnJlbnRDaGlsZCA9IG1fY3VycmVudENoaWxkLT5uZXh0U2libGluZ0JveCgp
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9vcmRl
ckluZGV4ID09IGVuZEluZGV4KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgaWYgKG1fb3JkZXJJbmRleCAhPSAtMSkgeworICAgICAgICAgICAgKyttX29yZGVySW5kZXg7
CisgICAgICAgICAgICBpZiAobV9vcmRlckluZGV4ID09IGVuZEluZGV4KQorICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fb3JkZXJJ
bmRleCA9IDA7CisKKyAgICAgICAgbV9jdXJyZW50Q2hpbGQgPSBtX2NvbnRhaW5lckJveC0+Zmly
c3RDaGlsZEJveCgpOworICAgIH0gd2hpbGUgKCFtX2N1cnJlbnRDaGlsZCB8fCBtX2N1cnJlbnRD
aGlsZC0+c3R5bGUoKS0+b3JkZXIoKSAhPSBtX29yZGVyVmFsdWVzW21fb3JkZXJJbmRleF0pOwor
CisgICAgcmV0dXJuIG1fY3VycmVudENoaWxkOworfQorCit2b2lkIE9yZGVySXRlcmF0b3I6OnJl
c2V0KCkKK3sKKyAgICBtX2N1cnJlbnRDaGlsZCA9IDA7CisgICAgbV9vcmRlckluZGV4ID0gLTE7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3Jk
ZXJJdGVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2Y2ZkNjAwNzIyMjk5MjNiM2JlYWE3OGZlYWMxYjFm
NjM3NDhkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3Jk
ZXJJdGVyYXRvci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBJ
Z2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT3JkZXJJdGVyYXRvcl9oCisjZGVm
aW5lIE9yZGVySXRlcmF0b3JfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbmRl
ckJveDsKKworY2xhc3MgT3JkZXJJdGVyYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
T3JkZXJJdGVyYXRvcik7CitwdWJsaWM6CisgICAgT3JkZXJJdGVyYXRvcihjb25zdCBSZW5kZXJC
b3gqKTsKKworICAgIHR5cGVkZWYgVmVjdG9yPGludCwgMT4gT3JkZXJWYWx1ZXM7CisgICAgdm9p
ZCBzZXRPcmRlclZhbHVlcyhPcmRlclZhbHVlcyYmKTsKKworICAgIFJlbmRlckJveCogY3VycmVu
dENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q2hpbGQ7IH0KKyAgICBSZW5kZXJCb3gq
IGZpcnN0KCk7CisgICAgUmVuZGVyQm94KiBuZXh0KCk7CisgICAgdm9pZCByZXNldCgpOworCitw
cml2YXRlOgorICAgIGNvbnN0IFJlbmRlckJveCogbV9jb250YWluZXJCb3g7CisgICAgUmVuZGVy
Qm94KiBtX2N1cnJlbnRDaGlsZDsKKyAgICBPcmRlclZhbHVlcyBtX29yZGVyVmFsdWVzOworICAg
IGludCBtX29yZGVySW5kZXg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyAgT3JkZXJJdGVyYXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAppbmRleCBkYzdkNmZkZTU4YTE4MWE1MmQ5MDA3OTMxYmI2NjAxZjBi
MDFkMzljLi5mNzgzNjcxMjRkNDgwNjA3ODhjMjY4Yjk3NzY1NDg1YjhlZTNjY2EwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTM5LDU4
ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRmxleGlibGVCb3g6Ok9y
ZGVySXRlcmF0b3I6Ok9yZGVySXRlcmF0b3IoY29uc3QgUmVuZGVyRmxleGlibGVCb3gqIGZsZXhp
YmxlQm94KQotICAgIDogbV9mbGV4aWJsZUJveChmbGV4aWJsZUJveCkKLSAgICAsIG1fY3VycmVu
dENoaWxkKDApCi0gICAgLCBtX29yZGVyVmFsdWVzSXRlcmF0b3IoMCkKLXsKLX0KLQotdm9pZCBS
ZW5kZXJGbGV4aWJsZUJveDo6T3JkZXJJdGVyYXRvcjo6c2V0T3JkZXJWYWx1ZXMoY29uc3QgT3Jk
ZXJWYWx1ZXMmIG9yZGVyVmFsdWVzKQotewotICAgIHJlc2V0KCk7Ci0gICAgbV9vcmRlclZhbHVl
cyA9IG9yZGVyVmFsdWVzOwotICAgIGlmIChtX29yZGVyVmFsdWVzLnNpemUoKSA8IDIpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHN0ZDo6c29ydChtX29yZGVyVmFsdWVzLmJlZ2luKCksIG1fb3Jk
ZXJWYWx1ZXMuZW5kKCkpOwotICAgIGF1dG8gbmV4dEVsZW1lbnQgPSBzdGQ6OnVuaXF1ZShtX29y
ZGVyVmFsdWVzLmJlZ2luKCksIG1fb3JkZXJWYWx1ZXMuZW5kKCkpOwotICAgIG1fb3JkZXJWYWx1
ZXMuc2hyaW5rQ2FwYWNpdHkobmV4dEVsZW1lbnQgLSBtX29yZGVyVmFsdWVzLmJlZ2luKCkpOwot
fQotCi1SZW5kZXJCb3gqIFJlbmRlckZsZXhpYmxlQm94OjpPcmRlckl0ZXJhdG9yOjpmaXJzdCgp
Ci17Ci0gICAgcmVzZXQoKTsKLSAgICByZXR1cm4gbmV4dCgpOwotfQotCi1SZW5kZXJCb3gqIFJl
bmRlckZsZXhpYmxlQm94OjpPcmRlckl0ZXJhdG9yOjpuZXh0KCkKLXsKLSAgICBkbyB7Ci0gICAg
ICAgIGlmICghbV9jdXJyZW50Q2hpbGQpIHsKLSAgICAgICAgICAgIGlmIChtX29yZGVyVmFsdWVz
SXRlcmF0b3IgPT0gbV9vcmRlclZhbHVlcy5lbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgICAgIGlmIChtX29yZGVyVmFsdWVzSXRlcmF0b3IpIHsKLSAgICAgICAgICAg
ICAgICArK21fb3JkZXJWYWx1ZXNJdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBpZiAobV9vcmRl
clZhbHVlc0l0ZXJhdG9yID09IG1fb3JkZXJWYWx1ZXMuZW5kKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV9vcmRl
clZhbHVlc0l0ZXJhdG9yID0gbV9vcmRlclZhbHVlcy5iZWdpbigpOwotCi0gICAgICAgICAgICBt
X2N1cnJlbnRDaGlsZCA9IG1fZmxleGlibGVCb3gtPmZpcnN0Q2hpbGRCb3goKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBtX2N1cnJlbnRDaGlsZCA9IG1fY3VycmVudENoaWxkLT5uZXh0
U2libGluZ0JveCgpOwotICAgIH0gd2hpbGUgKCFtX2N1cnJlbnRDaGlsZCB8fCBtX2N1cnJlbnRD
aGlsZC0+c3R5bGUoKS0+b3JkZXIoKSAhPSAqbV9vcmRlclZhbHVlc0l0ZXJhdG9yKTsKLQotICAg
IHJldHVybiBtX2N1cnJlbnRDaGlsZDsKLX0KLQotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6T3Jk
ZXJJdGVyYXRvcjo6cmVzZXQoKQotewotICAgIG1fY3VycmVudENoaWxkID0gMDsKLSAgICBtX29y
ZGVyVmFsdWVzSXRlcmF0b3IgPSAwOwotfQotCiBzdHJ1Y3QgUmVuZGVyRmxleGlibGVCb3g6Okxp
bmVDb250ZXh0IHsKICAgICBMaW5lQ29udGV4dChMYXlvdXRVbml0IGNyb3NzQXhpc09mZnNldCwg
TGF5b3V0VW5pdCBjcm9zc0F4aXNFeHRlbnQsIHNpemVfdCBudW1iZXJPZkNoaWxkcmVuLCBMYXlv
dXRVbml0IG1heEFzY2VudCkKICAgICAgICAgOiBjcm9zc0F4aXNPZmZzZXQoY3Jvc3NBeGlzT2Zm
c2V0KQpAQCAtMzQ1LDcgKzI5Myw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBWZWN0b3I8TGluZUNv
bnRleHQ+IGxpbmVDb250ZXh0czsKICAgICBPcmRlckl0ZXJhdG9yOjpPcmRlclZhbHVlcyBvcmRl
clZhbHVlczsKICAgICBjb21wdXRlTWFpbkF4aXNQcmVmZXJyZWRTaXplcyhvcmRlclZhbHVlcyk7
Ci0gICAgbV9vcmRlckl0ZXJhdG9yLnNldE9yZGVyVmFsdWVzKG9yZGVyVmFsdWVzKTsKKyAgICBt
X29yZGVySXRlcmF0b3Iuc2V0T3JkZXJWYWx1ZXMoc3RkOjptb3ZlKG9yZGVyVmFsdWVzKSk7CiAK
ICAgICBDaGlsZEZyYW1lUmVjdHMgb2xkQ2hpbGRSZWN0czsKICAgICBhcHBlbmRDaGlsZEZyYW1l
UmVjdHMob2xkQ2hpbGRSZWN0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5oCmluZGV4IGEzODUyMTY2YjUxZTRkYjVkNDM2ZjFlMmVlMjNlYTRjZjk5OWI1
NzYuLjc3ZDRiZmFkMTJlZDhjZWYxOTZhMDM3NTAwZTg0YTQ3YjI2YWZjZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaWZuZGVmIFJlbmRlckZsZXhpYmxlQm94X2gKICNkZWZpbmUgUmVuZGVyRmxleGlibGVCb3hf
aAogCisjaW5jbHVkZSAiT3JkZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTczLDI1ICs3NCw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIE5vRmxpcEZvclJvd1JldmVyc2UsCiAgICAgfTsKIAotICAgIGNsYXNzIE9yZGVySXRlcmF0
b3IgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPcmRlckl0ZXJhdG9yKTsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgVmVjdG9yPGludCwgMT4gT3JkZXJWYWx1ZXM7Ci0KLSAg
ICAgICAgT3JkZXJJdGVyYXRvcihjb25zdCBSZW5kZXJGbGV4aWJsZUJveCopOwotICAgICAgICB2
b2lkIHNldE9yZGVyVmFsdWVzKGNvbnN0IE9yZGVyVmFsdWVzJik7Ci0gICAgICAgIFJlbmRlckJv
eCogY3VycmVudENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q2hpbGQ7IH0KLSAgICAg
ICAgUmVuZGVyQm94KiBmaXJzdCgpOwotICAgICAgICBSZW5kZXJCb3gqIG5leHQoKTsKLSAgICAg
ICAgdm9pZCByZXNldCgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgUmVuZGVyRmxl
eGlibGVCb3gqIG1fZmxleGlibGVCb3g7Ci0gICAgICAgIFJlbmRlckJveCogbV9jdXJyZW50Q2hp
bGQ7Ci0gICAgICAgIE9yZGVyVmFsdWVzIG1fb3JkZXJWYWx1ZXM7Ci0gICAgICAgIFZlY3Rvcjxp
bnQ+Ojpjb25zdF9pdGVyYXRvciBtX29yZGVyVmFsdWVzSXRlcmF0b3I7Ci0gICAgfTsKLQogICAg
IHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0PiBJbmZsZXhpYmxl
RmxleEl0ZW1TaXplOwogICAgIHR5cGVkZWYgVmVjdG9yPFJlbmRlckJveCo+IE9yZGVyZWRGbGV4
SXRlbUxpc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA3
NTRhN2FmY2YwMTZhMzhmNWMzNjc2YjhmNmYyMmFkZTYyN2I0NjNkLi5iMzk1Yzg1ZGM5ZDVhZDAz
YzYxYTRjODViN2RlNGRiNjVhMmFlYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlh
IFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDMsNiArMTQzLDcgQEAg
cHJpdmF0ZToKIAogUmVuZGVyR3JpZDo6UmVuZGVyR3JpZChFbGVtZW50JiBlbGVtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIHN0ZDo6
bW92ZShzdHlsZSksIDApCisgICAgLCBtX29yZGVySXRlcmF0b3IodGhpcykKIHsKICAgICAvLyBB
bGwgb2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxvY2sgbGV2ZWwuCiAgICAgc2V0Q2hpbGRyZW5J
bmxpbmUoZmFsc2UpOwpAQCAtNDI3LDI0ICs0MjgsNiBAQCBzaXplX3QgUmVuZGVyR3JpZDo6ZXhw
bGljaXRHcmlkU2l6ZUZvclNpZGUoR3JpZFBvc2l0aW9uU2lkZSBzaWRlKSBjb25zdAogICAgIHJl
dHVybiAoc2lkZSA9PSBDb2x1bW5TdGFydFNpZGUgfHwgc2lkZSA9PSBDb2x1bW5FbmRTaWRlKSA/
IGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KCkgOiBleHBsaWNpdEdyaWRSb3dDb3VudCgpOwogfQog
Ci1zaXplX3QgUmVuZGVyR3JpZDo6bWF4aW11bUluZGV4SW5EaXJlY3Rpb24oVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAotewotICAgIHNpemVfdCBtYXhpbXVtSW5kZXggPSBz
dGQ6Om1heDxzaXplX3Q+KDEsIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBleHBsaWNpdEdy
aWRDb2x1bW5Db3VudCgpIDogZXhwbGljaXRHcmlkUm93Q291bnQoKSk7Ci0KLSAgICBmb3IgKFJl
bmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgIE93blB0cjxHcmlkU3Bhbj4gcG9zaXRpb25zID0g
cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIGRpcmVjdGlvbik7Ci0KLSAgICAg
ICAgLy8gfHBvc2l0aW9uc3wgaXMgbnVsbCBpZiB3ZSBuZWVkIHRvIHJ1biB0aGUgYXV0by1wbGFj
ZW1lbnQgYWxnb3JpdGhtLiBPdXIgZXN0aW1hdGlvbiBpZ25vcmVzCi0gICAgICAgIC8vIHRoaXMg
Y2FzZSBhcyB0aGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHdpbGwgZ3JvdyB0aGUgZ3JpZCBh
cyBuZWVkZWQuCi0gICAgICAgIGlmICghcG9zaXRpb25zKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgbWF4aW11bUluZGV4ID0gc3RkOjptYXgobWF4aW11bUluZGV4LCBwb3NpdGlv
bnMtPmZpbmFsUG9zaXRpb25JbmRleCArIDEpOwotICAgIH0KLQotICAgIHJldHVybiBtYXhpbXVt
SW5kZXg7Ci19Ci0KIExheW91dFVuaXQgUmVuZGVyR3JpZDo6bG9naWNhbENvbnRlbnRIZWlnaHRG
b3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tz
KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgZm9yY2UgYSBsYXlvdXQgZXZlcnkgdGlt
ZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBidXQKQEAgLTYyNSwxNSArNjA4LDEyIEBAIHZvaWQg
UmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCgpCiAgICAgQVNTRVJUKCFncmlkV2FzUG9wdWxh
dGVkKCkpOwogICAgIEFTU0VSVChtX2dyaWRJdGVtQ29vcmRpbmF0ZS5pc0VtcHR5KCkpOwogCi0g
ICAgbV9ncmlkLmdyb3cobWF4aW11bUluZGV4SW5EaXJlY3Rpb24oRm9yUm93cykpOwotICAgIHNp
emVfdCBtYXhpbXVtQ29sdW1uSW5kZXggPSBtYXhpbXVtSW5kZXhJbkRpcmVjdGlvbihGb3JDb2x1
bW5zKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ3JpZC5zaXplKCk7ICsraSkKLSAg
ICAgICAgbV9ncmlkW2ldLmdyb3cobWF4aW11bUNvbHVtbkluZGV4KTsKKyAgICBwb3B1bGF0ZUV4
cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoKTsKIAogICAgIFZlY3RvcjxSZW5kZXJCb3gqPiBh
dXRvTWFqb3JBeGlzQXV0b0dyaWRJdGVtczsKICAgICBWZWN0b3I8UmVuZGVyQm94Kj4gc3BlY2lm
aWVkTWFqb3JBeGlzQXV0b0dyaWRJdGVtczsKICAgICBHcmlkQXV0b0Zsb3cgYXV0b0Zsb3cgPSBz
dHlsZSgpLT5ncmlkQXV0b0Zsb3coKTsKLSAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJz
dENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7Cisg
ICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxk
OyBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdl
IG5ldmVyIHJlLXJlc29sdmUgcG9zaXRpb25zIGlmIHRoZSBncmlkIGlzIGdyb3duIGR1cmluZyBh
dXRvLXBsYWNlbWVudCB3aGljaCBtYXkgbGVhZCBhdXRvIC8gPGludGVnZXI+CiAgICAgICAgIC8v
IHBvc2l0aW9ucyB0byBub3QgbWF0Y2ggdGhlIGF1dGhvcidzIGludGVudC4gVGhlIHNwZWNpZmlj
YXRpb24gaXMgdW5jbGVhciBvbiB3aGF0IHNob3VsZCBiZSBkb25lIGluIHRoaXMgY2FzZS4KICAg
ICAgICAgT3duUHRyPEdyaWRTcGFuPiByb3dQb3NpdGlvbnMgPSByZXNvbHZlR3JpZFBvc2l0aW9u
c0Zyb21TdHlsZShjaGlsZCwgRm9yUm93cyk7CkBAIC02NjMsNiArNjQzLDM5IEBAIHZvaWQgUmVu
ZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCgpCiAgICAgcGxhY2VBdXRvTWFqb3JBeGlzSXRlbXNP
bkdyaWQoYXV0b01ham9yQXhpc0F1dG9HcmlkSXRlbXMpOwogfQogCit2b2lkIFJlbmRlckdyaWQ6
OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcigpCit7CisgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBmaW5kIGEgd2F5IHRvIHNoYXJlIE9yZGVyVmFsdWVzJ3MgaW5pdGlhbGl6YXRp
b24gY29kZSB3aXRoIFJlbmRlckZsZXhpYmxlQm94LgorICAgIE9yZGVySXRlcmF0b3I6Ok9yZGVy
VmFsdWVzIG9yZGVyVmFsdWVzOworICAgIHNpemVfdCBtYXhpbXVtUm93SW5kZXggPSBzdGQ6Om1h
eDxzaXplX3Q+KDEsIGV4cGxpY2l0R3JpZFJvd0NvdW50KCkpOworICAgIHNpemVfdCBtYXhpbXVt
Q29sdW1uSW5kZXggPSBzdGQ6Om1heDxzaXplX3Q+KDEsIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50
KCkpOworCisgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgeworICAgICAgICAvLyBBdm9pZCBn
cm93aW5nIHRoZSB2ZWN0b3IgZm9yIHRoZSBjb21tb24tY2FzZSBkZWZhdWx0IHZhbHVlIG9mIDAu
IFRoaXMgb3B0aW1pemVzIHRoZSBtb3N0IGNvbW1vbiBjYXNlIHdoaWNoIGlzCisgICAgICAgIC8v
IG9uZSBvciBhIGZldyB2YWx1ZXMgd2l0aCB0aGUgZGVmYXVsdCBvcmRlciAwCisgICAgICAgIGlu
dCBvcmRlciA9IGNoaWxkLT5zdHlsZSgpLT5vcmRlcigpOworICAgICAgICBpZiAob3JkZXJWYWx1
ZXMuaXNFbXB0eSgpIHx8IG9yZGVyVmFsdWVzLmxhc3QoKSAhPSBvcmRlcikKKyAgICAgICAgICAg
IG9yZGVyVmFsdWVzLmFwcGVuZChvcmRlcik7CisKKyAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBi
eXBhc3NlcyB0aGUgY2FjaGUgKGNhY2hlZEdyaWRDb29yZGluYXRlKCkpIGFzIGl0IGlzIHVzZWQg
dG8gYnVpbGQgaXQuCisgICAgICAgIE93blB0cjxHcmlkU3Bhbj4gcm93UG9zaXRpb25zID0gcmVz
b2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIEZvclJvd3MpOworICAgICAgICBPd25Q
dHI8R3JpZFNwYW4+IGNvbHVtblBvc2l0aW9ucyA9IHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0
eWxlKGNoaWxkLCBGb3JDb2x1bW5zKTsKKworICAgICAgICAvLyB8cG9zaXRpb25zfCBpcyAwIGlm
IHdlIG5lZWQgdG8gcnVuIHRoZSBhdXRvLXBsYWNlbWVudCBhbGdvcml0aG0uIE91ciBlc3RpbWF0
aW9uIGlnbm9yZXMKKyAgICAgICAgLy8gdGhpcyBjYXNlIGFzIHRoZSBhdXRvLXBsYWNlbWVudCBh
bGdvcml0aG0gd2lsbCBncm93IHRoZSBncmlkIGFzIG5lZWRlZC4KKyAgICAgICAgaWYgKHJvd1Bv
c2l0aW9ucykKKyAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGltdW1S
b3dJbmRleCwgcm93UG9zaXRpb25zLT5maW5hbFBvc2l0aW9uSW5kZXggKyAxKTsKKyAgICAgICAg
aWYgKGNvbHVtblBvc2l0aW9ucykKKyAgICAgICAgICAgIG1heGltdW1Db2x1bW5JbmRleCA9IHN0
ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRleCwgY29sdW1uUG9zaXRpb25zLT5maW5hbFBvc2l0aW9u
SW5kZXggKyAxKTsKKyAgICB9CisKKyAgICBtX2dyaWQuZ3JvdyhtYXhpbXVtUm93SW5kZXgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ncmlkLnNpemUoKTsgKytpKQorICAgICAgICBt
X2dyaWRbaV0uZ3JvdyhtYXhpbXVtQ29sdW1uSW5kZXgpOworCisgICAgbV9vcmRlckl0ZXJhdG9y
LnNldE9yZGVyVmFsdWVzKHN0ZDo6bW92ZShvcmRlclZhbHVlcykpOworfQorCiB2b2lkIFJlbmRl
ckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoVmVjdG9yPFJlbmRlckJv
eCo+IGF1dG9HcmlkSXRlbXMpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdXRvR3Jp
ZEl0ZW1zLnNpemUoKTsgKytpKSB7CkBAIC0xMDE0LDYgKzEwMjcsMTIgQEAgTGF5b3V0UG9pbnQg
UmVuZGVyR3JpZDo6ZmluZENoaWxkTG9naWNhbFBvc2l0aW9uKFJlbmRlckJveCogY2hpbGQsIGNv
bnN0IFZlY3RvcjwKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCit2b2lkIFJlbmRlckdyaWQ6OnBh
aW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpCit7CisgICAg
Zm9yIChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBj
aGlsZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpCisgICAgICAgIHBhaW50Q2hpbGQoKmNoaWxk
LCBwYWludEluZm8sIHBhaW50T2Zmc2V0LCBmb3JDaGlsZCwgdXNlUHJpbnRSZWN0KTsKK30KKwog
Y29uc3QgY2hhciogUmVuZGVyR3JpZDo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlz
RmxvYXRpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IDQ1Njgx
MmRmODg5MzA4YmMxMmQ3OWFjOGE1OTUwMzMwMTU2NWQ5MDQuLmMzYWZhMzMxZDEyZDZkODY5OTky
MDQwODY4YzUxYWJhZTAxYjQyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
LDYgKzI3LDcgQEAKICNpZm5kZWYgUmVuZGVyR3JpZF9oCiAjZGVmaW5lIFJlbmRlckdyaWRfaAog
CisjaW5jbHVkZSAiT3JkZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTczLDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluc2VydEl0ZW1JbnRvR3JpZChSZW5kZXJCb3gqLCBzaXplX3Qgcm93VHJhY2ssIHNpemVfdCBj
b2x1bW5UcmFjayk7CiAgICAgdm9pZCBpbnNlcnRJdGVtSW50b0dyaWQoUmVuZGVyQm94KiwgY29u
c3QgR3JpZENvb3JkaW5hdGUmKTsKICAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoKTsKKyAgICB2
b2lkIHBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcigpOwogICAgIHZvaWQgcGxh
Y2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChWZWN0b3I8UmVuZGVyQm94Kj4pOwogICAg
IHZvaWQgcGxhY2VBdXRvTWFqb3JBeGlzSXRlbXNPbkdyaWQoVmVjdG9yPFJlbmRlckJveCo+KTsK
ICAgICB2b2lkIHBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQoUmVuZGVyQm94Kik7CkBAIC05
NSw3ICs5OCw2IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IGV4cGxpY2l0R3JpZENvbHVtbkNvdW50
KCkgY29uc3Q7CiAgICAgc2l6ZV90IGV4cGxpY2l0R3JpZFJvd0NvdW50KCkgY29uc3Q7CiAgICAg
c2l6ZV90IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKEdyaWRQb3NpdGlvblNpZGUpIGNvbnN0Owot
ICAgIHNpemVfdCBtYXhpbXVtSW5kZXhJbkRpcmVjdGlvbihUcmFja1NpemluZ0RpcmVjdGlvbikg
Y29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxDb250ZW50SGVpZ2h0Rm9yQ2hpbGQoUmVu
ZGVyQm94KiwgVmVjdG9yPEdyaWRUcmFjaz4mKTsKICAgICBMYXlvdXRVbml0IG1pbkNvbnRlbnRG
b3JDaGlsZChSZW5kZXJCb3gqLCBUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFj
az4mIGNvbHVtblRyYWNrcyk7CkBAIC0xMTQsNiArMTE2LDggQEAgcHJpdmF0ZToKIAogICAgIExh
eW91dFVuaXQgZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCwg
VHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JikgY29uc3Q7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQ
cmludFJlY3QpIE9WRVJSSURFIEZJTkFMOworCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgdHJh
Y2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25z
dCBWZWN0b3I8R3JpZFRyYWNrPiYpOwogICAgIGJvb2wgZ3JpZFdhc1BvcHVsYXRlZCgpIGNvbnN0
IHsgcmV0dXJuICFtX2dyaWQuaXNFbXB0eSgpICYmICFtX2dyaWRbMF0uaXNFbXB0eSgpOyB9CkBA
IC0xMzIsNiArMTM2LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxWZWN0b3I8VmVjdG9yPFJl
bmRlckJveCosIDE+Pj4gbV9ncmlkOwogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgR3Jp
ZENvb3JkaW5hdGU+IG1fZ3JpZEl0ZW1Db29yZGluYXRlOworICAgIE9yZGVySXRlcmF0b3IgbV9v
cmRlckl0ZXJhdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUzMzI2
Y2ZkNGMwMWE3NTBjODU2MTRiZDFiMzg0YWJhNGVkZTI3OWMuLmNiNGNlZjM5ZjU0Mzc1ZGE5NTRj
MTMzYmMzYmRmNDc1NjI2OGQwOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0xMC0yOCAg
U2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ1NT
IEdyaWQgTGF5b3V0XSBBZGQgc3VwcG9ydCBmb3Igb3JkZXIgaW5zaWRlIGdyaWQgaXRlbXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzIwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyb20gQmxpbmsg
cjE1MzUzNiBieSA8amNoYWZmcmFpeEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkZWQgYSBj
b3VwbGUgb2YgdGVzdHMgdG8gdmVyaWZ5IHRoYXQgd2UgcmVzcGVjdCB0aGUgc3BlY2lmaWVkCisg
ICAgICAgIG9yZGVyIG9mIGdyaWQgaXRlbXMgYm90aCBpbiB0aGUgYXV0by1wbGFjZW1lbnQgYWxn
b3JpdGhtIGFuZCBpbgorICAgICAgICB0aGUgZmluYWwgcGFpbnRpbmcuCisKKyAgICAgICAgKiBm
YXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlk
LWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50LW9yZGVyLWV4cGVjdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtaXRlbS1v
cmRlci1wYWludC1vcmRlci5odG1sOiBBZGRlZC4KKwogMjAxMy0xMC0yNiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaHkgV2ViR0wgdGVzdCBp
cyBjcmFzaHkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9n
cmlkLWl0ZW0tb3JkZXItYXV0by1mbG93LXJlc29sdXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLWF1dG8tZmxvdy1yZXNv
bHV0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmY4Njg5Mzg5MTVhYzc1ZGM5M2QzZDFh
YWQwZmVkYTI0NzJkYTdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLWF1dG8tZmxvdy1yZXNvbHV0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgYXV0by1wbGFj
ZW1lbnQgYWxnb3JpdGhtIHRha2VzICdvcmRlcicgaW50byBhY2NvdW50IHdoZW4gcGxhY2luZyBn
cmlkIGl0ZW1zLgorCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItYXV0
by1mbG93LXJlc29sdXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0
L2dyaWQtaXRlbS1vcmRlci1hdXRvLWZsb3ctcmVzb2x1dGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFk
MzIxYzE0NzRlMmNiZDMzZDk3MTBlNTI1NjNmNGNmNjYzNjk5YmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3JkZXItYXV0by1m
bG93LXJlc29sdXRpb24uaHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTR3JpZExheW91dEVuYWJsZWQiLCAxKTsKKzwvc2Ny
aXB0PgorPGxpbmsgaHJlZj0icmVzb3VyY2VzL2dyaWQuY3NzIiByZWw9InN0eWxlc2hlZXQiPgor
PHN0eWxlPgorLmdyaWQgeworICAgIGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKKyAgICAtd2Via2l0
LWdyaWQtZGVmaW5pdGlvbi1jb2x1bW5zOiA1MHB4IDEwMHB4OworICAgIC13ZWJraXQtZ3JpZC1k
ZWZpbml0aW9uLXJvd3M6IDUwcHggMTAwcHg7Cit9CisKKy5uZWdhdGl2ZU9yZGVyIHsKKyAgICAt
d2Via2l0LW9yZGVyOiAtMTsKK30KKworLnBvc2l0aXZlT3JkZXIgeworICAgIC13ZWJraXQtb3Jk
ZXI6IDEwOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvY2hlY2stbGF5b3V0LmpzIj48L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQo
Jy5ncmlkJykiPgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgYXV0by1wbGFjZW1l
bnQgYWxnb3JpdGhtIHRha2VzICdvcmRlcicgaW50byBhY2NvdW50IHdoZW4gcGxhY2luZyBncmlk
IGl0ZW1zLjwvcD4KKworICAgIDwhLS0gU3RlcCAxLCBncmlkIGl0ZW0gd2l0aCBhIG1ham9yLWF4
aXMgcG9zaXRpb24gdGhhdCBpcyBub3QgJ2F1dG8nLiAtLT4KKyAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmUiPgorICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWRBdXRvRmxvd1Jv
dyI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEgZmlyc3RSb3dBdXRv
Q29sdW1uIiBkYXRhLW9mZnNldC14PSI1MCIgZGF0YS1vZmZzZXQteT0iMCIgZGF0YS1leHBlY3Rl
ZC13aWR0aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNTAiPjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIGZpcnN0Um93QXV0b0NvbHVtbiBuZWdhdGl2
ZU9yZGVyIiBkYXRhLW9mZnNldC14PSIwIiBkYXRhLW9mZnNldC15PSIwIiBkYXRhLWV4cGVjdGVk
LXdpZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjUwIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgor
ICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWRBdXRvRmxvd1JvdyI+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEgZmlyc3RSb3dBdXRvQ29sdW1uIHBvc2l0aXZlT3Jk
ZXIiIGRhdGEtb2Zmc2V0LXg9IjUwIiBkYXRhLW9mZnNldC15PSIwIiBkYXRhLWV4cGVjdGVkLXdp
ZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI1MCI+PC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEgZmlyc3RSb3dBdXRvQ29sdW1uIiBkYXRhLW9mZnNl
dC14PSIwIiBkYXRhLW9mZnNldC15PSIwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjUwIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisK
KyAgICA8IS0tIFN0ZXAgNC4xLCBncmlkIGl0ZW1zIHdpdGggYSBtaW5vci1heGlzIHBvc2l0aW9u
IHRoYXQgaXMgbm90ICdhdXRvJy4gLS0+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkQXV0b0Zsb3dDb2x1bW4iPgorICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIHNlY29uZFJvd0F1dG9Db2x1bW4i
IGRhdGEtb2Zmc2V0LXg9IjUwIiBkYXRhLW9mZnNldC15PSI1MCIgZGF0YS1leHBlY3RlZC13aWR0
aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTAwIj48L2Rpdj4KKyAgICAgICAgICAgIDxk
aXYgY2xhc3M9InNpemVkVG9HcmlkQXJlYSBzZWNvbmRSb3dBdXRvQ29sdW1uIG5lZ2F0aXZlT3Jk
ZXIiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVkLXdp
ZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj4KKyAg
ICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkQXV0b0Zsb3dDb2x1bW4iPgorICAgICAgICAgICAg
PGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIHNlY29uZFJvd0F1dG9Db2x1bW4gcG9zaXRpdmVP
cmRlciIgZGF0YS1vZmZzZXQteD0iNTAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVk
LXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiPjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIHNlY29uZFJvd0F1dG9Db2x1bW4iIGRhdGEt
b2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
ZGl2PgorCisgICAgPCEtLSBTdGVwIDQuMiwgYm90aCBtaW5vciBhbmQgbWFqb3ItYXhpcyBwb3Np
dGlvbiBhcmUgJ2F1dG8nLiAtLT4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUi
PgorICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWRBdXRvRmxvd0NvbHVtbiI+CisgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEt
b2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1leHBlY3RlZC1oZWln
aHQ9IjEwMCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEg
bmVnYXRpdmVPcmRlciIgZGF0YS1vZmZzZXQteD0iMCIgZGF0YS1vZmZzZXQteT0iMCIgZGF0YS1l
eHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI1MCI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkQXV0b0Zsb3dDb2x1bW4iPgorICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIHBvc2l0aXZlT3JkZXIiIGRhdGEt
b2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjUwIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzaXplZFRvR3JpZEFyZWEiIGRhdGEtb2Zmc2V0LXg9IjAiIGRhdGEtb2Zmc2V0LXk9IjAiIGRh
dGEtZXhwZWN0ZWQtd2lkdGg9IjUwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNTAiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50
LW9yZGVyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9n
cmlkLWl0ZW0tb3JkZXItcGFpbnQtb3JkZXItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjFh
ZjYwNTNlY2ViYjFiOGJhZGMyNjM2YWI0Y2VjYTYyOWZkOTFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50LW9y
ZGVyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHN0eWxlPgorLmdyaWQgeworICAgIHdpZHRoOiAxMDBweDsKKyAgICBoZWln
aHQ6IDEwMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCAnb3JkZXInIGNoYW5n
ZXMgdGhlIHBhaW50IG9yZGVyaW5nLjwvcD4KKyAgICA8cD5UaGVyZSBzaG91bGQgYmUgMiBncmVl
biBzcXVhcmVzIGJlbG93LjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJncmlkIj48L2Rpdj4KKworICAg
IDxkaXYgY2xhc3M9ImdyaWQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50LW9y
ZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWl0ZW0tb3Jk
ZXItcGFpbnQtb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTI3NTJkMGU5ODk0MDYwZGI0M2M2YWNk
NzRlOTRhMzdiYTQxNjM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvZ3JpZC1pdGVtLW9yZGVyLXBhaW50LW9yZGVyLmh0bWwKQEAgLTAsMCArMSw0
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
Q1NTR3JpZExheW91dEVuYWJsZWQiLCAxKTsKKzwvc2NyaXB0PgorPGxpbmsgaHJlZj0icmVzb3Vy
Y2VzL2dyaWQuY3NzIiByZWw9InN0eWxlc2hlZXQiPgorPHN0eWxlPgorLmdyaWQgeworICAgIGRp
c3BsYXk6IC13ZWJraXQtZ3JpZDsKKyAgICAtd2Via2l0LWdyaWQtZGVmaW5pdGlvbi1yb3dzOiAx
MDBweDsKKyAgICAtd2Via2l0LWdyaWQtZGVmaW5pdGlvbi1jb2x1bW5zOiAxMDBweDsKKyAgICB3
aWR0aDogLXdlYmtpdC1maXQtY29udGVudDsKK30KKy5zaXplZFRvR3JpZEFyZWEgeworICAgIGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOworfQorCisucmVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7Cit9CisKKy5uZWdhdGl2ZU9yZGVyIHsKKyAgICAtd2Via2l0LW9yZGVyOiAtMTsKK30K
KworLnBvc2l0aXZlT3JkZXIgeworICAgIC13ZWJraXQtb3JkZXI6IDEwOworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCAnb3JkZXInIGNo
YW5nZXMgdGhlIHBhaW50IG9yZGVyaW5nLjwvcD4KKyAgICA8cD5UaGVyZSBzaG91bGQgYmUgMiBn
cmVlbiBzcXVhcmVzIGJlbG93LjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJncmlkIj4KKyAgICAgICAg
PGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIGZpcnN0Um93Rmlyc3RDb2x1bW4iPjwvZGl2Pgor
ICAgICAgICA8ZGl2IGNsYXNzPSJzaXplZFRvR3JpZEFyZWEgZmlyc3RSb3dGaXJzdENvbHVtbiBu
ZWdhdGl2ZU9yZGVyIHJlZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJn
cmlkIj4KKyAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWRUb0dyaWRBcmVhIGZpcnN0Um93Rmlyc3RD
b2x1bW4gcG9zaXRpdmVPcmRlciI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9InNpemVkVG9H
cmlkQXJlYSBmaXJzdFJvd0ZpcnN0Q29sdW1uIHJlZCI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="237993"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>