<?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>50961</bug_id>
          
          <creation_ts>2010-12-13 13:01:45 -0800</creation_ts>
          <short_desc>&lt;title&gt; should support dir attribute</short_desc>
          <delta_ts>2011-03-31 08:28:10 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dev.w3.org/html5/spec/Overview.html#the-title-element-0</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>50910</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xiaomei Ji">xji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aharon</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>mitz</cc>
    
    <cc>playmobil</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>321349</commentid>
    <comment_count>0</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-12-13 13:01:45 -0800</bug_when>
    <thetext>Following is from the spec:

User agents should use the document&apos;s title when referring to the document in their user interface. When the contents of a title element are used in this way, the directionality of that title element should be used to set the directionality of the document&apos;s title in the user interface.

In addition, http://dev.w3.org/html5/spec/Overview.html#text-rendered-in-native-user-interfaces  requires text from elements generally to be rendered in native user interfaces in a manner that honors the directionality of the element from which the text was obtained, mentioning dialogs, title bars, pop-up menus, and tooltips as particular examples.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374088</commentid>
    <comment_count>1</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-27 02:16:57 -0700</bug_when>
    <thetext>Related Chrome bug: http://code.google.com/p/chromium/issues/detail?id=27094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374504</commentid>
    <comment_count>2</comment_count>
      <attachid>87148</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-28 08:26:42 -0700</bug_when>
    <thetext>Created attachment 87148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374509</commentid>
    <comment_count>3</comment_count>
      <attachid>87148</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-28 08:42:15 -0700</bug_when>
    <thetext>Comment on attachment 87148
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Introduce a new StringWithDirection object that carries a String along
&gt; +        with the TextDirection associated with the String.  Use this object for
&gt; +        document titles used within WebCore.  Put FIXMEs at the WebKit level to
&gt; +        expose the new direction information to clients.

You might want to explain here that we need to do this so that titles can be stored in History as well as for display of the current page.

&gt; Source/WebCore/dom/Document.cpp:392
&gt; +    , m_title(&quot;&quot;, LTR)

Just have a default constructor here and then you don&apos;t even need these lines.

&gt; Source/WebCore/dom/Document.cpp:1328
&gt; +    m_title = StringWithDirection(canonicalizedTitle(this, m_rawTitle.m_string), m_rawTitle.m_direction);

Why not just pass the StringWithDirection to canonicalizedTitle() and then return one?

&gt; Source/WebCore/dom/Document.cpp:1335
&gt; +    setTitle(StringWithDirection(title, LTR), 0);

You should comment here that this is called by the JavaScript document.title = &quot;&quot; setter and thus we always assume an LTR context.

&gt; Source/WebCore/dom/Document.cpp:1367
&gt; +        static_cast&lt;HTMLTitleElement*&gt;(m_titleElement.get())-&gt;setText(m_title.m_string);

You should just add a string() accessor instead of grabbing at m_string.

&gt; Source/WebCore/dom/Document.h:816
&gt; +    void setTitle(const String&amp;);

You should comment here that these two are only used by teh DOM bindings.

&gt; Source/WebCore/dom/Document.h:1300
&gt; +    StringWithDirection m_title;
&gt; +    StringWithDirection m_rawTitle;

It seems that only one of these really needs the direction, or?

&gt; Source/WebCore/html/HTMLTitleElement.cpp:37
&gt; +    , m_title(&quot;&quot;, LTR)

Default constructor and this goes away. :)

&gt; Source/WebCore/html/HTMLTitleElement.cpp:79
&gt; +StringWithDirection HTMLTitleElement::textWithDirection()

Should this be a const method?

&gt; Source/WebCore/html/HTMLTitleElement.cpp:81
&gt; +    RenderStyle* style = computedStyle();

I believe this can be NULL, do we need to check that?

&gt; Source/WebCore/loader/DocumentLoader.cpp:654
&gt; +    if (title.m_string.isEmpty())

You might add a isEmpty() accessor to StringWithDirection.  Certainly string() woudl be nicer than m_string here. :)

&gt; Source/WebCore/loader/FrameLoader.cpp:615
&gt; +        if (!ptitle.m_string.isNull())

consider adding isNull().

&gt; Source/WebCore/platform/text/StringWithDirection.h:55
&gt; +    TextDirection m_direction;

I think you need to make it clear that this is the directional context of the string.  I worry folks will get confused that this the &quot;direction&quot; of the string.  It could be an LTR context but all hebrew and thus render as RTL, no?

&gt; Source/WebCore/svg/SVGTitleElement.cpp:44
&gt; +        // FIXME: does SVG have a concept of text direction?
&gt; +        document()-&gt;setTitle(StringWithDirection(textContent(), LTR), this);

There is &quot;direction&quot;, but I don&apos;t think it applies to title elements.  http://www.w3.org/TR/SVG/text.html#DirectionProperty</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374510</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-28 08:43:21 -0700</bug_when>
    <thetext>Attachment 87148 did not build on qt:
Build output: http://queues.webkit.org/results/8269969</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374522</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-28 08:58:46 -0700</bug_when>
    <thetext>Attachment 87148 did not build on win:
Build output: http://queues.webkit.org/results/8276142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374696</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-28 12:51:36 -0700</bug_when>
    <thetext>Attachment 87148 did not build on mac:
Build output: http://queues.webkit.org/results/8279122</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375065</commentid>
    <comment_count>7</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-03-28 23:43:12 -0700</bug_when>
    <thetext>Attachment 87148 did not build on gtk:
Build output: http://queues.webkit.org/results/8282094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375165</commentid>
    <comment_count>8</comment_count>
      <attachid>87293</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-29 03:38:42 -0700</bug_when>
    <thetext>Created attachment 87293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375172</commentid>
    <comment_count>9</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-29 03:53:37 -0700</bug_when>
    <thetext>Attachment 87293 did not build on qt:
Build output: http://queues.webkit.org/results/8280208</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375173</commentid>
    <comment_count>10</comment_count>
      <attachid>87293</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-29 03:53:59 -0700</bug_when>
    <thetext>Comment on attachment 87293
Patch

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

Seems OK.

&gt; Source/WebCore/dom/Document.h:816
&gt; +    String title() const { return m_title.string(); }
&gt; +    void setTitle(const String&amp;); // Used by DOM bindings; no direction known.

These two are used by teh DOM bindings, and you could separate them by a newline to indicate that.  But this is also OK.

&gt; Source/WebCore/html/HTMLTitleElement.cpp:37
&gt; +    , m_title(&quot;&quot;, LTR)

This is no longer needed, right?

&gt; Source/WebCore/loader/FrameLoader.cpp:615
&gt; -        if (!ptitle.isNull())
&gt; +        if (!ptitle.isEmpty())

We decided that the old isNull behavior was in error?

&gt; Source/WebCore/platform/text/StringWithDirection.h:50
&gt; +    StringWithDirection(const String&amp; string, TextDirection dir) : m_string(string), m_direction(dir) {}

Should this have a default parameter for dir?  Then this could be implicitly constructed from string.  i&apos;m not sure if that&apos;s good or bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375194</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-29 04:52:15 -0700</bug_when>
    <thetext>Attachment 87293 did not build on win:
Build output: http://queues.webkit.org/results/8280245</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375283</commentid>
    <comment_count>12</comment_count>
      <attachid>87312</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-29 07:12:11 -0700</bug_when>
    <thetext>Created attachment 87312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375288</commentid>
    <comment_count>13</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-29 07:15:46 -0700</bug_when>
    <thetext>This patch addresses Eric&apos;s comments, but I&apos;ll probably wait for some of the bots to pass it before I consider committing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375300</commentid>
    <comment_count>14</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-29 07:30:16 -0700</bug_when>
    <thetext>Attachment 87312 did not build on qt:
Build output: http://queues.webkit.org/results/8281327</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375327</commentid>
    <comment_count>15</comment_count>
      <attachid>87312</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-29 07:41:09 -0700</bug_when>
    <thetext>Comment on attachment 87312
Patch

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

&gt; Source/WebCore/dom/Document.cpp:1338
&gt; +void Document::setTitle(const StringWithDirection&amp; title, Element* titleElement)

I think this function is a little confusing.  I feel as if this function will modify DOM to have the specified direction in the title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375361</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-29 08:23:17 -0700</bug_when>
    <thetext>Attachment 87312 did not build on win:
Build output: http://queues.webkit.org/results/8284345</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375383</commentid>
    <comment_count>17</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-29 08:45:23 -0700</bug_when>
    <thetext>Attachment 87312 did not build on win:
Build output: http://queues.webkit.org/results/8283337</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375640</commentid>
    <comment_count>18</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-29 12:02:37 -0700</bug_when>
    <thetext>Attachment 87312 did not build on gtk:
Build output: http://queues.webkit.org/results/8281423</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375646</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-29 12:09:16 -0700</bug_when>
    <thetext>Attachment 87312 did not build on mac:
Build output: http://queues.webkit.org/results/8285414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376233</commentid>
    <comment_count>20</comment_count>
      <attachid>87512</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-30 06:05:26 -0700</bug_when>
    <thetext>Created attachment 87512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376258</commentid>
    <comment_count>21</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-30 06:31:05 -0700</bug_when>
    <thetext>Attachment 87512 did not build on qt:
Build output: http://queues.webkit.org/results/8282861</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376273</commentid>
    <comment_count>22</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-30 06:52:12 -0700</bug_when>
    <thetext>Attachment 87512 did not build on win:
Build output: http://queues.webkit.org/results/8285826</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376373</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 09:07:56 -0700</bug_when>
    <thetext>Attachment 87512 did not build on mac:
Build output: http://queues.webkit.org/results/8305066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377025</commentid>
    <comment_count>24</comment_count>
      <attachid>87687</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-31 03:12:34 -0700</bug_when>
    <thetext>Created attachment 87687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377026</commentid>
    <comment_count>25</comment_count>
      <attachid>87687</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-31 03:16:38 -0700</bug_when>
    <thetext>Comment on attachment 87687
Patch

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

This looks good to me.  I suspect WebKit-level folks may have opinions.  You should consider emailing webkit-dev once this lands and encouraging WebKit-level hackers to respect title directionality on their ports.

&gt; Source/WebCore/html/HTMLTitleElement.cpp:84
&gt; +    if (RenderStyle* style = computedStyle())
&gt; +        direction = style-&gt;direction();
&gt; +    else if (RefPtr&lt;RenderStyle&gt; style = styleForRenderer())
&gt; +        direction = style-&gt;direction();

Sad that we don&apos;t have a reliable way to get a style, always.  (Not your fault of course).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377033</commentid>
    <comment_count>26</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-31 03:30:03 -0700</bug_when>
    <thetext>Attachment 87687 did not build on qt:
Build output: http://queues.webkit.org/results/8315083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377040</commentid>
    <comment_count>27</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-31 03:42:32 -0700</bug_when>
    <thetext>Attachment 87687 did not build on win:
Build output: http://queues.webkit.org/results/8314211</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377049</commentid>
    <comment_count>28</comment_count>
      <attachid>87695</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-31 04:24:37 -0700</bug_when>
    <thetext>Created attachment 87695
Mac build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377058</commentid>
    <comment_count>29</comment_count>
      <attachid>87699</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-31 04:43:25 -0700</bug_when>
    <thetext>Created attachment 87699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377076</commentid>
    <comment_count>30</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-31 05:09:30 -0700</bug_when>
    <thetext>Attachment 87699 did not build on qt:
Build output: http://queues.webkit.org/results/8309306</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377078</commentid>
    <comment_count>31</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-31 05:24:41 -0700</bug_when>
    <thetext>Attachment 87699 did not build on win:
Build output: http://queues.webkit.org/results/8306310</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377079</commentid>
    <comment_count>32</comment_count>
      <attachid>87704</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-31 05:33:21 -0700</bug_when>
    <thetext>Created attachment 87704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377082</commentid>
    <comment_count>33</comment_count>
      <attachid>87705</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-31 05:41:09 -0700</bug_when>
    <thetext>Created attachment 87705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377100</commentid>
    <comment_count>34</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-31 06:13:39 -0700</bug_when>
    <thetext>Attachment 87705 did not build on win:
Build output: http://queues.webkit.org/results/8306320</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377142</commentid>
    <comment_count>35</comment_count>
      <attachid>87722</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-31 07:23:42 -0700</bug_when>
    <thetext>Created attachment 87722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377146</commentid>
    <comment_count>36</comment_count>
      <attachid>87722</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-31 07:37:08 -0700</bug_when>
    <thetext>Comment on attachment 87722
Patch

Still looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377162</commentid>
    <comment_count>37</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-03-31 08:17:24 -0700</bug_when>
    <thetext>Committed r82580: &lt;http://trac.webkit.org/changeset/82580&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377171</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-31 08:28:10 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82580 might have broken GTK Linux 32-bit Release and Qt Linux Release minimal</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87148</attachid>
            <date>2011-03-28 08:26:42 -0700</date>
            <delta_ts>2011-03-29 03:38:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50961-20110328083040.patch</filename>
            <type>text/plain</type>
            <size>62012</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIwOTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNGE5NTNmMmI0ZTY0ZWE5
YTE1ZTZlODg4MTlhZjg0YTI3Yjk1ZDVhLi44MzczMmEwNWVkODA0ZDQ4MmIyMWY1YWRmZmQ2ZjQ2
NWMyZGM4MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjQgQEAKIDIwMTEtMDMtMjggIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQor
CisgICAgICAgIEludHJvZHVjZSBhIG5ldyBTdHJpbmdXaXRoRGlyZWN0aW9uIG9iamVjdCB0aGF0
IGNhcnJpZXMgYSBTdHJpbmcgYWxvbmcKKyAgICAgICAgd2l0aCB0aGUgVGV4dERpcmVjdGlvbiBh
c3NvY2lhdGVkIHdpdGggdGhlIFN0cmluZy4gIFVzZSB0aGlzIG9iamVjdCBmb3IKKyAgICAgICAg
ZG9jdW1lbnQgdGl0bGVzIHVzZWQgd2l0aGluIFdlYkNvcmUuICBQdXQgRklYTUVzIGF0IHRoZSBX
ZWJLaXQgbGV2ZWwgdG8KKyAgICAgICAgZXhwb3NlIHRoZSBuZXcgZGlyZWN0aW9uIGluZm9ybWF0
aW9uIHRvIGNsaWVudHMuCisKKyAgICAgICAgTm8gYmVoYXZpb3JhbCBjaGFuZ2UgaW50ZW5kZWQs
IHNvIG5vIG5ldyB0ZXN0cy4gIEEgZm9sbG93LXVwIHdpbGwgZXhwb3NlCisgICAgICAgIHRoZSB0
aXRsZSBkaXJlY3Rpb24gYW5kIGhvcGVmdWxseSBjYW4gYmUgYWNjb21wYW5pZWQgYnkgdGVzdHMg
dGhhdCB2ZXJpZnkKKyAgICAgICAgaXQgaXMgY29ycmVjdC4KKworICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlVGl0
bGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnRpdGxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6SFRNTFRpdGxlRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VGl0bGVFbGVtZW50Ojp0ZXh0V2l0aERpcmVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MVGl0
bGVFbGVtZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6dGl0
bGUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlY2VpdmVkRmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21t
aXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldFRp
dGxlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckJhY2tG
b3J3YXJkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6
dXBkYXRlRm9yUmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtVGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKToKKyAgICAg
ICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L1N0cmluZ1dpdGhEaXJlY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdX
aXRoRGlyZWN0aW9uOjpTdHJpbmdXaXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
cmluZ1dpdGhEaXJlY3Rpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5n
V2l0aERpcmVjdGlvbjo6b3BlcmF0b3IhPSk6CisgICAgICAgICogc3ZnL1NWR1RpdGxlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6Omluc2VydGVkSW50b0Rv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKToKKworMjAxMS0wMy0yOCAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCiAKICAgICAgICAgUmVmYWN0b3IgZHVw
bGljYXRlIGNvZGUgaW4gSFRNTFRleHRFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA5NDlhNjJhNWE1YWE4NzQyZWM5YzhiMzEzZDVlNTY2M2Q2ODg2Zjc2Li4yNGEwMWI2ZmRmN2Jh
MGU5ZTcwMDBhYTQ3YzhmZmUzMDZlYmE4MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTM4OSw4ICszODksOCBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBL
VVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2NvbnRhaW5zVmFs
aWRpdHlTdHlsZVJ1bGVzKGZhbHNlKQogICAgICwgbV91cGRhdGVGb2N1c0FwcGVhcmFuY2VSZXN0
b3Jlc1NlbGVjdGlvbihmYWxzZSkKICAgICAsIG1faWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50
KDApCi0gICAgLCBtX3RpdGxlKCIiKQotICAgICwgbV9yYXdUaXRsZSgiIikKKyAgICAsIG1fdGl0
bGUoIiIsIExUUikKKyAgICAsIG1fcmF3VGl0bGUoIiIsIExUUikKICAgICAsIG1fdGl0bGVTZXRF
eHBsaWNpdGx5KGZhbHNlKQogICAgICwgbV91cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lcih0aGlz
LCAmRG9jdW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyRmlyZWQpCiAgICAgLCBtX3N0
YXJ0VGltZShjdXJyZW50VGltZSgpKQpAQCAtMTMyNSwxMiArMTMyNSwxNyBAQCBzdGF0aWMgaW5s
aW5lIFN0cmluZyBjYW5vbmljYWxpemVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZSgpCiB7Ci0gICAgbV90
aXRsZSA9IGNhbm9uaWNhbGl6ZWRUaXRsZSh0aGlzLCBtX3Jhd1RpdGxlKTsKKyAgICBtX3RpdGxl
ID0gU3RyaW5nV2l0aERpcmVjdGlvbihjYW5vbmljYWxpemVkVGl0bGUodGhpcywgbV9yYXdUaXRs
ZS5tX3N0cmluZyksIG1fcmF3VGl0bGUubV9kaXJlY3Rpb24pOwogICAgIGlmIChGcmFtZSogZiA9
IGZyYW1lKCkpCiAgICAgICAgIGYtPmxvYWRlcigpLT5zZXRUaXRsZShtX3RpdGxlKTsKIH0KIAot
dm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgRWxlbWVudCogdGl0
bGVFbGVtZW50KQordm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkK
K3sKKyAgICBzZXRUaXRsZShTdHJpbmdXaXRoRGlyZWN0aW9uKHRpdGxlLCBMVFIpLCAwKTsKK30K
Kwordm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUsIEVsZW1lbnQqIHRpdGxlRWxlbWVudCkKIHsKICAgICBpZiAoIXRpdGxlRWxlbWVudCkgewog
ICAgICAgICAvLyBUaXRsZSBzZXQgYnkgSmF2YVNjcmlwdCAtLSBvdmVycmlkZXMgYW55IHRpdGxl
IGVsZW1lbnRzLgpAQCAtMTM1OSw3ICsxMzY0LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgRWxlbWVudCogdGl0bGVFbGVtZW50KQogICAgIHVwZGF0ZVRp
dGxlKCk7CiAKICAgICBpZiAobV90aXRsZVNldEV4cGxpY2l0bHkgJiYgbV90aXRsZUVsZW1lbnQg
JiYgbV90aXRsZUVsZW1lbnQtPmhhc1RhZ05hbWUodGl0bGVUYWcpICYmICF0aXRsZUVsZW1lbnQp
Ci0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPihtX3RpdGxlRWxlbWVudC5n
ZXQoKSktPnNldFRleHQobV90aXRsZSk7CisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUaXRsZUVs
ZW1lbnQqPihtX3RpdGxlRWxlbWVudC5nZXQoKSktPnNldFRleHQobV90aXRsZS5tX3N0cmluZyk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZVRpdGxlKEVsZW1lbnQqIHRpdGxlRWxlbWVudCkK
QEAgLTEzNzUsMTMgKzEzODAsMTMgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlVGl0bGUoRWxlbWVu
dCogdGl0bGVFbGVtZW50KQogICAgICAgICBmb3IgKE5vZGUqIGUgPSBoZWFkRWxlbWVudC0+Zmly
c3RDaGlsZCgpOyBlOyBlID0gZS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIGlmIChlLT5o
YXNUYWdOYW1lKHRpdGxlVGFnKSkgewogICAgICAgICAgICAgICAgIEhUTUxUaXRsZUVsZW1lbnQq
IHRpdGxlRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPihlKTsKLSAgICAg
ICAgICAgICAgICBzZXRUaXRsZSh0aXRsZUVsZW1lbnQtPnRleHQoKSwgdGl0bGVFbGVtZW50KTsK
KyAgICAgICAgICAgICAgICBzZXRUaXRsZSh0aXRsZUVsZW1lbnQtPnRleHRXaXRoRGlyZWN0aW9u
KCksIHRpdGxlRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKCFtX3RpdGxlRWxlbWVudCAmJiAhbV9yYXdUaXRsZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgbV9yYXdUaXRsZSA9ICIiOworICAgIGlmICghbV90aXRsZUVsZW1lbnQg
JiYgIW1fcmF3VGl0bGUubV9zdHJpbmcuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcmF3VGl0bGUu
bV9zdHJpbmcgPSAiIjsKICAgICAgICAgdXBkYXRlVGl0bGUoKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IDczMmNlZmQ5ZTIyOTU5MGY4ZmI4OWU4NjU4ODY0YmU5ZmY4ZjFmMWYu
LmEzMWQ5MjJkZjZiNzM5OTk2NmEwMzUzZDg0OTQxOTMwYTNkNzg2OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKICNp
bmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJy
YXkuaD4KQEAgLTgxMSw4ICs4MTIsOSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyAwIGlmIHRo
aXMgaXMgdGhlIHRvcCBsZXZlbCBkb2N1bWVudC4KICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCgpIGNvbnN0OwogCi0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1
cm4gbV90aXRsZTsgfQotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiwgRWxlbWVudCog
dGl0bGVFbGVtZW50ID0gMCk7CisgICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90
aXRsZS5tX3N0cmluZzsgfQorICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAg
dm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgRWxlbWVudCogdGl0bGVF
bGVtZW50ID0gMCk7CiAgICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQp
OwogCiAgICAgU3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CkBAIC0xMjk0LDgg
KzEyOTYsOCBAQCBwcml2YXRlOgogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvI2lnbm9yZS1kZXN0cnVjdGl2ZS13cml0ZXMtY291bnRlcgog
ICAgIHVuc2lnbmVkIG1faWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50OwogCi0gICAgU3RyaW5n
IG1fdGl0bGU7Ci0gICAgU3RyaW5nIG1fcmF3VGl0bGU7CisgICAgU3RyaW5nV2l0aERpcmVjdGlv
biBtX3RpdGxlOworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV9yYXdUaXRsZTsKICAgICBib29s
IG1fdGl0bGVTZXRFeHBsaWNpdGx5OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX3RpdGxlRWxlbWVu
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKaW5kZXggMzFiMWIy
YmNkMmI4ZTRlMWE2MzhhNzUwOGJkMDdlYjdmYWE3NzViMi4uZmE3NWU4OTgzODQzNzAyNTE2YmEx
ZGU3YTU3ZDU1MWM0N2I2M2Y4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1l
bnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiVGV4
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMyw3ICszNCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKIGlubGluZSBIVE1MVGl0bGVFbGVtZW50OjpIVE1MVGl0bGVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV90aXRsZSgiIikKKyAg
ICAsIG1fdGl0bGUoIiIsIExUUikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0aXRsZVRhZykp
OwogfQpAQCAtNTcsNyArNTgsNyBAQCB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9t
RG9jdW1lbnQoKQogCiB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwg
aW50IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICBtX3RpdGxlID0gdGV4dCgpOworICAgIG1fdGl0
bGUgPSB0ZXh0V2l0aERpcmVjdGlvbigpOwogICAgIGlmIChpbkRvY3VtZW50KCkpCiAgICAgICAg
IGRvY3VtZW50KCktPnNldFRpdGxlKG1fdGl0bGUsIHRoaXMpOwogICAgIEhUTUxFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdl
LCBjaGlsZENvdW50RGVsdGEpOwpAQCAtNzEsMTAgKzcyLDE2IEBAIFN0cmluZyBIVE1MVGl0bGVF
bGVtZW50Ojp0ZXh0KCkgY29uc3QKICAgICAgICAgaWYgKG4tPmlzVGV4dE5vZGUoKSkKICAgICAg
ICAgICAgIHZhbCArPSBzdGF0aWNfY2FzdDxUZXh0Kj4obiktPmRhdGEoKTsKICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gdmFsOwogfQogCitTdHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxUaXRsZUVs
ZW1lbnQ6OnRleHRXaXRoRGlyZWN0aW9uKCkKK3sKKyAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBj
b21wdXRlZFN0eWxlKCk7CisgICAgcmV0dXJuIFN0cmluZ1dpdGhEaXJlY3Rpb24odGV4dCgpLCBz
dHlsZS0+ZGlyZWN0aW9uKCkpOworfQorCiB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQo
Y29uc3QgU3RyaW5nICZ2YWx1ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKaW5kZXggOGI5MGY1NjRmM2FhZjE2MTAzMTQ2
YWMwNTgyMmY2ZDllNmExZmFlMS4uNjkyMDk5NzgzOTViMDQ1M2IyNDVlYzQyMzUxMDQwMjlmZDQy
NDQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKQEAgLTIzLDYgKzIz
LDcgQEAKICNkZWZpbmUgSFRNTFRpdGxlRWxlbWVudF9oCiAKICNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zMyw2ICszNCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKIAorICAgIFN0cmluZ1dpdGhEaXJl
Y3Rpb24gdGV4dFdpdGhEaXJlY3Rpb24oKTsKKwogcHJpdmF0ZToKICAgICBIVE1MVGl0bGVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC00MCw3ICs0Myw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2Us
IE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxk
Q291bnREZWx0YSA9IDApOwogCi0gICAgU3RyaW5nIG1fdGl0bGU7CisgICAgU3RyaW5nV2l0aERp
cmVjdGlvbiBtX3RpdGxlOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMTIxMDQ1YjViOTlmZmEwNzliNjA1OWY3ZTE5N2Fk
ZDRkM2RiYzNkMi4uZDQyOTI4YzY2N2Y3MzFhMjc5ZDc1NjE3MjJlMDFiNTQ5NWEzNzdiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC02NDksOSArNjQ5LDkg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpCiAgICAgbV9z
dG9wUmVjb3JkaW5nUmVzcG9uc2VzID0gdHJ1ZTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewotICAgIGlmICh0aXRsZS5p
c0VtcHR5KCkpCisgICAgaWYgKHRpdGxlLm1fc3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fcGFnZVRpdGxlICE9IHRpdGxlKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDFmODgyNzJiMTkyMDA1ZDYyZTMyMDcxNzBiZjdjNWI4
MjU3OTJiYTUuLmM2ZjBiYzViMjY5NDRmZWJmOTY0YmZkZGMyNjU3Yjc2Njc1ZTM1ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTdHJpbmdXaXRoRGlyZWN0aW9u
LmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMjEsNyArMTIyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIHdhc09ubG9hZEhhbmRsZWQoKSB7IHJldHVybiBtX3dhc09ubG9h
ZEhhbmRsZWQ7IH0KICAgICAgICAgYm9vbCBpc0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0UHJpbWFyeUxvYWRDb21wbGV0ZShib29sKTsKLSAgICAgICAgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcm
KTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKQEAgLTE2OCw3ICsxNjksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbGFzdENoZWNrZWRSZXF1
ZXN0KCkgIHsgcmV0dXJuIG1fbGFzdENoZWNrZWRSZXF1ZXN0OyB9CiAKICAgICAgICAgdm9pZCBz
dG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBj
b25zdCB7IHJldHVybiBtX3BhZ2VUaXRsZTsgfQorICAgICAgICBjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAog
ICAgICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKQEAgLTI5OCw3ICsyOTksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OwogICAg
ICAgICBib29sIG1fd2FzT25sb2FkSGFuZGxlZDsKIAotICAgICAgICBTdHJpbmcgbV9wYWdlVGl0
bGU7CisgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV9wYWdlVGl0bGU7CiAgICAgICAgIFN0
cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAgICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggNTlmZDg5NzljYmVlZmNjZmU5
MDVhZGU3ZDI2ZmZiMWRkYWU2ZTlhMy4uNmFjZjk5MjE5YmFjZTNjYzJkMDIzMzI5ZmQ2MWU3ZjAz
ZmIyNTVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMjY2LDcgKzI2
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9y
JikgeyB9CkBAIC0zMzQsNyArMzM0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKSB7IHJl
dHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBj
b25zdCBLVVJMJikgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VS
TCYpIHsgcmV0dXJuICIiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IDM0N2E0MWVhYWUzYWI2MTdkYTMwMWNhYzEyOTc1MjU3ZGI4NGE1OWQuLmQzNjFkMmQ1YzZl
MDQ0YmZjYzMwZjMyZDQ5YmE5YmY3ZWNlNzExMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtNjEwLDkgKzYxMCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVk
Rmlyc3REYXRhKCkKICAgICBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRz
KCk7CiAgICAgCiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpIHsKLSAgICAgICAgU3RyaW5nIHB0
aXRsZSA9IG1fZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7CisgICAgICAgIFN0cmluZ1dpdGhEaXJl
Y3Rpb24gcHRpdGxlID0gbV9kb2N1bWVudExvYWRlci0+dGl0bGUoKTsKICAgICAgICAgLy8gSWYg
d2UgaGF2ZSBhIHRpdGxlIGxldCB0aGUgV2ViVmlldyBrbm93IGFib3V0IGl0LgotICAgICAgICBp
ZiAoIXB0aXRsZS5pc051bGwoKSkKKyAgICAgICAgaWYgKCFwdGl0bGUubV9zdHJpbmcuaXNOdWxs
KCkpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUocHRpdGxl
KTsKICAgICB9CiAKQEAgLTE5MjQsOSArMTkyNCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1p
dFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogCiAg
ICAgICAgIC8vIElmIHdlIGhhdmUgYSB0aXRsZSBsZXQgdGhlIFdlYlZpZXcga25vdyBhYm91dCBp
dC4gCi0gICAgICAgIFN0cmluZyB0aXRsZSA9IG1fZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7Ci0g
ICAgICAgIGlmICghdGl0bGUuaXNOdWxsKCkpIAotICAgICAgICAgICAgbV9jbGllbnQtPmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKHRpdGxlKTsgICAgICAgICAKKyAgICAgICAgU3RyaW5nV2l0aERp
cmVjdGlvbiB0aXRsZSA9IG1fZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7CisgICAgICAgIGlmICgh
dGl0bGUubV9zdHJpbmcuaXNOdWxsKCkpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUodGl0bGUpOwogCiAgICAgICAgIGNoZWNrQ29tcGxldGVkKCk7CiAgICAg
fSBlbHNlIHsgICAgICAgIApAQCAtMzM3NSw3ICszMzc1LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShSZXNvdXJjZUxvYWRlciogbG9h
ZGVyLAogfQogI2VuZGlmCiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiB0aXRsZSkKIHsKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRUaXRsZSh0aXRsZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDFmYjllM2M0NWY0OTBlMjk5
ZmFmYzU0ZjRkMzVlNjdlNGViMTI5NWMuLjkwNjJmMjE1Y2VkODE1OWZkYTg5Yzg1YWY2ZTE2ZDgx
YWM1ZjUxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC03OCw2ICs3OCw3
IEBAIGNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTdHJpbmdXaXRo
RGlyZWN0aW9uOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOwogCkBAIC0yODIsNyArMjgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxBbmRD
bGVhcigpOwogCi0gICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNl
dFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2b2lkIHNldEljb25VUkwo
Y29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA3ZDY0OTEyYmRiNDEz
YWU5NTlhYjBlOGY1YWNjYWFjNjYyZmZmOTkzLi4xOTJhZDMzYjFkMTcwMzA2MTI3YzcxMDIyMDI3
NWY5ZDc1ODA2MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtODQsNiArODQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKICAgICBjbGFzcyBTaGFyZWRC
dWZmZXI7CisgICAgY2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbjsKICAgICBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKICAgICBjbGFzcyBXaWRnZXQ7CiAKQEAgLTEzOSw3ICsxNDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsK
QEAgLTIyNyw3ICsyMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJikg
PSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IEtVUkwmKSA9IDA7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggYjhiZWNlOWI3NTBjNTM4NmQ4YTNkOGUx
ZDI4YzhkMWVkN2IzMWJiOS4uN2IwNmYxYThhMDE1NjFkZTY4YjNjZTIxNmM4ODRkNmRlZjk5M2Vi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC0y
NjUsNyArMjY1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQmFja0Zvcndh
cmROYXZpZ2F0aW9uKCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fZnJhbWUtPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVI
aXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbiBpbiBm
cmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRh
dGluZyBIaXN0b3J5IGZvciBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbiBpbiBmcmFtZSAlcyIsIG1f
ZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLm1fc3RyaW5nLnV0Zjgo
KS5kYXRhKCkpOwogI2VuZGlmCiAKICAgICAvLyBNdXN0IGdyYWIgdGhlIGN1cnJlbnQgc2Nyb2xs
IHBvc2l0aW9uIGJlZm9yZSBkaXN0dXJiaW5nIGl0CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVsb2FkKCkKIHsKICNpZiAhTE9HX0RJU0FCTEVE
CiAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBM
T0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWxvYWQg
aW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUo
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTog
VXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVsb2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVy
KCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAj
ZW5kaWYKIAogICAgIGlmIChtX2N1cnJlbnRJdGVtKSB7CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9p
ZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRoTG9ja2VkQmFja0Zvcndh
cmRMaXN0KCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5
OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRpcmVjdCBsb2FkIGluIGZyYW1lICVzIiwgbV9mcmFt
ZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9y
IHJlZGlyZWN0IGxvYWQgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKS0+dGl0bGUoKS5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgIAog
ICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CkBAIC0zODUsNyAr
Mzg1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3Qo
KQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0
aW5nIEhpc3RvcnkgZm9yIGNsaWVudCByZWRpcmVjdCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBjbGll
bnQgcmVkaXJlY3QgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+dGl0bGUoKS5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCiAgICAgLy8g
Q2xlYXIgb3V0IGZvcm0gZGF0YSBzbyB3ZSBkb24ndCB0cnkgdG8gcmVzdG9yZSBpdCBpbnRvIHRo
ZSBpbmNvbWluZyBwYWdlLiAgTXVzdCBoYXBwZW4gYWZ0ZXIKQEAgLTQxMCw3ICs0MTAsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQoKQogICAgIEZyYW1lTG9hZGVy
KiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwogI2lmICFMT0dfRElTQUJMRUQKICAg
ICBpZiAoZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5
LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGNvbW1pdCBpbiBmcmFtZSAl
cyIsIGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5
IGZvciBjb21taXQgaW4gZnJhbWUgJXMiLCBmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+
dGl0bGUoKS5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgIEZyYW1lTG9hZFR5
cGUgdHlwZSA9IGZyYW1lTG9hZGVyLT5sb2FkVHlwZSgpOwogICAgIGlmIChpc0JhY2tGb3J3YXJk
TG9hZFR5cGUodHlwZSkKQEAgLTUyNiwxMCArNTI2LDExIEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xs
ZXI6OnNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIG1fY3VycmVudEl0ZW0g
PSBpdGVtOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50
SXRlbVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGlmICht
X2N1cnJlbnRJdGVtKQotICAgICAgICBtX2N1cnJlbnRJdGVtLT5zZXRUaXRsZSh0aXRsZSk7Cisg
ICAgICAgIC8vIEZJWE1FOiBtYWtlIHVzZSBvZiB0aXRsZS5tX2RpcmVjdGlvbiBhcyB3ZWxsLgor
ICAgICAgICBtX2N1cnJlbnRJdGVtLT5zZXRUaXRsZSh0aXRsZS5tX3N0cmluZyk7CiB9CiAKIGJv
b2wgSGlzdG9yeUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0
CkBAIC01NzYsMTIgKzU3NywxMyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0aWFsaXpl
SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICAKICAgICBGcmFtZSogcGFyZW50RnJhbWUgPSBt
X2ZyYW1lLT50cmVlKCktPnBhcmVudCgpOwogICAgIFN0cmluZyBwYXJlbnQgPSBwYXJlbnRGcmFt
ZSA/IHBhcmVudEZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKSA6ICIiOwotICAgIFN0cmluZyB0
aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24g
dGl0bGUgPSBkb2N1bWVudExvYWRlci0+dGl0bGUoKTsKIAogICAgIGl0ZW0tPnNldFVSTCh1cmwp
OwogICAgIGl0ZW0tPnNldFRhcmdldChtX2ZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKSk7CiAg
ICAgaXRlbS0+c2V0UGFyZW50KHBhcmVudCk7Ci0gICAgaXRlbS0+c2V0VGl0bGUodGl0bGUpOwor
ICAgIC8vIEZJWE1FOiBzaG91bGQgc3RvcmUgaXRlbSBkaXJlY3Rpb25hbGl0eSBpbiBoaXN0b3J5
IGFzIHdlbGwuCisgICAgaXRlbS0+c2V0VGl0bGUodGl0bGUubV9zdHJpbmcpOwogICAgIGl0ZW0t
PnNldE9yaWdpbmFsVVJMU3RyaW5nKG9yaWdpbmFsVVJMLnN0cmluZygpKTsKIAogICAgIGlmICgh
dW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpIHx8IGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0
dHBTdGF0dXNDb2RlKCkgPj0gNDAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRy
b2xsZXIuaAppbmRleCA1OWYxMWEyNWM5MzNkM2Q3Yzk3MjUxYjkwYTkzYjMyZDU2Yjk5YWQ0Li4x
NWUxMmMwOTlhM2VmMDcyNzU0ZTY3ZTZjZDU2N2Y2YmUwOGJhNWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOworY2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbjsKIAogY2xhc3MgSGlz
dG9yeUNvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhpc3RvcnlDb250cm9s
bGVyKTsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgSGlzdG9yeUl0ZW0qIGN1cnJl
bnRJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SXRlbS5nZXQoKTsgfQogICAgIHZvaWQg
c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qKTsKLSAgICB2b2lkIHNldEN1cnJlbnRJdGVtVGl0
bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICBib29sIGN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNl
ZCgpIGNvbnN0OwogCiAgICAgSGlzdG9yeUl0ZW0qIHByZXZpb3VzSXRlbSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJldmlvdXNJdGVtLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhMDliMWZmMWRjMzVm
NjVhYThhZDkyZTlmYTdlZTg1ZmRmNjBmODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBTdHJpbmdXaXRoRGlyZWN0aW9uX2gKKyNkZWZpbmUgU3RyaW5nV2l0aERpcmVjdGlv
bl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rp
b24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBJbiBzb21lIGNpcmN1bXN0YW5jZXMg
d2Ugd2FudCB0byBzdG9yZSBhIFN0cmluZyBhbG9uZyB3aXRoIHRoZSBUZXh0RGlyZWN0aW9uCisv
LyBvZiB0aGUgU3RyaW5nIGFzIGxlYXJuZWQgZnJvbSB0aGUgY29udGV4dCBvZiB0aGUgU3RyaW5n
LiBGb3IgZXhhbXBsZSwKKy8vIGNvbnNpZGVyIHN0b3JpbmcgdGhlIHRpdGxlIGRlcml2ZWQgZnJv
bSA8dGl0bGUgZGlyPSdydGwnPnNvbWUgdGl0bGU8L3RpdGxlPgorLy8gaW4gdGhlIGhpc3Rvcnku
CitjbGFzcyBTdHJpbmdXaXRoRGlyZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBTdHJpbmdXaXRoRGly
ZWN0aW9uKCkge30KKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBUZXh0RGlyZWN0aW9uIGRpcikgOiBtX3N0cmluZyhzdHJpbmcpLCBtX2RpcmVjdGlvbihkaXIp
IHt9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3RoZXIubV9zdHJpbmcgPT0gbV9zdHJp
bmcgJiYgb3RoZXIubV9kaXJlY3Rpb24gPT0gbV9kaXJlY3Rpb247CisgICAgfQorICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgoKnRoaXMpID09IG90aGVyKTsgfQorCisgICAgU3RyaW5nIG1fc3RyaW5nOworICAgIFRl
eHREaXJlY3Rpb24gbV9kaXJlY3Rpb247Cit9OworCit9CisKKyNlbmRpZiAvLyBTdHJpbmdXaXRo
RGlyZWN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAKaW5kZXggNjI4
MWYxMGIxNGZkMTRmNTg3YTllYzI5MTJjOGVlOTIzYzczMTk5OC4uNWFmMDg4YTViNTczMTkyN2Fm
ZDIzMWFmM2JlM2Q4NGFjNjMzMjg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RpdGxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVu
dC5jcHAKQEAgLTQwLDcgKzQwLDggQEAgdm9pZCBTVkdUaXRsZUVsZW1lbnQ6Omluc2VydGVkSW50
b0RvY3VtZW50KCkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVu
dCgpOwogICAgIGlmIChmaXJzdENoaWxkKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxl
KHRleHRDb250ZW50KCksIHRoaXMpOworICAgICAgICAvLyBGSVhNRTogZG9lcyBTVkcgaGF2ZSBh
IGNvbmNlcHQgb2YgdGV4dCBkaXJlY3Rpb24/CisgICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxl
KFN0cmluZ1dpdGhEaXJlY3Rpb24odGV4dENvbnRlbnQoKSwgTFRSKSwgdGhpcyk7CiB9CiAKIHZv
aWQgU1ZHVGl0bGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKQEAgLTUzLDcgKzU0LDgg
QEAgdm9pZCBTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLAogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291
bnREZWx0YSk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0
VGl0bGUodGV4dENvbnRlbnQoKSwgdGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiBkb2VzIFNWRyBo
YXZlIGEgY29uY2VwdCBvZiB0ZXh0IGRpcmVjdGlvbj8KKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0
VGl0bGUoU3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0Q29udGVudCgpLCBMVFIpLCB0aGlzKTsKIH0K
IAogQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RpdGxlRWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkZjEwYTlj
MDc1NmVhZDk0ZTA5NDQxMDY2NmJlMWE2NWUxODcwZDA5Li44MzljYjMwZTQzMWFmMzEwODg0MDI4
MjVlZWI1NjM3ZTI2M2MxZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDExLTAzLTI4ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hv
dWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9h
ZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBs
OjpzZXRUaXRsZSk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJEYXRhU291cmNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRh
dGFTb3VyY2VJbXBsOjpwYWdlVGl0bGUpOgorCiAyMDExLTAzLTI1ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCmluZGV4IDY0N2E3MGMyODViNjdjZTBkNTRhM2FlMDg4MTQ5OGUxMTQzNmQ2NTMuLjRkODlm
ZDRiMWMyMjYyOTQ4NDI5ZTIxNGMyZGI1OGEwZDhhYzg1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtNzM0LDEw
ICs3MzQsMTEgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoKQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6
OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgdGl0bGUpCiB7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0
bGUuCiAgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlKTsKKyAgICAgICAgbV93
ZWJGcmFtZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVUaXRsZShtX3dlYkZyYW1lLCB0aXRsZS5tX3N0
cmluZyk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKCkKQEAgLTEzMjgsNyArMTMyOSw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+
IEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoCiAgICAgcmV0dXJu
IGRzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OnNldFRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRJbXBsOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29u
c3QgS1VSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBpbmZvcm0gY29uc3VtZXIgb2YgY2hhbmdl
cyB0byB0aGUgdGl0bGUuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oCmluZGV4IGYxOWMyNmM1MzlhMWMxYjVhMjY1N2I3YWEyNTg5
NWMxYjJmNTIxMjYuLjJiMWMyNmY1ZGRiY2NjYWRkMjZlYTQ4YWY4ZDhhZGY0NWIyYmE3ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcm
IHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9h
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1l
bnRMb2FkZXIoCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRv
Q2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJh
bnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhU291cmNlSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhU291cmNlSW1wbC5jcHAK
aW5kZXggMTM2NmE4MDk0YTUwNjM5N2UwOTQ4MzQwODAyNjVkYmNhN2JlNjYxYS4uMTQ3NjM2ZDk1
MDQ5NjI0NjkxMWNhMDI2ZmQwODJiODU0NzFkY2QzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcApAQCAtODIsNyArODIsOCBAQCB2b2lk
IFdlYkRhdGFTb3VyY2VJbXBsOjpyZWRpcmVjdENoYWluKFdlYlZlY3RvcjxXZWJVUkw+JiByZXN1
bHQpIGNvbnN0CiAKIFdlYlN0cmluZyBXZWJEYXRhU291cmNlSW1wbDo6cGFnZVRpdGxlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gdGl0bGUoKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBv
ZiB0aXRsZSBhcyB3ZWxsLgorICAgIHJldHVybiB0aXRsZSgpLm1fc3RyaW5nOwogfQogCiBXZWJO
YXZpZ2F0aW9uVHlwZSBXZWJEYXRhU291cmNlSW1wbDo6bmF2aWdhdGlvblR5cGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCmluZGV4IGQzOGQ5NTJjODQxNDRkZWM3MjE0YTJjZjY4NDQwNzA5NjJiZjU1
Y2UuLjQ4YmU3ZmIxYzUyNmEzN2RhN2NkNjgzMmE4MWY2MjQ5OWNlOGU2NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMy0yOCAgRXZhbiBNYXJ0aW4gIDxldmFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRl
IHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorCiAyMDExLTAzLTI3ICBQYXRyaWNrIEdh
bnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJl
YXMgS2xpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggZjljZDBkMzJlYjg1MTNlMTlkYmQ4ZWVi
OGZlMmJjODUwOTc5ZTFmZS4uOWNjNTdlNTZlNWMwZjFiMjZmZDdhNjFmZWIzOWQ1ZGJhOTI5NjQ5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtNTc3LDkgKzU3NywxMCBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAg
ZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChtX3ZpZXcpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQor
dm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7Ci0gICAgQ1N0cmluZyBjcyA9IHRpdGxlLnV0
ZjgoKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBDU3RyaW5n
IGNzID0gdGl0bGUubV9zdHJpbmcudXRmOCgpOwogICAgIGV3a19mcmFtZV90aXRsZV9zZXQobV9m
cmFtZSwgY3MuZGF0YSgpKTsKIAogICAgIGlmIChld2tfdmlld19mcmFtZV9tYWluX2dldChtX3Zp
ZXcpICE9IG1fZnJhbWUpCkBAIC03MTMsNyArNzE0LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVy
bCkKIHsKICAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMgdGhl
IHJpZ2h0IGNhbGxiYWNrCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAppbmRleCA1ZWE0ZThjYWM5N2MwYmE5ZThl
ZTY5YzkyMjc3MzljZTE3ODFhNDBjLi5iZDA3YTMwMzRiNjE4NmIwNGFiMDQ5ZTNkZjEyMGJiZDVm
OWM0NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBGcmFtZUxv
YWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZs
IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZv
ckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKIAogICAg
IHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpp
bmRleCBkN2RlNjFkMmM3ZjlkMTFhMjQ1Y2NlOGM0MTY3MzU1MDI1N2RkNzE3Li4zNzNjMWZiMzQ3
YjQwNzFlMTE0ZGMzODQzZTVhNzcxNmQyNTFiZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBz
aG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVM
b2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmg6CisKIDIwMTEtMDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmlu
ZGV4IGNhOGJmOWEwODlhZDczODNjOGQ0NTMyN2E4N2Q4NTM0Yjg1ZGUwOTcuLjIxODdkOWVhMTQ2
ZWI0NjZhMTgyMWYwNzAxNzE5YzJmZTAyNzZmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTk0
OSwxNCArOTQ5LDE1IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoKQogICAgIG5vdGlmeVN0YXR1cyhtX2ZyYW1lLCBXRUJLSVRfTE9BRF9Q
Uk9WSVNJT05BTCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkK
IHsKICAgICBpZiAobV9sb2FkaW5nRXJyb3JQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBX
ZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBtX2ZyYW1lLT5wcml2OwogICAgIGdfZnJlZShw
cml2LT50aXRsZSk7Ci0gICAgcHJpdi0+dGl0bGUgPSBnX3N0cmR1cCh0aXRsZS51dGY4KCkuZGF0
YSgpKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBwcml2LT50
aXRsZSA9IGdfc3RyZHVwKHRpdGxlLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZ19z
aWduYWxfZW1pdF9ieV9uYW1lKG1fZnJhbWUsICJ0aXRsZS1jaGFuZ2VkIiwgcHJpdi0+dGl0bGUp
OwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX2ZyYW1lKSwgInRpdGxlIik7CkBAIC0x
MTE5LDExICsxMTIwLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRh
U291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwm
IHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0V2ViRnJhbWVQ
cml2YXRlKiBmcmFtZURhdGEgPSBtX2ZyYW1lLT5wcml2OwogICAgIGdfZnJlZShmcmFtZURhdGEt
PnRpdGxlKTsKLSAgICBmcmFtZURhdGEtPnRpdGxlID0gZ19zdHJkdXAodGl0bGUudXRmOCgpLmRh
dGEoKSk7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgZnJhbWVE
YXRhLT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogfQog
CiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3Ro
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQg
bGVuZ3RoUmVjZWl2ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBiN2VhZDdhZjVlYmI5ZTY3NjVjOTQ2
YzM1NWFjOTllODljMWU5NTQxLi42ZWIyNGU5MjkxZWZjOTYyN2ZhOTg1NDI3MTZiYWZlYTQ3Mjcw
ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nV2l0aERp
cmVjdGlvbiYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgp
OwogCiAgICAgICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
c2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAgICAgICAgdmlydHVhbCBX
VEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hh
bmdlTG9nCmluZGV4IDc3NTdmZTc5MjMxNjVkZmM4Y2IxY2Q0ZGU0ZTk1MzgzZWIwOWY5ZGYuLjEx
ODVjMjZiY2ZhY2Y1YWZiNGMyOWUwNTUzOTU0ZmE2YzMzMTFiMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0
byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oOgorCiAyMDExLTAzLTI1ICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVs
ZSBQZXRlcnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCmluZGV4IDI0YTk4ZDU2MzQyODZl
N2I0NDljMTEwYjNlMWRiNTNiYTg1ZTBkMGIuLjU4OWUxZDA0YTU4ODg0NmFkZTdiN2ZjZWJhNGQ5
NzE0NzRhYjIxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcApAQCAtMjM3LDEzICsyMzcs
MTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKCkKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aFRp
dGxlJiB0aXRsZSkKIHsKICAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAgICAgIG1fd2ViVmlldy0+
U2V0UGFnZVRpdGxlKHRpdGxlKTsKLQorICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBv
ZiB0aXRsZS4KKyAgICAgICAgbV93ZWJWaWV3LT5TZXRQYWdlVGl0bGUodGl0bGUubV9zdHJpbmcp
OwogICAgICAgICBCTWVzc2FnZSBtZXNzYWdlKFRJVExFX0NIQU5HRUQpOwotICAgICAgICBtZXNz
YWdlLkFkZFN0cmluZygidGl0bGUiLCB0aXRsZSk7CisgICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5n
KCJ0aXRsZSIsIHRpdGxlLm1fc3RyaW5nKTsKICAgICAgICAgbV9tZXNzZW5nZXItPlNlbmRNZXNz
YWdlKCZtZXNzYWdlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaCBiL1NvdXJjZS9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCmluZGV4IGRiZDMw
ODRjYTRjYjdmMjlhZWI3NmQyNDRmZGRkOTMwZTk4OTcwYjIuLmY1NzY1NDVjODZhNmJhNDM3YTFk
NjZkN2NmZWZlMjc0NWZkYjc2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCkBAIC0xMDIsNyAr
MTAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hXaWxsQ2xvc2UoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFN0cmluZyYgdGl0bGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkKCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkSGlzdG9yeUl0ZW1Gb3JGcmFnbWVudFNjcm9sbCgp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0
IEtVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZTFjMGVlYTIzNDQ3NzI4OGNmZjUzMDdlMDAxYzBmMmNh
MjVmNmJhNy4uNGJlOTY0Y2I5ODM1NDc0MDg2ZDA1N2QxNDFjMzZiMWZiZmQyODcwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTI4ICBFdmFuIE1hcnRpbiAgPGV2
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBV
cGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnNldFRpdGxlKToKKwogMjAxMS0wMy0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCmluZGV4IDRmZTU2NjRkZDYwNTE2YzExODZlODU1ZGIyM2IzN2U1MjRkMzgzNjYuLmQ1
OTE3YjhmNTRjMDcwMzkzMGIzYjI3YjE3ZGVhNDVkZjc4MjBmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2ls
bENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0
bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6
OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6U3RyaW5n
JiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRs
ZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNv
bnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6
OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGlu
ZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5k
ZXggOTJjMmIwM2IxYzljZjBjOGJiZWYxMTExN2EwMDhmZGI5MzYzZTBjMC4uMjZiOWFhMzFiM2Nm
MjQyZjA1YzQ1NzBmYzhlYmMyODk0NDMyZDUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTYyNCwx
MiArNjI0LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoKQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50
YXRpb25zLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lRnVuYywgd2ViVmlldywgQHNl
bGVjdG9yKHdlYlZpZXc6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTopLCBtX3dlYkZy
YW1lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRp
dGxlKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0
KCkpOyAgIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1w
bGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25z
KHdlYlZpZXcpOwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lRnVuYykKLSAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpk
aWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUsIG1fd2ViRnJhbWUu
Z2V0KCkpOworICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAg
ICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxl
Rm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6
Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUubV9zdHJpbmcsIG1fd2ViRnJhbWUuZ2V0KCkp
OwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25z
KCkKQEAgLTExNzksNyArMTE4MCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0
dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxl
LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93
ZWJGcmFtZS5nZXQoKSk7CiAgICAgCkBAIC0xMTg4LDcgKzExODksOCBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1
cmwpCiAgICAgICAgIGlmICghaW1wbGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgQ2FsbEhpc3RvcnlEZWxlZ2F0ZShp
bXBsZW1lbnRhdGlvbnMtPnNldFRpdGxlRnVuYywgdmlldywgQHNlbGVjdG9yKHdlYlZpZXc6dXBk
YXRlSGlzdG9yeVRpdGxlOmZvclVSTDopLCAoTlNTdHJpbmcgKil0aXRsZSwgKE5TU3RyaW5nICop
dXJsKTsKKyAgICAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAg
IENhbGxIaXN0b3J5RGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMsIHZpZXcs
IEBzZWxlY3Rvcih3ZWJWaWV3OnVwZGF0ZUhpc3RvcnlUaXRsZTpmb3JVUkw6KSwgKE5TU3RyaW5n
ICopdGl0bGUubV9zdHJpbmcsIChOU1N0cmluZyAqKXVybCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDNjZDViMDgxMDQ4YjAwOTFlOGYyMmJmMWE1MzU1
YTdkMzI5NTM0M2QuLjRkYWQyOTMzZjYzMjIyYzkwMjNiMjZmMTI0NzI1YmE0MDBmYjJkNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8
ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAg
IFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDExLTAzLTI3ICBBbmRyZWFz
IEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggYnVpbGQgd2FybmluZyBh
Ym91dCBJY29uRGF0YWJhc2VDbGllbnQuaCAod3JvbmcgcGF0aC4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRl
eCA2NGZkNWVjNmRmNTAxMzAyYjZhZGRhY2Y3MDRjNDkzYTk2ZWU3MDJjLi5lOGViZTMyNGJjOTZk
MzI2YjJhZDk2MWI0NThiNGI2ODUzYTUwM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTQ0Nyw4ICs0
NDcsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKQogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUpCiB7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCiAgICAgaWYgKGR1
bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFJlY2VpdmVU
aXRsZTogJXNcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQobV9mcmFtZSkpLCBxUHJpbnRhYmxlKFFTdHJpbmcodGl0bGUpKSk7CiAKQEAgLTcwOSwxNiAr
NzEwLDE3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cHJlcGFyZUZvckRhdGFTb3VyY2VS
ZXBsYWNlbWVudCgpCiB7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmIHRpdGxlLCBjb25zdCBLVVJM
JiB1cmwpCiB7CiAgICAgLy8gVXNlZCBieSBBcHBsZSBXZWJLaXQgdG8gdXBkYXRlIHRoZSB0aXRs
ZSBvZiBhbiBleGlzdGluZyBoaXN0b3J5IGl0ZW0uCiAgICAgLy8gUXRXZWJLaXQgZG9lc24ndCBh
Y2NvbW9kYXRlIHRoaXMgb24gaGlzdG9yeSBpdGVtcy4gSWYgaXQgZXZlciBkb2VzLAogICAgIC8v
IGl0IHNob3VsZCBiZSBwcml2YXRlQnJvd3NpbmctYXdhcmUuRm9yIG5vdywgd2UgYXJlIGp1c3Qg
cGFzc2luZwogICAgIC8vIGdsb2JhbGhpc3RvcnkgbGF5b3V0IHRlc3RzLgorICAgIC8vIEZJWE1F
OiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIGlmIChkdW1wSGlzdG9yeUNhbGxiYWNrcykg
ewogICAgICAgICBwcmludGYoIldlYlZpZXcgdXBkYXRlZCB0aGUgdGl0bGUgZm9yIGhpc3Rvcnkg
VVJMIFwiJXNcIiB0byBcIiVzXCIuXG4iLAogICAgICAgICAgICAgcVByaW50YWJsZShkcnREZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwpKSwKLSAgICAgICAgICAgIHFQcmludGFi
bGUoUVN0cmluZyh0aXRsZSkpKTsKKyAgICAgICAgICAgIHFQcmludGFibGUoUVN0cmluZyh0aXRs
ZS5tX3N0cmluZykpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKaW5kZXggM2VjNWYyMGRiODJmMGU2
ODQ1MzhmYzU2NGI0YmYxM2RlZmQ3ZjgyYS4uMzE0YTU1MGZmN2QzZWMzZTBiNGYzZTQ5NzdhNTE3
ZjgwMjRjYzcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aFRpdGxlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJik7CkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2aXJ0
dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1l
bnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBT
dHJpbmdXaXRoVGl0bGUmLCBjb25zdCBLVVJMJik7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1c2Vy
QWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGNhNjFi
ZTMxMDE2OGMwNGM1ZGI0N2VjNzBkM2JhYmI5YTdkZGFjMS4uYjYzZjgyNWFlYzA0MjZjYmE0ZTVh
N2YzYTNhOGI4ZDFjYWIxMGFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDExLTAzLTI4ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBv
cnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50
IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKwogMjAxMS0wMy0yNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEpvbiBIb25leWN1dHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMDMwNDFh
NjRjMzJhNjdiZGZhM2I0Y2U2Yjc2ZDRjZjk5OWZkZDU2Yi4uZWM3NGJmMjUxNDVkZjI2MzFjMzc1
NzRhYzVmNjcyZjA4YTg5NzBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMzY2LDEyICszNjYs
MTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpCiAgICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
U3RyaW5nV2l0aFRpdGxlJiB0aXRsZSkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJG
cmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViRnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1l
TG9hZERlbGVnYXRlOwogICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdh
dGUoJmZyYW1lTG9hZERlbGVnYXRlKSkpCi0gICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRS
ZWNlaXZlVGl0bGUod2ViVmlldywgQlN0cmluZyh0aXRsZSksIG1fd2ViRnJhbWUpOworICAgICAg
ICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAgICAgZnJhbWVMb2FkRGVs
ZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlLm1fc3RyaW5nKSwg
bV93ZWJGcmFtZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNTdkZTJhZDA3OWEzZGM0MmQ0NjE4MDQ4
ZGUzNDQ0YjQxNTE4ODU1YS4uOWFkZmRhNWU3YTNlZGVhMzI1OGQwYmY0YmU0Y2NlZDRkMDlkZTFl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFdURjo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgp
OwpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShj
b25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0Nh
Y2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3dpbmNlL0NoYW5nZUxvZwppbmRleCBlNTk1ZjI1ZGM3ODM1MTFiZDk3YmVjZTQxNDQzNzUyZTRl
YTAyNTA2Li5hYzA0MDVjOTlkMWFjZjVjYTQyZmQ1NjRmN2YyNDJjMTc3NzQ4NzBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bmNlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTI4ICBFdmFuIE1hcnRpbiAg
PGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAg
ICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNldFRpdGxlKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6CisKIDIwMTEtMDMt
MjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCmluZGV4IDJk
ODgxMmZhMGRhMTYyMjZiMjBjNmNmZTFlZjg4N2M3OGNhZmI4YjkuLjcwZDc4YTA5ZWNlMTg2MmE1
NjI5ZThmM2ViYTJlYWJjZDE2MWExMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcApAQCAt
MzcxLDcgKzM3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJp
bmcmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6cHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZShjb25zdCBTdHJpbmcmLCBjb25z
dCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nV2l0aFRpdGxlJiwgY29uc3QgS1VSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmgKaW5kZXggNDAxMjI1ZDIyOWU4NjkzYzllNmFkMWI5ZDVlNGYx
NWY3YzJiOWZiZS4uNjE1MzljNTU2NzMwODc0ZWMxY2RhOGQwMTJjZGNkN2JjNzk2MmVlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgV1RGOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21t
aXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNjksNyArMTY5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7
CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4g
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUo
Y29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKIAogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCA5ODBmYThhMDJiM2RhOTFh
NTVhZjQ0NTQzNDE1YjYzM2UyMDE3NmFhLi4wMTRhOTBkNTcxOGEyYzE0OGIyN2ZiZTM2N2ZjNGE2
MGNkNzMwNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTI4ICBF
dmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJp
YnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5
NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4K
KworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpzZXRUaXRsZSk6Cisg
ICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMTEtMDMt
MjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkZWxlIFBldGVyc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCmluZGV4IGFmYzI1NWNjYWNmOTRiNzRiZDQzMjI5
ZDM2NmNjYmFjYjAxNmYyMDguLjUzOWI1ZDEwOGZiNGQxMWQ1MGFiNzk2MmEzZWUzMGYyMzI0M2Y5
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFd4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHAKQEAgLTI5NSwxMiArMjk1LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRXeDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiB9CiAKIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcm
IHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmIHRpdGxlKQogewogICAgIGlmIChtX3dlYlZpZXcpIHsK
LSAgICAgICAgbV93ZWJWaWV3LT5TZXRQYWdlVGl0bGUodGl0bGUpOworICAgICAgICAvLyBGSVhN
RTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAgICAgbV93ZWJWaWV3LT5TZXRQYWdlVGl0
bGUodGl0bGUubV9zdHJpbmcpOwogICAgICAgICB3eFdlYlZpZXdSZWNlaXZlZFRpdGxlRXZlbnQg
d2tFdmVudChtX3dlYlZpZXcpOwotICAgICAgICB3a0V2ZW50LlNldFRpdGxlKHRpdGxlKTsKKyAg
ICAgICAgd2tFdmVudC5TZXRUaXRsZSh0aXRsZS5tX3N0cmluZyk7CiAgICAgICAgIG1fd2ViVmll
dy0+R2V0RXZlbnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KTsKICAgICB9CiB9CkBA
IC01MjUsNyArNTI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpwcmVwYXJlRm9yRGF0
YVNvdXJjZVJlcGxhY2VtZW50KCkKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudFd4OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29u
c3QgS1VSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmggYi9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCmluZGV4IDI1NGY5
NWM0MmM0MjI5NGZjZGUyNjhlODYwZGVjZmJlMWZlY2M3NmEuLmIyOGQzODk3YWM5YmQwYTVjZWU2
MjE2ZGM0MTU0NjNmMzRjYjM4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKKysrIGIvU291cmNlL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaApAQCAtMTAzLDcgKzEwMyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxl
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hE
b2N1bWVudExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9h
ZCgpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIGFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVG
b3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJik7CiAKICAg
ICAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDU2MzFjY2MwNGY2YjhhMDQ1M2U4NWEwYjY2NTk4OGY2ODY5OTM5MzkuLjQ4MzMwODMwMmJl
YjRjZTE2MzM1MThiMTZhMjM4OTQ0YzZhOWQ2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxMS0wMy0yOCAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBz
dXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNs
aWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDMtMjcgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93
aWFrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmYTNjZGNlZjdiNTUy
MDI0MzBlNTk3ZjFlZDc0MTY3M2NiMGIwMDU4Li5mMjQxODZjMzFjOGM2ODVjNTQ2ZjZhMmZmYTli
N2M1YzIzMmEwZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDAz
LDcgKzQwMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHVy
bCwgdW5yZWFjaGFibGVVUkwsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJE
YXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYg
dGl0bGUpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBp
ZiAoIXdlYlBhZ2UpCkBAIC00MTIsMTAgKzQxMiwxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIFJl
ZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xp
ZW50LgotICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWUod2ViUGFnZSwgdGl0bGUsIG1fZnJhbWUsIHVzZXJEYXRhKTsKKyAgICAv
LyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHdlYlBhZ2UsIHRpdGxl
Lm1fc3RyaW5nLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJv
Y2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2Vp
dmVUaXRsZUZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgdGl0bGUsIEluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+
ZnJhbWVJRCgpLCB0aXRsZS5tX3N0cmluZywgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29k
ZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpAQCAtMTA2MSwxNCArMTA2MiwxNSBAQCBQYXNzUmVmUHRy
PERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3Qs
IGRhdGEpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYg
dXJsKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlv
biBvZiB0aXRsZS4KICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkNvbnRleHQ6OkRpZFVwZGF0ZUhpc3RvcnlUaXRsZSh3ZWJQYWdlLT5wYWdl
SUQoKSwKLSAgICAgICAgdGl0bGUsIHVybC5zdHJpbmcoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwg
MCk7CisgICAgICAgIHRpdGxlLm1fc3RyaW5nLCB1cmwuc3RyaW5nKCksIG1fZnJhbWUtPmZyYW1l
SUQoKSksIDApOwogfQogCiBTdHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChj
b25zdCBLVVJMJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxOTQ4NTQxOTIw
NzMxMDJkMGU3ZGU3MjgyYmE3NDAzZGY2YTk4NTFiLi5jYjMwMDhiZWMxMzE2ZjAyNmQ3OTc2YWQ0
YzYxMWI0NDE1NTBmYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC04NCw3
ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYgdGl0bGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRh
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICAKICAgICB2
aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87293</attachid>
            <date>2011-03-29 03:38:42 -0700</date>
            <delta_ts>2011-03-29 07:12:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50961-20110329034251.patch</filename>
            <type>text/plain</type>
            <size>64450</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIwOTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNGE5NTNmMmI0ZTY0ZWE5
YTE1ZTZlODg4MTlhZjg0YTI3Yjk1ZDVhLi43YTMxZWM4NGM4YmIyNDExMzVhODBjYjJjMTMwZmRl
MmFkMjFlZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjcgQEAKIDIwMTEtMDMtMjggIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQor
CisgICAgICAgIEludHJvZHVjZSBhIG5ldyBTdHJpbmdXaXRoRGlyZWN0aW9uIG9iamVjdCB0aGF0
IGNhcnJpZXMgYSBTdHJpbmcgYWxvbmcKKyAgICAgICAgd2l0aCB0aGUgVGV4dERpcmVjdGlvbiBh
c3NvY2lhdGVkIHdpdGggdGhlIFN0cmluZy4gIFVzZSB0aGlzIG9iamVjdCBmb3IKKyAgICAgICAg
ZG9jdW1lbnQgdGl0bGVzIHVzZWQgd2l0aGluIFdlYkNvcmUsIGJlY2F1c2UgaW4gSFRNTCB0aGUg
ZGlyZWN0aW9uIG9mCisgICAgICAgIGEgdGl0bGUgY2FuIGJlIHNldCB3aXRoIHRoZSAnZGlyJyBh
dHRyaWJ1dGUuCisKKyAgICAgICAgUHV0IEZJWE1FcyBhdCB0aGUgV2ViS2l0IGxldmVsIHRvIGV4
cG9zZSB0aGUgbmV3IGRpcmVjdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICB0byBjbGllbnRzLgor
CisgICAgICAgIE5vIGJlaGF2aW9yYWwgY2hhbmdlIGludGVuZGVkLCBzbyBubyBuZXcgdGVzdHMu
ICBBIGZvbGxvdy11cCB3aWxsIGV4cG9zZQorICAgICAgICB0aGUgdGl0bGUgZGlyZWN0aW9uIGFu
ZCBob3BlZnVsbHkgY2FuIGJlIGFjY29tcGFuaWVkIGJ5IHRlc3RzIHRoYXQKKyAgICAgICAgdmVy
aWZ5IGl0IGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVRpdGxlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aXRsZSk6CisgICAg
ICAgICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
aXRsZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRp
dGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRs
ZUVsZW1lbnQ6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6dGV4
dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6c2V0VGl0bGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnRpdGxlKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRUaXRsZSk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0
b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbjo6U3Ry
aW5nV2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9u
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb246Om9w
ZXJhdG9yIT0pOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisKKzIwMTEtMDMt
MjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQg
YnkgUnlvc3VrZSBOaXdhLgogCiAgICAgICAgIFJlZmFjdG9yIGR1cGxpY2F0ZSBjb2RlIGluIEhU
TUxUZXh0RWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkMTllNGU0YzQ3ZGY3NTc1ODUz
NGEyOTZlNGUwYzNkYzJiMDI1ZGMzLi5kY2E2NzU5MjBhN2U5ODcwNGI5MTYzZTA2OTIxYjYxNTll
NGM4MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzQxLDcgKzM0MSw3IEBAIF9fWk43V2Vi
Q29yZTE0RG9jdW1lbnRMb2FkZXIyMmNhbmNlbE1haW5SZXNvdXJjZUxvYWRFUktOU18xM1Jlc291
cmNlRXJyb3JFCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMjRyZW1vdmVQbHVnSW5TdHJl
YW1Mb2FkZXJFUE5TXzE0UmVzb3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9h
ZGVyN3JlcXVlc3RFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjhzZXRGcmFtZUVQTlNf
NUZyYW1lRQotX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjhzZXRUaXRsZUVSS04zV1RGNlN0
cmluZ0UKK19fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI4c2V0VGl0bGVFUktOU18xOVN0cmlu
Z1dpdGhEaXJlY3Rpb25FCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyQzFFUktOU18xNVJl
c291cmNlUmVxdWVzdEVSS05TXzE0U3Vic3RpdHV0ZURhdGFFCiBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyQzJFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzE0U3Vic3RpdHV0ZURhdGFF
CiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyRDJFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggOTQ5YTYyYTVhNWFhODc0MmVjOWM4YjMxM2Q1ZTU2NjNkNjg4NmY3Ni4uZGE5MWI1NGVm
MDA1ODMwYTNmZWE2ZDk5YzJiMGZmY2NjMTgxNDM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC0zODksOCArMzg5LDYgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9jb250YWlu
c1ZhbGlkaXR5U3R5bGVSdWxlcyhmYWxzZSkKICAgICAsIG1fdXBkYXRlRm9jdXNBcHBlYXJhbmNl
UmVzdG9yZXNTZWxlY3Rpb24oZmFsc2UpCiAgICAgLCBtX2lnbm9yZURlc3RydWN0aXZlV3JpdGVD
b3VudCgwKQotICAgICwgbV90aXRsZSgiIikKLSAgICAsIG1fcmF3VGl0bGUoIiIpCiAgICAgLCBt
X3RpdGxlU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAsIG1fdXBkYXRlRm9jdXNBcHBlYXJhbmNl
VGltZXIodGhpcywgJkRvY3VtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lckZpcmVkKQog
ICAgICwgbV9zdGFydFRpbWUoY3VycmVudFRpbWUoKSkKQEAgLTEyNzEsOCArMTI2OSw5IEBAIEVs
ZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50QnlBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBrZXkp
IGNvbnN0CiAgKiAgMi4gVHJpbSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMKICAqICAzLiBD
b2xsYXBzZSBpbnRlcm5hbCB3aGl0ZXNwYWNlLgogICovCi1zdGF0aWMgaW5saW5lIFN0cmluZyBj
YW5vbmljYWxpemVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRpdGxl
KQorc3RhdGljIGlubGluZSBTdHJpbmdXaXRoRGlyZWN0aW9uIGNhbm9uaWNhbGl6ZWRUaXRsZShE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlV2l0aERp
cmVjdGlvbikKIHsKKyAgICBjb25zdCBTdHJpbmcmIHRpdGxlID0gdGl0bGVXaXRoRGlyZWN0aW9u
LnN0cmluZygpOwogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGl0bGUuY2hhcmFjdGVy
cygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRpdGxlLmxlbmd0aCgpOwogICAgIHVuc2lnbmVk
IGk7CkBAIC0xMjg4LDcgKzEyODcsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBjYW5vbmljYWxp
emVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIH0K
IAogICAgIGlmIChpID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1
cm4gU3RyaW5nV2l0aERpcmVjdGlvbigpOwogCiAgICAgLy8gUmVwbGFjZSBjb250cm9sIGNoYXJh
Y3RlcnMgd2l0aCBzcGFjZXMsIGFuZCBiYWNrc2xhc2hlcyB3aXRoIGN1cnJlbmN5IHN5bWJvbHMs
IGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlLgogICAgIGJvb2wgcHJldmlvdXNDaGFyV2FzV1MgPSBm
YWxzZTsKQEAgLTEzMTMsMTQgKzEzMTIsMTQgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgY2Fub25p
Y2FsaXplZFRpdGxlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAg
ICB9CiAKICAgICBpZiAoIWJ1aWxkZXJJbmRleCAmJiBidWZmZXJbYnVpbGRlckluZGV4XSA9PSAn
ICcpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1dpdGhEaXJlY3Rp
b24oKTsKIAogICAgIGJ1ZmZlci5zaHJpbmsoYnVpbGRlckluZGV4ICsgMSk7CiAKICAgICAvLyBS
ZXBsYWNlIHRoZSBiYWNrc2xhc2hlcyB3aXRoIGN1cnJlbmN5IHN5bWJvbHMgaWYgdGhlIGVuY29k
aW5nIHJlcXVpcmVzIGl0LgogICAgIGRvY3VtZW50LT5kaXNwbGF5QnVmZmVyTW9kaWZpZWRCeUVu
Y29kaW5nKGJ1ZmZlci5jaGFyYWN0ZXJzKCksIGJ1ZmZlci5sZW5ndGgoKSk7CiAgICAgCi0gICAg
cmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKKyAgICByZXR1cm4gU3RyaW5nV2l0aERpcmVj
dGlvbihTdHJpbmc6OmFkb3B0KGJ1ZmZlciksIHRpdGxlV2l0aERpcmVjdGlvbi5kaXJlY3Rpb24o
KSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRpdGxlKCkKQEAgLTEzMzAsNyArMTMyOSwx
MyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZSgpCiAgICAgICAgIGYtPmxvYWRlcigpLT5z
ZXRUaXRsZShtX3RpdGxlKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgRWxlbWVudCogdGl0bGVFbGVtZW50KQordm9pZCBEb2N1bWVudDo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCBieSBKYXZh
U2NyaXB0IGxpa2UgZG9jdW1lbnQudGl0bGU9ImZvbyIsIHNvIHdlIGp1c3QgYXNzdW1lIExUUi4K
KyAgICBzZXRUaXRsZShTdHJpbmdXaXRoRGlyZWN0aW9uKHRpdGxlLCBMVFIpLCAwKTsKK30KKwor
dm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IEVsZW1lbnQqIHRpdGxlRWxlbWVudCkKIHsKICAgICBpZiAoIXRpdGxlRWxlbWVudCkgewogICAg
ICAgICAvLyBUaXRsZSBzZXQgYnkgSmF2YVNjcmlwdCAtLSBvdmVycmlkZXMgYW55IHRpdGxlIGVs
ZW1lbnRzLgpAQCAtMTM1OSw3ICsxMzY0LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSwgRWxlbWVudCogdGl0bGVFbGVtZW50KQogICAgIHVwZGF0ZVRpdGxl
KCk7CiAKICAgICBpZiAobV90aXRsZVNldEV4cGxpY2l0bHkgJiYgbV90aXRsZUVsZW1lbnQgJiYg
bV90aXRsZUVsZW1lbnQtPmhhc1RhZ05hbWUodGl0bGVUYWcpICYmICF0aXRsZUVsZW1lbnQpCi0g
ICAgICAgIHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPihtX3RpdGxlRWxlbWVudC5nZXQo
KSktPnNldFRleHQobV90aXRsZSk7CisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1l
bnQqPihtX3RpdGxlRWxlbWVudC5nZXQoKSktPnNldFRleHQobV90aXRsZS5zdHJpbmcoKSk7CiB9
CiAKIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZVRpdGxlKEVsZW1lbnQqIHRpdGxlRWxlbWVudCkKQEAg
LTEzNzUsMTMgKzEzODAsMTMgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlVGl0bGUoRWxlbWVudCog
dGl0bGVFbGVtZW50KQogICAgICAgICBmb3IgKE5vZGUqIGUgPSBoZWFkRWxlbWVudC0+Zmlyc3RD
aGlsZCgpOyBlOyBlID0gZS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIGlmIChlLT5oYXNU
YWdOYW1lKHRpdGxlVGFnKSkgewogICAgICAgICAgICAgICAgIEhUTUxUaXRsZUVsZW1lbnQqIHRp
dGxlRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPihlKTsKLSAgICAgICAg
ICAgICAgICBzZXRUaXRsZSh0aXRsZUVsZW1lbnQtPnRleHQoKSwgdGl0bGVFbGVtZW50KTsKKyAg
ICAgICAgICAgICAgICBzZXRUaXRsZSh0aXRsZUVsZW1lbnQtPnRleHRXaXRoRGlyZWN0aW9uKCks
IHRpdGxlRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKCFtX3RpdGxlRWxlbWVudCAmJiAhbV9yYXdUaXRsZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgbV9yYXdUaXRsZSA9ICIiOworICAgICAgICBtX3Jhd1RpdGxlID0gU3RyaW5n
V2l0aERpcmVjdGlvbigpOwogICAgICAgICB1cGRhdGVUaXRsZSgpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggNzMyY2VmZDllMjI5NTkwZjhmYjg5ZTg2NTg4NjRiZTlmZjhmMWYx
Zi4uMzMyOTczNDY2NWY0NTg5ZWQ1NThkZmRmZGM5ZmQxMWUyOTYyYzYzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFRpbWluZy5oIgog
I2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlIDx3dGYvRml4ZWRB
cnJheS5oPgpAQCAtODExLDggKzgxMiw5IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIDAgaWYg
dGhpcyBpcyB0aGUgdG9wIGxldmVsIGRvY3VtZW50LgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50KCkgY29uc3Q7CiAKLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJl
dHVybiBtX3RpdGxlOyB9Ci0gICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmLCBFbGVtZW50
KiB0aXRsZUVsZW1lbnQgPSAwKTsKKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBt
X3RpdGxlLnN0cmluZygpOyB9CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmKTsgLy8g
VXNlZCBieSBET00gYmluZGluZ3M7IG5vIGRpcmVjdGlvbiBrbm93bi4KKyAgICB2b2lkIHNldFRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpOwog
ICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50KTsKIAogICAgIFN0cmlu
ZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpAQCAtMTI5NCw4ICsxMjk2LDggQEAgcHJp
dmF0ZToKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrLyNpZ25vcmUtZGVzdHJ1Y3RpdmUtd3JpdGVzLWNvdW50ZXIKICAgICB1bnNpZ25lZCBt
X2lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudDsKIAotICAgIFN0cmluZyBtX3RpdGxlOwotICAg
IFN0cmluZyBtX3Jhd1RpdGxlOworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV90aXRsZTsKKyAg
ICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fcmF3VGl0bGU7CiAgICAgYm9vbCBtX3RpdGxlU2V0RXhw
bGljaXRseTsKICAgICBSZWZQdHI8RWxlbWVudD4gbV90aXRsZUVsZW1lbnQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCmluZGV4IDMxYjFiMmJjZDJiOGU0ZTFhNjM4
YTc1MDhiZDA3ZWI3ZmFhNzc1YjIuLmZhNzVlODk4Mzg0MzcwMjUxNmJhMWRlN2E1N2Q1NTFjNDdi
NjNmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcApAQCAtMjUs
NiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzMsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBpbmxpbmUgSFRNTFRpdGxlRWxlbWVudDo6SFRNTFRpdGxlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1fdGl0bGUoIiIpCisgICAgLCBtX3RpdGxlKCIi
LCBMVFIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGl0bGVUYWcpKTsKIH0KQEAgLTU3LDcg
KzU4LDcgQEAgdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKIAog
dm9pZCBIVE1MVGl0bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50
RGVsdGEpCiB7Ci0gICAgbV90aXRsZSA9IHRleHQoKTsKKyAgICBtX3RpdGxlID0gdGV4dFdpdGhE
aXJlY3Rpb24oKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudCgpLT5z
ZXRUaXRsZShtX3RpdGxlLCB0aGlzKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERl
bHRhKTsKQEAgLTcxLDEwICs3MiwxNiBAQCBTdHJpbmcgSFRNTFRpdGxlRWxlbWVudDo6dGV4dCgp
IGNvbnN0CiAgICAgICAgIGlmIChuLT5pc1RleHROb2RlKCkpCiAgICAgICAgICAgICB2YWwgKz0g
c3RhdGljX2Nhc3Q8VGV4dCo+KG4pLT5kYXRhKCk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJu
IHZhbDsKIH0KIAorU3RyaW5nV2l0aERpcmVjdGlvbiBIVE1MVGl0bGVFbGVtZW50Ojp0ZXh0V2l0
aERpcmVjdGlvbigpCit7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gY29tcHV0ZWRTdHlsZSgp
OworICAgIHJldHVybiBTdHJpbmdXaXRoRGlyZWN0aW9uKHRleHQoKSwgc3R5bGUtPmRpcmVjdGlv
bigpKTsKK30KKwogdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAm
dmFsdWUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRpdGxlRWxlbWVudC5oCmluZGV4IDhiOTBmNTY0ZjNhYWYxNjEwMzE0NmFjMDU4MjJmNmQ5ZTZh
MWZhZTEuLjY5MjA5OTc4Mzk1YjA0NTNiMjQ1ZWM0MjM1MTA0MDI5ZmQ0MjQ0OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVmaW5l
IEhUTUxUaXRsZUVsZW1lbnRfaAogCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJTdHJpbmdXaXRoRGlyZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzMs
NiArMzQsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsKICAgICB2b2lkIHNl
dFRleHQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRleHRXaXRo
RGlyZWN0aW9uKCk7CisKIHByaXZhdGU6CiAgICAgSFRNTFRpdGxlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNDAsNyArNDMsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVD
aGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAw
KTsKIAotICAgIFN0cmluZyBtX3RpdGxlOworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV90aXRs
ZTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCmluZGV4IDEyMTA0NWI1Yjk5ZmZhMDc5YjYwNTlmN2UxOTdhZGQ0ZDNkYmMzZDIuLjE0
MzdhZGM0ZTZkYjU3NGJmNzA5MTljNGNiMDA1YmMyNDkyMjNkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKQogICAgIG1fc3RvcFJlY29yZGluZ1Jl
c3BvbnNlcyA9IHRydWU7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0
IFN0cmluZyYgdGl0bGUpCit2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDFm
ODgyNzJiMTkyMDA1ZDYyZTMyMDcxNzBiZjdjNWI4MjU3OTJiYTUuLmM2ZjBiYzViMjY5NDRmZWJm
OTY0YmZkZGMyNjU3Yjc2Njc1ZTM1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
KyNpbmNsdWRlICJTdHJpbmdXaXRoRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURh
dGEuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0x
MjEsNyArMTIyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHdhc09ubG9h
ZEhhbmRsZWQoKSB7IHJldHVybiBtX3dhc09ubG9hZEhhbmRsZWQ7IH0KICAgICAgICAgYm9vbCBp
c0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJpbWFyeUxvYWRD
b21wbGV0ZShib29sKTsKLSAgICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAg
ICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAg
IHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBv
dmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAK
QEAgLTE2OCw3ICsxNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgbGFzdENoZWNrZWRSZXF1ZXN0KCkgIHsgcmV0dXJuIG1fbGFzdENoZWNr
ZWRSZXF1ZXN0OyB9CiAKICAgICAgICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7Ci0g
ICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VUaXRsZTsg
fQorICAgICAgICBjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZVRpdGxlOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAgICAgICBLVVJMIHVybEZvckhpc3Rvcnko
KSBjb25zdDsKQEAgLTI5OCw3ICsyOTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OwogICAgICAgICBib29sIG1fd2FzT25sb2FkSGFuZGxl
ZDsKIAotICAgICAgICBTdHJpbmcgbV9wYWdlVGl0bGU7CisgICAgICAgIFN0cmluZ1dpdGhEaXJl
Y3Rpb24gbV9wYWdlVGl0bGU7CiAgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAg
ICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKaW5kZXggNTlmZDg5NzljYmVlZmNjZmU5MDVhZGU3ZDI2ZmZiMWRkYWU2ZTlhMy4uNmFj
Zjk5MjE5YmFjZTNjYzJkMDIzMzI5ZmQ2MWU3ZjAzZmIyNTVhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaApAQCAtMjY2LDcgKzI2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CkBAIC0zMzQsNyArMzM0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50
KCkgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKSB7IHJldHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRl
KHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShj
b25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJikgeyB9CiAKICAgICB2aXJ0
dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpIHsgcmV0dXJuICIiOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDM0N2E0MWVhYWUzYWI2MTdkYTMwMWNh
YzEyOTc1MjU3ZGI4NGE1OWQuLjM2MTEwZTczMGNiNGU0Nzk5M2JiMGZmM2IyZTRkNTcwNDQ4ZGMy
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNjEwLDkgKzYxMCw5
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKCkKICAgICBkaXNwYXRjaERp
ZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CiAgICAgCiAgICAgaWYgKG1fZG9jdW1l
bnRMb2FkZXIpIHsKLSAgICAgICAgU3RyaW5nIHB0aXRsZSA9IG1fZG9jdW1lbnRMb2FkZXItPnRp
dGxlKCk7CisgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gcHRpdGxlID0gbV9kb2N1bWVudExv
YWRlci0+dGl0bGUoKTsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRpdGxlIGxldCB0aGUgV2Vi
VmlldyBrbm93IGFib3V0IGl0LgotICAgICAgICBpZiAoIXB0aXRsZS5pc051bGwoKSkKKyAgICAg
ICAgaWYgKCFwdGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKHB0aXRsZSk7CiAgICAgfQogCkBAIC0xOTI0LDkgKzE5MjQsOSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBkaXNwYXRj
aERpZENvbW1pdExvYWQoKTsKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRo
ZSBXZWJWaWV3IGtub3cgYWJvdXQgaXQuIAotICAgICAgICBTdHJpbmcgdGl0bGUgPSBtX2RvY3Vt
ZW50TG9hZGVyLT50aXRsZSgpOwotICAgICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKSAKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh0aXRsZSk7ICAgICAgICAg
CisgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50
aXRsZSgpOworICAgICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fY2xp
ZW50LT5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh0aXRsZSk7CiAKICAgICAgICAgY2hlY2tDb21w
bGV0ZWQoKTsKICAgICB9IGVsc2UgeyAgICAgICAgCkBAIC0zMzc1LDcgKzMzNzUsNyBAQCBib29s
IEZyYW1lTG9hZGVyOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsCiB9CiAjZW5kaWYKIAotdm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldFRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGRvY3VtZW50TG9hZGVyKCktPnNl
dFRpdGxlKHRpdGxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggMWZi
OWUzYzQ1ZjQ5MGUyOTlmYWZjNTRmNGQzNWU2N2U0ZWIxMjk1Yy4uOTA2MmYyMTVjZWQ4MTU5ZmRh
ODljODVhZjZlMTZkODFhYzVmNTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgK
QEAgLTc4LDYgKzc4LDcgQEAgY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFN0cmluZ1dpdGhEaXJlY3Rpb247CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFRl
eHRSZXNvdXJjZURlY29kZXI7CiAKQEAgLTI4Miw3ICsyODMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNhbmNlbEFuZENsZWFyKCk7CiAKLSAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZv
aWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgY29tbWl0UHJvdmlzaW9u
YWxMb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDdkNjQ5MTJiZGI0MTNhZTk1OWFiMGU4ZjVhY2NhYWM2NjJmZmY5OTMuLmQ1ZDQ5ZWM5YzcwOGE5
YzdlODk3NzNiMWQ2Mzg3YWJlZmI3ZWYyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC04NCw2ICs4NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogICAg
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyAgICBjbGFzcyBTdHJpbmdXaXRoRGlyZWN0aW9uOwogICAg
IGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogICAgIGNsYXNzIFdpZGdldDsKIApAQCAtMTM5LDcgKzE0
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbENsb3NlKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
SWNvbigpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9y
JikgPSAwOwpAQCAtMjI3LDcgKzIyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSA9IDA7CiAKICAg
ICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExv
YWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpID0gMDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IEtVUkwmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCBiOGJlY2U5Yjc1MGM1Mzg2ZDhhM2Q4
ZTFkMjhjOGQxZWQ3YjMxYmI5Li5jMWM1NDE0MzJhYWRkOWY1YmRiYmFkNjI5YjBmOGEwNDZiNWFh
OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAg
LTI2NSw3ICsyNjUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9y
d2FyZE5hdmlnYXRpb24oKQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29y
ZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uIGlu
IGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVw
ZGF0aW5nIEhpc3RvcnkgZm9yIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uIGluIGZyYW1lICVzIiwg
bV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAjZW5kaWYKIAogICAgIC8vIE11c3QgZ3JhYiB0aGUgY3VycmVudCBzY3Jv
bGwgcG9zaXRpb24gYmVmb3JlIGRpc3R1cmJpbmcgaXQKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWxvYWQoKQogewogI2lmICFMT0dfRElTQUJM
RUQKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAg
IExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlbG9h
ZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRs
ZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5
OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWxvYWQgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICNlbmRpZgogCiAgICAgaWYgKG1fY3VycmVudEl0ZW0pIHsKQEAgLTM0Myw3ICszNDMsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9y
d2FyZExpc3QoKQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+bG9hZGVy
KCktPmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rv
cnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlZGlyZWN0IGxvYWQgaW4gZnJhbWUgJXMiLCBtX2Zy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBm
b3IgcmVkaXJlY3QgbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAg
CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKQEAgLTM4NSw3
ICszODUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVj
dCgpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBk
YXRpbmcgSGlzdG9yeSBmb3IgY2xpZW50IHJlZGlyZWN0IGluIGZyYW1lICVzIiwgbV9mcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGNs
aWVudCByZWRpcmVjdCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExv
YWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKICAgICAv
LyBDbGVhciBvdXQgZm9ybSBkYXRhIHNvIHdlIGRvbid0IHRyeSB0byByZXN0b3JlIGl0IGludG8g
dGhlIGluY29taW5nIHBhZ2UuICBNdXN0IGhhcHBlbiBhZnRlcgpAQCAtNDEwLDcgKzQxMCw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgpCiAgICAgRnJhbWVMb2Fk
ZXIqIGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7CiAjaWYgIUxPR19ESVNBQkxFRAog
ICAgIGlmIChmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3Rv
cnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY29tbWl0IGluIGZyYW1l
ICVzIiwgZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3Rv
cnkgZm9yIGNvbW1pdCBpbiBmcmFtZSAlcyIsIGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgRnJhbWVMb2Fk
VHlwZSB0eXBlID0gZnJhbWVMb2FkZXItPmxvYWRUeXBlKCk7CiAgICAgaWYgKGlzQmFja0Zvcndh
cmRMb2FkVHlwZSh0eXBlKQpAQCAtNTI2LDEwICs1MjYsMTEgQEAgdm9pZCBIaXN0b3J5Q29udHJv
bGxlcjo6c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgbV9jdXJyZW50SXRl
bSA9IGl0ZW07CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtVGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJl
bnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgaWYg
KG1fY3VycmVudEl0ZW0pCi0gICAgICAgIG1fY3VycmVudEl0ZW0tPnNldFRpdGxlKHRpdGxlKTsK
KyAgICAgICAgLy8gRklYTUU6IG1ha2UgdXNlIG9mIHRpdGxlLmRpcmVjdGlvbigpIGFzIHdlbGwu
CisgICAgICAgIG1fY3VycmVudEl0ZW0tPnNldFRpdGxlKHRpdGxlLnN0cmluZygpKTsKIH0KIAog
Ym9vbCBIaXN0b3J5Q29udHJvbGxlcjo6Y3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29u
c3QKQEAgLTU3NiwxMiArNTc3LDEzIEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmluaXRpYWxp
emVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIAogICAgIEZyYW1lKiBwYXJlbnRGcmFtZSA9
IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CiAgICAgU3RyaW5nIHBhcmVudCA9IHBhcmVudEZy
YW1lID8gcGFyZW50RnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpIDogIiI7Ci0gICAgU3RyaW5n
IHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7CisgICAgU3RyaW5nV2l0aERpcmVjdGlv
biB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogCiAgICAgaXRlbS0+c2V0VVJMKHVy
bCk7CiAgICAgaXRlbS0+c2V0VGFyZ2V0KG1fZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpKTsK
ICAgICBpdGVtLT5zZXRQYXJlbnQocGFyZW50KTsKLSAgICBpdGVtLT5zZXRUaXRsZSh0aXRsZSk7
CisgICAgLy8gRklYTUU6IHNob3VsZCBzdG9yZSB0aXRsZSBkaXJlY3Rpb25hbGl0eSBpbiBoaXN0
b3J5IGFzIHdlbGwuCisgICAgaXRlbS0+c2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwogICAgIGl0
ZW0tPnNldE9yaWdpbmFsVVJMU3RyaW5nKG9yaWdpbmFsVVJMLnN0cmluZygpKTsKIAogICAgIGlm
ICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpIHx8IGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuaAppbmRleCA1OWYxMWEyNWM5MzNkM2Q3Yzk3MjUxYjkwYTkzYjMyZDU2Yjk5YWQ0
Li4xNWUxMmMwOTlhM2VmMDcyNzU0ZTY3ZTZjZDU2N2Y2YmUwOGJhNWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbjsKIAogY2xhc3Mg
SGlzdG9yeUNvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhpc3RvcnlDb250
cm9sbGVyKTsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgSGlzdG9yeUl0ZW0qIGN1
cnJlbnRJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SXRlbS5nZXQoKTsgfQogICAgIHZv
aWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qKTsKLSAgICB2b2lkIHNldEN1cnJlbnRJdGVt
VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICBib29sIGN1cnJlbnRJdGVtU2hvdWxkQmVSZXBs
YWNlZCgpIGNvbnN0OwogCiAgICAgSGlzdG9yeUl0ZW0qIHByZXZpb3VzSXRlbSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJldmlvdXNJdGVtLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3ZWFhM2M0NDhj
NTk3NDk4ZTFjYzk3ZGVhZmRmZThjMzJkMTk0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBTdHJpbmdXaXRoRGlyZWN0aW9uX2gKKyNkZWZpbmUgU3RyaW5nV2l0aERpcmVj
dGlvbl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRleHREaXJl
Y3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBJbiBzb21lIGNpcmN1bXN0YW5j
ZXMgd2Ugd2FudCB0byBzdG9yZSBhIFN0cmluZyBhbG9uZyB3aXRoIHRoZSBUZXh0RGlyZWN0aW9u
CisvLyBvZiB0aGUgU3RyaW5nIGFzIGxlYXJuZWQgZnJvbSB0aGUgY29udGV4dCBvZiB0aGUgU3Ry
aW5nLiBGb3IgZXhhbXBsZSwKKy8vIGNvbnNpZGVyIHN0b3JpbmcgdGhlIHRpdGxlIGRlcml2ZWQg
ZnJvbSA8dGl0bGUgZGlyPSdydGwnPnNvbWUgdGl0bGU8L3RpdGxlPgorLy8gaW4gdGhlIGhpc3Rv
cnkuCisvLworLy8gTm90ZSB0aGF0IGlzIGV4cGxpY2l0bHkgKm5vdCogdGhlIGRpcmVjdGlvbiBv
ZiB0aGUgc3RyaW5nIGFzIGxlYXJuZWQKKy8vIGZyb20gdGhlIGNoYXJhY3RlcnMgb2YgdGhlIHN0
cmluZzsgaXQncyBleHRyYSBtZXRhZGF0YSB3ZSBoYXZlIGV4dGVybmFsCisvLyB0byB0aGUgc3Ry
aW5nLgorY2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbiB7CitwdWJsaWM6CisgICAgU3RyaW5nV2l0
aERpcmVjdGlvbigpIHt9CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbihjb25zdCBTdHJpbmcmIHN0
cmluZywgVGV4dERpcmVjdGlvbiBkaXIpIDogbV9zdHJpbmcoc3RyaW5nKSwgbV9kaXJlY3Rpb24o
ZGlyKSB7fQorCisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZzsgfQorICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
aXJlY3Rpb247IH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LmlzRW1wdHkoKTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fc3RyaW5n
ID09IG1fc3RyaW5nICYmIG90aGVyLm1fZGlyZWN0aW9uID09IG1fZGlyZWN0aW9uOworICAgIH0K
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKCp0aGlzKSA9PSBvdGhlcik7IH0KKworcHJpdmF0ZToKKyAgICBTdHJp
bmcgbV9zdHJpbmc7CisgICAgVGV4dERpcmVjdGlvbiBtX2RpcmVjdGlvbjsKK307CisKK30KKwor
I2VuZGlmIC8vIFN0cmluZ1dpdGhEaXJlY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVF
bGVtZW50LmNwcAppbmRleCA2MjgxZjEwYjE0ZmQxNGY1ODdhOWVjMjkxMmM4ZWU5MjNjNzMxOTk4
Li41YWYwODhhNWI1NzMxOTI3YWZkMjMxYWYzYmUzZDg0YWM2MzMyODY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcApAQCAtNDAsNyArNDAsOCBAQCB2b2lkIFNWR1RpdGxl
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6
Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgaWYgKGZpcnN0Q2hpbGQoKSkKLSAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0VGl0bGUodGV4dENvbnRlbnQoKSwgdGhpcyk7CisgICAgICAgIC8vIEZJ
WE1FOiBkb2VzIFNWRyBoYXZlIGEgY29uY2VwdCBvZiB0ZXh0IGRpcmVjdGlvbj8KKyAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0VGl0bGUoU3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0Q29udGVudCgpLCBM
VFIpLCB0aGlzKTsKIH0KIAogdm9pZCBTVkdUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1l
bnQoKQpAQCAtNTMsNyArNTQsOCBAQCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsCiB7CiAgICAgU1ZH
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBh
ZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQotICAg
ICAgICBkb2N1bWVudCgpLT5zZXRUaXRsZSh0ZXh0Q29udGVudCgpLCB0aGlzKTsKKyAgICAgICAg
Ly8gRklYTUU6IGRvZXMgU1ZHIGhhdmUgYSBjb25jZXB0IG9mIHRleHQgZGlyZWN0aW9uPworICAg
ICAgICBkb2N1bWVudCgpLT5zZXRUaXRsZShTdHJpbmdXaXRoRGlyZWN0aW9uKHRleHRDb250ZW50
KCksIExUUiksIHRoaXMpOwogfQogCiBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGl0
bGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGRmMTBhOWMwNzU2ZWFkOTRlMDk0NDEwNjY2YmUxYTY1ZTE4NzBkMDkuLjgz
OWNiMzBlNDMxYWYzMTA4ODQwMjgyNWVlYjU2MzdlMjYzYzFmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVw
ZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpG
cmFtZUxvYWRlckNsaWVudEltcGw6OnNldFRpdGxlKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGF0YVNvdXJjZUltcGw6OnBhZ2VUaXRsZSk6CisKIDIwMTEtMDMt
MjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkZWxlIFBldGVyc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNjQ3YTcwYzI4NWI2N2NlMGQ1NGEzYWUwODgx
NDk4ZTExNDM2ZDY1My4uY2Q3NjQ5MTA5ZDFiNWU0MDZlNzI1NDY3ZDY2M2U4MzBmOWFlODMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwCkBAIC03MzQsMTAgKzczNCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgfQogfQogCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5n
JiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKKyAgICAvLyBGSVhNRTog
dXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0g
ICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwg
dGl0bGUpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVRpdGxlKG1f
d2ViRnJhbWUsIHRpdGxlLnN0cmluZygpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudElt
cGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpAQCAtMTMyOCw3ICsxMzI5LDcgQEAgUGFzc1Jl
ZlB0cjxEb2N1bWVudExvYWRlcj4gRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpjcmVhdGVEb2N1bWVu
dExvYWRlcigKICAgICByZXR1cm4gZHMucmVsZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJs
KQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluZm9y
bSBjb25zdW1lciBvZiBjaGFuZ2VzIHRvIHRoZSB0aXRsZS4KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggZjE5YzI2YzUz
OWExYzFiNWEyNjU3YjdhYTI1ODk1YzFiMmY1MjEyNi4uMmIxYzI2ZjVkZGJjY2NhZGQyNmVhNDhh
ZjhkOGFkZjQ1YjJiYTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNjYs
NyArMTY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcigKICAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmlu
Z1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCBXVEY6
OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwog
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2Vi
Q29yZTo6Q2FjaGVkRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRhdGFTb3VyY2VJbXBsLmNwcAppbmRleCAxMzY2YTgwOTRhNTA2Mzk3ZTA5NDgzNDA4MDI2NWRi
Y2E3YmU2NjFhLi4zMTcwYWZmYmU0YjRiMWY4NDBjNjc1OTBlOWQ2YmFhZDU3ODUwZTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhU291cmNlSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCkBA
IC04Miw3ICs4Miw4IEBAIHZvaWQgV2ViRGF0YVNvdXJjZUltcGw6OnJlZGlyZWN0Q2hhaW4oV2Vi
VmVjdG9yPFdlYlVSTD4mIHJlc3VsdCkgY29uc3QKIAogV2ViU3RyaW5nIFdlYkRhdGFTb3VyY2VJ
bXBsOjpwYWdlVGl0bGUoKSBjb25zdAogewotICAgIHJldHVybiB0aXRsZSgpOworICAgIC8vIEZJ
WE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlIGFzIHdlbGwuCisgICAgcmV0dXJuIHRpdGxlKCku
c3RyaW5nKCk7CiB9CiAKIFdlYk5hdmlnYXRpb25UeXBlIFdlYkRhdGFTb3VyY2VJbXBsOjpuYXZp
Z2F0aW9uVHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZDM4ZDk1MmM4NDE0NGRlYzcy
MTRhMmNmNjg0NDA3MDk2MmJmNTVjZS4uNDhiZTdmYjFjNTI2YTM3ZGE3Y2Q2ODMyYTgxZjYyNDk5
Y2U4ZTY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTI4ICBF
dmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJp
YnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5
NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisKIDIw
MTEtMDMtMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCBmOWNk
MGQzMmViODUxM2UxOWRiZDhlZWI4ZmUyYmM4NTA5NzllMWZlLi5iYzkzZTJlZjFiODk0NTc3Njg1
YTY5ZDcyMTdmYWYxOGIwYzA0OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC01NzcsOSArNTc3
LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKQogICAgICAgICBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsKG1fdmlldyk7CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKLSAgICBD
U3RyaW5nIGNzID0gdGl0bGUudXRmOCgpOworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9m
IHRpdGxlLgorICAgIENTdHJpbmcgY3MgPSB0aXRsZS5zdHJpbmcoKS51dGY4KCk7CiAgICAgZXdr
X2ZyYW1lX3RpdGxlX3NldChtX2ZyYW1lLCBjcy5kYXRhKCkpOwogCiAgICAgaWYgKGV3a192aWV3
X2ZyYW1lX21haW5fZ2V0KG1fdmlldykgIT0gbV9mcmFtZSkKQEAgLTcxMyw3ICs3MTQsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50
KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0
aXRsZSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCmluZGV4
IDVlYTRlOGNhYzk3YzBiYTllOGVlNjljOTIyNzczOWNlMTc4MWE0MGMuLmJkMDdhMzAzNGI2MTg2
YjA0YWIwNDllM2RmMTIwYmJkNWY5YzQ1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApAQCAtMTAyLDcgKzEw
Miw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xp
ZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CkBAIC0xOTMsNyArMTkzLDcgQEAgY2xhc3Mg
RnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2aXJ0
dWFsIFdURjo6UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwg
Y29uc3QgS1VSTCYpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGQ3ZGU2MWQyYzdmOWQxMWEyNDVjY2U4YzQxNjczNTUw
MjU3ZGQ3MTcuLjM3M2MxZmIzNDdiNDA3MWUxMTRkYzM4NDNlNWE3NzE2ZDI1MWJkYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMy0yOCAgRXZhbiBNYXJ0aW4gIDxl
dmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAg
VXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMS0wMy0yNSAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHAKaW5kZXggY2E4YmY5YTA4OWFkNzM4M2M4ZDQ1MzI3YTg3ZDg1MzRi
ODVkZTA5Ny4uNWM1OTRlODU2YmIwYWY0ZDFmMmNkZWUwMzU2NTI3NDJkZmMxYjgxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcApAQCAtOTQ5LDE0ICs5NDksMTUgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgbm90aWZ5U3RhdHVzKG1f
ZnJhbWUsIFdFQktJVF9MT0FEX1BST1ZJU0lPTkFMKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IG1fZnJhbWUt
PnByaXY7CiAgICAgZ19mcmVlKHByaXYtPnRpdGxlKTsKLSAgICBwcml2LT50aXRsZSA9IGdfc3Ry
ZHVwKHRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9m
IHRpdGxlLgorICAgIHByaXYtPnRpdGxlID0gZ19zdHJkdXAodGl0bGUuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgInRpdGxlLWNo
YW5nZWQiLCBwcml2LT50aXRsZSk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fZnJh
bWUpLCAidGl0bGUiKTsKQEAgLTExMTksMTEgKzExMjAsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsK
ICAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IG1fZnJhbWUtPnByaXY7CiAg
ICAgZ19mcmVlKGZyYW1lRGF0YS0+dGl0bGUpOwotICAgIGZyYW1lRGF0YS0+dGl0bGUgPSBnX3N0
cmR1cCh0aXRsZS51dGY4KCkuZGF0YSgpKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBv
ZiB0aXRsZS4KKyAgICBmcmFtZURhdGEtPnRpdGxlID0gZ19zdHJkdXAodGl0bGUuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
UmVjZWl2ZUNvbnRlbnRMZW5ndGgoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGI3
ZWFkN2FmNWViYjllNjc2NWM5NDZjMzU1YWM5OWU4OWMxZTk1NDEuLjk3ZWIwZmY2ODZhMzZjNTE5
MWFmNGUwMmE2YTdkZjhmNDdhZDYyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaApAQCAtODEsNyArODEsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENs
b3NlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0
cmluZyYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTc0LDcgKzE3
NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZv
ckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxl
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOwogCiAgICAgICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdl
YkNvcmU6OktVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCA3NzU3ZmU3OTIzMTY1ZGZj
OGNiMWNkNGRlNGU5NTM4M2ViMDlmOWRmLi4xMTg1YzI2YmNmYWNmNWFmYjRjMjllMDU1Mzk1NGZh
NmMzMzExYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTAz
LTI4ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGly
IGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVy
ZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UuaDoKKwogMjAxMS0wMy0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3Bw
IGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhh
aWt1LmNwcAppbmRleCAyNGE5OGQ1NjM0Mjg2ZTdiNDQ5YzExMGIzZTFkYjUzYmE4NWUwZDBiLi5j
MDRjYjdkNGM2ZjFjOGI2YThlNDJiZTA1MmZkOTQyMjExMTM0NDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRIYWlrdS5jcHAKQEAgLTIzNywxMyArMjM3LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgfQogfQogCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhUaXRsZSYgdGl0bGUpCiB7CiAgICAgaWYgKG1fd2Vi
VmlldykgewotICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZSk7Ci0KKyAgICAg
ICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAgIG1fd2ViVmlldy0+
U2V0UGFnZVRpdGxlKHRpdGxlLm1fc3RyaW5nKCkpOwogICAgICAgICBCTWVzc2FnZSBtZXNzYWdl
KFRJVExFX0NIQU5HRUQpOwotICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidGl0bGUiLCB0aXRs
ZSk7CisgICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5nKCJ0aXRsZSIsIHRpdGxlLnN0cmluZygpKTsK
ICAgICAgICAgbV9tZXNzZW5nZXItPlNlbmRNZXNzYWdlKCZtZXNzYWdlKTsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50SGFpa3UuaCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRIYWlrdS5oCmluZGV4IGRiZDMwODRjYTRjYjdmMjlhZWI3NmQyNDRmZGRkOTMw
ZTk4OTcwYjIuLmY1NzY1NDVjODZhNmJhNDM3YTFkNjZkN2NmZWZlMjc0NWZkYjc2N2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRIYWlrdS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRIYWlrdS5oCkBAIC0xMDIsNyArMTAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYgdGl0bGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkBAIC0xNDMs
NyArMTQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRk
SGlzdG9yeUl0ZW1Gb3JGcmFnbWVudFNjcm9sbCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VS
ZXBsYWNlbWVudCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgS1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKTsKIAogICAgICAgICB2aXJ0dWFs
IFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZTFj
MGVlYTIzNDQ3NzI4OGNmZjUzMDdlMDAxYzBmMmNhMjVmNmJhNy4uNGJlOTY0Y2I5ODM1NDc0MDg2
ZDA1N2QxNDFjMzZiMWZiZmQyODcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDExLTAzLTI4ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1
cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xp
ZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKToKKwogMjAxMS0w
My0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBNYWNpZWogU3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRmZTU2NjRkZDYwNTE2
YzExODZlODU1ZGIyM2IzN2U1MjRkMzgzNjYuLmQ1OTE3YjhmNTRjMDcwMzkzMGIzYjI3YjE3ZGVh
NDVkZjc4MjBmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE5
Niw3ICsxOTYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNv
dXJjZVJlcGxhY2VtZW50KCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogCi0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29u
c3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcm
IHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFy
Z2luSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggOTJjMmIwM2IxYzljZjBjOGJiZWYxMTEx
N2EwMDhmZGI5MzYzZTBjMC4uZTRkOGZhMTAwOTczOWI1YjZiNDhjYTZhMDViMTg2OGNhMGZkYWI0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTYyNCwxMiArNjI0LDEzIEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBD
YWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZTopLCBtX3dlYkZyYW1lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIFdlYlZpZXcgKndlYlZp
ZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAogICAgIFdlYkZyYW1lTG9hZERl
bGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZy
YW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwogICAgIGlmIChpbXBsZW1l
bnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYykKLSAgICAgICAgQ2FsbEZyYW1l
TG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5j
LCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwg
KE5TU3RyaW5nICopdGl0bGUsIG1fd2ViRnJhbWUuZ2V0KCkpOworICAgICAgICAvLyBGSVhNRTog
dXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGlt
cGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0
bGUuc3RyaW5nKCksIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKQEAgLTExNzksNyArMTE4MCw3IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1
bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAg
V2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgCkBAIC0x
MTg4LDcgKzExODksOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIGlmICghaW1wbGVtZW50
YXRpb25zLT5zZXRUaXRsZUZ1bmMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAK
LSAgICAgICAgQ2FsbEhpc3RvcnlEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPnNldFRpdGxlRnVu
YywgdmlldywgQHNlbGVjdG9yKHdlYlZpZXc6dXBkYXRlSGlzdG9yeVRpdGxlOmZvclVSTDopLCAo
TlNTdHJpbmcgKil0aXRsZSwgKE5TU3RyaW5nICopdXJsKTsKKyAgICAgICAgLy8gRklYTUU6IHVz
ZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAgIENhbGxIaXN0b3J5RGVsZWdhdGUoaW1wbGVt
ZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMsIHZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnVwZGF0ZUhp
c3RvcnlUaXRsZTpmb3JVUkw6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIChOU1N0cmlu
ZyAqKXVybCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4
IDNjZDViMDgxMDQ4YjAwOTFlOGYyMmJmMWE1MzU1YTdkMzI5NTM0M2QuLjRkYWQyOTMzZjYzMjIy
YzkwMjNiMjZmMTI0NzI1YmE0MDBmYjJkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQg
c3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJD
bGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oOgorCiAyMDExLTAzLTI3ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4K
IAogICAgICAgICBGaXggYnVpbGQgd2FybmluZyBhYm91dCBJY29uRGF0YWJhc2VDbGllbnQuaCAo
d3JvbmcgcGF0aC4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCA2NGZkNWVjNmRmNTAxMzAyYjZhZGRhY2Y3
MDRjNDkzYTk2ZWU3MDJjLi4xODBmZDM4YmViYWQ3YzY0ZmU0OTUyNzdhNjFhMzkzMDQwM2Q5NmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAKQEAgLTQ0Nyw4ICs0NDcsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogfQogCiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CisgICAgLy8gRklYTUU6IHVzZSBk
aXJlY3Rpb24gb2YgdGl0bGUuCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAg
ICAgICAgcHJpbnRmKCIlcyAtIGRpZFJlY2VpdmVUaXRsZTogJXNcbiIsIHFQcmludGFibGUoZHJ0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpLCBxUHJpbnRhYmxlKFFT
dHJpbmcodGl0bGUpKSk7CiAKQEAgLTcwOSwxNiArNzEwLDE3IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiB7CiB9CiAKLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
S1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoVGl0bGUmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gVXNlZCBieSBB
cHBsZSBXZWJLaXQgdG8gdXBkYXRlIHRoZSB0aXRsZSBvZiBhbiBleGlzdGluZyBoaXN0b3J5IGl0
ZW0uCiAgICAgLy8gUXRXZWJLaXQgZG9lc24ndCBhY2NvbW9kYXRlIHRoaXMgb24gaGlzdG9yeSBp
dGVtcy4gSWYgaXQgZXZlciBkb2VzLAogICAgIC8vIGl0IHNob3VsZCBiZSBwcml2YXRlQnJvd3Np
bmctYXdhcmUuRm9yIG5vdywgd2UgYXJlIGp1c3QgcGFzc2luZwogICAgIC8vIGdsb2JhbGhpc3Rv
cnkgbGF5b3V0IHRlc3RzLgorICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgog
ICAgIGlmIChkdW1wSGlzdG9yeUNhbGxiYWNrcykgewogICAgICAgICBwcmludGYoIldlYlZpZXcg
dXBkYXRlZCB0aGUgdGl0bGUgZm9yIGhpc3RvcnkgVVJMIFwiJXNcIiB0byBcIiVzXCIuXG4iLAog
ICAgICAgICAgICAgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dCh1cmwpKSwKLSAgICAgICAgICAgIHFQcmludGFibGUoUVN0cmluZyh0aXRsZSkpKTsKKyAgICAg
ICAgICAgIHFQcmludGFibGUoUVN0cmluZyh0aXRsZS5zdHJpbmcoKSkpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmgKaW5kZXggM2VjNWYyMGRiODJmMGU2ODQ1MzhmYzU2NGI0YmYxM2RlZmQ3ZjgyYS4u
MzE0YTU1MGZmN2QzZWMzZTBiNGYzZTQ5NzdhNTE3ZjgwMjRjYzcxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKQEAg
LTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENs
b3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aFRp
dGxlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CkBAIC0x
ODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNv
dXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmLCBjb25zdCBLVVJM
Jik7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGNhNjFiZTMxMDE2OGMwNGM1ZGI0N2VjNzBkM2JhYmI5
YTdkZGFjMS4uYjYzZjgyNWFlYzA0MjZjYmE0ZTVhN2YzYTNhOGI4ZDFjYWIxMGFhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTI4ICBFdmFuIE1hcnRpbiAgPGV2
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBV
cGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0wMy0yNSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvbiBIb25leWN1dHQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMDMwNDFhNjRjMzJhNjdiZGZhM2I0Y2U2Yjc2ZDRjZjk5
OWZkZDU2Yi4uZmNjNjg5ZWY3OTA3ZDE1YTMzMTU0NjE3MzY4Yjk4NGZmN2Q5NTU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMzY2LDEyICszNjYsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIGZyYW1lTG9h
ZERlbGVnYXRlLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHdlYlZpZXcsIG1fd2Vi
RnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aFRpdGxlJiB0aXRsZSkKIHsK
ICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0
cjxJV2ViRnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRlOwogICAgIGlmIChTVUND
RUVERUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGUoJmZyYW1lTG9hZERlbGVnYXRlKSkpCi0g
ICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywgQlN0cmlu
Zyh0aXRsZSksIG1fd2ViRnJhbWUpOworICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBv
ZiB0aXRsZS4KKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJW
aWV3LCBCU3RyaW5nKHRpdGxlLnN0cmluZygpKSwgbV93ZWJGcmFtZSk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggNTdkZTJhZDA3OWEzZGM0MmQ0NjE4MDQ4ZGUzNDQ0YjQxNTE4ODU1YS4uNWMyNWRhZjJl
M2MxMDU4OTRlYjU5Y2Y5ODI5ZDNiODlhZGNkZGFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxl
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0
IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6
Q2FjaGVkRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJv
bUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmlu
ZGV4IGU1OTVmMjVkYzc4MzUxMWJkOTdiZWNlNDE0NDM3NTJlNGVhMDI1MDYuLmFjMDQwNWM5OWQx
YWNmNWNhNDJmZDU2NGY3ZjI0MmMxNzc3NDg3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxl
PiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJh
bWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaDoKKwogMjAxMS0wMy0yNyAgUGF0cmljayBHYW5zdGVy
ZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKaW5kZXggMmQ4ODEyZmEwZGExNjIyNmIyMGM2
Y2ZlMWVmODg3Yzc4Y2FmYjhiOS4uNzBkNzhhMDllY2UxODYyYTU2MjllOGYzZWJhMmVhYmNkMTYx
YTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCkBAIC0zNzEsNyArMzcxLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC00OTAsNyArNDkwLDcg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxh
Y2VtZW50KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKQordm9pZCBGcmFt
ZUxvYWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmLCBjb25z
dCBLVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmggYi9T
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0Uu
aAppbmRleCA0MDEyMjVkMjI5ZTg2OTNjOWU2YWQxYjlkNWU0ZjE1ZjdjMmI5ZmJlLi42MTUzOWM1
NTY3MzA4NzRlYzFjZGE4ZDAxMmNkY2Q3YmM3OTYyZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0Uu
aApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2ls
bENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0cmluZyYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0cmlu
Z1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZyYg
dGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUo
Y29uc3QgV1RGOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwog
CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd3gvQ2hhbmdlTG9nCmluZGV4IDk4MGZhOGEwMmIzZGE5MWE1NWFmNDQ1NDM0MTViNjMzZTIw
MTc2YWEuLjAxNGE5MGQ1NzE4YTJjMTQ4YjI3ZmJlMzY3ZmM0YTYwY2Q3MzA3MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0
ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldFRpdGxlKToKKyAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMS0wMy0yNSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5jcHAKaW5kZXggYWZjMjU1Y2NhY2Y5NGI3NGJkNDMyMjlkMzY2Y2NiYWNiMDE2ZjIwOC4u
OWQxYTJmMzBhNTBiYzFiMTM5ODYzMWRkNmU4NzI3MzY2YWM0MWU0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcApA
QCAtMjk1LDEyICsyOTUsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6
OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhU
aXRsZSYgdGl0bGUpCiB7CiAgICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICBtX3dlYlZpZXct
PlNldFBhZ2VUaXRsZSh0aXRsZSk7CisgICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9m
IHRpdGxlLgorICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZS5zdHJpbmcoKSk7
CiAgICAgICAgIHd4V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7
Ci0gICAgICAgIHdrRXZlbnQuU2V0VGl0bGUodGl0bGUpOworICAgICAgICB3a0V2ZW50LlNldFRp
dGxlKHRpdGxlLnN0cmluZygpKTsKICAgICAgICAgbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIo
KS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQpOwogICAgIH0KIH0KQEAgLTUyNSw3ICs1MjYsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQo
KQogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0VGl0bGUoY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldFRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKaW5kZXggMjU0Zjk1YzQyYzQyMjk0ZmNkZTI2OGU4
NjBkZWNmYmUxZmVjYzc2YS4uYjI4ZDM4OTdhYzliZDBhNWNlZTYyMTZkYzQxNTQ2M2YzNGNiMzg0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guaAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYg
dGl0bGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkBAIC0xNDUsNyArMTQ1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkSGlzdG9y
eUl0ZW1Gb3JGcmFnbWVudFNjcm9sbCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNl
bWVudCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgS1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTYzMWNjYzA0ZjZiOGEw
NDUzZTg1YTBiNjY1OTg4ZjY4Njk5MzkzOS4uNDgzMzA4MzAyYmViNGNlMTYzMzUxOGIxNmEyMzg5
NDRjNmE5ZDZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTI4ICBFdmFu
IE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEK
KworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0
VGl0bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKwogMjAxMS0wMy0yNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGZhM2NkY2VmN2I1NTIwMjQzMGU1OTdmMWVkNzQxNjcz
Y2IwYjAwNTguLmM2YjA2YzE1MzU2OGRlMDBlYWE1ZjViNTc3NjBmNGYyMDFiYjY4MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgdXJsLCB1bnJlYWNoYWJsZVVSTCwg
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFN0cmluZyYgdGl0bGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBXZWJQ
YWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTQx
MiwxMCArNDEyLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNl
ckRhdGE7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCi0gICAgd2ViUGFnZS0+
aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh3ZWJQ
YWdlLCB0aXRsZSwgbV9mcmFtZSwgdXNlckRhdGEpOworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0
aW9uIG9mIHRpdGxlLgorICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCku
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUod2ViUGFnZSwgdGl0bGUuc3RyaW5nKCksIG1fZnJhbWUs
IHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9m
cmFtZS0+ZnJhbWVJRCgpLCB0aXRsZSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIo
dXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHRpdGxlLnN0
cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkp
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpCkBAIC0xMDYxLDE0ICsxMDYyLDE1IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAg
cmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgZGF0YSk7CiB9CiAKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFn
ZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAorICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4
dDo6RGlkVXBkYXRlSGlzdG9yeVRpdGxlKHdlYlBhZ2UtPnBhZ2VJRCgpLAotICAgICAgICB0aXRs
ZSwgdXJsLnN0cmluZygpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpLCAwKTsKKyAgICAgICAgdGl0bGUu
c3RyaW5nKCksIHVybC5zdHJpbmcoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CiAKIFN0
cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDE5NDg1NDE5MjA3MzEwMmQwZTdkZTcyODJiYTc0
MDNkZjZhOTg1MWIuLjZjODNlOWRiMDdmZDI0YTRkZGE0MzYwNDRjOTM2Y2M5ODA0ZjI3ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNjUs
NyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3Vy
Y2VSZXBsYWNlbWVudCgpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGly
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIAogICAgIHZpcnR1YWwgU3RyaW5n
IHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87312</attachid>
            <date>2011-03-29 07:12:11 -0700</date>
            <delta_ts>2011-03-30 06:05:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50961-20110329071622.patch</filename>
            <type>text/plain</type>
            <size>64882</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIyNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYzQyZjZjNjgxZTcyNTU0
M2E4ZGRjNTg0ZWIxMmRiNDBiNDExYjI1Li4wNzRjYjI5NTlkZjA1ZDJmMWI3OGNlMTMzYWJlMjc1
MjFkZjAyYzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDMtMjggIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQor
CisgICAgICAgIEludHJvZHVjZSBhIG5ldyBTdHJpbmdXaXRoRGlyZWN0aW9uIG9iamVjdCB0aGF0
IGNhcnJpZXMgYSBTdHJpbmcgYWxvbmcKKyAgICAgICAgd2l0aCB0aGUgVGV4dERpcmVjdGlvbiBh
c3NvY2lhdGVkIHdpdGggdGhlIFN0cmluZy4gIFVzZSB0aGlzIG9iamVjdCBmb3IKKyAgICAgICAg
ZG9jdW1lbnQgdGl0bGVzIHVzZWQgd2l0aGluIFdlYkNvcmUsIGJlY2F1c2UgaW4gSFRNTCB0aGUg
ZGlyZWN0aW9uIG9mCisgICAgICAgIGEgdGl0bGUgY2FuIGJlIHNldCB3aXRoIHRoZSAnZGlyJyBh
dHRyaWJ1dGUuCisKKyAgICAgICAgUHV0IEZJWE1FcyBhdCB0aGUgV2ViS2l0IGxldmVsIHRvIGV4
cG9zZSB0aGUgbmV3IGRpcmVjdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICB0byBjbGllbnRzLgor
CisgICAgICAgIE5vIGJlaGF2aW9yYWwgY2hhbmdlIGludGVuZGVkLCBzbyBubyBuZXcgdGVzdHMu
ICBBIGZvbGxvdy11cCB3aWxsIGV4cG9zZQorICAgICAgICB0aGUgdGl0bGUgZGlyZWN0aW9uIGFu
ZCBob3BlZnVsbHkgY2FuIGJlIGFjY29tcGFuaWVkIGJ5IHRlc3RzIHRoYXQKKyAgICAgICAgdmVy
aWZ5IGl0IGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVRpdGxlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aXRsZSk6CisgICAg
ICAgICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
aXRsZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRp
dGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRs
ZUVsZW1lbnQ6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6dGV4
dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6c2V0VGl0bGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnRpdGxlKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRUaXRsZSk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0
b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbjo6U3Ry
aW5nV2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9u
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb246Om9w
ZXJhdG9yIT0pOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTEtMDMt
MjkgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDk1
Y2UxN2ZiOTEyZDk3OWRiYmI4MWRlOTQ2N2ZlNTQ4MDBkMzZmYS4uMmRlOTdiZjM1NDc1MGI0ZmFm
NjBkNjk4YzRkYzRkNTY4NDFmMTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTM0MSw3ICsz
NDEsNyBAQCBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMjJjYW5jZWxNYWluUmVzb3VyY2VM
b2FkRVJLTlNfMTNSZXNvdXJjZUVycm9yRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjI0
cmVtb3ZlUGx1Z0luU3RyZWFtTG9hZGVyRVBOU18xNFJlc291cmNlTG9hZGVyRQogX19aTjdXZWJD
b3JlMTREb2N1bWVudExvYWRlcjdyZXF1ZXN0RXYKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2Fk
ZXI4c2V0RnJhbWVFUE5TXzVGcmFtZUUKLV9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI4c2V0
VGl0bGVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOHNldFRp
dGxlRVJLTlNfMTlTdHJpbmdXaXRoRGlyZWN0aW9uRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExv
YWRlckMxRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFUktOU18xNFN1YnN0aXR1dGVEYXRhRQogX19a
TjdXZWJDb3JlMTREb2N1bWVudExvYWRlckMyRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFUktOU18x
NFN1YnN0aXR1dGVEYXRhRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlckQyRXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDhlOTU4NWJkYmIyNjFjM2Y5YTZiMTU1MzNjYTc3MTczZDI4
MzgxOWEuLmM3ZWUzNDM3ZDcyNDg2MTc5YWQ2NzE1YTFlYWVhOTdjM2M3ZDEzZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMzg5LDggKzM4OSw2IEBAIERvY3VtZW50OjpEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkK
ICAgICAsIG1fY29udGFpbnNWYWxpZGl0eVN0eWxlUnVsZXMoZmFsc2UpCiAgICAgLCBtX3VwZGF0
ZUZvY3VzQXBwZWFyYW5jZVJlc3RvcmVzU2VsZWN0aW9uKGZhbHNlKQogICAgICwgbV9pZ25vcmVE
ZXN0cnVjdGl2ZVdyaXRlQ291bnQoMCkKLSAgICAsIG1fdGl0bGUoIiIpCi0gICAgLCBtX3Jhd1Rp
dGxlKCIiKQogICAgICwgbV90aXRsZVNldEV4cGxpY2l0bHkoZmFsc2UpCiAgICAgLCBtX3VwZGF0
ZUZvY3VzQXBwZWFyYW5jZVRpbWVyKHRoaXMsICZEb2N1bWVudDo6dXBkYXRlRm9jdXNBcHBlYXJh
bmNlVGltZXJGaXJlZCkKICAgICAsIG1fc3RhcnRUaW1lKGN1cnJlbnRUaW1lKCkpCkBAIC0xMjcx
LDggKzEyNjksOSBAQCBFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNv
bnN0IFN0cmluZyYga2V5KSBjb25zdAogICogIDIuIFRyaW0gbGVhZGluZyBhbmQgdHJhaWxpbmcg
c3BhY2VzCiAgKiAgMy4gQ29sbGFwc2UgaW50ZXJuYWwgd2hpdGVzcGFjZS4KICAqLwotc3RhdGlj
IGlubGluZSBTdHJpbmcgY2Fub25pY2FsaXplZFRpdGxlKERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKK3N0YXRpYyBpbmxpbmUgU3RyaW5nV2l0aERpcmVjdGlvbiBjYW5v
bmljYWxpemVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJiB0aXRsZVdpdGhEaXJlY3Rpb24pCiB7CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSA9IHRp
dGxlV2l0aERpcmVjdGlvbi5zdHJpbmcoKTsKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9
IHRpdGxlLmNoYXJhY3RlcnMoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aXRsZS5sZW5ndGgo
KTsKICAgICB1bnNpZ25lZCBpOwpAQCAtMTI4OCw3ICsxMjg3LDcgQEAgc3RhdGljIGlubGluZSBT
dHJpbmcgY2Fub25pY2FsaXplZFRpdGxlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKICAgICB9CiAKICAgICBpZiAoaSA9PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiAi
IjsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1dpdGhEaXJlY3Rpb24oKTsKIAogICAgIC8vIFJlcGxh
Y2UgY29udHJvbCBjaGFyYWN0ZXJzIHdpdGggc3BhY2VzLCBhbmQgYmFja3NsYXNoZXMgd2l0aCBj
dXJyZW5jeSBzeW1ib2xzLCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZS4KICAgICBib29sIHByZXZp
b3VzQ2hhcldhc1dTID0gZmFsc2U7CkBAIC0xMzEzLDE0ICsxMzEyLDE0IEBAIHN0YXRpYyBpbmxp
bmUgU3RyaW5nIGNhbm9uaWNhbGl6ZWRUaXRsZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCiAgICAgfQogCiAgICAgaWYgKCFidWlsZGVySW5kZXggJiYgYnVmZmVyW2J1
aWxkZXJJbmRleF0gPT0gJyAnKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBT
dHJpbmdXaXRoRGlyZWN0aW9uKCk7CiAKICAgICBidWZmZXIuc2hyaW5rKGJ1aWxkZXJJbmRleCAr
IDEpOwogCiAgICAgLy8gUmVwbGFjZSB0aGUgYmFja3NsYXNoZXMgd2l0aCBjdXJyZW5jeSBzeW1i
b2xzIGlmIHRoZSBlbmNvZGluZyByZXF1aXJlcyBpdC4KICAgICBkb2N1bWVudC0+ZGlzcGxheUJ1
ZmZlck1vZGlmaWVkQnlFbmNvZGluZyhidWZmZXIuY2hhcmFjdGVycygpLCBidWZmZXIubGVuZ3Ro
KCkpOwogICAgIAotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CisgICAgcmV0dXJu
IFN0cmluZ1dpdGhEaXJlY3Rpb24oU3RyaW5nOjphZG9wdChidWZmZXIpLCB0aXRsZVdpdGhEaXJl
Y3Rpb24uZGlyZWN0aW9uKCkpOwogfQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZSgpCkBA
IC0xMzMwLDcgKzEzMjksMTMgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGl0bGUoKQogICAgICAg
ICBmLT5sb2FkZXIoKS0+c2V0VGl0bGUobV90aXRsZSk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIEVsZW1lbnQqIHRpdGxlRWxlbWVudCkKK3ZvaWQg
RG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgLy8gVGhpcyBp
cyBjYWxsZWQgYnkgSmF2YVNjcmlwdCBsaWtlIGRvY3VtZW50LnRpdGxlPSJmb28iLCBzbyB3ZSBq
dXN0IGFzc3VtZSBMVFIuCisgICAgc2V0VGl0bGUoU3RyaW5nV2l0aERpcmVjdGlvbih0aXRsZSwg
TFRSKSwgMCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlLCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpCiB7CiAgICAgaWYgKCF0aXRs
ZUVsZW1lbnQpIHsKICAgICAgICAgLy8gVGl0bGUgc2V0IGJ5IEphdmFTY3JpcHQgLS0gb3ZlcnJp
ZGVzIGFueSB0aXRsZSBlbGVtZW50cy4KQEAgLTEzNTksNyArMTM2NCw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIEVsZW1lbnQqIHRpdGxlRWxlbWVudCkK
ICAgICB1cGRhdGVUaXRsZSgpOwogCiAgICAgaWYgKG1fdGl0bGVTZXRFeHBsaWNpdGx5ICYmIG1f
dGl0bGVFbGVtZW50ICYmIG1fdGl0bGVFbGVtZW50LT5oYXNUYWdOYW1lKHRpdGxlVGFnKSAmJiAh
dGl0bGVFbGVtZW50KQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVGl0bGVFbGVtZW50Kj4obV90
aXRsZUVsZW1lbnQuZ2V0KCkpLT5zZXRUZXh0KG1fdGl0bGUpOworICAgICAgICBzdGF0aWNfY2Fz
dDxIVE1MVGl0bGVFbGVtZW50Kj4obV90aXRsZUVsZW1lbnQuZ2V0KCkpLT5zZXRUZXh0KG1fdGl0
bGUuc3RyaW5nKCkpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZW1vdmVUaXRsZShFbGVtZW50KiB0
aXRsZUVsZW1lbnQpCkBAIC0xMzc1LDEzICsxMzgwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92
ZVRpdGxlKEVsZW1lbnQqIHRpdGxlRWxlbWVudCkKICAgICAgICAgZm9yIChOb2RlKiBlID0gaGVh
ZEVsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgZTsgZSA9IGUtPm5leHRTaWJsaW5nKCkpCiAgICAgICAg
ICAgICBpZiAoZS0+aGFzVGFnTmFtZSh0aXRsZVRhZykpIHsKICAgICAgICAgICAgICAgICBIVE1M
VGl0bGVFbGVtZW50KiB0aXRsZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVGl0bGVFbGVtZW50
Kj4oZSk7Ci0gICAgICAgICAgICAgICAgc2V0VGl0bGUodGl0bGVFbGVtZW50LT50ZXh0KCksIHRp
dGxlRWxlbWVudCk7CisgICAgICAgICAgICAgICAgc2V0VGl0bGUodGl0bGVFbGVtZW50LT50ZXh0
V2l0aERpcmVjdGlvbigpLCB0aXRsZUVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghbV90aXRsZUVsZW1lbnQgJiYgIW1fcmF3
VGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcmF3VGl0bGUgPSAiIjsKKyAgICAgICAgbV9y
YXdUaXRsZSA9IFN0cmluZ1dpdGhEaXJlY3Rpb24oKTsKICAgICAgICAgdXBkYXRlVGl0bGUoKTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDczMmNlZmQ5ZTIyOTU5MGY4ZmI4OWU4
NjU4ODY0YmU5ZmY4ZjFmMWYuLmY0YWM4NmFiYjc1OTEwOWJjODUyYWNkODNiZTI5Yzk1ZWY1OGMx
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnRUaW1pbmcuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5j
bHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KQEAgLTgxMSw4ICs4MTIsMTEgQEAgcHVibGljOgogICAg
IC8vIFJldHVybnMgMCBpZiB0aGlzIGlzIHRoZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCiAgICAgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQoKSBjb25zdDsKIAotICAgIFN0cmluZyB0
aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KLSAgICB2b2lkIHNldFRpdGxlKGNvbnN0
IFN0cmluZyYsIEVsZW1lbnQqIHRpdGxlRWxlbWVudCA9IDApOworICAgIC8vIFVzZWQgYnkgRE9N
IGJpbmRpbmdzOyBubyBkaXJlY3Rpb24ga25vd24uCisgICAgU3RyaW5nIHRpdGxlKCkgY29uc3Qg
eyByZXR1cm4gbV90aXRsZS5zdHJpbmcoKTsgfQorICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3Ry
aW5nJik7CisKKyAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBF
bGVtZW50KiB0aXRsZUVsZW1lbnQpOwogICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0
bGVFbGVtZW50KTsKIAogICAgIFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpA
QCAtMTI5NCw4ICsxMjk4LDggQEAgcHJpdmF0ZToKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNpZ25vcmUtZGVzdHJ1Y3RpdmUtd3JpdGVz
LWNvdW50ZXIKICAgICB1bnNpZ25lZCBtX2lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudDsKIAot
ICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX3Jhd1RpdGxlOworICAgIFN0cmluZ1dp
dGhEaXJlY3Rpb24gbV90aXRsZTsKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fcmF3VGl0bGU7
CiAgICAgYm9vbCBtX3RpdGxlU2V0RXhwbGljaXRseTsKICAgICBSZWZQdHI8RWxlbWVudD4gbV90
aXRsZUVsZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCmlu
ZGV4IDMxYjFiMmJjZDJiOGU0ZTFhNjM4YTc1MDhiZDA3ZWI3ZmFhNzc1YjIuLjEwZjdhZGVmODNj
ZmNlMTE3ODJkMTk3YTdkNmVmZjU4MDViYzliMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGl0bGVFbGVtZW50LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2lu
Y2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzMsNyArMzQsNiBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBpbmxpbmUgSFRNTFRpdGxlRWxlbWVudDo6SFRN
TFRpdGxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1fdGl0
bGUoIiIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGl0bGVUYWcpKTsKIH0KQEAgLTU3LDcg
KzU3LDcgQEAgdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKIAog
dm9pZCBIVE1MVGl0bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50
RGVsdGEpCiB7Ci0gICAgbV90aXRsZSA9IHRleHQoKTsKKyAgICBtX3RpdGxlID0gdGV4dFdpdGhE
aXJlY3Rpb24oKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudCgpLT5z
ZXRUaXRsZShtX3RpdGxlLCB0aGlzKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERl
bHRhKTsKQEAgLTcxLDEwICs3MSwxNiBAQCBTdHJpbmcgSFRNTFRpdGxlRWxlbWVudDo6dGV4dCgp
IGNvbnN0CiAgICAgICAgIGlmIChuLT5pc1RleHROb2RlKCkpCiAgICAgICAgICAgICB2YWwgKz0g
c3RhdGljX2Nhc3Q8VGV4dCo+KG4pLT5kYXRhKCk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJu
IHZhbDsKIH0KIAorU3RyaW5nV2l0aERpcmVjdGlvbiBIVE1MVGl0bGVFbGVtZW50Ojp0ZXh0V2l0
aERpcmVjdGlvbigpCit7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gY29tcHV0ZWRTdHlsZSgp
OworICAgIHJldHVybiBTdHJpbmdXaXRoRGlyZWN0aW9uKHRleHQoKSwgc3R5bGUtPmRpcmVjdGlv
bigpKTsKK30KKwogdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAm
dmFsdWUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRpdGxlRWxlbWVudC5oCmluZGV4IDhiOTBmNTY0ZjNhYWYxNjEwMzE0NmFjMDU4MjJmNmQ5ZTZh
MWZhZTEuLjY5MjA5OTc4Mzk1YjA0NTNiMjQ1ZWM0MjM1MTA0MDI5ZmQ0MjQ0OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVmaW5l
IEhUTUxUaXRsZUVsZW1lbnRfaAogCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJTdHJpbmdXaXRoRGlyZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzMs
NiArMzQsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsKICAgICB2b2lkIHNl
dFRleHQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRleHRXaXRo
RGlyZWN0aW9uKCk7CisKIHByaXZhdGU6CiAgICAgSFRNTFRpdGxlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNDAsNyArNDMsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVD
aGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAw
KTsKIAotICAgIFN0cmluZyBtX3RpdGxlOworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV90aXRs
ZTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCmluZGV4IDEyMTA0NWI1Yjk5ZmZhMDc5YjYwNTlmN2UxOTdhZGQ0ZDNkYmMzZDIuLjE0
MzdhZGM0ZTZkYjU3NGJmNzA5MTljNGNiMDA1YmMyNDkyMjNkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKQogICAgIG1fc3RvcFJlY29yZGluZ1Jl
c3BvbnNlcyA9IHRydWU7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0
IFN0cmluZyYgdGl0bGUpCit2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDFm
ODgyNzJiMTkyMDA1ZDYyZTMyMDcxNzBiZjdjNWI4MjU3OTJiYTUuLmM2ZjBiYzViMjY5NDRmZWJm
OTY0YmZkZGMyNjU3Yjc2Njc1ZTM1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
KyNpbmNsdWRlICJTdHJpbmdXaXRoRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURh
dGEuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0x
MjEsNyArMTIyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHdhc09ubG9h
ZEhhbmRsZWQoKSB7IHJldHVybiBtX3dhc09ubG9hZEhhbmRsZWQ7IH0KICAgICAgICAgYm9vbCBp
c0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJpbWFyeUxvYWRD
b21wbGV0ZShib29sKTsKLSAgICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAg
ICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAg
IHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBv
dmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAK
QEAgLTE2OCw3ICsxNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgbGFzdENoZWNrZWRSZXF1ZXN0KCkgIHsgcmV0dXJuIG1fbGFzdENoZWNr
ZWRSZXF1ZXN0OyB9CiAKICAgICAgICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7Ci0g
ICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VUaXRsZTsg
fQorICAgICAgICBjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZVRpdGxlOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAgICAgICBLVVJMIHVybEZvckhpc3Rvcnko
KSBjb25zdDsKQEAgLTI5OCw3ICsyOTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OwogICAgICAgICBib29sIG1fd2FzT25sb2FkSGFuZGxl
ZDsKIAotICAgICAgICBTdHJpbmcgbV9wYWdlVGl0bGU7CisgICAgICAgIFN0cmluZ1dpdGhEaXJl
Y3Rpb24gbV9wYWdlVGl0bGU7CiAgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAg
ICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKaW5kZXggNTlmZDg5NzljYmVlZmNjZmU5MDVhZGU3ZDI2ZmZiMWRkYWU2ZTlhMy4uNmFj
Zjk5MjE5YmFjZTNjYzJkMDIzMzI5ZmQ2MWU3ZjAzZmIyNTVhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaApAQCAtMjY2LDcgKzI2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CkBAIC0zMzQsNyArMzM0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50
KCkgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKSB7IHJldHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRl
KHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShj
b25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJikgeyB9CiAKICAgICB2aXJ0
dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpIHsgcmV0dXJuICIiOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDM0N2E0MWVhYWUzYWI2MTdkYTMwMWNh
YzEyOTc1MjU3ZGI4NGE1OWQuLmYxMDIwZTFmMzljYTdlNDI5ODM1ZDZjMzA3NjE4NmM4NzQyYWZi
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNjEwLDcgKzYxMCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKCkKICAgICBkaXNwYXRjaERp
ZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CiAgICAgCiAgICAgaWYgKG1fZG9jdW1l
bnRMb2FkZXIpIHsKLSAgICAgICAgU3RyaW5nIHB0aXRsZSA9IG1fZG9jdW1lbnRMb2FkZXItPnRp
dGxlKCk7CisgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gcHRpdGxlID0gbV9kb2N1bWVudExv
YWRlci0+dGl0bGUoKTsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRpdGxlIGxldCB0aGUgV2Vi
VmlldyBrbm93IGFib3V0IGl0LgogICAgICAgICBpZiAoIXB0aXRsZS5pc051bGwoKSkKICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZShwdGl0bGUpOwpAQCAtMTky
NCw5ICsxOTI0LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkK
ICAgICAgICAgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAKICAgICAgICAgLy8gSWYgd2UgaGF2
ZSBhIHRpdGxlIGxldCB0aGUgV2ViVmlldyBrbm93IGFib3V0IGl0LiAKLSAgICAgICAgU3RyaW5n
IHRpdGxlID0gbV9kb2N1bWVudExvYWRlci0+dGl0bGUoKTsKLSAgICAgICAgaWYgKCF0aXRsZS5p
c051bGwoKSkgCi0gICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
dGl0bGUpOyAgICAgICAgIAorICAgICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gbV9k
b2N1bWVudExvYWRlci0+dGl0bGUoKTsKKyAgICAgICAgaWYgKCF0aXRsZS5pc051bGwoKSkKKyAg
ICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh0aXRsZSk7CiAKICAg
ICAgICAgY2hlY2tDb21wbGV0ZWQoKTsKICAgICB9IGVsc2UgeyAgICAgICAgCkBAIC0zMzc1LDcg
KzMzNzUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsCiB9CiAjZW5kaWYKIAotdm9pZCBGcmFt
ZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXI6
OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGRvY3Vt
ZW50TG9hZGVyKCktPnNldFRpdGxlKHRpdGxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKaW5kZXggMWZiOWUzYzQ1ZjQ5MGUyOTlmYWZjNTRmNGQzNWU2N2U0ZWIxMjk1Yy4uOTA2
MmYyMTVjZWQ4MTU5ZmRhODljODVhZjZlMTZkODFhYzVmNTEyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKQEAgLTc4LDYgKzc4LDcgQEAgY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFN0cmluZ1dpdGhEaXJlY3Rpb247CiBjbGFzcyBTdWJzdGl0dXRl
RGF0YTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKQEAgLTI4Miw3ICsyODMsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNhbmNlbEFuZENsZWFyKCk7CiAKLSAgICB2b2lkIHNldFRpdGxl
KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYpOwogICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQg
Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IDdkNjQ5MTJiZGI0MTNhZTk1OWFiMGU4ZjVhY2NhYWM2NjJmZmY5OTMu
LmQ1ZDQ5ZWM5YzcwOGE5YzdlODk3NzNiMWQ2Mzg3YWJlZmI3ZWYyZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC04NCw2ICs4NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogICAgIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyAgICBjbGFzcyBTdHJpbmdXaXRo
RGlyZWN0aW9uOwogICAgIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogICAgIGNsYXNzIFdpZGdldDsK
IApAQCAtMTM5LDcgKzE0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlSWNvbigpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBSZXNvdXJjZUVycm9yJikgPSAwOwpAQCAtMjI3LDcgKzIyOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1l
bnQoKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IEtVUkwmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRs
ZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpID0gMDsKIAogICAgICAg
ICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpID0gMDsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCBiOGJlY2U5
Yjc1MGM1Mzg2ZDhhM2Q4ZTFkMjhjOGQxZWQ3YjMxYmI5Li5jMWM1NDE0MzJhYWRkOWY1YmRiYmFk
NjI5YjBmOGEwNDZiNWFhOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24oKQogewogI2lmICFMT0dfRElTQUJMRUQKICAg
ICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhI
aXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGJhY2svZm9yd2Fy
ZCBuYXZpZ2F0aW9uIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2Vi
Q29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9u
IGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxl
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIAogICAgIC8vIE11c3QgZ3JhYiB0
aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gYmVmb3JlIGRpc3R1cmJpbmcgaXQKQEAgLTI4MSw3
ICsyODEsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWxvYWQoKQogewog
I2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhp
c3RvcnkgZm9yIHJlbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coSGlzdG9yeSwg
IldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWxvYWQgaW4gZnJhbWUgJXMi
LCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCiAgICAgaWYgKG1fY3VycmVudEl0ZW0pIHsKQEAgLTM0
Myw3ICszNDMsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdp
dGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAo
bV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5
LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlZGlyZWN0IGxvYWQgaW4g
ZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBk
YXRpbmcgSGlzdG9yeSBmb3IgcmVkaXJlY3QgbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogI2VuZGlmCiAgICAgCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGlu
Z3MoKTsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVG
b3JDbGllbnRSZWRpcmVjdCgpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1l
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJD
b3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY2xpZW50IHJlZGlyZWN0IGluIGZyYW1l
ICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5n
IEhpc3RvcnkgZm9yIGNsaWVudCByZWRpcmVjdCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
I2VuZGlmCiAKICAgICAvLyBDbGVhciBvdXQgZm9ybSBkYXRhIHNvIHdlIGRvbid0IHRyeSB0byBy
ZXN0b3JlIGl0IGludG8gdGhlIGluY29taW5nIHBhZ2UuICBNdXN0IGhhcHBlbiBhZnRlcgpAQCAt
NDEwLDcgKzQxMCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgp
CiAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7CiAjaWYg
IUxPR19ESVNBQkxFRAogICAgIGlmIChmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAg
ICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3Ig
Y29tbWl0IGluIGZyYW1lICVzIiwgZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnRpdGxl
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6
IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGNvbW1pdCBpbiBmcmFtZSAlcyIsIGZyYW1lTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlm
CiAgICAgRnJhbWVMb2FkVHlwZSB0eXBlID0gZnJhbWVMb2FkZXItPmxvYWRUeXBlKCk7CiAgICAg
aWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZSh0eXBlKQpAQCAtNTI2LDEwICs1MjYsMTEgQEAgdm9p
ZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAg
ICAgbV9jdXJyZW50SXRlbSA9IGl0ZW07CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNl
dEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUpCiB7CiAgICAgaWYgKG1fY3VycmVudEl0ZW0pCi0gICAgICAgIG1fY3VycmVudEl0ZW0tPnNl
dFRpdGxlKHRpdGxlKTsKKyAgICAgICAgLy8gRklYTUU6IG1ha2UgdXNlIG9mIHRpdGxlLmRpcmVj
dGlvbigpIGFzIHdlbGwuCisgICAgICAgIG1fY3VycmVudEl0ZW0tPnNldFRpdGxlKHRpdGxlLnN0
cmluZygpKTsKIH0KIAogYm9vbCBIaXN0b3J5Q29udHJvbGxlcjo6Y3VycmVudEl0ZW1TaG91bGRC
ZVJlcGxhY2VkKCkgY29uc3QKQEAgLTU3NiwxMiArNTc3LDEzIEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIAogICAgIEZyYW1l
KiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CiAgICAgU3RyaW5nIHBh
cmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpIDog
IiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7CisgICAgU3Ry
aW5nV2l0aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogCiAgICAg
aXRlbS0+c2V0VVJMKHVybCk7CiAgICAgaXRlbS0+c2V0VGFyZ2V0KG1fZnJhbWUtPnRyZWUoKS0+
dW5pcXVlTmFtZSgpKTsKICAgICBpdGVtLT5zZXRQYXJlbnQocGFyZW50KTsKLSAgICBpdGVtLT5z
ZXRUaXRsZSh0aXRsZSk7CisgICAgLy8gRklYTUU6IHNob3VsZCBzdG9yZSB0aXRsZSBkaXJlY3Rp
b25hbGl0eSBpbiBoaXN0b3J5IGFzIHdlbGwuCisgICAgaXRlbS0+c2V0VGl0bGUodGl0bGUuc3Ry
aW5nKCkpOwogICAgIGl0ZW0tPnNldE9yaWdpbmFsVVJMU3RyaW5nKG9yaWdpbmFsVVJMLnN0cmlu
ZygpKTsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpIHx8IGRvY3VtZW50TG9h
ZGVyLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAppbmRleCA1OWYxMWEyNWM5MzNkM2Q3Yzk3MjUxYjkw
YTkzYjMyZDU2Yjk5YWQ0Li4xNWUxMmMwOTlhM2VmMDcyNzU0ZTY3ZTZjZDU2N2Y2YmUwOGJhNWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaApAQCAtNDAsNiAr
NDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpc3RvcnlJ
dGVtOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU3RyaW5nV2l0aERpcmVj
dGlvbjsKIAogY2xhc3MgSGlzdG9yeUNvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEhpc3RvcnlDb250cm9sbGVyKTsKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAg
SGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50SXRlbS5n
ZXQoKTsgfQogICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qKTsKLSAgICB2b2lk
IHNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRDdXJyZW50
SXRlbVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICBib29sIGN1cnJlbnRJ
dGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0OwogCiAgICAgSGlzdG9yeUl0ZW0qIHByZXZpb3Vz
SXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXNJdGVtLmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVhMzRhYjZiZmY4Y2Q5MTA0ZTM1MWM1YzE3MTI5YzNmZmEyYTJlYzQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24u
aApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJpbmdXaXRoRGlyZWN0aW9uX2gKKyNkZWZpbmUg
U3RyaW5nV2l0aERpcmVjdGlvbl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBJbiBz
b21lIGNpcmN1bXN0YW5jZXMgd2Ugd2FudCB0byBzdG9yZSBhIFN0cmluZyBhbG9uZyB3aXRoIHRo
ZSBUZXh0RGlyZWN0aW9uCisvLyBvZiB0aGUgU3RyaW5nIGFzIGxlYXJuZWQgZnJvbSB0aGUgY29u
dGV4dCBvZiB0aGUgU3RyaW5nLiBGb3IgZXhhbXBsZSwKKy8vIGNvbnNpZGVyIHN0b3JpbmcgdGhl
IHRpdGxlIGRlcml2ZWQgZnJvbSA8dGl0bGUgZGlyPSdydGwnPnNvbWUgdGl0bGU8L3RpdGxlPgor
Ly8gaW4gdGhlIGhpc3RvcnkuCisvLworLy8gTm90ZSB0aGF0IGlzIGV4cGxpY2l0bHkgKm5vdCog
dGhlIGRpcmVjdGlvbiBvZiB0aGUgc3RyaW5nIGFzIGxlYXJuZWQKKy8vIGZyb20gdGhlIGNoYXJh
Y3RlcnMgb2YgdGhlIHN0cmluZzsgaXQncyBleHRyYSBtZXRhZGF0YSB3ZSBoYXZlIGV4dGVybmFs
CisvLyB0byB0aGUgc3RyaW5nLgorY2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbiB7CitwdWJsaWM6
CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbigpIHt9CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbihj
b25zdCBTdHJpbmcmIHN0cmluZywgVGV4dERpcmVjdGlvbiBkaXIpIDogbV9zdHJpbmcoc3RyaW5n
KSwgbV9kaXJlY3Rpb24oZGlyKSB7fQorCisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBv
dGhlci5tX3N0cmluZyA9PSBtX3N0cmluZyAmJiBvdGhlci5tX2RpcmVjdGlvbiA9PSBtX2RpcmVj
dGlvbjsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCgqdGhpcykgPT0gb3RoZXIpOyB9CisKK3ByaXZh
dGU6CisgICAgU3RyaW5nIG1fc3RyaW5nOworICAgIFRleHREaXJlY3Rpb24gbV9kaXJlY3Rpb247
Cit9OworCit9CisKKyNlbmRpZiAvLyBTdHJpbmdXaXRoRGlyZWN0aW9uX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAKaW5kZXggNjI4MWYxMGIxNGZkMTRmNTg3YTllYzI5MTJj
OGVlOTIzYzczMTk5OC4uNWFmMDg4YTViNTczMTkyN2FmZDIzMWFmM2JlM2Q4NGFjNjMzMjg2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAKQEAgLTQwLDcgKzQwLDggQEAg
dm9pZCBTVkdUaXRsZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBTVkdT
dHlsZWRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIGlmIChmaXJzdENoaWxk
KCkpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxlKHRleHRDb250ZW50KCksIHRoaXMpOwor
ICAgICAgICAvLyBGSVhNRTogZG9lcyBTVkcgaGF2ZSBhIGNvbmNlcHQgb2YgdGV4dCBkaXJlY3Rp
b24/CisgICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxlKFN0cmluZ1dpdGhEaXJlY3Rpb24odGV4
dENvbnRlbnQoKSwgTFRSKSwgdGhpcyk7CiB9CiAKIHZvaWQgU1ZHVGl0bGVFbGVtZW50OjpyZW1v
dmVkRnJvbURvY3VtZW50KCkKQEAgLTUzLDcgKzU0LDggQEAgdm9pZCBTVkdUaXRsZUVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LAogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJl
Zm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAgICAgaWYgKGluRG9j
dW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0bGUodGV4dENvbnRlbnQoKSwgdGhp
cyk7CisgICAgICAgIC8vIEZJWE1FOiBkb2VzIFNWRyBoYXZlIGEgY29uY2VwdCBvZiB0ZXh0IGRp
cmVjdGlvbj8KKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0bGUoU3RyaW5nV2l0aERpcmVjdGlv
bih0ZXh0Q29udGVudCgpLCBMVFIpLCB0aGlzKTsKIH0KIAogQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIFNWR1RpdGxlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmOWQyNTNiMTRjOGJiNjBhOTYxZGQ1ZjVkM2UwNmNi
ZTlkMTdjNDA2Li42NjA4ZTFhMDZkMzQwOGFkM2U5NjIzZDExYmZjY2MwODliNzU2NjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTAzLTI4ICBFdmFu
IE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEK
KworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKwor
ICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAg
ICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZXRUaXRsZSk6CisgICAgICAgICog
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJEYXRhU291cmNl
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFTb3VyY2VJbXBsOjpwYWdlVGl0bGUp
OgorCiAyMDExLTAzLTI5ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA2NDdhNzBjMjg1
YjY3Y2UwZDU0YTNhZTA4ODE0OThlMTE0MzZkNjUzLi5jZDc2NDkxMDlkMWI1ZTQwNmU3MjU0Njdk
NjYzZTgzMGY5YWU4MzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTczNCwxMCArNzM0LDExIEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAg
ICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQog
eworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIGlmIChtX3dlYkZy
YW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVU
aXRsZShtX3dlYkZyYW1lLCB0aXRsZSk7CisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5k
aWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUuc3RyaW5nKCkpOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCkBAIC0xMzI4LDcg
KzEzMjksNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBGcmFtZUxvYWRlckNsaWVudElt
cGw6OmNyZWF0ZURvY3VtZW50TG9hZGVyKAogICAgIHJldHVybiBkcy5yZWxlYXNlKCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAg
ICAvLyBGSVhNRTogaW5mb3JtIGNvbnN1bWVyIG9mIGNoYW5nZXMgdG8gdGhlIHRpdGxlLgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aAppbmRleCBmMTljMjZjNTM5YTFjMWI1YTI2NTdiN2FhMjU4OTVjMWIyZjUyMTI2Li4yYjFjMjZm
NWRkYmNjY2FkZDI2ZWE0OGFmOGQ4YWRmNDViMmJhNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMTA0LDcgKzEwNCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSk7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKAogICAgICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0
bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
ICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7
CiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6
OkNhY2hlZEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZy
b21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCmluZGV4IDEzNjZhODA5NGE1MDYz
OTdlMDk0ODM0MDgwMjY1ZGJjYTdiZTY2MWEuLjMxNzBhZmZiZTRiNGIxZjg0MGM2NzU5MGU5ZDZi
YWFkNTc4NTBlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRh
dGFTb3VyY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRh
U291cmNlSW1wbC5jcHAKQEAgLTgyLDcgKzgyLDggQEAgdm9pZCBXZWJEYXRhU291cmNlSW1wbDo6
cmVkaXJlY3RDaGFpbihXZWJWZWN0b3I8V2ViVVJMPiYgcmVzdWx0KSBjb25zdAogCiBXZWJTdHJp
bmcgV2ViRGF0YVNvdXJjZUltcGw6OnBhZ2VUaXRsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRp
dGxlKCk7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUgYXMgd2VsbC4KKyAg
ICByZXR1cm4gdGl0bGUoKS5zdHJpbmcoKTsKIH0KIAogV2ViTmF2aWdhdGlvblR5cGUgV2ViRGF0
YVNvdXJjZUltcGw6Om5hdmlnYXRpb25UeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAz
NWRhMDljMzQ5NmNlMzcwZWVmYjllYTI5NzdhZWYzMjQ2MGQwMDhlLi42YmE0ZDcwYjU1OWVmYWVl
MWUzY2YyNGE2MTg4NWYzYzMxYWJhZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQg
c3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJD
bGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuaDoKKwogMjAxMS0wMy0yOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHAKaW5kZXggZmEzNGFjOWMwZDdkNjA4MTk4MjU4NzMzNDEzZjI1YWIyYTkwYmEyNi4u
OTZiODU5YmZlOTU2MWU3Yjg5Mjc4MTQ2OWU3MWEzYTgyZmNkNDkzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcApAQCAtNTc2LDkgKzU3NiwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgZXdrX3ZpZXdfbG9hZF9wcm92
aXNpb25hbChtX3ZpZXcpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYgdGl0bGUpCiB7Ci0gICAgQ1N0cmluZyBjcyA9IHRpdGxlLnV0ZjgoKTsKKyAgICAvLyBGSVhN
RTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBDU3RyaW5nIGNzID0gdGl0bGUuc3RyaW5n
KCkudXRmOCgpOwogICAgIGV3a19mcmFtZV90aXRsZV9zZXQobV9mcmFtZSwgY3MuZGF0YSgpKTsK
IAogICAgIGlmIChld2tfdmlld19mcmFtZV9tYWluX2dldChtX3ZpZXcpICE9IG1fZnJhbWUpCkBA
IC03MDksNyArNzEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6cHJlcGFyZUZvckRh
dGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
S1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBubyBu
ZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaAppbmRleCA1ZWE0ZThjYWM5N2MwYmE5ZThlZTY5YzkyMjc3MzljZTE3ODFh
NDBjLi5iZDA3YTMwMzRiNjE4NmIwNGFiMDQ5ZTNkZjEyMGJiZDVmOWM0NWVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1
YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENs
b3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTkz
LDcgKzE5Myw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9h
ZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNl
bWVudCgpOwogCiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNy
ZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1
dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAwNWMxNWQ0NzRmNDc4
ZTVkZDAzNmE3ZTRhN2IwN2E2NjQxOTM3NWFhLi5mZGJhNTgwMThiNGYwNmFhNjA3ZDc4MTBjNjdh
ZTcwMTYzNjI3ZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMt
MjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIg
YXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJm
YWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTEt
MDMtMjkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGRpc2FibGUgYW4gYXNzZXJ0IGluIHRlc3R3ZWJ2aWV3IGR1ZSB0bwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCmluZGV4IGNhOGJmOWEwODlhZDczODNjOGQ0NTMyN2E4N2Q4NTM0Yjg1ZGUw
OTcuLjVjNTk0ZTg1NmJiMGFmNGQxZjJjZGVlMDM1NjUyNzQyZGZjMWI4MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5jcHAKQEAgLTk0OSwxNCArOTQ5LDE1IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIG5vdGlmeVN0YXR1cyhtX2ZyYW1l
LCBXRUJLSVRfTE9BRF9QUk9WSVNJT05BTCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAobV9sb2FkaW5nRXJyb3JQYWdlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHByaXYgPSBtX2ZyYW1lLT5wcml2
OwogICAgIGdfZnJlZShwcml2LT50aXRsZSk7Ci0gICAgcHJpdi0+dGl0bGUgPSBnX3N0cmR1cCh0
aXRsZS51dGY4KCkuZGF0YSgpKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRs
ZS4KKyAgICBwcml2LT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fZnJhbWUsICJ0aXRsZS1jaGFuZ2Vk
IiwgcHJpdi0+dGl0bGUpOwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX2ZyYW1lKSwg
InRpdGxlIik7CkBAIC0xMTE5LDExICsxMTIwLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAg
V2ViS2l0V2ViRnJhbWVQcml2YXRlKiBmcmFtZURhdGEgPSBtX2ZyYW1lLT5wcml2OwogICAgIGdf
ZnJlZShmcmFtZURhdGEtPnRpdGxlKTsKLSAgICBmcmFtZURhdGEtPnRpdGxlID0gZ19zdHJkdXAo
dGl0bGUudXRmOCgpLmRhdGEoKSk7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0
bGUuCisgICAgZnJhbWVEYXRhLT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBiN2VhZDdh
ZjVlYmI5ZTY3NjVjOTQ2YzM1NWFjOTllODljMWU5NTQxLi45N2ViMGZmNjg2YTM2YzUxOTFhZjRl
MDJhNmE3ZGY4ZjQ3YWQ2Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTgxLDcgKzgxLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcm
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE3NCw3ICsxNzQsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRh
U291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwm
KTsKIAogICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3Jl
OjpLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggNzc1N2ZlNzkyMzE2NWRmYzhjYjFj
ZDRkZTRlOTUzODNlYjA5ZjlkZi4uMTE4NWMyNmJjZmFjZjVhZmI0YzI5ZTA1NTM5NTRmYTZjMzMx
MWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMy0yOCAg
RXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRy
aWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUw
OTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2Uu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhh
aWt1Lmg6CisKIDIwMTEtMDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5j
cHAKaW5kZXggMjRhOThkNTYzNDI4NmU3YjQ0OWMxMTBiM2UxZGI1M2JhODVlMGQwYi4uYzA0Y2I3
ZDRjNmYxYzhiNmE4ZTQyYmUwNTJmZDk0MjIxMTEzNDQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFp
a3UuY3BwCkBAIC0yMzcsMTMgKzIzNywxMyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIH0KIH0KIAotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcm
IHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmIHRpdGxlKQogewogICAgIGlmIChtX3dlYlZpZXcp
IHsKLSAgICAgICAgbV93ZWJWaWV3LT5TZXRQYWdlVGl0bGUodGl0bGUpOwotCisgICAgICAgIC8v
IEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBtX3dlYlZpZXctPlNldFBh
Z2VUaXRsZSh0aXRsZS5tX3N0cmluZygpKTsKICAgICAgICAgQk1lc3NhZ2UgbWVzc2FnZShUSVRM
RV9DSEFOR0VEKTsKLSAgICAgICAgbWVzc2FnZS5BZGRTdHJpbmcoInRpdGxlIiwgdGl0bGUpOwor
ICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidGl0bGUiLCB0aXRsZS5zdHJpbmcoKSk7CiAgICAg
ICAgIG1fbWVzc2VuZ2VyLT5TZW5kTWVzc2FnZSgmbWVzc2FnZSk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEhhaWt1LmggYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50SGFpa3UuaAppbmRleCBkYmQzMDg0Y2E0Y2I3ZjI5YWViNzZkMjQ0ZmRkZDkzMGU5ODk3
MGIyLi5mNTc2NTQ1Yzg2YTZiYTQzN2ExZDY2ZDdjZmVmZTI3NDVmZGI3NjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFp
a3UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50SGFpa3UuaApAQCAtMTAyLDcgKzEwMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpAQCAtMTQzLDcgKzE0
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZEhpc3Rv
cnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFj
ZW1lbnQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJik7CiAKICAgICAgICAgdmlydHVhbCBTdHJp
bmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDBkNTEwMmMw
OWY3YjY3MDExM2U3ZGExZTMxNzViNGY1NWE2MDlhODEuLjU2YjdkOTJjMTRlZWU1YWRjOTUxM2Fm
YmQxYTQzMGI2ZDkyNTYxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
MS0wMy0yOCAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0
IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBp
bnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToK
KyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisKIDIwMTEtMDMtMjgg
IEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZlNTY2NGRkNjA1MTZjMTE4NmU4NTVk
YjIzYjM3ZTUyNGQzODM2Ni4uZDU5MTdiOGY1NGMwNzAzOTMwYjNiMjdiMTdkZWE0NWRmNzgyMGZk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFdURjo6U3RyaW5nJiB0aXRsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTk2LDcgKzE5Niw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFj
ZW1lbnQoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+
IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAg
dmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpG
cmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIs
IGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQppbmRleCA5MmMyYjAzYjFjOWNmMGM4YmJlZjExMTE3YTAwOGZkYjkz
NjNlMGMwLi5lNGQ4ZmExMDA5NzM5YjViNmI0OGNhNmEwNWIxODY4Y2EwZmRhYjQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQpAQCAtNjI0LDEyICs2MjQsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIENhbGxGcmFtZUxv
YWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdl
YlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7ICAgCiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVs
ZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CiAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jKQotICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdh
dGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMsIHdlYlZpZXcs
IEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTopLCAoTlNTdHJpbmcg
Kil0aXRsZSwgbV93ZWJGcmFtZS5nZXQoKSk7CisgICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0
aW9uIG9mIHRpdGxlLgorICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRp
b25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJW
aWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTopLCAoTlNTdHJpbmcgKil0aXRsZS5zdHJpbmco
KSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpAQCAtMTE3OSw3ICsxMTgwLDcgQEAgUGFzc1JlZlB0cjxE
b2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVy
KGNvbnN0IFJlc28KICAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VS
TCYgdXJsKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBXZWJWaWV3KiB2
aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICAKQEAgLTExODgsNyArMTE4
OSw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKICAgICAgICAgaWYgKCFpbXBsZW1lbnRhdGlvbnMtPnNl
dFRpdGxlRnVuYykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAgICAgICBD
YWxsSGlzdG9yeURlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+c2V0VGl0bGVGdW5jLCB2aWV3LCBA
c2VsZWN0b3Iod2ViVmlldzp1cGRhdGVIaXN0b3J5VGl0bGU6Zm9yVVJMOiksIChOU1N0cmluZyAq
KXRpdGxlLCAoTlNTdHJpbmcgKil1cmwpOworICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlv
biBvZiB0aXRsZS4KKyAgICAgICAgQ2FsbEhpc3RvcnlEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMt
PnNldFRpdGxlRnVuYywgdmlldywgQHNlbGVjdG9yKHdlYlZpZXc6dXBkYXRlSGlzdG9yeVRpdGxl
OmZvclVSTDopLCAoTlNTdHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgKE5TU3RyaW5nICopdXJsKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMzA0YTZjOWFi
Yzg1NDZiNzIwMWJkYmE4ZThkMmE1OGNhYjNkY2Q5Mi4uOGM0Mjk0MTk5MTE5MzljYjdjYWUwMGE5
Nzg2ODNmMTU3NTVhNDZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0w
My0yOCAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRp
ciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRl
cmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldFRp
dGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisK
IDIwMTEtMDMtMjkgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIGJ1aWxkLXdlYmtpdCAtbWluaW1h
bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwCmluZGV4IGQzMTg0OTRiYWVjYzMyZTgwODE5ZjlmZjY0MmM5NmVmOGJm
Y2I3Y2IuLjkzMGVhMGJjNDJhMWJjYzk2NWQxYTMyZjlmMTBiNmZlNjMyMjgwY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcApAQCAtNDQ3LDggKzQ0Nyw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBv
ZiB0aXRsZS4KICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBwcmlu
dGYoIiVzIC0gZGlkUmVjZWl2ZVRpdGxlOiAlc1xuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSksIHFQcmludGFibGUoUVN0cmluZyh0aXRs
ZSkpKTsKIApAQCAtNzA5LDE2ICs3MTAsMTcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpw
cmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwp
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhUaXRs
ZSYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBVc2VkIGJ5IEFwcGxlIFdlYktp
dCB0byB1cGRhdGUgdGhlIHRpdGxlIG9mIGFuIGV4aXN0aW5nIGhpc3RvcnkgaXRlbS4KICAgICAv
LyBRdFdlYktpdCBkb2Vzbid0IGFjY29tb2RhdGUgdGhpcyBvbiBoaXN0b3J5IGl0ZW1zLiBJZiBp
dCBldmVyIGRvZXMsCiAgICAgLy8gaXQgc2hvdWxkIGJlIHByaXZhdGVCcm93c2luZy1hd2FyZS5G
b3Igbm93LCB3ZSBhcmUganVzdCBwYXNzaW5nCiAgICAgLy8gZ2xvYmFsaGlzdG9yeSBsYXlvdXQg
dGVzdHMuCisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCiAgICAgaWYgKGR1
bXBIaXN0b3J5Q2FsbGJhY2tzKSB7CiAgICAgICAgIHByaW50ZigiV2ViVmlldyB1cGRhdGVkIHRo
ZSB0aXRsZSBmb3IgaGlzdG9yeSBVUkwgXCIlc1wiIHRvIFwiJXNcIi5cbiIsCiAgICAgICAgICAg
ICBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybCkpLAot
ICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nKHRpdGxlKSkpOworICAgICAgICAgICAgcVBy
aW50YWJsZShRU3RyaW5nKHRpdGxlLnN0cmluZygpKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaApp
bmRleCAzZWM1ZjIwZGI4MmYwZTY4NDUzOGZjNTY0YjRiZjEzZGVmZDdmODJhLi4zMTRhNTUwZmY3
ZDNlYzNlMGI0ZjNlNDk3N2E1MTdmODAyNGNjNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaApAQCAtMTEwLDcgKzEx
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKQEAgLTE4Niw3ICsxODYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFj
ZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhUaXRsZSYsIGNvbnN0IEtVUkwmKTsKIAogICAg
IHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCA1Nzg3YTg3YzM3N2EzODFiMDQ5ODk0OGE0YzQ4ZmZlOTY4MDA3ZjJlLi5m
NGVhZTVmOTJhMjkyZTM1MjAyZDIxMGY5ZDI0NjM2NmY4OTNjYWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
PHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBu
ZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTAzLTI4ICBQYXRyaWNrIEdhbnN0ZXJlciAg
PHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggMDMwNDFhNjRjMzJhNjdiZGZhM2I0Y2U2Yjc2ZDRjZjk5OWZk
ZDU2Yi4uZmNjNjg5ZWY3OTA3ZDE1YTMzMTU0NjE3MzY4Yjk4NGZmN2Q5NTU0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMzY2LDEyICszNjYsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIGZyYW1lTG9hZERl
bGVnYXRlLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHdlYlZpZXcsIG1fd2ViRnJh
bWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aFRpdGxlJiB0aXRsZSkKIHsKICAg
ICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJ
V2ViRnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRlOwogICAgIGlmIChTVUNDRUVE
RUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGUoJmZyYW1lTG9hZERlbGVnYXRlKSkpCi0gICAg
ICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywgQlN0cmluZyh0
aXRsZSksIG1fd2ViRnJhbWUpOworICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0
aXRsZS4KKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3
LCBCU3RyaW5nKHRpdGxlLnN0cmluZygpKSwgbV93ZWJGcmFtZSk7CiB9CiAKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggNzZmYmUxZjhlODUzODA5NzEwNzlkNzBlMmM1ZTlkNzBmZTA4MGMzNS4uMThmMTQxZDJkODc2
MTA0OTk1YmRjYjk5ODA0YmVjMTg1YTdkMjZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2Fj
aGVkRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNh
Y2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4
IGU1OTVmMjVkYzc4MzUxMWJkOTdiZWNlNDE0NDM3NTJlNGVhMDI1MDYuLmFjMDQwNWM5OWQxYWNm
NWNhNDJmZDU2NGY3ZjI0MmMxNzc3NDg3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBz
aG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVM
b2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnRXaW5DRTo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V2luQ0UuaDoKKwogMjAxMS0wMy0yNyAgUGF0cmljayBHYW5zdGVyZXIg
IDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5n
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKaW5kZXggMmQ4ODEyZmEwZGExNjIyNmIyMGM2Y2Zl
MWVmODg3Yzc4Y2FmYjhiOS4uNzBkNzhhMDllY2UxODYyYTU2MjllOGYzZWJhMmVhYmNkMTYxYTEy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6
OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC00OTAsNyArNDkwLDcgQEAg
dm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2Vt
ZW50KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmLCBjb25zdCBL
VVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaApp
bmRleCA0MDEyMjVkMjI5ZTg2OTNjOWU2YWQxYjlkNWU0ZjE1ZjdjMmI5ZmJlLi42MTUzOWM1NTY3
MzA4NzRlYzFjZGE4ZDAxMmNkY2Q3YmM3OTYyZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaApA
QCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENs
b3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0cmluZyYpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0cmluZ1dp
dGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0
bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29u
c3QgV1RGOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCiAg
ICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCmluZGV4IDk4MGZhOGEwMmIzZGE5MWE1NWFmNDQ1NDM0MTViNjMzZTIwMTc2
YWEuLjAxNGE5MGQ1NzE4YTJjMTQ4YjI3ZmJlMzY3ZmM0YTYwY2Q3MzA3MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0
byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldFRpdGxlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMS0wMy0yNSAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5jcHAKaW5kZXggYWZjMjU1Y2NhY2Y5NGI3NGJkNDMyMjlkMzY2Y2NiYWNiMDE2ZjIwOC4uOWQx
YTJmMzBhNTBiYzFiMTM5ODYzMWRkNmU4NzI3MzY2YWM0MWU0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcApAQCAt
Mjk1LDEyICsyOTUsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhUaXRs
ZSYgdGl0bGUpCiB7CiAgICAgaWYgKG1fd2ViVmlldykgewotICAgICAgICBtX3dlYlZpZXctPlNl
dFBhZ2VUaXRsZSh0aXRsZSk7CisgICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRp
dGxlLgorICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZS5zdHJpbmcoKSk7CiAg
ICAgICAgIHd4V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7Ci0g
ICAgICAgIHdrRXZlbnQuU2V0VGl0bGUodGl0bGUpOworICAgICAgICB3a0V2ZW50LlNldFRpdGxl
KHRpdGxlLnN0cmluZygpKTsKICAgICAgICAgbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIoKS0+
UHJvY2Vzc0V2ZW50KHdrRXZlbnQpOwogICAgIH0KIH0KQEAgLTUyNSw3ICs1MjYsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50V3g6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQog
fQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmgKaW5kZXggMjU0Zjk1YzQyYzQyMjk0ZmNkZTI2OGU4NjBk
ZWNmYmUxZmVjYzc2YS4uYjI4ZDM4OTdhYzliZDBhNWNlZTYyMTZkYzQxNTQ2M2YzNGNiMzg0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guaAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXeC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkBAIC0xNDUsNyArMTQ1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkSGlzdG9yeUl0
ZW1Gb3JGcmFnbWVudFNjcm9sbCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVu
dCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgS1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyB1
c2VyQWdlbnQoY29uc3QgS1VSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWJlMzQ2ZjQwY2YwZDAxNGVh
ZWU2ZWJmMTlmZTBhYzljYTAxM2JmMC4uZTQwZmM4NTEzNjQ4MzU4MTZjNzAzZGY5ZjdiZTExY2Y0
NDc3MmQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTI4ICBFdmFuIE1h
cnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKwor
ICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0
bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKwogMjAxMS0wMy0yOSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggKDY0IGJpdCBnY2MpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmYTNjZGNlZjdiNTUyMDI0MzBlNTk3ZjFl
ZDc0MTY3M2NiMGIwMDU4Li4xNDg3YTM1YTUyNTI2OWJjMmRkZDM3MzI0MmRjZWEyOGY2ODcxMzdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDAzLDcgKzQwMyw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHVybCwgdW5yZWFjaGFi
bGVVUkwsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkp
OwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAg
ICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2Up
CkBAIC00MTIsMTAgKzQxMiwxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIFJlZlB0cjxBUElPYmpl
Y3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgotICAgIHdl
YlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZVRpdGxlRm9yRnJh
bWUod2ViUGFnZSwgdGl0bGUsIG1fZnJhbWUsIHVzZXJEYXRhKTsKKyAgICAvLyBGSVhNRTogdXNl
IGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNs
aWVudCgpLmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHdlYlBhZ2UsIHRpdGxlLnN0cmluZygpLCBt
X2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgdGl0bGUsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0
aXRsZS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEu
Z2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMoKQpAQCAtODQ2LDcgKzg0Nyw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogCiAgICAgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSBkYXRh
OwogICAgIGRhdGEudXJsID0gbG9hZGVyLT51cmxGb3JIaXN0b3J5KCkuc3RyaW5nKCk7Ci0gICAg
ZGF0YS50aXRsZSA9IGxvYWRlci0+dGl0bGUoKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlv
biBvZiB0aXRsZS4KKyAgICBkYXRhLnRpdGxlID0gbG9hZGVyLT50aXRsZSgpLnN0cmluZygpOwog
CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb250ZXh0OjpEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh3ZWJQYWdlLT5wYWdlSUQo
KSwgZGF0YSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CkBAIC0xMDYxLDE0ICsxMDYzLDE1
IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIERvY3VtZW50TG9hZGVyOjpj
cmVhdGUocmVxdWVzdCwgZGF0YSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxl
LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1F
OiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6RGlkVXBkYXRlSGlzdG9yeVRpdGxl
KHdlYlBhZ2UtPnBhZ2VJRCgpLAotICAgICAgICB0aXRsZSwgdXJsLnN0cmluZygpLCBtX2ZyYW1l
LT5mcmFtZUlEKCkpLCAwKTsKKyAgICAgICAgdGl0bGUuc3RyaW5nKCksIHVybC5zdHJpbmcoKSwg
bV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IDE5NDg1NDE5MjA3MzEwMmQwZTdkZTcyODJiYTc0MDNkZjZhOTg1MWIuLjZjODNlOWRiMDdm
ZDI0YTRkZGE0MzYwNDRjOTM2Y2M5ODA0ZjI3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJD
b3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNjUsNyArMTY1LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogICAgIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9j
dW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRU
aXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOwogICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3Jl
OjpLVVJMJik7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87512</attachid>
            <date>2011-03-30 06:05:26 -0700</date>
            <delta_ts>2011-03-31 03:12:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50961-20110330060950.patch</filename>
            <type>text/plain</type>
            <size>65126</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI0MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOTM2OTY2ZjRhZjIwNTJk
MjYxZWM1MDRmZmVlMWFlZTE0ZGRiMGM5Li5jYzA3MWFjNDVjNzJlODg3MGJlMTI5NTk2ODJhMzJk
NTJiYzU0MDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDMtMjggIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQor
CisgICAgICAgIEludHJvZHVjZSBhIG5ldyBTdHJpbmdXaXRoRGlyZWN0aW9uIG9iamVjdCB0aGF0
IGNhcnJpZXMgYSBTdHJpbmcgYWxvbmcKKyAgICAgICAgd2l0aCB0aGUgVGV4dERpcmVjdGlvbiBh
c3NvY2lhdGVkIHdpdGggdGhlIFN0cmluZy4gIFVzZSB0aGlzIG9iamVjdCBmb3IKKyAgICAgICAg
ZG9jdW1lbnQgdGl0bGVzIHVzZWQgd2l0aGluIFdlYkNvcmUsIGJlY2F1c2UgaW4gSFRNTCB0aGUg
ZGlyZWN0aW9uIG9mCisgICAgICAgIGEgdGl0bGUgY2FuIGJlIHNldCB3aXRoIHRoZSAnZGlyJyBh
dHRyaWJ1dGUuCisKKyAgICAgICAgUHV0IEZJWE1FcyBhdCB0aGUgV2ViS2l0IGxldmVsIHRvIGV4
cG9zZSB0aGUgbmV3IGRpcmVjdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICB0byBjbGllbnRzLgor
CisgICAgICAgIE5vIGJlaGF2aW9yYWwgY2hhbmdlIGludGVuZGVkLCBzbyBubyBuZXcgdGVzdHMu
ICBBIGZvbGxvdy11cCB3aWxsIGV4cG9zZQorICAgICAgICB0aGUgdGl0bGUgZGlyZWN0aW9uIGFu
ZCBob3BlZnVsbHkgY2FuIGJlIGFjY29tcGFuaWVkIGJ5IHRlc3RzIHRoYXQKKyAgICAgICAgdmVy
aWZ5IGl0IGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVRpdGxlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aXRsZSk6CisgICAg
ICAgICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
aXRsZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRp
dGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRs
ZUVsZW1lbnQ6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6dGV4
dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6c2V0VGl0bGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnRpdGxlKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRUaXRsZSk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0
b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbjo6U3Ry
aW5nV2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9u
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb246Om9w
ZXJhdG9yIT0pOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTEtMDMt
MzAgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgUnlvc3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBlYTYxZDgxYWFiNmEwZjU0
NWFhNmRiZjkwNjAwYjc0OTVlMmU4M2E3Li4wMzMyODU5MTA2ZjA1MTgyYmZiM2E2OTQ2Yzg4Mjc1
ZDkxMDk3OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzQxLDcgKzM0MSw3IEBAIF9fWk43
V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIyMmNhbmNlbE1haW5SZXNvdXJjZUxvYWRFUktOU18xM1Jl
c291cmNlRXJyb3JFCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMjRyZW1vdmVQbHVnSW5T
dHJlYW1Mb2FkZXJFUE5TXzE0UmVzb3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUxNERvY3VtZW50
TG9hZGVyN3JlcXVlc3RFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjhzZXRGcmFtZUVQ
TlNfNUZyYW1lRQotX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjhzZXRUaXRsZUVSS04zV1RG
NlN0cmluZ0UKK19fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI4c2V0VGl0bGVFUktOU18xOVN0
cmluZ1dpdGhEaXJlY3Rpb25FCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyQzFFUktOU18x
NVJlc291cmNlUmVxdWVzdEVSS05TXzE0U3Vic3RpdHV0ZURhdGFFCiBfX1pON1dlYkNvcmUxNERv
Y3VtZW50TG9hZGVyQzJFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzE0U3Vic3RpdHV0ZURh
dGFFCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyRDJFdgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggZTNkN2Y1M2RiMGZkZWY2MGU2MDZhN2U1MDU2ZWU1ODgwMjdhOGI4Ni4uNTE0NDcw
MzJlMDBmMzZlZDZiYTU5ZmI0YmI4MzMyOTk0NzJhMGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0zODksOCArMzg5LDYgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9jb250
YWluc1ZhbGlkaXR5U3R5bGVSdWxlcyhmYWxzZSkKICAgICAsIG1fdXBkYXRlRm9jdXNBcHBlYXJh
bmNlUmVzdG9yZXNTZWxlY3Rpb24oZmFsc2UpCiAgICAgLCBtX2lnbm9yZURlc3RydWN0aXZlV3Jp
dGVDb3VudCgwKQotICAgICwgbV90aXRsZSgiIikKLSAgICAsIG1fcmF3VGl0bGUoIiIpCiAgICAg
LCBtX3RpdGxlU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAsIG1fdXBkYXRlRm9jdXNBcHBlYXJh
bmNlVGltZXIodGhpcywgJkRvY3VtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lckZpcmVk
KQogICAgICwgbV9zdGFydFRpbWUoY3VycmVudFRpbWUoKSkKQEAgLTEyNzEsOCArMTI2OSw5IEBA
IEVsZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50QnlBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBr
ZXkpIGNvbnN0CiAgKiAgMi4gVHJpbSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMKICAqICAz
LiBDb2xsYXBzZSBpbnRlcm5hbCB3aGl0ZXNwYWNlLgogICovCi1zdGF0aWMgaW5saW5lIFN0cmlu
ZyBjYW5vbmljYWxpemVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRp
dGxlKQorc3RhdGljIGlubGluZSBTdHJpbmdXaXRoRGlyZWN0aW9uIGNhbm9uaWNhbGl6ZWRUaXRs
ZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlV2l0
aERpcmVjdGlvbikKIHsKKyAgICBjb25zdCBTdHJpbmcmIHRpdGxlID0gdGl0bGVXaXRoRGlyZWN0
aW9uLnN0cmluZygpOwogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGl0bGUuY2hhcmFj
dGVycygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRpdGxlLmxlbmd0aCgpOwogICAgIHVuc2ln
bmVkIGk7CkBAIC0xMjg4LDcgKzEyODcsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBjYW5vbmlj
YWxpemVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAg
IH0KIAogICAgIGlmIChpID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICBy
ZXR1cm4gU3RyaW5nV2l0aERpcmVjdGlvbigpOwogCiAgICAgLy8gUmVwbGFjZSBjb250cm9sIGNo
YXJhY3RlcnMgd2l0aCBzcGFjZXMsIGFuZCBiYWNrc2xhc2hlcyB3aXRoIGN1cnJlbmN5IHN5bWJv
bHMsIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlLgogICAgIGJvb2wgcHJldmlvdXNDaGFyV2FzV1Mg
PSBmYWxzZTsKQEAgLTEzMTMsMTcgKzEzMTIsMTcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgY2Fu
b25pY2FsaXplZFRpdGxlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
ICAgICB9CiAKICAgICBpZiAoIWJ1aWxkZXJJbmRleCAmJiBidWZmZXJbYnVpbGRlckluZGV4XSA9
PSAnICcpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1dpdGhEaXJl
Y3Rpb24oKTsKIAogICAgIGJ1ZmZlci5zaHJpbmsoYnVpbGRlckluZGV4ICsgMSk7CiAKICAgICAv
LyBSZXBsYWNlIHRoZSBiYWNrc2xhc2hlcyB3aXRoIGN1cnJlbmN5IHN5bWJvbHMgaWYgdGhlIGVu
Y29kaW5nIHJlcXVpcmVzIGl0LgogICAgIGRvY3VtZW50LT5kaXNwbGF5QnVmZmVyTW9kaWZpZWRC
eUVuY29kaW5nKGJ1ZmZlci5jaGFyYWN0ZXJzKCksIGJ1ZmZlci5sZW5ndGgoKSk7CiAgICAgCi0g
ICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKKyAgICByZXR1cm4gU3RyaW5nV2l0aERp
cmVjdGlvbihTdHJpbmc6OmFkb3B0KGJ1ZmZlciksIHRpdGxlV2l0aERpcmVjdGlvbi5kaXJlY3Rp
b24oKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUpCit2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JiB0aXRsZSkKIHsKICAgICBpZiAobV9yYXdUaXRsZSA9PSB0aXRsZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTM0OSwxNiArMTM0OCwxNyBAQCB2b2lkIERvY3VtZW50OjpzZXRUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgdXBkYXRlVGl0bGUodGl0bGUp
OworICAgIC8vIFRoZSBET00gQVBJIGhhcyBubyBtZXRob2Qgb2Ygc3BlY2lmeWluZyBkaXJlY3Rp
b24sIHNvIGFzc3VtZSBMVFIuCisgICAgdXBkYXRlVGl0bGUoU3RyaW5nV2l0aERpcmVjdGlvbih0
aXRsZSwgTFRSKSk7CiAKICAgICBpZiAobV90aXRsZUVsZW1lbnQpIHsKICAgICAgICAgQVNTRVJU
KG1fdGl0bGVFbGVtZW50LT5oYXNUYWdOYW1lKHRpdGxlVGFnKSk7CiAgICAgICAgIGlmIChtX3Rp
dGxlRWxlbWVudC0+aGFzVGFnTmFtZSh0aXRsZVRhZykpCi0gICAgICAgICAgICBzdGF0aWNfY2Fz
dDxIVE1MVGl0bGVFbGVtZW50Kj4obV90aXRsZUVsZW1lbnQuZ2V0KCkpLT5zZXRUZXh0KG1fdGl0
bGUpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFRpdGxlRWxlbWVudCo+KG1fdGl0bGVF
bGVtZW50LmdldCgpKS0+c2V0VGV4dCh0aXRsZSk7CiAgICAgfQogfQogCi12b2lkIERvY3VtZW50
OjpzZXRUaXRsZUVsZW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSwgRWxlbWVudCogdGl0bGVFbGVt
ZW50KQordm9pZCBEb2N1bWVudDo6c2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mIHRpdGxlLCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpCiB7CiAgICAgaWYgKHRpdGxlRWxl
bWVudCAhPSBtX3RpdGxlRWxlbWVudCkgewogICAgICAgICBpZiAobV90aXRsZUVsZW1lbnQgfHwg
bV90aXRsZVNldEV4cGxpY2l0bHkpCkBAIC0xMzgzLDEzICsxMzgzLDEzIEBAIHZvaWQgRG9jdW1l
bnQ6OnJlbW92ZVRpdGxlKEVsZW1lbnQqIHRpdGxlRWxlbWVudCkKICAgICAgICAgZm9yIChOb2Rl
KiBlID0gaGVhZEVsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgZTsgZSA9IGUtPm5leHRTaWJsaW5nKCkp
CiAgICAgICAgICAgICBpZiAoZS0+aGFzVGFnTmFtZSh0aXRsZVRhZykpIHsKICAgICAgICAgICAg
ICAgICBIVE1MVGl0bGVFbGVtZW50KiB0aXRsZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVGl0
bGVFbGVtZW50Kj4oZSk7Ci0gICAgICAgICAgICAgICAgc2V0VGl0bGVFbGVtZW50KHRpdGxlRWxl
bWVudC0+dGV4dCgpLCB0aXRsZUVsZW1lbnQpOworICAgICAgICAgICAgICAgIHNldFRpdGxlRWxl
bWVudCh0aXRsZUVsZW1lbnQtPnRleHRXaXRoRGlyZWN0aW9uKCksIHRpdGxlRWxlbWVudCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFt
X3RpdGxlRWxlbWVudCkKLSAgICAgICAgdXBkYXRlVGl0bGUoIiIpOworICAgICAgICB1cGRhdGVU
aXRsZShTdHJpbmdXaXRoRGlyZWN0aW9uKCkpOwogfQogCiBTdHJpbmcgRG9jdW1lbnQ6Om5vZGVO
YW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMDVkZmI3NmVmNTFmZDE1MTBlMTAz
ODEzNTFlY2NjMGMxM2RhNTdhYy4uOGE4M2Q1OWU3OTNhYTQyZDg0ZDQ1ODM4Yzc1NDkwYjkwNTdj
MGMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJE
b2N1bWVudFRpbWluZy5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNp
bmNsdWRlIDx3dGYvRml4ZWRBcnJheS5oPgpAQCAtODExLDkgKzgxMiwxMSBAQCBwdWJsaWM6CiAg
ICAgLy8gUmV0dXJucyAwIGlmIHRoaXMgaXMgdGhlIHRvcCBsZXZlbCBkb2N1bWVudC4KICAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0OwogCi0gICAgU3RyaW5n
IHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgIC8vIFVzZWQgYnkgRE9NIGJp
bmRpbmdzOyBubyBkaXJlY3Rpb24ga25vd24uCisgICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aXRsZS5zdHJpbmcoKTsgfQogICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBzZXRUaXRsZUVsZW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSwgRWxlbWVu
dCogdGl0bGVFbGVtZW50KTsKKworICAgIHZvaWQgc2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mLCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpOwogICAgIHZvaWQgcmVtb3Zl
VGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50KTsKIAogICAgIFN0cmluZyBjb29raWUoRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OwpAQCAtMTE1OCw3ICsxMTYxLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVUaXRsZShjb25zdCBTdHJp
bmcmIHRpdGxlKTsKKyAgICB2b2lkIHVwZGF0ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mKTsKICAgICB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyRmlyZWQoVGltZXI8RG9j
dW1lbnQ+Kik7CiAgICAgdm9pZCB1cGRhdGVCYXNlVVJMKCk7CiAKQEAgLTEyOTUsOCArMTI5OCw4
IEBAIHByaXZhdGU6CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jaWdub3JlLWRlc3RydWN0aXZlLXdyaXRlcy1jb3VudGVyCiAgICAgdW5z
aWduZWQgbV9pZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnQ7CiAKLSAgICBTdHJpbmcgbV90aXRs
ZTsKLSAgICBTdHJpbmcgbV9yYXdUaXRsZTsKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fdGl0
bGU7CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3Jhd1RpdGxlOwogICAgIGJvb2wgbV90aXRs
ZVNldEV4cGxpY2l0bHk7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fdGl0bGVFbGVtZW50OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAppbmRleCA3OGM4YjZhNzEzOTIx
ZGNmMDZmNTczNzUxODJhZjExMWY4MjE4OWUzLi5jMGQ0MjhmYmIwNGRjMTVhNzA4ZTIyMDY5YjEw
NmZhNmU0NDQ4YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzLDcgKzM0LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAogaW5saW5lIEhUTUxUaXRsZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCi0gICAgLCBtX3RpdGxlKCIiKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKHRpdGxlVGFnKSk7CiB9CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgSFRN
TFRpdGxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiAKIHZvaWQgSFRNTFRpdGxlRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVD
aGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewotICAgIG1f
dGl0bGUgPSB0ZXh0KCk7CisgICAgbV90aXRsZSA9IHRleHRXaXRoRGlyZWN0aW9uKCk7CiAgICAg
aWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0bGVFbGVtZW50KG1f
dGl0bGUsIHRoaXMpOwogICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5
UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpAQCAt
NzEsMTAgKzcxLDE2IEBAIFN0cmluZyBIVE1MVGl0bGVFbGVtZW50Ojp0ZXh0KCkgY29uc3QKICAg
ICAgICAgaWYgKG4tPmlzVGV4dE5vZGUoKSkKICAgICAgICAgICAgIHZhbCArPSBzdGF0aWNfY2Fz
dDxUZXh0Kj4obiktPmRhdGEoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdmFsOwogfQog
CitTdHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxUaXRsZUVsZW1lbnQ6OnRleHRXaXRoRGlyZWN0aW9u
KCkKK3sKKyAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBjb21wdXRlZFN0eWxlKCk7CisgICAgcmV0
dXJuIFN0cmluZ1dpdGhEaXJlY3Rpb24odGV4dCgpLCBzdHlsZS0+ZGlyZWN0aW9uKCkpOworfQor
CiB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nICZ2YWx1ZSkKIHsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRpdGxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVt
ZW50LmgKaW5kZXggOGI5MGY1NjRmM2FhZjE2MTAzMTQ2YWMwNTgyMmY2ZDllNmExZmFlMS4uNjky
MDk5NzgzOTViMDQ1M2IyNDVlYzQyMzUxMDQwMjlmZDQyNDQ4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGl0bGVFbGVtZW50LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgSFRNTFRpdGxl
RWxlbWVudF9oCiAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIlN0cmluZ1dp
dGhEaXJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMyw2ICszNCw4IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dChjb25z
dCBTdHJpbmcmKTsKIAorICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gdGV4dFdpdGhEaXJlY3Rpb24o
KTsKKwogcHJpdmF0ZToKICAgICBIVE1MVGl0bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwogCkBAIC00MCw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAs
IE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCi0gICAg
U3RyaW5nIG1fdGl0bGU7CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3RpdGxlOwogfTsKIAog
fSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5k
ZXggMTIxMDQ1YjViOTlmZmEwNzliNjA1OWY3ZTE5N2FkZDRkM2RiYzNkMi4uMTQzN2FkYzRlNmRi
NTc0YmY3MDkxOWM0Y2IwMDViYzI0OTIyM2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
c3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpCiAgICAgbV9zdG9wUmVjb3JkaW5nUmVzcG9uc2VzID0g
dHJ1ZTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mIHRpdGxlKQogewogICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggMWY4ODI3MmIxOTIw
MDVkNjJlMzIwNzE3MGJmN2M1YjgyNTc5MmJhNS4uYzZmMGJjNWIyNjk0NGZlYmY5NjRiZmRkYzI2
NTdiNzY2NzVlMzVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUg
IlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEyMSw3ICsxMjIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgd2FzT25sb2FkSGFuZGxlZCgp
IHsgcmV0dXJuIG1fd2FzT25sb2FkSGFuZGxlZDsgfQogICAgICAgICBib29sIGlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJv
b2wpOwotICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAgdm9pZCBzZXRJ
Y29uVVJMKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIApAQCAtMTY4LDcg
KzE2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBsYXN0Q2hlY2tlZFJlcXVlc3QoKSAgeyByZXR1cm4gbV9sYXN0Q2hlY2tlZFJlcXVlc3Q7
IH0KIAogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKLSAgICAgICAgY29u
c3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAg
IGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
VGl0bGU7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSWNvblVSTDsgfQogCiAgICAgICAgIEtVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwpA
QCAtMjk4LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2lz
Q2xpZW50UmVkaXJlY3Q7CiAgICAgICAgIGJvb2wgbV93YXNPbmxvYWRIYW5kbGVkOwogCi0gICAg
ICAgIFN0cmluZyBtX3BhZ2VUaXRsZTsKKyAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3Bh
Z2VUaXRsZTsKICAgICAgICAgU3RyaW5nIG1fcGFnZUljb25VUkw7CiAKICAgICAgICAgU3RyaW5n
IG1fb3ZlcnJpZGVFbmNvZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRl
eCA1OWZkODk3OWNiZWVmY2NmZTkwNWFkZTdkMjZmZmIxZGRhZTZlOWEzLi42YWNmOTkyMTliYWNl
M2NjMmQwMjMzMjlmZDYxZTdmMDNmYjI1NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCkBAIC0yNjYsNyArMjY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxDbG9zZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
U3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExv
YWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KQEAgLTMzNCw3ICszMzQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSB7IH0KIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEpIHsgcmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwg
c3Vic3RpdHV0ZURhdGEpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEtVUkwmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5n
IHVzZXJBZ2VudChjb25zdCBLVVJMJikgeyByZXR1cm4gIiI7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMzQ3YTQxZWFhZTNhYjYxN2RhMzAxY2FjMTI5NzUyNTdk
Yjg0YTU5ZC4uZjEwMjBlMWYzOWNhN2U0Mjk4MzVkNmMzMDc2MTg2Yzg3NDJhZmI5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIGRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKICAgICAKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikg
ewotICAgICAgICBTdHJpbmcgcHRpdGxlID0gbV9kb2N1bWVudExvYWRlci0+dGl0bGUoKTsKKyAg
ICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBwdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50aXRs
ZSgpOwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJWaWV3IGtub3cg
YWJvdXQgaXQuCiAgICAgICAgIGlmICghcHRpdGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9j
bGllbnQtPmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHB0aXRsZSk7CkBAIC0xOTI0LDkgKzE5MjQs
OSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBk
aXNwYXRjaERpZENvbW1pdExvYWQoKTsKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUg
bGV0IHRoZSBXZWJWaWV3IGtub3cgYWJvdXQgaXQuIAotICAgICAgICBTdHJpbmcgdGl0bGUgPSBt
X2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOwotICAgICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKSAK
LSAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh0aXRsZSk7ICAg
ICAgICAgCisgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gdGl0bGUgPSBtX2RvY3VtZW50TG9h
ZGVyLT50aXRsZSgpOworICAgICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKQorICAgICAgICAgICAg
bV9jbGllbnQtPmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHRpdGxlKTsKIAogICAgICAgICBjaGVj
a0NvbXBsZXRlZCgpOwogICAgIH0gZWxzZSB7ICAgICAgICAKQEAgLTMzNzUsNyArMzM3NSw3IEBA
IGJvb2wgRnJhbWVMb2FkZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
UmVzb3VyY2VMb2FkZXIqIGxvYWRlciwKIH0KICNlbmRpZgogCi12b2lkIEZyYW1lTG9hZGVyOjpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgZG9jdW1lbnRMb2FkZXIo
KS0+c2V0VGl0bGUodGl0bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRl
eCAxZmI5ZTNjNDVmNDkwZTI5OWZhZmM1NGY0ZDM1ZTY3ZTRlYjEyOTVjLi45MDYyZjIxNWNlZDgx
NTlmZGE4OWM4NWFmNmUxNmQ4MWFjNWY1MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIApAQCAtMjgyLDcgKzI4Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3Ry
aW5nJik7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAg
ICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBjb21taXRQcm92
aXNpb25hbExvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggN2Q2NDkxMmJkYjQxM2FlOTU5YWIwZThmNWFjY2FhYzY2MmZmZjk5My4uZDVkNDllYzlj
NzA4YTljN2U4OTc3M2IxZDYzODdhYmVmYjdlZjJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg0LDYgKzg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAgICAgY2xhc3MgU2hhcmVkQnVmZmVyOworICAgIGNsYXNzIFN0cmluZ1dpdGhEaXJlY3Rpb247
CiAgICAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAgICAgY2xhc3MgV2lkZ2V0OwogCkBAIC0xMzks
NyArMTQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsQ2xvc2UoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImKSA9IDA7CkBAIC0yMjcsNyArMjI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpID0gMDsK
IAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3Vt
ZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikg
PSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgS1VSTCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwg
U3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgPSAwOwogICAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGI4YmVjZTliNzUwYzUzODZk
OGEzZDhlMWQyOGM4ZDFlZDdiMzFiYjkuLmMxYzU0MTQzMmFhZGQ5ZjViZGJiYWQ2MjliMGY4YTA0
NmI1YWE4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckJh
Y2tGb3J3YXJkTmF2aWdhdGlvbigpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2Zy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJX
ZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgYmFjay9mb3J3YXJkIG5hdmlnYXRp
b24gaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0
bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9y
eTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgYmFjay9mb3J3YXJkIG5hdmlnYXRpb24gaW4gZnJhbWUg
JXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCiAgICAgLy8gTXVzdCBncmFiIHRoZSBjdXJyZW50
IHNjcm9sbCBwb3NpdGlvbiBiZWZvcmUgZGlzdHVyYmluZyBpdApAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCgpCiB7CiAjaWYgIUxPR19E
SVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAg
ICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3Ig
cmVsb2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkt
PnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhp
c3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogI2VuZGlmCiAKICAgICBpZiAobV9jdXJyZW50SXRlbSkgewpAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJh
Y2tGb3J3YXJkTGlzdCgpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3Jl
SGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVkaXJlY3QgbG9hZCBpbiBmcmFtZSAlcyIs
IG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0
b3J5IGZvciByZWRpcmVjdCBsb2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYK
ICAgICAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwpAQCAt
Mzg1LDcgKzM4NSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJl
ZGlyZWN0KCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5
OiBVcGRhdGluZyBIaXN0b3J5IGZvciBjbGllbnQgcmVkaXJlY3QgaW4gZnJhbWUgJXMiLCBtX2Zy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBm
b3IgY2xpZW50IHJlZGlyZWN0IGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIAog
ICAgIC8vIENsZWFyIG91dCBmb3JtIGRhdGEgc28gd2UgZG9uJ3QgdHJ5IHRvIHJlc3RvcmUgaXQg
aW50byB0aGUgaW5jb21pbmcgcGFnZS4gIE11c3QgaGFwcGVuIGFmdGVyCkBAIC00MTAsNyArNDEw
LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KCkKICAgICBGcmFt
ZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKICNpZiAhTE9HX0RJU0FC
TEVECiAgICAgaWYgKGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBMT0co
SGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBjb21taXQgaW4g
ZnJhbWUgJXMiLCBmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcg
SGlzdG9yeSBmb3IgY29tbWl0IGluIGZyYW1lICVzIiwgZnJhbWVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICBGcmFt
ZUxvYWRUeXBlIHR5cGUgPSBmcmFtZUxvYWRlci0+bG9hZFR5cGUoKTsKICAgICBpZiAoaXNCYWNr
Rm9yd2FyZExvYWRUeXBlKHR5cGUpCkBAIC01MjYsMTAgKzUyNiwxMSBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICBtX2N1cnJl
bnRJdGVtID0gaXRlbTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0
ZW1UaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0
Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAg
ICBpZiAobV9jdXJyZW50SXRlbSkKLSAgICAgICAgbV9jdXJyZW50SXRlbS0+c2V0VGl0bGUodGl0
bGUpOworICAgICAgICAvLyBGSVhNRTogbWFrZSB1c2Ugb2YgdGl0bGUuZGlyZWN0aW9uKCkgYXMg
d2VsbC4KKyAgICAgICAgbV9jdXJyZW50SXRlbS0+c2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwog
fQogCiBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQo
KSBjb25zdApAQCAtNTc2LDEyICs1NzcsMTMgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5p
dGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgCiAgICAgRnJhbWUqIHBhcmVudEZy
YW1lID0gbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKICAgICBTdHJpbmcgcGFyZW50ID0gcGFy
ZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkgOiAiIjsKLSAgICBT
dHJpbmcgdGl0bGUgPSBkb2N1bWVudExvYWRlci0+dGl0bGUoKTsKKyAgICBTdHJpbmdXaXRoRGly
ZWN0aW9uIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7CiAKICAgICBpdGVtLT5zZXRV
UkwodXJsKTsKICAgICBpdGVtLT5zZXRUYXJnZXQobV9mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1l
KCkpOwogICAgIGl0ZW0tPnNldFBhcmVudChwYXJlbnQpOwotICAgIGl0ZW0tPnNldFRpdGxlKHRp
dGxlKTsKKyAgICAvLyBGSVhNRTogc2hvdWxkIHN0b3JlIHRpdGxlIGRpcmVjdGlvbmFsaXR5IGlu
IGhpc3RvcnkgYXMgd2VsbC4KKyAgICBpdGVtLT5zZXRUaXRsZSh0aXRsZS5zdHJpbmcoKSk7CiAg
ICAgaXRlbS0+c2V0T3JpZ2luYWxVUkxTdHJpbmcob3JpZ2luYWxVUkwuc3RyaW5nKCkpOwogCiAg
ICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgfHwgZG9jdW1lbnRMb2FkZXItPnJlc3Bv
bnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0
b3J5Q29udHJvbGxlci5oCmluZGV4IDU5ZjExYTI1YzkzM2QzZDdjOTcyNTFiOTBhOTNiMzJkNTZi
OTlhZDQuLjE1ZTEyYzA5OWEzZWYwNzI3NTRlNjdlNmNkNTY3ZjZiZTA4YmE1ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFz
cyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBTdHJpbmdXaXRoRGlyZWN0aW9uOwogCiBj
bGFzcyBIaXN0b3J5Q29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGlzdG9y
eUNvbnRyb2xsZXIpOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBIaXN0b3J5SXRl
bSogY3VycmVudEl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRJdGVtLmdldCgpOyB9CiAg
ICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSopOwotICAgIHZvaWQgc2V0Q3VycmVu
dEl0ZW1UaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEN1cnJlbnRJdGVtVGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIGJvb2wgY3VycmVudEl0ZW1TaG91bGRC
ZVJlcGxhY2VkKCkgY29uc3Q7CiAKICAgICBIaXN0b3J5SXRlbSogcHJldmlvdXNJdGVtKCkgY29u
c3QgeyByZXR1cm4gbV9wcmV2aW91c0l0ZW0uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWEzNGFi
NmJmZjhjZDkxMDRlMzUxYzVjMTcxMjljM2ZmYTJhMmVjNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oCkBAIC0wLDAg
KzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFN0cmluZ1dpdGhEaXJlY3Rpb25faAorI2RlZmluZSBTdHJpbmdXaXRo
RGlyZWN0aW9uX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiVGV4
dERpcmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluIHNvbWUgY2lyY3Vt
c3RhbmNlcyB3ZSB3YW50IHRvIHN0b3JlIGEgU3RyaW5nIGFsb25nIHdpdGggdGhlIFRleHREaXJl
Y3Rpb24KKy8vIG9mIHRoZSBTdHJpbmcgYXMgbGVhcm5lZCBmcm9tIHRoZSBjb250ZXh0IG9mIHRo
ZSBTdHJpbmcuIEZvciBleGFtcGxlLAorLy8gY29uc2lkZXIgc3RvcmluZyB0aGUgdGl0bGUgZGVy
aXZlZCBmcm9tIDx0aXRsZSBkaXI9J3J0bCc+c29tZSB0aXRsZTwvdGl0bGU+CisvLyBpbiB0aGUg
aGlzdG9yeS4KKy8vCisvLyBOb3RlIHRoYXQgaXMgZXhwbGljaXRseSAqbm90KiB0aGUgZGlyZWN0
aW9uIG9mIHRoZSBzdHJpbmcgYXMgbGVhcm5lZAorLy8gZnJvbSB0aGUgY2hhcmFjdGVycyBvZiB0
aGUgc3RyaW5nOyBpdCdzIGV4dHJhIG1ldGFkYXRhIHdlIGhhdmUgZXh0ZXJuYWwKKy8vIHRvIHRo
ZSBzdHJpbmcuCitjbGFzcyBTdHJpbmdXaXRoRGlyZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBTdHJp
bmdXaXRoRGlyZWN0aW9uKCkge30KKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBUZXh0RGlyZWN0aW9uIGRpcikgOiBtX3N0cmluZyhzdHJpbmcpLCBtX2RpcmVj
dGlvbihkaXIpIHt9CisKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nOyB9CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2RpcmVjdGlvbjsgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5pc051bGwoKTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fc3Ry
aW5nID09IG1fc3RyaW5nICYmIG90aGVyLm1fZGlyZWN0aW9uID09IG1fZGlyZWN0aW9uOworICAg
IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICEoKCp0aGlzKSA9PSBvdGhlcik7IH0KKworcHJpdmF0ZToKKyAgICBT
dHJpbmcgbV9zdHJpbmc7CisgICAgVGV4dERpcmVjdGlvbiBtX2RpcmVjdGlvbjsKK307CisKK30K
KworI2VuZGlmIC8vIFN0cmluZ1dpdGhEaXJlY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0
bGVFbGVtZW50LmNwcAppbmRleCBlYmNkZGI0NmEwMjlkOWIzNGRjZWMyNTVhMmE4Y2RiMWI1YjE4
MWVjLi5kOTI1NjAzMTFlNzY2Mjc2YzRmNjdhODk5MTYwZDJhMzliN2Y4NDNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcApAQCAtNDAsNyArNDAsOCBAQCB2b2lkIFNWR1Rp
dGxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIFNWR1N0eWxlZEVsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgaWYgKGZpcnN0Q2hpbGQoKSkKLSAgICAg
ICAgZG9jdW1lbnQoKS0+c2V0VGl0bGVFbGVtZW50KHRleHRDb250ZW50KCksIHRoaXMpOworICAg
ICAgICAvLyBGSVhNRTogZG9lcyBTVkcgaGF2ZSBhIHRpdGxlIHRleHQgZGlyZWN0aW9uPworICAg
ICAgICBkb2N1bWVudCgpLT5zZXRUaXRsZUVsZW1lbnQoU3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0
Q29udGVudCgpLCBMVFIpLCB0aGlzKTsKIH0KIAogdm9pZCBTVkdUaXRsZUVsZW1lbnQ6OnJlbW92
ZWRGcm9tRG9jdW1lbnQoKQpAQCAtNTMsNyArNTQsOCBAQCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2Us
CiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVm
b3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKICAgICBpZiAoaW5Eb2N1
bWVudCgpKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRUaXRsZUVsZW1lbnQodGV4dENvbnRlbnQo
KSwgdGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiBkb2VzIFNWRyBoYXZlIHRpdGxlIHRleHQgZGly
ZWN0aW9uPworICAgICAgICBkb2N1bWVudCgpLT5zZXRUaXRsZUVsZW1lbnQoU3RyaW5nV2l0aERp
cmVjdGlvbih0ZXh0Q29udGVudCgpLCBMVFIpLCB0aGlzKTsKIH0KIAogQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR1RpdGxlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhZmE0ZDYxZTliMjllOTFkYTdkZGNhN2Zl
NWEwMzNmNGIxZWFjMzk4Li5hYjU2NDU2ODQzMDQwOTc3ZTc2YzI4ZDNjY2EyNTUxYWU0ZmU5N2Ni
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTAzLTI4
ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0
dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFj
ZS4KKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZXRUaXRsZSk6CisgICAg
ICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJEYXRh
U291cmNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFTb3VyY2VJbXBsOjpwYWdl
VGl0bGUpOgorCiAyMDExLTAzLTI5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODIyOTMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAppbmRleCA2NDdhNzBjMjg1YjY3Y2UwZDU0YTNhZTA4ODE0OThlMTE0MzZkNjUzLi5jZDc2NDkx
MDlkMWI1ZTQwNmU3MjU0NjdkNjYzZTgzMGY5YWU4MzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTczNCwxMCAr
NzM0LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKCkKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlKQogeworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxl
LgogICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xp
ZW50KCktPmRpZFJlY2VpdmVUaXRsZShtX3dlYkZyYW1lLCB0aXRsZSk7CisgICAgICAgIG1fd2Vi
RnJhbWUtPmNsaWVudCgpLT5kaWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUuc3RyaW5n
KCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucygpCkBAIC0xMzI4LDcgKzEzMjksNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBG
cmFtZUxvYWRlckNsaWVudEltcGw6OmNyZWF0ZURvY3VtZW50TG9hZGVyKAogICAgIHJldHVybiBk
cy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZXRUaXRsZShj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0
IEtVUkwmIHVybCkKIHsKICAgICAvLyBGSVhNRTogaW5mb3JtIGNvbnN1bWVyIG9mIGNoYW5nZXMg
dG8gdGhlIHRpdGxlLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuaAppbmRleCBmMTljMjZjNTM5YTFjMWI1YTI2NTdiN2FhMjU4OTVj
MWIyZjUyMTI2Li4yYjFjMjZmNWRkYmNjY2FkZDI2ZWE0OGFmOGQ4YWRmNDViMmJhNzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0
aXRsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50
TG9hZGVyKAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25z
dCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25z
dCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0Nh
Y2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCmlu
ZGV4IDEzNjZhODA5NGE1MDYzOTdlMDk0ODM0MDgwMjY1ZGJjYTdiZTY2MWEuLjMxNzBhZmZiZTRi
NGIxZjg0MGM2NzU5MGU5ZDZiYWFkNTc4NTBlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEYXRhU291cmNlSW1wbC5jcHAKQEAgLTgyLDcgKzgyLDggQEAgdm9pZCBX
ZWJEYXRhU291cmNlSW1wbDo6cmVkaXJlY3RDaGFpbihXZWJWZWN0b3I8V2ViVVJMPiYgcmVzdWx0
KSBjb25zdAogCiBXZWJTdHJpbmcgV2ViRGF0YVNvdXJjZUltcGw6OnBhZ2VUaXRsZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHRpdGxlKCk7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2Yg
dGl0bGUgYXMgd2VsbC4KKyAgICByZXR1cm4gdGl0bGUoKS5zdHJpbmcoKTsKIH0KIAogV2ViTmF2
aWdhdGlvblR5cGUgV2ViRGF0YVNvdXJjZUltcGw6Om5hdmlnYXRpb25UeXBlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZwppbmRleCAzNWRhMDljMzQ5NmNlMzcwZWVmYjllYTI5NzdhZWYzMjQ2MGQwMDhl
Li42YmE0ZDcwYjU1OWVmYWVlMWUzY2YyNGE2MTg4NWYzYzMxYWJhZjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0
byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKKwogMjAxMS0wMy0yOSAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9u
aW8gR29tZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggZmEzNGFjOWMwZDdkNjA4MTk4MjU4NzMz
NDEzZjI1YWIyYTkwYmEyNi4uOTZiODU5YmZlOTU2MWU3Yjg5Mjc4MTQ2OWU3MWEzYTgyZmNkNDkz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtNTc2LDkgKzU3NiwxMCBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAg
ZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChtX3ZpZXcpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQor
dm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7Ci0gICAgQ1N0cmluZyBjcyA9IHRpdGxlLnV0
ZjgoKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBDU3RyaW5n
IGNzID0gdGl0bGUuc3RyaW5nKCkudXRmOCgpOwogICAgIGV3a19mcmFtZV90aXRsZV9zZXQobV9m
cmFtZSwgY3MuZGF0YSgpKTsKIAogICAgIGlmIChld2tfdmlld19mcmFtZV9tYWluX2dldChtX3Zp
ZXcpICE9IG1fZnJhbWUpCkBAIC03MDksNyArNzEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEVmbDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVy
bCkKIHsKICAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMgdGhl
IHJpZ2h0IGNhbGxiYWNrCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAppbmRleCA1ZWE0ZThjYWM5N2MwYmE5ZThl
ZTY5YzkyMjc3MzljZTE3ODFhNDBjLi5iZDA3YTMwMzRiNjE4NmIwNGFiMDQ5ZTNkZjEyMGJiZDVm
OWM0NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBGcmFtZUxv
YWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZs
IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZv
ckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKIAogICAg
IHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpp
bmRleCAwNWMxNWQ0NzRmNDc4ZTVkZDAzNmE3ZTRhN2IwN2E2NjQxOTM3NWFhLi5mZGJhNTgwMThi
NGYwNmFhNjA3ZDc4MTBjNjdhZTcwMTYzNjI3ZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBz
aG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVM
b2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmg6CisKIDIwMTEtMDMtMjkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGRpc2FibGUgYW4gYXNzZXJ0IGluIHRlc3R3
ZWJ2aWV3IGR1ZSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGNhOGJmOWEwODlhZDczODNjOGQ0
NTMyN2E4N2Q4NTM0Yjg1ZGUwOTcuLjVjNTk0ZTg1NmJiMGFmNGQxZjJjZGVlMDM1NjUyNzQyZGZj
MWI4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTk0OSwxNCArOTQ5LDE1IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIG5v
dGlmeVN0YXR1cyhtX2ZyYW1lLCBXRUJLSVRfTE9BRF9QUk9WSVNJT05BTCk7CiB9CiAKLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAobV9sb2FkaW5nRXJy
b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHBy
aXYgPSBtX2ZyYW1lLT5wcml2OwogICAgIGdfZnJlZShwcml2LT50aXRsZSk7Ci0gICAgcHJpdi0+
dGl0bGUgPSBnX3N0cmR1cCh0aXRsZS51dGY4KCkuZGF0YSgpKTsKKyAgICAvLyBGSVhNRTogdXNl
IGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBwcml2LT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fZnJh
bWUsICJ0aXRsZS1jaGFuZ2VkIiwgcHJpdi0+dGl0bGUpOwogICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChtX2ZyYW1lKSwgInRpdGxlIik7CkBAIC0xMTE5LDExICsxMTIwLDEyIEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBmcmFtZURhdGEgPSBtX2Zy
YW1lLT5wcml2OwogICAgIGdfZnJlZShmcmFtZURhdGEtPnRpdGxlKTsKLSAgICBmcmFtZURhdGEt
PnRpdGxlID0gZ19zdHJkdXAodGl0bGUudXRmOCgpLmRhdGEoKSk7CisgICAgLy8gRklYTUU6IHVz
ZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgZnJhbWVEYXRhLT50aXRsZSA9IGdfc3RyZHVwKHRp
dGxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuaAppbmRleCBiN2VhZDdhZjVlYmI5ZTY3NjVjOTQ2YzM1NWFjOTllODljMWU5NTQxLi45N2Vi
MGZmNjg2YTM2YzUxOTFhZjRlMDJhNmE3ZGY4ZjQ3YWQ2Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAg
LTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxDbG9zZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
QEAgLTE3NCw3ICsxNzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFs
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRM
b2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6
U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJB
Z2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
aGFpa3UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggNzc1
N2ZlNzkyMzE2NWRmYzhjYjFjZDRkZTRlOTUzODNlYjA5ZjlkZi4uMTE4NWMyNmJjZmFjZjVhZmI0
YzI5ZTA1NTM5NTRmYTZjMzMxMWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wMy0yOCAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8dGl0bGU+IHNob3Vs
ZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRl
ckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFp
a3U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEhhaWt1Lmg6CisKIDIwMTEtMDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEhhaWt1LmNwcCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRIYWlrdS5jcHAKaW5kZXggMjRhOThkNTYzNDI4NmU3YjQ0OWMxMTBiM2UxZGI1
M2JhODVlMGQwYi4uYzA0Y2I3ZDRjNmYxYzhiNmE4ZTQyYmUwNTJmZDk0MjIxMTEzNDQ3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEhhaWt1LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCkBAIC0yMzcsMTMgKzIzNywxMyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAg
IH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmIHRpdGxlKQogewog
ICAgIGlmIChtX3dlYlZpZXcpIHsKLSAgICAgICAgbV93ZWJWaWV3LT5TZXRQYWdlVGl0bGUodGl0
bGUpOwotCisgICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAg
ICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZS5tX3N0cmluZygpKTsKICAgICAgICAgQk1l
c3NhZ2UgbWVzc2FnZShUSVRMRV9DSEFOR0VEKTsKLSAgICAgICAgbWVzc2FnZS5BZGRTdHJpbmco
InRpdGxlIiwgdGl0bGUpOworICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidGl0bGUiLCB0aXRs
ZS5zdHJpbmcoKSk7CiAgICAgICAgIG1fbWVzc2VuZ2VyLT5TZW5kTWVzc2FnZSgmbWVzc2FnZSk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmggYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAppbmRleCBkYmQzMDg0Y2E0Y2I3ZjI5YWVi
NzZkMjQ0ZmRkZDkzMGU5ODk3MGIyLi5mNTc2NTQ1Yzg2YTZiYTQzN2ExZDY2ZDdjZmVmZTI3NDVm
ZGI3NjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaApAQCAtMTAyLDcgKzEwMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxl
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hE
b2N1bWVudExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9h
ZCgpOwpAQCAtMTQzLDcgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIGFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVG
b3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJik7CiAKICAg
ICAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDVmNzE2MWUwNDFiMDM0OTMzNTc2NjMyMmQyOWZhNGJjNzI3NjMzNzcuLjg5ZmNk
NGViMjU2YzIwMzUxYjVlNjNhOWZjNjM1ZDhkMGJmZTUzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxMS0wMy0yOCAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8dGl0
bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBG
cmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRs
ZSk6CisKIDIwMTEtMDMtMjkgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZl
NTY2NGRkNjA1MTZjMTE4NmU4NTVkYjIzYjM3ZTUyNGQzODM2Ni4uZDU5MTdiOGY1NGMwNzAzOTMw
YjNiMjdiMTdkZWE0NWRmNzgyMGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMDEsNyArMTAxLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSk7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nV2l0aERpcmVj
dGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6U3Ry
aW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VS
TCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
VEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lk
dGgsIGludCBtYXJnaW5IZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA5MmMyYjAzYjFjOWNm
MGM4YmJlZjExMTE3YTAwOGZkYjkzNjNlMGMwLi5lNGQ4ZmExMDA5NzM5YjViNmI0OGNhNmEwNWIx
ODY4Y2EwZmRhYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtNjI0LDEyICs2MjQsMTMgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgp
CiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgV2Vi
VmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7ICAgCiAgICAgV2Vi
RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBX
ZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CiAgICAg
aWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jKQotICAgICAg
ICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpm
b3JGcmFtZTopLCAoTlNTdHJpbmcgKil0aXRsZSwgbV93ZWJGcmFtZS5nZXQoKSk7CisgICAgICAg
IC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBDYWxsRnJhbWVMb2Fk
RGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMsIHdl
YlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTopLCAoTlNT
dHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpAQCAtMTE3OSw3ICsx
MTgwLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc28KICAgICByZXR1cm4gbG9hZGVyLnJlbGVh
c2UoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVy
bCkKIHsKICAgICBXZWJWaWV3KiB2aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsK
ICAgICAKQEAgLTExODgsNyArMTE4OSw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKICAgICAgICAgaWYg
KCFpbXBsZW1lbnRhdGlvbnMtPnNldFRpdGxlRnVuYykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIAotICAgICAgICBDYWxsSGlzdG9yeURlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+
c2V0VGl0bGVGdW5jLCB2aWV3LCBAc2VsZWN0b3Iod2ViVmlldzp1cGRhdGVIaXN0b3J5VGl0bGU6
Zm9yVVJMOiksIChOU1N0cmluZyAqKXRpdGxlLCAoTlNTdHJpbmcgKil1cmwpOworICAgICAgICAv
LyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAgICAgQ2FsbEhpc3RvcnlEZWxl
Z2F0ZShpbXBsZW1lbnRhdGlvbnMtPnNldFRpdGxlRnVuYywgdmlldywgQHNlbGVjdG9yKHdlYlZp
ZXc6dXBkYXRlSGlzdG9yeVRpdGxlOmZvclVSTDopLCAoTlNTdHJpbmcgKil0aXRsZS5zdHJpbmco
KSwgKE5TU3RyaW5nICopdXJsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggMzA0YTZjOWFiYzg1NDZiNzIwMWJkYmE4ZThkMmE1OGNhYjNkY2Q5Mi4uOGM0
Mjk0MTk5MTE5MzljYjdjYWUwMGE5Nzg2ODNmMTU3NTVhNDZhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxMS0wMy0yOCAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8dGl0
bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBG
cmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTEtMDMtMjkgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMu
bWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9y
IGJ1aWxkLXdlYmtpdCAtbWluaW1hbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IGQzMTg0OTRiYWVjYzMy
ZTgwODE5ZjlmZjY0MmM5NmVmOGJmY2I3Y2IuLjkzMGVhMGJjNDJhMWJjYzk2NWQxYTMyZjlmMTBi
NmZlNjMyMjgwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApAQCAtNDQ3LDggKzQ0Nyw5IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiB9CiAK
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKKyAgICAvLyBG
SVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2Fs
bGJhY2tzKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZVRpdGxlOiAlc1xuIiwgcVBy
aW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSksIHFQ
cmludGFibGUoUVN0cmluZyh0aXRsZSkpKTsKIApAQCAtNzA5LDE2ICs3MTAsMTcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKIHsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldFRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhUaXRsZSYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAv
LyBVc2VkIGJ5IEFwcGxlIFdlYktpdCB0byB1cGRhdGUgdGhlIHRpdGxlIG9mIGFuIGV4aXN0aW5n
IGhpc3RvcnkgaXRlbS4KICAgICAvLyBRdFdlYktpdCBkb2Vzbid0IGFjY29tb2RhdGUgdGhpcyBv
biBoaXN0b3J5IGl0ZW1zLiBJZiBpdCBldmVyIGRvZXMsCiAgICAgLy8gaXQgc2hvdWxkIGJlIHBy
aXZhdGVCcm93c2luZy1hd2FyZS5Gb3Igbm93LCB3ZSBhcmUganVzdCBwYXNzaW5nCiAgICAgLy8g
Z2xvYmFsaGlzdG9yeSBsYXlvdXQgdGVzdHMuCisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24g
b2YgdGl0bGUuCiAgICAgaWYgKGR1bXBIaXN0b3J5Q2FsbGJhY2tzKSB7CiAgICAgICAgIHByaW50
ZigiV2ViVmlldyB1cGRhdGVkIHRoZSB0aXRsZSBmb3IgaGlzdG9yeSBVUkwgXCIlc1wiIHRvIFwi
JXNcIi5cbiIsCiAgICAgICAgICAgICBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KHVybCkpLAotICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nKHRpdGxl
KSkpOworICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nKHRpdGxlLnN0cmluZygpKSkpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaAppbmRleCAzZWM1ZjIwZGI4MmYwZTY4NDUzOGZjNTY0YjRiZjEz
ZGVmZDdmODJhLi4zMTRhNTUwZmY3ZDNlYzNlMGI0ZjNlNDk3N2E1MTdmODAyNGNjNzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBT
dHJpbmdXaXRoVGl0bGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBL
VVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhUaXRsZSYs
IGNvbnN0IEtVUkwmKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJD
b3JlOjpLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2YzMwZDA0OWZjMmZmNTg4YzJkNGMy
OTlkYjcxOGZiYTk3ZGM1MWNiLi5jZmRkOWYyZmRjNDU0NDI4MmY5ZWU0NTNhODI5NmZkYjhiYmNh
ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMjggIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQor
CisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTAzLTI5
ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gUm9iZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTBhMzE5MGQyYTRhYWU2
OWUwMGNiYTZmZDhkY2VlOTFiYzllMGY0My4uNmFmN2Y3MTM2NjM2YWJkZDczZDEwZmNkYzMzZTVi
Y2NjYmU4MTFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMzY0LDEyICszNjQsMTMgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgp
CiAgICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0
aFRpdGxlJiB0aXRsZSkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2Vi
VmlldygpOwogICAgIENPTVB0cjxJV2ViRnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVn
YXRlOwogICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGUoJmZyYW1l
TG9hZERlbGVnYXRlKSkpCi0gICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlVGl0
bGUod2ViVmlldywgQlN0cmluZyh0aXRsZSksIG1fd2ViRnJhbWUpOworICAgICAgICAvLyBGSVhN
RTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRp
ZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlLnN0cmluZygpKSwgbV93ZWJGcmFt
ZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZDg2NGIyMzRlNDAzNTk4M2M3YzNlMzNhZGMyZDg3ZTIz
YjRiZGYxYy4uMTg1NzA4ODQ2OTliNzQyMjZjMjA3Y2FiMTZmOTM1YjA3ZDFiZmFlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3Ry
aW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKQEAg
LTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJl
Q29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
IAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRl
RG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
V1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2Fj
aGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nCmluZGV4IGU1OTVmMjVkYzc4MzUxMWJkOTdiZWNlNDE0NDM3NTJlNGVh
MDI1MDYuLmFjMDQwNWM5OWQxYWNmNWNhNDJmZDU2NGY3ZjI0MmMxNzc3NDg3MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8
ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAg
IFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAg
ICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6c2V0VGl0bGUpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaDoKKwogMjAxMS0wMy0y
NyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKaW5kZXggMmQ4
ODEyZmEwZGExNjIyNmIyMGM2Y2ZlMWVmODg3Yzc4Y2FmYjhiOS4uNzBkNzhhMDllY2UxODYyYTU2
MjllOGYzZWJhMmVhYmNkMTYxYTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCkBAIC0z
NzEsNyArMzcxLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmlu
ZyYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpwcmVwYXJl
Rm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IEtVUkwmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoVGl0bGUmLCBjb25zdCBLVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFdpbkNFLmggYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V2luQ0UuaAppbmRleCA0MDEyMjVkMjI5ZTg2OTNjOWU2YWQxYjlkNWU0ZjE1
ZjdjMmI5ZmJlLi42MTUzOWM1NTY3MzA4NzRlYzFjZGE4ZDAxMmNkY2Q3YmM3OTYyZWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V2luQ0UuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1p
dExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsK
IAogICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShj
b25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOwogCiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29u
c3QgV2ViQ29yZTo6S1VSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDk4MGZhOGEwMmIzZGE5MWE1
NWFmNDQ1NDM0MTViNjMzZTIwMTc2YWEuLjAxNGE5MGQ1NzE4YTJjMTQ4YjI3ZmJlMzY3ZmM0YTYw
Y2Q3MzA3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2
YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmli
dXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2
MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgor
CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldFRpdGxlKToKKyAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMS0wMy0y
NSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRlbGUgUGV0ZXJzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKaW5kZXggYWZjMjU1Y2NhY2Y5NGI3NGJkNDMyMjlk
MzY2Y2NiYWNiMDE2ZjIwOC4uOWQxYTJmMzBhNTBiYzFiMTM5ODYzMWRkNmU4NzI3MzY2YWM0MWU0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmNwcApAQCAtMjk1LDEyICsyOTUsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudFd4OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIH0KIAogCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhUaXRsZSYgdGl0bGUpCiB7CiAgICAgaWYgKG1fd2ViVmlldykgewot
ICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZSk7CisgICAgICAgIC8vIEZJWE1F
OiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRs
ZSh0aXRsZS5zdHJpbmcoKSk7CiAgICAgICAgIHd4V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCB3
a0V2ZW50KG1fd2ViVmlldyk7Ci0gICAgICAgIHdrRXZlbnQuU2V0VGl0bGUodGl0bGUpOworICAg
ICAgICB3a0V2ZW50LlNldFRpdGxlKHRpdGxlLnN0cmluZygpKTsKICAgICAgICAgbV93ZWJWaWV3
LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQpOwogICAgIH0KIH0KQEAg
LTUyNSw3ICs1MjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnByZXBhcmVGb3JEYXRh
U291cmNlUmVwbGFjZW1lbnQoKQogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0
VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50V3g6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25z
dCBLVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaCBiL1NvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKaW5kZXggMjU0Zjk1
YzQyYzQyMjk0ZmNkZTI2OGU4NjBkZWNmYmUxZmVjYzc2YS4uYjI4ZDM4OTdhYzliZDBhNWNlZTYy
MTZkYzQxNTQ2M2YzNGNiMzg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERv
Y3VtZW50TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2Fk
KCk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgYWRkSGlzdG9yeUl0ZW1Gb3JGcmFnbWVudFNjcm9sbCgpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZv
ckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKTsKIAogICAg
ICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNzE2YWIxNzc4ZDY4YjIyYjBkYWJmOTg5ZGM4OGFlYmNiOThkN2Q4ZC4uMjI4M2ZjYjczMzEy
NGY2NWQzMGRhYTM5MDdkM2M0YWZlODQ4YjA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDExLTAzLTI4ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1
cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xp
ZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0wMy0zMCAgQWxlamFuZHJvIEcu
IENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggR1RLIGJ1aWxkIGFmdGVy
IHI4MTk4MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZmEzY2RjZWY3
YjU1MjAyNDMwZTU5N2YxZWQ3NDE2NzNjYjBiMDA1OC4uMTQ4N2EzNWE1MjUyNjliYzJkZGQzNzMy
NDJkY2VhMjhmNjg3MTM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTQwMyw3ICs0MDMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCB1cmwsIHVucmVhY2hhYmxlVVJMLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1
c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAg
ICAgaWYgKCF3ZWJQYWdlKQpAQCAtNDEyLDEwICs0MTIsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAg
ICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxl
IGNsaWVudC4KLSAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJl
Y2VpdmVUaXRsZUZvckZyYW1lKHdlYlBhZ2UsIHRpdGxlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7Cisg
ICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgd2ViUGFnZS0+aW5qZWN0
ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh3ZWJQYWdlLCB0
aXRsZS5zdHJpbmcoKSwgbV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBV
SVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRS
ZWNlaXZlVGl0bGVGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHRpdGxlLCBJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKG1fZnJh
bWUtPmZyYW1lSUQoKSwgdGl0bGUuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKQEAgLTg0Niw3ICs4NDcsOCBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKIAogICAgIFdlYk5hdmlnYXRp
b25EYXRhU3RvcmUgZGF0YTsKICAgICBkYXRhLnVybCA9IGxvYWRlci0+dXJsRm9ySGlzdG9yeSgp
LnN0cmluZygpOwotICAgIGRhdGEudGl0bGUgPSBsb2FkZXItPnRpdGxlKCk7CisgICAgLy8gRklY
TUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgZGF0YS50aXRsZSA9IGxvYWRlci0+dGl0
bGUoKS5zdHJpbmcoKTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6RGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEo
d2ViUGFnZS0+cGFnZUlEKCksIGRhdGEsIG1fZnJhbWUtPmZyYW1lSUQoKSksIDApOwogfQpAQCAt
MTA2MSwxNCArMTA2MywxNSBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBE
b2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIGRhdGEpOwogfQogCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1
cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIFdlYlBhZ2UqIHdlYlBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47
CiAKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KICAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkRpZFVw
ZGF0ZUhpc3RvcnlUaXRsZSh3ZWJQYWdlLT5wYWdlSUQoKSwKLSAgICAgICAgdGl0bGUsIHVybC5z
dHJpbmcoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CisgICAgICAgIHRpdGxlLnN0cmluZygp
LCB1cmwuc3RyaW5nKCksIG1fZnJhbWUtPmZyYW1lSUQoKSksIDApOwogfQogCiBTdHJpbmcgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCAxOTQ4NTQxOTIwNzMxMDJkMGU3ZGU3MjgyYmE3NDAzZGY2YTk4
NTFiLi42YzgzZTlkYjA3ZmQyNGE0ZGRhNDM2MDQ0YzkzNmNjOTgwNGYyN2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTY1LDcgKzE2NSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFj
ZW1lbnQoKTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICAKICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdl
bnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87687</attachid>
            <date>2011-03-31 03:12:34 -0700</date>
            <delta_ts>2011-03-31 04:24:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50961-20110331031711.patch</filename>
            <type>text/plain</type>
            <size>65227</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMDRmNTQwMDZjZWMxZWUz
MGEzYjA5OTE0OGY0YTk0NTYzNTcyNGM2Li40MjhhMjcwODQwMzA1Y2FhZmZlZWJlMzQxZDE2ZGE1
NTE4NGMzODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDMtMjggIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQor
CisgICAgICAgIEludHJvZHVjZSBhIG5ldyBTdHJpbmdXaXRoRGlyZWN0aW9uIG9iamVjdCB0aGF0
IGNhcnJpZXMgYSBTdHJpbmcgYWxvbmcKKyAgICAgICAgd2l0aCB0aGUgVGV4dERpcmVjdGlvbiBh
c3NvY2lhdGVkIHdpdGggdGhlIFN0cmluZy4gIFVzZSB0aGlzIG9iamVjdCBmb3IKKyAgICAgICAg
ZG9jdW1lbnQgdGl0bGVzIHVzZWQgd2l0aGluIFdlYkNvcmUsIGJlY2F1c2UgaW4gSFRNTCB0aGUg
ZGlyZWN0aW9uIG9mCisgICAgICAgIGEgdGl0bGUgY2FuIGJlIHNldCB3aXRoIHRoZSAnZGlyJyBh
dHRyaWJ1dGUuCisKKyAgICAgICAgUHV0IEZJWE1FcyBhdCB0aGUgV2ViS2l0IGxldmVsIHRvIGV4
cG9zZSB0aGUgbmV3IGRpcmVjdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICB0byBjbGllbnRzLgor
CisgICAgICAgIE5vIGJlaGF2aW9yYWwgY2hhbmdlIGludGVuZGVkLCBzbyBubyBuZXcgdGVzdHMu
ICBBIGZvbGxvdy11cCB3aWxsIGV4cG9zZQorICAgICAgICB0aGUgdGl0bGUgZGlyZWN0aW9uIGFu
ZCBob3BlZnVsbHkgY2FuIGJlIGFjY29tcGFuaWVkIGJ5IHRlc3RzIHRoYXQKKyAgICAgICAgdmVy
aWZ5IGl0IGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVRpdGxlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aXRsZSk6CisgICAg
ICAgICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
aXRsZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRp
dGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRs
ZUVsZW1lbnQ6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6dGV4
dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6c2V0VGl0bGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnRpdGxlKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRUaXRsZSk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0
b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbjo6U3Ry
aW5nV2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9u
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb246Om9w
ZXJhdG9yIT0pOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTEtMDMt
MzAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFRy
eSB0byBmaXggdGhlIEVGTCBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYzNkZTI5OTk1
YTU0YjM1MjI3NDYwY2IyZjcwNTk0NGI2MGQxMWFhMS4uNjBhNDhiYjFlZWIxNjM5MDA4MDk1OTEy
NWY5ODEyMDNjYzY3YjhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTM0MSw3ICszNDEsNyBA
QCBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMjJjYW5jZWxNYWluUmVzb3VyY2VMb2FkRVJL
TlNfMTNSZXNvdXJjZUVycm9yRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjI0cmVtb3Zl
UGx1Z0luU3RyZWFtTG9hZGVyRVBOU18xNFJlc291cmNlTG9hZGVyRQogX19aTjdXZWJDb3JlMTRE
b2N1bWVudExvYWRlcjdyZXF1ZXN0RXYKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI4c2V0
RnJhbWVFUE5TXzVGcmFtZUUKLV9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI4c2V0VGl0bGVF
UktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOHNldFRpdGxlRVJL
TlNfMTlTdHJpbmdXaXRoRGlyZWN0aW9uRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlckMx
RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFUktOU18xNFN1YnN0aXR1dGVEYXRhRQogX19aTjdXZWJD
b3JlMTREb2N1bWVudExvYWRlckMyRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFUktOU18xNFN1YnN0
aXR1dGVEYXRhRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlckQyRXYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IGUzZDdmNTNkYjBmZGVmNjBlNjA2YTdlNTA1NmVlNTg4MDI3YThiODYu
LjUxNDQ3MDMyZTAwZjM2ZWQ2YmE1OWZiNGJiODMzMjk5NDcyYTBkNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtMzg5LDggKzM4OSw2IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAs
IG1fY29udGFpbnNWYWxpZGl0eVN0eWxlUnVsZXMoZmFsc2UpCiAgICAgLCBtX3VwZGF0ZUZvY3Vz
QXBwZWFyYW5jZVJlc3RvcmVzU2VsZWN0aW9uKGZhbHNlKQogICAgICwgbV9pZ25vcmVEZXN0cnVj
dGl2ZVdyaXRlQ291bnQoMCkKLSAgICAsIG1fdGl0bGUoIiIpCi0gICAgLCBtX3Jhd1RpdGxlKCIi
KQogICAgICwgbV90aXRsZVNldEV4cGxpY2l0bHkoZmFsc2UpCiAgICAgLCBtX3VwZGF0ZUZvY3Vz
QXBwZWFyYW5jZVRpbWVyKHRoaXMsICZEb2N1bWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlVGlt
ZXJGaXJlZCkKICAgICAsIG1fc3RhcnRUaW1lKGN1cnJlbnRUaW1lKCkpCkBAIC0xMjcxLDggKzEy
NjksOSBAQCBFbGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0
cmluZyYga2V5KSBjb25zdAogICogIDIuIFRyaW0gbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2Vz
CiAgKiAgMy4gQ29sbGFwc2UgaW50ZXJuYWwgd2hpdGVzcGFjZS4KICAqLwotc3RhdGljIGlubGlu
ZSBTdHJpbmcgY2Fub25pY2FsaXplZFRpdGxlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKK3N0YXRpYyBpbmxpbmUgU3RyaW5nV2l0aERpcmVjdGlvbiBjYW5vbmljYWxp
emVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0
aXRsZVdpdGhEaXJlY3Rpb24pCiB7CisgICAgY29uc3QgU3RyaW5nJiB0aXRsZSA9IHRpdGxlV2l0
aERpcmVjdGlvbi5zdHJpbmcoKTsKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRpdGxl
LmNoYXJhY3RlcnMoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aXRsZS5sZW5ndGgoKTsKICAg
ICB1bnNpZ25lZCBpOwpAQCAtMTI4OCw3ICsxMjg3LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcg
Y2Fub25pY2FsaXplZFRpdGxlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKICAgICB9CiAKICAgICBpZiAoaSA9PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiAiIjsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZ1dpdGhEaXJlY3Rpb24oKTsKIAogICAgIC8vIFJlcGxhY2UgY29u
dHJvbCBjaGFyYWN0ZXJzIHdpdGggc3BhY2VzLCBhbmQgYmFja3NsYXNoZXMgd2l0aCBjdXJyZW5j
eSBzeW1ib2xzLCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZS4KICAgICBib29sIHByZXZpb3VzQ2hh
cldhc1dTID0gZmFsc2U7CkBAIC0xMzEzLDE3ICsxMzEyLDE3IEBAIHN0YXRpYyBpbmxpbmUgU3Ry
aW5nIGNhbm9uaWNhbGl6ZWRUaXRsZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCiAgICAgfQogCiAgICAgaWYgKCFidWlsZGVySW5kZXggJiYgYnVmZmVyW2J1aWxkZXJJ
bmRleF0gPT0gJyAnKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBTdHJpbmdX
aXRoRGlyZWN0aW9uKCk7CiAKICAgICBidWZmZXIuc2hyaW5rKGJ1aWxkZXJJbmRleCArIDEpOwog
CiAgICAgLy8gUmVwbGFjZSB0aGUgYmFja3NsYXNoZXMgd2l0aCBjdXJyZW5jeSBzeW1ib2xzIGlm
IHRoZSBlbmNvZGluZyByZXF1aXJlcyBpdC4KICAgICBkb2N1bWVudC0+ZGlzcGxheUJ1ZmZlck1v
ZGlmaWVkQnlFbmNvZGluZyhidWZmZXIuY2hhcmFjdGVycygpLCBidWZmZXIubGVuZ3RoKCkpOwog
ICAgIAotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CisgICAgcmV0dXJuIFN0cmlu
Z1dpdGhEaXJlY3Rpb24oU3RyaW5nOjphZG9wdChidWZmZXIpLCB0aXRsZVdpdGhEaXJlY3Rpb24u
ZGlyZWN0aW9uKCkpOwogfQogCi12b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZShjb25zdCBTdHJp
bmcmIHRpdGxlKQordm9pZCBEb2N1bWVudDo6dXBkYXRlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgaWYgKG1fcmF3VGl0bGUgPT0gdGl0bGUpCiAgICAgICAg
IHJldHVybjsKQEAgLTEzNDksMTYgKzEzNDgsMTcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIHVwZGF0ZVRpdGxl
KHRpdGxlKTsKKyAgICAvLyBUaGUgRE9NIEFQSSBoYXMgbm8gbWV0aG9kIG9mIHNwZWNpZnlpbmcg
ZGlyZWN0aW9uLCBzbyBhc3N1bWUgTFRSLgorICAgIHVwZGF0ZVRpdGxlKFN0cmluZ1dpdGhEaXJl
Y3Rpb24odGl0bGUsIExUUikpOwogCiAgICAgaWYgKG1fdGl0bGVFbGVtZW50KSB7CiAgICAgICAg
IEFTU0VSVChtX3RpdGxlRWxlbWVudC0+aGFzVGFnTmFtZSh0aXRsZVRhZykpOwogICAgICAgICBp
ZiAobV90aXRsZUVsZW1lbnQtPmhhc1RhZ05hbWUodGl0bGVUYWcpKQotICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8SFRNTFRpdGxlRWxlbWVudCo+KG1fdGl0bGVFbGVtZW50LmdldCgpKS0+c2V0VGV4
dChtX3RpdGxlKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPiht
X3RpdGxlRWxlbWVudC5nZXQoKSktPnNldFRleHQodGl0bGUpOwogICAgIH0KIH0KIAotdm9pZCBE
b2N1bWVudDo6c2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUsIEVsZW1lbnQqIHRp
dGxlRWxlbWVudCkKK3ZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlRWxlbWVudChjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiB0aXRsZSwgRWxlbWVudCogdGl0bGVFbGVtZW50KQogewogICAgIGlmICh0
aXRsZUVsZW1lbnQgIT0gbV90aXRsZUVsZW1lbnQpIHsKICAgICAgICAgaWYgKG1fdGl0bGVFbGVt
ZW50IHx8IG1fdGl0bGVTZXRFeHBsaWNpdGx5KQpAQCAtMTM4MywxMyArMTM4MywxMyBAQCB2b2lk
IERvY3VtZW50OjpyZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpCiAgICAgICAgIGZv
ciAoTm9kZSogZSA9IGhlYWRFbGVtZW50LT5maXJzdENoaWxkKCk7IGU7IGUgPSBlLT5uZXh0U2li
bGluZygpKQogICAgICAgICAgICAgaWYgKGUtPmhhc1RhZ05hbWUodGl0bGVUYWcpKSB7CiAgICAg
ICAgICAgICAgICAgSFRNTFRpdGxlRWxlbWVudCogdGl0bGVFbGVtZW50ID0gc3RhdGljX2Nhc3Q8
SFRNTFRpdGxlRWxlbWVudCo+KGUpOwotICAgICAgICAgICAgICAgIHNldFRpdGxlRWxlbWVudCh0
aXRsZUVsZW1lbnQtPnRleHQoKSwgdGl0bGVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBzZXRU
aXRsZUVsZW1lbnQodGl0bGVFbGVtZW50LT50ZXh0V2l0aERpcmVjdGlvbigpLCB0aXRsZUVsZW1l
bnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmICghbV90aXRsZUVsZW1lbnQpCi0gICAgICAgIHVwZGF0ZVRpdGxlKCIiKTsKKyAgICAgICAg
dXBkYXRlVGl0bGUoU3RyaW5nV2l0aERpcmVjdGlvbigpKTsKIH0KIAogU3RyaW5nIERvY3VtZW50
Ojpub2RlTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDA1ZGZiNzZlZjUxZmQx
NTEwZTEwMzgxMzUxZWNjYzBjMTNkYTU3YWMuLjhhODNkNTllNzkzYWE0MmQ4NGQ0NTgzOGM3NTQ5
MGI5MDU3YzBjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJl
Y3Rpb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRz
LmgiCiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KQEAgLTgxMSw5ICs4MTIsMTEgQEAgcHVi
bGljOgogICAgIC8vIFJldHVybnMgMCBpZiB0aGlzIGlzIHRoZSB0b3AgbGV2ZWwgZG9jdW1lbnQu
CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQoKSBjb25zdDsKIAotICAg
IFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICAvLyBVc2VkIGJ5
IERPTSBiaW5kaW5nczsgbm8gZGlyZWN0aW9uIGtub3duLgorICAgIFN0cmluZyB0aXRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGl0bGUuc3RyaW5nKCk7IH0KICAgICB2b2lkIHNldFRpdGxlKGNvbnN0
IFN0cmluZyYpOwotICAgIHZvaWQgc2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUs
IEVsZW1lbnQqIHRpdGxlRWxlbWVudCk7CisKKyAgICB2b2lkIHNldFRpdGxlRWxlbWVudChjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgRWxlbWVudCogdGl0bGVFbGVtZW50KTsKICAgICB2b2lk
IHJlbW92ZVRpdGxlKEVsZW1lbnQqIHRpdGxlRWxlbWVudCk7CiAKICAgICBTdHJpbmcgY29va2ll
KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKQEAgLTExNTgsNyArMTE2MSw3IEBAIHByaXZhdGU6CiAK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlVGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSk7CisgICAgdm9pZCB1cGRhdGVUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJik7CiAgICAgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lckZpcmVkKFRp
bWVyPERvY3VtZW50PiopOwogICAgIHZvaWQgdXBkYXRlQmFzZVVSTCgpOwogCkBAIC0xMjk1LDgg
KzEyOTgsOCBAQCBwcml2YXRlOgogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvI2lnbm9yZS1kZXN0cnVjdGl2ZS13cml0ZXMtY291bnRlcgog
ICAgIHVuc2lnbmVkIG1faWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50OwogCi0gICAgU3RyaW5n
IG1fdGl0bGU7Ci0gICAgU3RyaW5nIG1fcmF3VGl0bGU7CisgICAgU3RyaW5nV2l0aERpcmVjdGlv
biBtX3RpdGxlOworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV9yYXdUaXRsZTsKICAgICBib29s
IG1fdGl0bGVTZXRFeHBsaWNpdGx5OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX3RpdGxlRWxlbWVu
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKaW5kZXggNzhjOGI2
YTcxMzkyMWRjZjA2ZjU3Mzc1MTgyYWYxMTFmODIxODllMy4uYjA0NmM3YjU5MDU4MmEwOTAxZTZh
ODQxMDJkNmQyODcxYTNjMTA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1l
bnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiVGV4
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMyw3ICszNCw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKIGlubGluZSBIVE1MVGl0bGVFbGVtZW50OjpIVE1MVGl0bGVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV90aXRsZSgiIikKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0aXRsZVRhZykpOwogfQpAQCAtNTcsNyArNTcsNyBAQCB2
b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogCiB2b2lkIEhUTUxU
aXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSog
YmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsK
LSAgICBtX3RpdGxlID0gdGV4dCgpOworICAgIG1fdGl0bGUgPSB0ZXh0V2l0aERpcmVjdGlvbigp
OwogICAgIGlmIChpbkRvY3VtZW50KCkpCiAgICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxlRWxl
bWVudChtX3RpdGxlLCB0aGlzKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNo
YW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRh
KTsKQEAgLTcxLDEwICs3MSwyMCBAQCBTdHJpbmcgSFRNTFRpdGxlRWxlbWVudDo6dGV4dCgpIGNv
bnN0CiAgICAgICAgIGlmIChuLT5pc1RleHROb2RlKCkpCiAgICAgICAgICAgICB2YWwgKz0gc3Rh
dGljX2Nhc3Q8VGV4dCo+KG4pLT5kYXRhKCk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHZh
bDsKIH0KIAorU3RyaW5nV2l0aERpcmVjdGlvbiBIVE1MVGl0bGVFbGVtZW50Ojp0ZXh0V2l0aERp
cmVjdGlvbigpCit7CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFI7CisgICAgaWYg
KFJlbmRlclN0eWxlKiBzdHlsZSA9IGNvbXB1dGVkU3R5bGUoKSkKKyAgICAgICAgZGlyZWN0aW9u
ID0gc3R5bGUtPmRpcmVjdGlvbigpOworICAgIGVsc2UgaWYgKFJlZlB0cjxSZW5kZXJTdHlsZT4g
c3R5bGUgPSBzdHlsZUZvclJlbmRlcmVyKCkpCisgICAgICAgIGRpcmVjdGlvbiA9IHN0eWxlLT5k
aXJlY3Rpb24oKTsKKyAgICByZXR1cm4gU3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0KCksIGRpcmVj
dGlvbik7Cit9CisKIHZvaWQgSFRNTFRpdGxlRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcg
JnZhbHVlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUaXRsZUVsZW1lbnQuaAppbmRleCA4YjkwZjU2NGYzYWFmMTYxMDMxNDZhYzA1ODIyZjZkOWU2
YTFmYWUxLi42OTIwOTk3ODM5NWIwNDUzYjI0NWVjNDIzNTEwNDAyOWZkNDI0NDhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmlu
ZSBIVE1MVGl0bGVFbGVtZW50X2gKIAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMz
LDYgKzM0LDggQEAgcHVibGljOgogICAgIFN0cmluZyB0ZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogCisgICAgU3RyaW5nV2l0aERpcmVjdGlvbiB0ZXh0V2l0
aERpcmVjdGlvbigpOworCiBwcml2YXRlOgogICAgIEhUTUxUaXRsZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTQwLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBj
aGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3Jl
Q2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0g
MCk7CiAKLSAgICBTdHJpbmcgbV90aXRsZTsKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fdGl0
bGU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAppbmRleCAxMjEwNDViNWI5OWZmYTA3OWI2MDU5ZjdlMTk3YWRkNGQzZGJjM2QyLi4x
NDM3YWRjNGU2ZGI1NzRiZjcwOTE5YzRjYjAwNWJjMjQ5MjIzZGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCkKICAgICBtX3N0b3BSZWNvcmRpbmdS
ZXNwb25zZXMgPSB0cnVlOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpzZXRUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlKQordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCAx
Zjg4MjcyYjE5MjAwNWQ2MmUzMjA3MTcwYmY3YzViODI1NzkyYmE1Li5jNmYwYmM1YjI2OTQ0ZmVi
Zjk2NGJmZGRjMjY1N2I3NjY3NWUzNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CisjaW5jbHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgogI2luY2x1ZGUgIlN1YnN0aXR1dGVE
YXRhLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAt
MTIxLDcgKzEyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCB3YXNPbmxv
YWRIYW5kbGVkKCkgeyByZXR1cm4gbV93YXNPbmxvYWRIYW5kbGVkOyB9CiAgICAgICAgIGJvb2wg
aXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByaW1hcnlMb2Fk
Q29tcGxldGUoYm9vbCk7Ci0gICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7Cisg
ICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgICAg
ICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYg
b3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQog
CkBAIC0xNjgsNyArMTY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIGxhc3RDaGVja2VkUmVxdWVzdCgpICB7IHJldHVybiBtX2xhc3RDaGVj
a2VkUmVxdWVzdDsgfQogCiAgICAgICAgIHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwot
ICAgICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7
IH0KKyAgICAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VUaXRsZTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJY29uVVJMOyB9CiAKICAgICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5
KCkgY29uc3Q7CkBAIC0yOTgsNyArMjk5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIG1faXNDbGllbnRSZWRpcmVjdDsKICAgICAgICAgYm9vbCBtX3dhc09ubG9hZEhhbmRs
ZWQ7CiAKLSAgICAgICAgU3RyaW5nIG1fcGFnZVRpdGxlOworICAgICAgICBTdHJpbmdXaXRoRGly
ZWN0aW9uIG1fcGFnZVRpdGxlOwogICAgICAgICBTdHJpbmcgbV9wYWdlSWNvblVSTDsKIAogICAg
ICAgICBTdHJpbmcgbV9vdmVycmlkZUVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCmluZGV4IDU5ZmQ4OTc5Y2JlZWZjY2ZlOTA1YWRlN2QyNmZmYjFkZGFlNmU5YTMuLjZh
Y2Y5OTIxOWJhY2UzY2MyZDAyMzMyOWZkNjFlN2YwM2ZiMjU1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKQEAgLTI2Niw3ICsyNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpAQCAtMzM0LDcgKzMzNCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVu
dCgpIHsgfQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVE
b2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkgeyByZXR1cm4gRG9jdW1lbnRMb2FkZXI6OmNyZWF0
ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUo
Y29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRs
ZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpIHsgfQogCiAgICAgdmly
dHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSB7IHJldHVybiAiIjsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAzNDdhNDFlYWFlM2FiNjE3ZGEzMDFj
YWMxMjk3NTI1N2RiODRhNTlkLi5mMTAyMGUxZjM5Y2E3ZTQyOTgzNWQ2YzMwNzYxODZjODc0MmFm
YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTYxMCw3ICs2MTAs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSgpCiAgICAgZGlzcGF0Y2hE
aWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpOwogICAgIAogICAgIGlmIChtX2RvY3Vt
ZW50TG9hZGVyKSB7Ci0gICAgICAgIFN0cmluZyBwdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50
aXRsZSgpOworICAgICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHB0aXRsZSA9IG1fZG9jdW1lbnRM
b2FkZXItPnRpdGxlKCk7CiAgICAgICAgIC8vIElmIHdlIGhhdmUgYSB0aXRsZSBsZXQgdGhlIFdl
YlZpZXcga25vdyBhYm91dCBpdC4KICAgICAgICAgaWYgKCFwdGl0bGUuaXNOdWxsKCkpCiAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUocHRpdGxlKTsKQEAgLTE5
MjQsOSArMTkyNCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgp
CiAgICAgICAgIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogCiAgICAgICAgIC8vIElmIHdlIGhh
dmUgYSB0aXRsZSBsZXQgdGhlIFdlYlZpZXcga25vdyBhYm91dCBpdC4gCi0gICAgICAgIFN0cmlu
ZyB0aXRsZSA9IG1fZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7Ci0gICAgICAgIGlmICghdGl0bGUu
aXNOdWxsKCkpIAotICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KHRpdGxlKTsgICAgICAgICAKKyAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiB0aXRsZSA9IG1f
ZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7CisgICAgICAgIGlmICghdGl0bGUuaXNOdWxsKCkpCisg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwogCiAg
ICAgICAgIGNoZWNrQ29tcGxldGVkKCk7CiAgICAgfSBlbHNlIHsgICAgICAgIApAQCAtMzM3NSw3
ICszMzc1LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLAogfQogI2VuZGlmCiAKLXZvaWQgRnJh
bWVMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9hZGVy
OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBkb2N1
bWVudExvYWRlcigpLT5zZXRUaXRsZSh0aXRsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCmluZGV4IDFmYjllM2M0NWY0OTBlMjk5ZmFmYzU0ZjRkMzVlNjdlNGViMTI5NWMuLjkw
NjJmMjE1Y2VkODE1OWZkYTg5Yzg1YWY2ZTE2ZDgxYWM1ZjUxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIFNjcmlwdFZhbHVlOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBTdHJpbmdXaXRoRGlyZWN0aW9uOwogY2xhc3MgU3Vic3RpdHV0
ZURhdGE7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0yODIsNyArMjgzLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxBbmRDbGVhcigpOwogCi0gICAgdm9pZCBzZXRUaXRs
ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mKTsKICAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lk
IGNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCA3ZDY0OTEyYmRiNDEzYWU5NTlhYjBlOGY1YWNjYWFjNjYyZmZmOTkz
Li5kNWQ0OWVjOWM3MDhhOWM3ZTg5NzczYjFkNjM4N2FiZWZiN2VmMmRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtODQsNiArODQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKICAgICBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKICAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CisgICAgY2xhc3MgU3RyaW5nV2l0
aERpcmVjdGlvbjsKICAgICBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKICAgICBjbGFzcyBXaWRnZXQ7
CiAKQEAgLTEzOSw3ICsxNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKQEAgLTIyNyw3ICsyMjgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2Vt
ZW50KCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4g
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBLVVJMJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKSA9IDA7CiAKICAgICAg
ICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSA9IDA7CiAgICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggYjhiZWNl
OWI3NTBjNTM4NmQ4YTNkOGUxZDI4YzhkMWVkN2IzMWJiOS4uYzFjNTQxNDMyYWFkZDlmNWJkYmJh
ZDYyOWIwZjhhMDQ2YjVhYThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
dXBkYXRlRm9yQmFja0ZvcndhcmROYXZpZ2F0aW9uKCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAg
ICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBMT0co
SGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBiYWNrL2Zvcndh
cmQgbmF2aWdhdGlvbiBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExv
YWRlcigpLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coSGlzdG9yeSwgIldl
YkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBiYWNrL2ZvcndhcmQgbmF2aWdhdGlv
biBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRs
ZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKICAgICAvLyBNdXN0IGdyYWIg
dGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIGJlZm9yZSBkaXN0dXJiaW5nIGl0CkBAIC0yODEs
NyArMjgxLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVsb2FkKCkKIHsK
ICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExv
YWRlcigpKQotICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBI
aXN0b3J5IGZvciByZWxvYWQgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3Rvcnks
ICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVsb2FkIGluIGZyYW1lICVz
IiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIAogICAgIGlmIChtX2N1cnJlbnRJdGVtKSB7CkBAIC0z
NDMsNyArMzQzLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYg
KG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBMT0coSGlzdG9y
eSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRpcmVjdCBsb2FkIGlu
IGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVw
ZGF0aW5nIEhpc3RvcnkgZm9yIHJlZGlyZWN0IGxvYWQgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKICNlbmRpZgogICAgIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRp
bmdzKCk7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRl
Rm9yQ2xpZW50UmVkaXJlY3QoKQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFt
ZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2Vi
Q29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGNsaWVudCByZWRpcmVjdCBpbiBmcmFt
ZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGlu
ZyBIaXN0b3J5IGZvciBjbGllbnQgcmVkaXJlY3QgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICNlbmRpZgogCiAgICAgLy8gQ2xlYXIgb3V0IGZvcm0gZGF0YSBzbyB3ZSBkb24ndCB0cnkgdG8g
cmVzdG9yZSBpdCBpbnRvIHRoZSBpbmNvbWluZyBwYWdlLiAgTXVzdCBoYXBwZW4gYWZ0ZXIKQEAg
LTQxMCw3ICs0MTAsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQo
KQogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwogI2lm
ICFMT0dfRElTQUJMRUQKICAgICBpZiAoZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCi0g
ICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9y
IGNvbW1pdCBpbiBmcmFtZSAlcyIsIGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT50aXRs
ZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5
OiBVcGRhdGluZyBIaXN0b3J5IGZvciBjb21taXQgaW4gZnJhbWUgJXMiLCBmcmFtZUxvYWRlci0+
ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRp
ZgogICAgIEZyYW1lTG9hZFR5cGUgdHlwZSA9IGZyYW1lTG9hZGVyLT5sb2FkVHlwZSgpOwogICAg
IGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUodHlwZSkKQEAgLTUyNiwxMCArNTI2LDExIEBAIHZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQog
ICAgIG1fY3VycmVudEl0ZW0gPSBpdGVtOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjpz
ZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRp
dGxlKQogewogICAgIGlmIChtX2N1cnJlbnRJdGVtKQotICAgICAgICBtX2N1cnJlbnRJdGVtLT5z
ZXRUaXRsZSh0aXRsZSk7CisgICAgICAgIC8vIEZJWE1FOiBtYWtlIHVzZSBvZiB0aXRsZS5kaXJl
Y3Rpb24oKSBhcyB3ZWxsLgorICAgICAgICBtX2N1cnJlbnRJdGVtLT5zZXRUaXRsZSh0aXRsZS5z
dHJpbmcoKSk7CiB9CiAKIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxk
QmVSZXBsYWNlZCgpIGNvbnN0CkBAIC01NzYsMTIgKzU3NywxMyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjppbml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICAKICAgICBGcmFt
ZSogcGFyZW50RnJhbWUgPSBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpOwogICAgIFN0cmluZyBw
YXJlbnQgPSBwYXJlbnRGcmFtZSA/IHBhcmVudEZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKSA6
ICIiOwotICAgIFN0cmluZyB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOworICAgIFN0
cmluZ1dpdGhEaXJlY3Rpb24gdGl0bGUgPSBkb2N1bWVudExvYWRlci0+dGl0bGUoKTsKIAogICAg
IGl0ZW0tPnNldFVSTCh1cmwpOwogICAgIGl0ZW0tPnNldFRhcmdldChtX2ZyYW1lLT50cmVlKCkt
PnVuaXF1ZU5hbWUoKSk7CiAgICAgaXRlbS0+c2V0UGFyZW50KHBhcmVudCk7Ci0gICAgaXRlbS0+
c2V0VGl0bGUodGl0bGUpOworICAgIC8vIEZJWE1FOiBzaG91bGQgc3RvcmUgdGl0bGUgZGlyZWN0
aW9uYWxpdHkgaW4gaGlzdG9yeSBhcyB3ZWxsLgorICAgIGl0ZW0tPnNldFRpdGxlKHRpdGxlLnN0
cmluZygpKTsKICAgICBpdGVtLT5zZXRPcmlnaW5hbFVSTFN0cmluZyhvcmlnaW5hbFVSTC5zdHJp
bmcoKSk7CiAKICAgICBpZiAoIXVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSB8fCBkb2N1bWVudExv
YWRlci0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKaW5kZXggNTlmMTFhMjVjOTMzZDNkN2M5NzI1MWI5
MGE5M2IzMmQ1NmI5OWFkNC4uMTVlMTJjMDk5YTNlZjA3Mjc1NGU2N2U2Y2Q1NjdmNmJlMDhiYTVk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKQEAgLTQwLDYg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRnJhbWU7CiBjbGFzcyBIaXN0b3J5
SXRlbTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK2NsYXNzIFN0cmluZ1dpdGhEaXJl
Y3Rpb247CiAKIGNsYXNzIEhpc3RvcnlDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShIaXN0b3J5Q29udHJvbGxlcik7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAg
IEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEl0ZW0u
Z2V0KCk7IH0KICAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKik7Ci0gICAgdm9p
ZCBzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0Q3VycmVu
dEl0ZW1UaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgYm9vbCBjdXJyZW50
SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdDsKIAogICAgIEhpc3RvcnlJdGVtKiBwcmV2aW91
c0l0ZW0oKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzSXRlbS5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYTM0YWI2YmZmOGNkOTEwNGUzNTFjNWMxNzEyOWMzZmZhMmEyZWM0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9u
LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RyaW5nV2l0aERpcmVjdGlvbl9oCisjZGVmaW5l
IFN0cmluZ1dpdGhEaXJlY3Rpb25faAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
bmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gSW4g
c29tZSBjaXJjdW1zdGFuY2VzIHdlIHdhbnQgdG8gc3RvcmUgYSBTdHJpbmcgYWxvbmcgd2l0aCB0
aGUgVGV4dERpcmVjdGlvbgorLy8gb2YgdGhlIFN0cmluZyBhcyBsZWFybmVkIGZyb20gdGhlIGNv
bnRleHQgb2YgdGhlIFN0cmluZy4gRm9yIGV4YW1wbGUsCisvLyBjb25zaWRlciBzdG9yaW5nIHRo
ZSB0aXRsZSBkZXJpdmVkIGZyb20gPHRpdGxlIGRpcj0ncnRsJz5zb21lIHRpdGxlPC90aXRsZT4K
Ky8vIGluIHRoZSBoaXN0b3J5LgorLy8KKy8vIE5vdGUgdGhhdCBpcyBleHBsaWNpdGx5ICpub3Qq
IHRoZSBkaXJlY3Rpb24gb2YgdGhlIHN0cmluZyBhcyBsZWFybmVkCisvLyBmcm9tIHRoZSBjaGFy
YWN0ZXJzIG9mIHRoZSBzdHJpbmc7IGl0J3MgZXh0cmEgbWV0YWRhdGEgd2UgaGF2ZSBleHRlcm5h
bAorLy8gdG8gdGhlIHN0cmluZy4KK2NsYXNzIFN0cmluZ1dpdGhEaXJlY3Rpb24geworcHVibGlj
OgorICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24oKSB7fQorICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24o
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIFRleHREaXJlY3Rpb24gZGlyKSA6IG1fc3RyaW5nKHN0cmlu
ZyksIG1fZGlyZWN0aW9uKGRpcikge30KKworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
b3RoZXIubV9zdHJpbmcgPT0gbV9zdHJpbmcgJiYgb3RoZXIubV9kaXJlY3Rpb24gPT0gbV9kaXJl
Y3Rpb247CisgICAgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgoKnRoaXMpID09IG90aGVyKTsgfQorCitwcml2
YXRlOgorICAgIFN0cmluZyBtX3N0cmluZzsKKyAgICBUZXh0RGlyZWN0aW9uIG1fZGlyZWN0aW9u
OworfTsKKworfQorCisjZW5kaWYgLy8gU3RyaW5nV2l0aERpcmVjdGlvbl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCmluZGV4IGViY2RkYjQ2YTAyOWQ5YjM0ZGNlYzI1NWEy
YThjZGIxYjViMTgxZWMuLmQ5MjU2MDMxMWU3NjYyNzZjNGY2N2E4OTkxNjBkMmEzOWI3Zjg0M2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCkBAIC00MCw3ICs0MCw4IEBA
IHZvaWQgU1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBpZiAoZmlyc3RDaGls
ZCgpKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRUaXRsZUVsZW1lbnQodGV4dENvbnRlbnQoKSwg
dGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiBkb2VzIFNWRyBoYXZlIGEgdGl0bGUgdGV4dCBkaXJl
Y3Rpb24/CisgICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxlRWxlbWVudChTdHJpbmdXaXRoRGly
ZWN0aW9uKHRleHRDb250ZW50KCksIExUUiksIHRoaXMpOwogfQogCiB2b2lkIFNWR1RpdGxlRWxl
bWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCkBAIC01Myw3ICs1NCw4IEBAIHZvaWQgU1ZHVGl0
bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJl
Zm9yZUNoYW5nZSwKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5
UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogICAg
IGlmIChpbkRvY3VtZW50KCkpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxlRWxlbWVudCh0
ZXh0Q29udGVudCgpLCB0aGlzKTsKKyAgICAgICAgLy8gRklYTUU6IGRvZXMgU1ZHIGhhdmUgdGl0
bGUgdGV4dCBkaXJlY3Rpb24/CisgICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxlRWxlbWVudChT
dHJpbmdXaXRoRGlyZWN0aW9uKHRleHRDb250ZW50KCksIExUUiksIHRoaXMpOwogfQogCiBBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGl0bGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhiZWNkYmE4NDVjY2U4
MGU0Zjk0YjU1OTkxM2I2MGVkNWNjOThmOTcuLjczOWQxN2Q5OWI5NmJiNzc3YjI2N2RmYmUxMTcx
YjkyZmQ2ODQ4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3Vw
cG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGll
bnQgaW50ZXJmYWNlLgorCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OnNldFRp
dGxlKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAgICog
c3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YVNvdXJj
ZUltcGw6OnBhZ2VUaXRsZSk6CisKIDIwMTEtMDMtMjkgIEpvaG4gQWJkLUVsLU1hbGVrICA8amFt
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAK
aW5kZXggNjQ3YTcwYzI4NWI2N2NlMGQ1NGEzYWUwODgxNDk4ZTExNDM2ZDY1My4uY2Q3NjQ5MTA5
ZDFiNWU0MDZlNzI1NDY3ZDY2M2U4MzBmOWFlODMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCkBAIC03MzQsMTAgKzcz
NCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiB0aXRsZSkKIHsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4K
ICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG1fd2ViRnJhbWUtPmNsaWVu
dCgpLT5kaWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUpOworICAgICAgICBtX3dlYkZy
YW1lLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlLnN0cmluZygp
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKQpAQCAtMTMyOCw3ICsxMzI5LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpjcmVhdGVEb2N1bWVudExvYWRlcigKICAgICByZXR1cm4gZHMu
cmVsZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6c2V0VGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEltcGw6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluZm9ybSBjb25zdW1lciBvZiBjaGFuZ2VzIHRv
IHRoZSB0aXRsZS4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmgKaW5kZXggZjE5YzI2YzUzOWExYzFiNWEyNjU3YjdhYTI1ODk1YzFi
MmY1MjEyNi4uMmIxYzI2ZjVkZGJjY2NhZGQyNmVhNDhhZjhkOGFkZjQ1YjJiYTc4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgK
QEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2ls
bENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0
bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJD
b3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExv
YWRlcigKICAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
V1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNo
ZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0
aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcAppbmRl
eCAxMzY2YTgwOTRhNTA2Mzk3ZTA5NDgzNDA4MDI2NWRiY2E3YmU2NjFhLi4zMTcwYWZmYmU0YjRi
MWY4NDBjNjc1OTBlOWQ2YmFhZDU3ODUwZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEYXRhU291cmNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCkBAIC04Miw3ICs4Miw4IEBAIHZvaWQgV2Vi
RGF0YVNvdXJjZUltcGw6OnJlZGlyZWN0Q2hhaW4oV2ViVmVjdG9yPFdlYlVSTD4mIHJlc3VsdCkg
Y29uc3QKIAogV2ViU3RyaW5nIFdlYkRhdGFTb3VyY2VJbXBsOjpwYWdlVGl0bGUoKSBjb25zdAog
ewotICAgIHJldHVybiB0aXRsZSgpOworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRp
dGxlIGFzIHdlbGwuCisgICAgcmV0dXJuIHRpdGxlKCkuc3RyaW5nKCk7CiB9CiAKIFdlYk5hdmln
YXRpb25UeXBlIFdlYkRhdGFTb3VyY2VJbXBsOjpuYXZpZ2F0aW9uVHlwZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKaW5kZXggMzVkYTA5YzM0OTZjZTM3MGVlZmI5ZWEyOTc3YWVmMzI0NjBkMDA4ZS4u
NmJhNGQ3MGI1NTllZmFlZTFlM2NmMjRhNjE4ODVmM2MzMWFiYWYyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTI4ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8g
bmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisKIDIwMTEtMDMtMjkgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlv
IEdvbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCmluZGV4IGZhMzRhYzljMGQ3ZDYwODE5ODI1ODczMzQx
M2YyNWFiMmE5MGJhMjYuLjk2Yjg1OWJmZTk1NjFlN2I4OTI3ODE0NjllNzFhM2E4MmZjZDQ5Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHAKQEAgLTU3Niw5ICs1NzYsMTAgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIGV3
a192aWV3X2xvYWRfcHJvdmlzaW9uYWwobV92aWV3KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewotICAgIENTdHJpbmcgY3MgPSB0aXRsZS51dGY4
KCk7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgQ1N0cmluZyBj
cyA9IHRpdGxlLnN0cmluZygpLnV0ZjgoKTsKICAgICBld2tfZnJhbWVfdGl0bGVfc2V0KG1fZnJh
bWUsIGNzLmRhdGEoKSk7CiAKICAgICBpZiAoZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQobV92aWV3
KSAhPSBtX2ZyYW1lKQpAQCAtNzA5LDcgKzcxMCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwp
CiB7CiAgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSBy
aWdodCBjYWxsYmFjawogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKaW5kZXggNWVhNGU4Y2FjOTdjMGJhOWU4ZWU2
OWM5MjI3NzM5Y2UxNzgxYTQwYy4uYmQwN2EzMDM0YjYxODZiMDRhYjA0OWUzZGYxMjBiYmQ1Zjlj
NDVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgY2xhc3MgRnJhbWVMb2Fk
ZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3Ry
aW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6
IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JE
YXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPERv
Y3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJik7CiAKICAgICB2
aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggODg0NTJjMjdhYTYxOGZiYWEyYjIyNjYwN2ZjMzA4MTdlOWE2YmRmYS4uM2M1NGRmYmVlNDMw
NmMzZjBlMDZlZjhhMjQwMTRlZGRhZGUzM2Q3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDExLTAzLTI4ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hv
dWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9h
ZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oOgorCiAyMDExLTAzLTMwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAKaW5kZXggY2E4YmY5YTA4OWFkNzM4M2M4ZDQ1MzI3YTg3ZDg1MzRiODVkZTA5Ny4uNWM1OTRl
ODU2YmIwYWY0ZDFmMmNkZWUwMzU2NTI3NDJkZmMxYjgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApA
QCAtOTQ5LDE0ICs5NDksMTUgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgbm90aWZ5U3RhdHVzKG1fZnJhbWUsIFdFQktJVF9M
T0FEX1BST1ZJU0lPTkFMKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRp
dGxlKQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IG1fZnJhbWUtPnByaXY7CiAgICAgZ19m
cmVlKHByaXYtPnRpdGxlKTsKLSAgICBwcml2LT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlLnV0Zjgo
KS5kYXRhKCkpOworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgIHBy
aXYtPnRpdGxlID0gZ19zdHJkdXAodGl0bGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAg
ICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9mcmFtZSwgInRpdGxlLWNoYW5nZWQiLCBwcml2LT50
aXRsZSk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fZnJhbWUpLCAidGl0bGUiKTsK
QEAgLTExMTksMTEgKzExMjAsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6cHJlcGFyZUZv
ckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
S1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBXZWJLaXRXZWJG
cmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IG1fZnJhbWUtPnByaXY7CiAgICAgZ19mcmVlKGZyYW1l
RGF0YS0+dGl0bGUpOwotICAgIGZyYW1lRGF0YS0+dGl0bGUgPSBnX3N0cmR1cCh0aXRsZS51dGY4
KCkuZGF0YSgpKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBm
cmFtZURhdGEtPnRpdGxlID0gZ19zdHJkdXAodGl0bGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRM
ZW5ndGgoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGludCBsZW5ndGhSZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGI3ZWFkN2FmNWViYjllNjc2
NWM5NDZjMzU1YWM5OWU4OWMxZTk1NDEuLjk3ZWIwZmY2ODZhMzZjNTE5MWFmNGUwMmE2YTdkZjhm
NDdhZDYyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaApAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0cmluZyYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nV2l0aERpcmVjdGlvbiYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBs
YWNlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpT
dHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCiAgICAg
ICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCA3NzU3ZmU3OTIzMTY1ZGZjOGNiMWNkNGRlNGU5NTM4
M2ViMDlmOWRmLi4xMTg1YzI2YmNmYWNmNWFmYjRjMjllMDU1Mzk1NGZhNmMzMzExYjE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTI4ICBFdmFuIE1hcnRp
biAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAg
ICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaDoKKwog
MjAxMS0wMy0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwIGIvU291cmNlL1dlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAppbmRleCAy
NGE5OGQ1NjM0Mjg2ZTdiNDQ5YzExMGIzZTFkYjUzYmE4NWUwZDBiLi5jMDRjYjdkNGM2ZjFjOGI2
YThlNDJiZTA1MmZkOTQyMjExMTM0NDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAKQEAg
LTIzNywxMyArMjM3LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhUaXRsZSYgdGl0bGUpCiB7CiAgICAgaWYgKG1fd2ViVmlldykgewotICAgICAg
ICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZSk7Ci0KKyAgICAgICAgLy8gRklYTUU6IHVz
ZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAgIG1fd2ViVmlldy0+U2V0UGFnZVRpdGxlKHRp
dGxlLm1fc3RyaW5nKCkpOwogICAgICAgICBCTWVzc2FnZSBtZXNzYWdlKFRJVExFX0NIQU5HRUQp
OwotICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidGl0bGUiLCB0aXRsZSk7CisgICAgICAgIG1l
c3NhZ2UuQWRkU3RyaW5nKCJ0aXRsZSIsIHRpdGxlLnN0cmluZygpKTsKICAgICAgICAgbV9tZXNz
ZW5nZXItPlNlbmRNZXNzYWdlKCZtZXNzYWdlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaCBi
L1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5oCmluZGV4IGRiZDMwODRjYTRjYjdmMjlhZWI3NmQyNDRmZGRkOTMwZTk4OTcwYjIuLmY1NzY1
NDVjODZhNmJhNDM3YTFkNjZkN2NmZWZlMjc0NWZkYjc2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5oCkBAIC0xMDIsNyArMTAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkSGlzdG9yeUl0ZW1Gb3JG
cmFnbWVudFNjcm9sbCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
S1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYsIGNvbnN0IEtVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdl
bnQoY29uc3QgS1VSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYWZhYTFlMzEzYTZkZjIwZDVl
NGZjZjQ0YzIyMjY2Y2JhMTI1YTE2Zi4uYWRmY2IxNmMxZTQzNDMyNDFiMGIyODQ3NmZiYjE2ZTY4
NjJmM2YyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTI4ICBF
dmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJp
YnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5
NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKToKKwogMjAxMS0wMy0zMCAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRmZTU2NjRkZDYwNTE2YzExODZlODU1ZGIyM2IzN2U1
MjRkMzgzNjYuLmQ1OTE3YjhmNTRjMDcwMzkzMGIzYjI3YjE3ZGVhNDVkZjc4MjBmZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6
OlN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1p
dExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVE
b2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0
IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNy
ZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5h
bWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KaW5kZXggOTJjMmIwM2IxYzljZjBjOGJiZWYxMTExN2EwMDhmZGI5MzYzZTBjMC4u
ZTRkOGZhMTAwOTczOWI1YjZiNDhjYTZhMDViMTg2OGNhMGZkYWI0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KQEAgLTYyNCwxMiArNjI0LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdh
dGUoaW1wbGVtZW50YXRpb25zLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lRnVuYywg
d2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZTopLCBtX3dlYkZyYW1lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1f
d2ViRnJhbWUuZ2V0KCkpOyAgIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRp
b25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRlSW1w
bGVtZW50YXRpb25zKHdlYlZpZXcpOwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2Vp
dmVUaXRsZUZvckZyYW1lRnVuYykKLSAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxl
bWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0
b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUs
IG1fd2ViRnJhbWUuZ2V0KCkpOworICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0
aXRsZS4KKyAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlk
UmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRS
ZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIG1fd2Vi
RnJhbWUuZ2V0KCkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENoYW5nZUljb25zKCkKQEAgLTExNzksNyArMTE4MCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBS
ZXNvCiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViVmlldyogdmlldyA9IGdl
dFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgCkBAIC0xMTg4LDcgKzExODksOCBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBLVVJMJiB1cmwpCiAgICAgICAgIGlmICghaW1wbGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1
bmMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgQ2FsbEhpc3Rv
cnlEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPnNldFRpdGxlRnVuYywgdmlldywgQHNlbGVjdG9y
KHdlYlZpZXc6dXBkYXRlSGlzdG9yeVRpdGxlOmZvclVSTDopLCAoTlNTdHJpbmcgKil0aXRsZSwg
KE5TU3RyaW5nICopdXJsKTsKKyAgICAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0
bGUuCisgICAgICAgIENhbGxIaXN0b3J5RGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5zZXRUaXRs
ZUZ1bmMsIHZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnVwZGF0ZUhpc3RvcnlUaXRsZTpmb3JVUkw6
KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIChOU1N0cmluZyAqKXVybCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDFhOTIyYWQ5NWI5Mzc2ZTMw
ZjY4NzJiM2ViNTk0Njg4MzMwYzY0ZjkuLmEzY2UyN2MzZDc2MTQ5ZDNmOGM0MDc2MTEzNzVmYjhm
MmQ5ZTJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMjggIEV2
YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmli
dXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2
MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDExLTAz
LTMwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBbnRvbmlvIEdvbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggZDMxODQ5NGJhZWNjMzJlODA4
MTlmOWZmNjQyYzk2ZWY4YmZjYjdjYi4uOTMwZWEwYmM0MmExYmNjOTY1ZDFhMzJmOWYxMGI2ZmU2
MzIyODBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC00NDcsOCArNDQ3LDkgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIH0KIAogCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogeworICAgIC8vIEZJWE1F
OiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFj
a3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlVGl0bGU6ICVzXG4iLCBxUHJpbnRh
YmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSwgcVByaW50
YWJsZShRU3RyaW5nKHRpdGxlKSkpOwogCkBAIC03MDksMTYgKzcxMCwxNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogewogfQog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUoY29u
c3QgU3RyaW5nV2l0aFRpdGxlJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIFVz
ZWQgYnkgQXBwbGUgV2ViS2l0IHRvIHVwZGF0ZSB0aGUgdGl0bGUgb2YgYW4gZXhpc3RpbmcgaGlz
dG9yeSBpdGVtLgogICAgIC8vIFF0V2ViS2l0IGRvZXNuJ3QgYWNjb21vZGF0ZSB0aGlzIG9uIGhp
c3RvcnkgaXRlbXMuIElmIGl0IGV2ZXIgZG9lcywKICAgICAvLyBpdCBzaG91bGQgYmUgcHJpdmF0
ZUJyb3dzaW5nLWF3YXJlLkZvciBub3csIHdlIGFyZSBqdXN0IHBhc3NpbmcKICAgICAvLyBnbG9i
YWxoaXN0b3J5IGxheW91dCB0ZXN0cy4KKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0
aXRsZS4KICAgICBpZiAoZHVtcEhpc3RvcnlDYWxsYmFja3MpIHsKICAgICAgICAgcHJpbnRmKCJX
ZWJWaWV3IHVwZGF0ZWQgdGhlIHRpdGxlIGZvciBoaXN0b3J5IFVSTCBcIiVzXCIgdG8gXCIlc1wi
LlxuIiwKICAgICAgICAgICAgIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQodXJsKSksCi0gICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmcodGl0bGUpKSk7
CisgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmcodGl0bGUuc3RyaW5nKCkpKSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5oCmluZGV4IDNlYzVmMjBkYjgyZjBlNjg0NTM4ZmM1NjRiNGJmMTNkZWZk
N2Y4MmEuLjMxNGE1NTBmZjdkM2VjM2UwYjRmM2U0OTc3YTUxN2Y4MDI0Y2M3MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhUaXRsZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYp
OwpAQCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZv
ckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aFRpdGxlJiwgY29u
c3QgS1VSTCYpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDg3MGI2OTJjMmY2ZGViYWM3YTM2ZDZjZjc0
YjA3ZjhlYjExYzZjNTUuLmIxMDExYTdmMDMyZGU2ZWNiMWQ0ZWY0MmJmMTkzMDU2ZDI3MjcyYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMy0yOCAgRXZhbiBNYXJ0
aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAg
ICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDMtMzAgIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxMGEzMTkwZDJhNGFhZTY5
ZTAwY2JhNmZkOGRjZWU5MWJjOWUwZjQzLi42YWY3ZjcxMzY2MzZhYmRkNzNkMTBmY2RjMzNlNWJj
Y2NiZTgxMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zNjQsMTIgKzM2NCwxMyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkK
ICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUod2ViVmlldywgbV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRo
VGl0bGUmIHRpdGxlKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJW
aWV3KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdh
dGU7CiAgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZSgmZnJhbWVM
b2FkRGVsZWdhdGUpKSkKLSAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRs
ZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CisgICAgICAgIC8vIEZJWE1F
OiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlk
UmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUuc3RyaW5nKCkpLCBtX3dlYkZyYW1l
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBkODY0YjIzNGU0MDM1OTgzYzdjM2UzM2FkYzJkODdlMjNi
NGJkZjFjLi4xODU3MDg4NDY5OWI3NDIyNmMyMDdjYWIxNmY5MzViMDdkMWJmYWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29u
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJp
bmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwpAQCAt
MTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVD
b250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwog
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVE
b2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBX
VEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNo
ZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0
aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93
aW5jZS9DaGFuZ2VMb2cKaW5kZXggZTU5NWYyNWRjNzgzNTExYmQ5N2JlY2U0MTQ0Mzc1MmU0ZWEw
MjUwNi4uYWMwNDA1Yzk5ZDFhY2Y1Y2E0MmZkNTY0ZjdmMjQyYzE3Nzc0ODcwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW5j
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMy0yOCAgRXZhbiBNYXJ0aW4gIDxl
dmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAg
VXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oOgorCiAyMDExLTAzLTI3
ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAppbmRleCAyZDg4
MTJmYTBkYTE2MjI2YjIwYzZjZmUxZWY4ODdjNzhjYWZiOGI5Li43MGQ3OGEwOWVjZTE4NjJhNTYy
OWU4ZjNlYmEyZWFiY2QxNjFhMTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKQEAgLTM3
MSw3ICszNzEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5n
JikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
QEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnByZXBhcmVG
b3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
S1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhUaXRsZSYsIGNvbnN0IEtVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V2luQ0UuaCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXaW5DRS5oCmluZGV4IDQwMTIyNWQyMjllODY5M2M5ZTZhZDFiOWQ1ZTRmMTVm
N2MyYjlmYmUuLjYxNTM5YzU1NjczMDg3NGVjMWNkYThkMDEyY2RjZDdiYzc5NjJlZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXaW5DRS5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFdURjo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwog
CiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNy
ZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJik7CiAKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25z
dCBXZWJDb3JlOjpLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggOTgwZmE4YTAyYjNkYTkxYTU1
YWY0NDU0MzQxNWI2MzNlMjAxNzZhYS4uMDE0YTkwZDU3MThhMmMxNDhiMjdmYmUzNjdmYzRhNjBj
ZDczMDcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMy0yOCAgRXZh
biBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1
dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYx
CisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisK
KyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0VGl0bGUpOgorICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgorCiAyMDExLTAzLTI1
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
ZGVsZSBQZXRlcnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAppbmRleCBhZmMyNTVjY2FjZjk0Yjc0YmQ0MzIyOWQz
NjZjY2JhY2IwMTZmMjA4Li45ZDFhMmYzMGE1MGJjMWIxMzk4NjMxZGQ2ZTg3MjczNjZhYzQxZTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXeC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guY3BwCkBAIC0yOTUsMTIgKzI5NSwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogfQogCiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgU3RyaW5nV2l0aFRpdGxlJiB0aXRsZSkKIHsKICAgICBpZiAobV93ZWJWaWV3KSB7Ci0g
ICAgICAgIG1fd2ViVmlldy0+U2V0UGFnZVRpdGxlKHRpdGxlKTsKKyAgICAgICAgLy8gRklYTUU6
IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAgIG1fd2ViVmlldy0+U2V0UGFnZVRpdGxl
KHRpdGxlLnN0cmluZygpKTsKICAgICAgICAgd3hXZWJWaWV3UmVjZWl2ZWRUaXRsZUV2ZW50IHdr
RXZlbnQobV93ZWJWaWV3KTsKLSAgICAgICAgd2tFdmVudC5TZXRUaXRsZSh0aXRsZSk7CisgICAg
ICAgIHdrRXZlbnQuU2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwogICAgICAgICBtX3dlYlZpZXct
PkdldEV2ZW50SGFuZGxlcigpLT5Qcm9jZXNzRXZlbnQod2tFdmVudCk7CiAgICAgfQogfQpAQCAt
NTI1LDcgKzUyNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6cHJlcGFyZUZvckRhdGFT
b3VyY2VSZXBsYWNlbWVudCgpCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpzZXRU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRXeDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0
IEtVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oIGIvU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAppbmRleCAyNTRmOTVj
NDJjNDIyOTRmY2RlMjY4ZTg2MGRlY2ZiZTFmZWNjNzZhLi5iMjhkMzg5N2FjOWJkMGE1Y2VlNjIx
NmRjNDE1NDYzZjM0Y2IzODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9j
dW1lbnRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQo
KTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBhZGRIaXN0b3J5SXRlbUZvckZyYWdtZW50U2Nyb2xsKCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpOwogCiAgICAg
ICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBiYWNmNzA0ZmFjN2Y4MGQ3MjZhOWM3M2RhODY2N2UzMzE2MDNmOTZlLi4yNTMwMzQ4MzU2ODA0
NzExZTRkZTU1NDE5NTMyZGYxNGViMDNmMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMDMtMjggIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3Vw
cG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGll
bnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTAzLTMwICBJdmFuIEtyc3RpxIcg
IDxpa2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmYTNjZGNlZjdiNTUyMDI0MzBlNTk3
ZjFlZDc0MTY3M2NiMGIwMDU4Li4xNDg3YTM1YTUyNTI2OWJjMmRkZDM3MzI0MmRjZWEyOGY2ODcx
MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDAzLDcgKzQwMyw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25h
bExvYWQoKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHVybCwgdW5yZWFj
aGFibGVVUkwsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgp
KSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7
CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBh
Z2UpCkBAIC00MTIsMTAgKzQxMiwxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIFJlZlB0cjxBUElP
YmplY3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgotICAg
IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUod2ViUGFnZSwgdGl0bGUsIG1fZnJhbWUsIHVzZXJEYXRhKTsKKyAgICAvLyBGSVhNRTog
dXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRl
ckNsaWVudCgpLmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHdlYlBhZ2UsIHRpdGxlLnN0cmluZygp
LCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAg
ICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgdGl0bGUsIEluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCB0aXRsZS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRh
dGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoKQpAQCAtODQ2LDcgKzg0Nyw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogCiAgICAgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSBk
YXRhOwogICAgIGRhdGEudXJsID0gbG9hZGVyLT51cmxGb3JIaXN0b3J5KCkuc3RyaW5nKCk7Ci0g
ICAgZGF0YS50aXRsZSA9IGxvYWRlci0+dGl0bGUoKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVj
dGlvbiBvZiB0aXRsZS4KKyAgICBkYXRhLnRpdGxlID0gbG9hZGVyLT50aXRsZSgpLnN0cmluZygp
OwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJDb250ZXh0OjpEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh3ZWJQYWdlLT5wYWdl
SUQoKSwgZGF0YSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CkBAIC0xMDYxLDE0ICsxMDYz
LDE1IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIERvY3VtZW50TG9hZGVy
OjpjcmVhdGUocmVxdWVzdCwgZGF0YSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRp
dGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJ
WE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6RGlkVXBkYXRlSGlzdG9yeVRp
dGxlKHdlYlBhZ2UtPnBhZ2VJRCgpLAotICAgICAgICB0aXRsZSwgdXJsLnN0cmluZygpLCBtX2Zy
YW1lLT5mcmFtZUlEKCkpLCAwKTsKKyAgICAgICAgdGl0bGUuc3RyaW5nKCksIHVybC5zdHJpbmco
KSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZUxvYWRlckNs
aWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IDE5NDg1NDE5MjA3MzEwMmQwZTdkZTcyODJiYTc0MDNkZjZhOTg1MWIuLjZjODNlOWRi
MDdmZDI0YTRkZGE0MzYwNDRjOTM2Y2M5ODA0ZjI3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBX
ZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNjUsNyArMTY1LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogICAg
IAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRl
RG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwogICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJD
b3JlOjpLVVJMJik7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87695</attachid>
            <date>2011-03-31 04:24:37 -0700</date>
            <delta_ts>2011-03-31 04:43:21 -0700</delta_ts>
            <desc>Mac build fix</desc>
            <filename>bug-50961-20110331042436.patch</filename>
            <type>text/plain</type>
            <size>68708</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFy
dGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAg
ICAgIEludHJvZHVjZSBhIG5ldyBTdHJpbmdXaXRoRGlyZWN0aW9uIG9iamVjdCB0aGF0IGNhcnJp
ZXMgYSBTdHJpbmcgYWxvbmcKKyAgICAgICAgd2l0aCB0aGUgVGV4dERpcmVjdGlvbiBhc3NvY2lh
dGVkIHdpdGggdGhlIFN0cmluZy4gIFVzZSB0aGlzIG9iamVjdCBmb3IKKyAgICAgICAgZG9jdW1l
bnQgdGl0bGVzIHVzZWQgd2l0aGluIFdlYkNvcmUsIGJlY2F1c2UgaW4gSFRNTCB0aGUgZGlyZWN0
aW9uIG9mCisgICAgICAgIGEgdGl0bGUgY2FuIGJlIHNldCB3aXRoIHRoZSAnZGlyJyBhdHRyaWJ1
dGUuCisKKyAgICAgICAgUHV0IEZJWE1FcyBhdCB0aGUgV2ViS2l0IGxldmVsIHRvIGV4cG9zZSB0
aGUgbmV3IGRpcmVjdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICB0byBjbGllbnRzLgorCisgICAg
ICAgIE5vIGJlaGF2aW9yYWwgY2hhbmdlIGludGVuZGVkLCBzbyBubyBuZXcgdGVzdHMuICBBIGZv
bGxvdy11cCB3aWxsIGV4cG9zZQorICAgICAgICB0aGUgdGl0bGUgZGlyZWN0aW9uIGFuZCBob3Bl
ZnVsbHkgY2FuIGJlIGFjY29tcGFuaWVkIGJ5IHRlc3RzIHRoYXQKKyAgICAgICAgdmVyaWZ5IGl0
IGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1
cGRhdGVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVRpdGxlKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aXRsZSk6CisgICAgICAgICog
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVsZW1l
bnQ6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6dGV4dFdpdGhE
aXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c2V0VGl0bGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnRpdGxlKToKKyAgICAgICAgKiBsb2FkZXIv
RW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRoTG9j
a2VkQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVy
Ojp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29u
dHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbjo6U3RyaW5nV2l0
aERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb246Om9wZXJhdG9y
IT0pOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTEtMDMtMzAgIFN0
ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEplcmVteSBPcmxvdy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA4MjU1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEs
NyArMzQxLDcgQEAgX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjIyY2FuY2VsTWFpbgogX19a
TjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjI0cmVtb3ZlUGx1Z0luU3RyZWFtTG9hZGVyRVBOU18x
NFJlc291cmNlTG9hZGVyRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjdyZXF1ZXN0RXYK
IF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI4c2V0RnJhbWVFUE5TXzVGcmFtZUUKLV9fWk43
V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI4c2V0VGl0bGVFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUxNERvY3VtZW50TG9hZGVyOHNldFRpdGxlRVJLTlNfMTlTdHJpbmdXaXRoRGlyZWN0aW9u
RQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlckMxRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RF
UktOU18xNFN1YnN0aXR1dGVEYXRhRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlckMyRVJL
TlNfMTVSZXNvdXJjZVJlcXVlc3RFUktOU18xNFN1YnN0aXR1dGVEYXRhRQogX19aTjdXZWJDb3Jl
MTREb2N1bWVudExvYWRlckQyRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTI4LDYgKzMxMjgsNyBAQAogCQk5OEVCMUY5NTEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1w
bGVtZW50ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk4RUIxRjk0MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCNDE3MDY0MTI1NjYyQjMw
MDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNDE3MDYyMTI1NjYyQjMwMDZCMjhGQyAvKiBB
cHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5QjQxNzA2NTEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9j
a0VsZW1lbnRDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCNDE3MDYzMTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENv
bW1hbmQuY3BwICovOyB9OworCQk5QjZDNDE1MzEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0
aERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QkFCNkM2QzEy
NTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkFCNkM2QTEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGlu
Z1N0eWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOUJBQjZDNkQxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkFCNkM2QjEyNTUwNjMxMDAx
NjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCAqLzsgfTsKIAkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0
QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCQUYzQjIzMTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTk2MjksNiArOTYzMCw3IEBACiAJCTk4RUIxRjk0MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBs
ZW1lbnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RJbXBsZW1lbnRl
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjQxNzA2MjEyNTY2MkIzMDA2QjI4
RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjQxNzA2MzEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRD
b21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGx5Qmxv
Y2tFbGVtZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCNkM0
MTUyMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1dpdGhEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUJBQjZDNkExMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5nU3R5bGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBQjZDNkIxMjU1MDYzMTAwMTYyNkQ0IC8qIEVk
aXRpbmdTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFZGl0
aW5nU3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFGM0IyMzEyQzFB
Mzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXcml0aW5nRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNzc5OCw2ICsxNzgwMCw3IEBACiAJCQkJQjJDM0Q5RkUwRDAwNkMxRDAwRUY2RjI2IC8q
IFNlZ21lbnRlZFN0cmluZy5jcHAgKi8sCiAJCQkJQjJDM0Q5RkYwRDAwNkMxRDAwRUY2RjI2IC8q
IFNlZ21lbnRlZFN0cmluZy5oICovLAogCQkJCUIyQzNEQTAwMEQwMDZDMUQwMEVGNkYyNiAvKiBT
dHJpbmcuY3BwICovLAorCQkJCTlCNkM0MTUyMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRo
RGlyZWN0aW9uLmggKi8sCiAJCQkJOTdDMDc4NEYxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRy
ZWUuaCAqLywKIAkJCQkzNzJDMDBDMzEyOTYxMUYxMDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMu
Y3BwICovLAogCQkJCUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5o
ICovLApAQCAtMjIyNTcsNiArMjIyNjAsNyBAQAogCQkJCTNBQjAyRDJBMTJENEY5MTYwMEZCQjY5
NCAvKiBTdG9yYWdlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0FDMzY4MDAxMkVGN0Ew
OTAwNkEzRDZGIC8qIFN0b3JhZ2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MUFDNkMzNjEzMUM1N0QzMDAwOUE3RTAgLyogU3RyaW5nQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAorCQkJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NTQ4OEQ2QjBERDVBODNEMDA5RDgzQjIgLyogU3RyaW5nU291
cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMzU0MEYzMEQwMDc4MkUwMDIzODJG
QSAvKiBTdHJpbmdUcnVuY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0OUY3Nzc2MEVGRUM2
MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA4MjU1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OSw4ICszODksNiBAQCBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLCiAgICAgLCBtX2NvbnRhaW5zVmFs
aWRpdHlTdHlsZVJ1bGVzKGZhbHNlKQogICAgICwgbV91cGRhdGVGb2N1c0FwcGVhcmFuY2VSZXN0
b3Jlc1NlbGVjdGlvbihmYWxzZSkKICAgICAsIG1faWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50
KDApCi0gICAgLCBtX3RpdGxlKCIiKQotICAgICwgbV9yYXdUaXRsZSgiIikKICAgICAsIG1fdGl0
bGVTZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICwgbV91cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1l
cih0aGlzLCAmRG9jdW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyRmlyZWQpCiAgICAg
LCBtX3N0YXJ0VGltZShjdXJyZW50VGltZSgpKQpAQCAtMTI3MSw4ICsxMjY5LDkgQEAgRWxlbWVu
dCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFjY2Vzc0tleQogICogIDIuIFRyaW0gbGVhZGluZyBh
bmQgdHJhaWxpbmcgc3BhY2VzCiAgKiAgMy4gQ29sbGFwc2UgaW50ZXJuYWwgd2hpdGVzcGFjZS4K
ICAqLwotc3RhdGljIGlubGluZSBTdHJpbmcgY2Fub25pY2FsaXplZFRpdGxlKERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3N0YXRpYyBpbmxpbmUgU3RyaW5nV2l0aERp
cmVjdGlvbiBjYW5vbmljYWxpemVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZVdpdGhEaXJlY3Rpb24pCiB7CisgICAgY29uc3QgU3RyaW5n
JiB0aXRsZSA9IHRpdGxlV2l0aERpcmVjdGlvbi5zdHJpbmcoKTsKICAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycyA9IHRpdGxlLmNoYXJhY3RlcnMoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0
aXRsZS5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBpOwpAQCAtMTI4OCw3ICsxMjg3LDcgQEAgc3Rh
dGljIGlubGluZSBTdHJpbmcgY2Fub25pY2FsaXplZFRpdGxlKAogICAgIH0KIAogICAgIGlmIChp
ID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gU3RyaW5nV2l0
aERpcmVjdGlvbigpOwogCiAgICAgLy8gUmVwbGFjZSBjb250cm9sIGNoYXJhY3RlcnMgd2l0aCBz
cGFjZXMsIGFuZCBiYWNrc2xhc2hlcyB3aXRoIGN1cnJlbmN5IHN5bWJvbHMsIGFuZCBjb2xsYXBz
ZSB3aGl0ZXNwYWNlLgogICAgIGJvb2wgcHJldmlvdXNDaGFyV2FzV1MgPSBmYWxzZTsKQEAgLTEz
MTMsMTcgKzEzMTIsMTcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgY2Fub25pY2FsaXplZFRpdGxl
KAogICAgIH0KIAogICAgIGlmICghYnVpbGRlckluZGV4ICYmIGJ1ZmZlcltidWlsZGVySW5kZXhd
ID09ICcgJykKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gU3RyaW5nV2l0aERp
cmVjdGlvbigpOwogCiAgICAgYnVmZmVyLnNocmluayhidWlsZGVySW5kZXggKyAxKTsKIAogICAg
IC8vIFJlcGxhY2UgdGhlIGJhY2tzbGFzaGVzIHdpdGggY3VycmVuY3kgc3ltYm9scyBpZiB0aGUg
ZW5jb2RpbmcgcmVxdWlyZXMgaXQuCiAgICAgZG9jdW1lbnQtPmRpc3BsYXlCdWZmZXJNb2RpZmll
ZEJ5RW5jb2RpbmcoYnVmZmVyLmNoYXJhY3RlcnMoKSwgYnVmZmVyLmxlbmd0aCgpKTsKICAgICAK
LSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOworICAgIHJldHVybiBTdHJpbmdXaXRo
RGlyZWN0aW9uKFN0cmluZzo6YWRvcHQoYnVmZmVyKSwgdGl0bGVXaXRoRGlyZWN0aW9uLmRpcmVj
dGlvbigpKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6dXBkYXRlVGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSkKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlKQogewogICAgIGlmIChtX3Jhd1RpdGxlID09IHRpdGxlKQogICAgICAgICByZXR1
cm47CkBAIC0xMzQ5LDE2ICsxMzQ4LDE3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0
IFN0cmluZyYgdGkKICAgICAgICAgfQogICAgIH0KIAotICAgIHVwZGF0ZVRpdGxlKHRpdGxlKTsK
KyAgICAvLyBUaGUgRE9NIEFQSSBoYXMgbm8gbWV0aG9kIG9mIHNwZWNpZnlpbmcgZGlyZWN0aW9u
LCBzbyBhc3N1bWUgTFRSLgorICAgIHVwZGF0ZVRpdGxlKFN0cmluZ1dpdGhEaXJlY3Rpb24odGl0
bGUsIExUUikpOwogCiAgICAgaWYgKG1fdGl0bGVFbGVtZW50KSB7CiAgICAgICAgIEFTU0VSVCht
X3RpdGxlRWxlbWVudC0+aGFzVGFnTmFtZSh0aXRsZVRhZykpOwogICAgICAgICBpZiAobV90aXRs
ZUVsZW1lbnQtPmhhc1RhZ05hbWUodGl0bGVUYWcpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
SFRNTFRpdGxlRWxlbWVudCo+KG1fdGl0bGVFbGVtZW50LmdldCgpKS0+c2V0VGV4dChtX3RpdGxl
KTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPihtX3RpdGxlRWxl
bWVudC5nZXQoKSktPnNldFRleHQodGl0bGUpOwogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudDo6
c2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUsIEVsZW1lbnQqIHRpdGxlRWxlbWVu
dCkKK3ZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlRWxlbWVudChjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJiB0aXRsZSwgRWxlbWVudCogdGl0bGVFbGVtZW50KQogewogICAgIGlmICh0aXRsZUVsZW1l
bnQgIT0gbV90aXRsZUVsZW1lbnQpIHsKICAgICAgICAgaWYgKG1fdGl0bGVFbGVtZW50IHx8IG1f
dGl0bGVTZXRFeHBsaWNpdGx5KQpAQCAtMTM4MywxMyArMTM4MywxMyBAQCB2b2lkIERvY3VtZW50
OjpyZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsCiAgICAgICAgIGZvciAoTm9kZSogZSA9IGhlYWRF
bGVtZW50LT5maXJzdENoaWxkKCk7IGU7IGUgPSBlLT5uZXh0U2libGluZygpKQogICAgICAgICAg
ICAgaWYgKGUtPmhhc1RhZ05hbWUodGl0bGVUYWcpKSB7CiAgICAgICAgICAgICAgICAgSFRNTFRp
dGxlRWxlbWVudCogdGl0bGVFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFRpdGxlRWxlbWVudCo+
KGUpOwotICAgICAgICAgICAgICAgIHNldFRpdGxlRWxlbWVudCh0aXRsZUVsZW1lbnQtPnRleHQo
KSwgdGl0bGVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBzZXRUaXRsZUVsZW1lbnQodGl0bGVF
bGVtZW50LT50ZXh0V2l0aERpcmVjdGlvbigpLCB0aXRsZUVsZW1lbnQpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghbV90aXRsZUVsZW1l
bnQpCi0gICAgICAgIHVwZGF0ZVRpdGxlKCIiKTsKKyAgICAgICAgdXBkYXRlVGl0bGUoU3RyaW5n
V2l0aERpcmVjdGlvbigpKTsKIH0KIAogU3RyaW5nIERvY3VtZW50Ojpub2RlTmFtZSgpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gODI1NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTdHJpbmdXaXRoRGly
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CkBAIC04MTEsOSArODEyLDExIEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm5zIDAgaWYgdGhpcyBpcyB0aGUgdG9wIGxldmVsIGRvY3VtZW50
LgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3Q7CiAKLSAg
ICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CisgICAgLy8gVXNlZCBi
eSBET00gYmluZGluZ3M7IG5vIGRpcmVjdGlvbiBrbm93bi4KKyAgICBTdHJpbmcgdGl0bGUoKSBj
b25zdCB7IHJldHVybiBtX3RpdGxlLnN0cmluZygpOyB9CiAgICAgdm9pZCBzZXRUaXRsZShjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFRpdGxlRWxlbWVudChjb25zdCBTdHJpbmcmIHRpdGxl
LCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpOworCisgICAgdm9pZCBzZXRUaXRsZUVsZW1lbnQoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIEVsZW1lbnQqIHRpdGxlRWxlbWVudCk7CiAgICAgdm9p
ZCByZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpOwogCiAgICAgU3RyaW5nIGNvb2tp
ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CkBAIC0xMTU4LDcgKzExNjEsNyBAQCBwcml2YXRlOgog
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZVRpdGxlKGNv
bnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZvaWQgdXBkYXRlVGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYpOwogICAgIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlVGltZXJGaXJlZChU
aW1lcjxEb2N1bWVudD4qKTsKICAgICB2b2lkIHVwZGF0ZUJhc2VVUkwoKTsKIApAQCAtMTI5NSw4
ICsxMjk4LDggQEAgcHJpdmF0ZToKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrLyNpZ25vcmUtZGVzdHJ1Y3RpdmUtd3JpdGVzLWNvdW50ZXIK
ICAgICB1bnNpZ25lZCBtX2lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudDsKIAotICAgIFN0cmlu
ZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX3Jhd1RpdGxlOworICAgIFN0cmluZ1dpdGhEaXJlY3Rp
b24gbV90aXRsZTsKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fcmF3VGl0bGU7CiAgICAgYm9v
bCBtX3RpdGxlU2V0RXhwbGljaXRseTsKICAgICBSZWZQdHI8RWxlbWVudD4gbV90aXRsZUVsZW1l
bnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAkocmV2
aXNpb24gODI1NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5j
bHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMyw3ICszNCw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGlubGluZSBIVE1MVGl0bGVFbGVtZW50OjpIVE1M
VGl0bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV90aXRs
ZSgiIikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0aXRsZVRhZykpOwogfQpAQCAtNTcsNyAr
NTcsNyBAQCB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lCiAKIHZvaWQg
SFRNTFRpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBO
b2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRh
KQogewotICAgIG1fdGl0bGUgPSB0ZXh0KCk7CisgICAgbV90aXRsZSA9IHRleHRXaXRoRGlyZWN0
aW9uKCk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0
bGVFbGVtZW50KG1fdGl0bGUsIHRoaXMpOwogICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50
RGVsdGEpOwpAQCAtNzEsMTAgKzcxLDIwIEBAIFN0cmluZyBIVE1MVGl0bGVFbGVtZW50Ojp0ZXh0
KCkgY29uc3QKICAgICAgICAgaWYgKG4tPmlzVGV4dE5vZGUoKSkKICAgICAgICAgICAgIHZhbCAr
PSBzdGF0aWNfY2FzdDxUZXh0Kj4obiktPmRhdGEoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1
cm4gdmFsOwogfQogCitTdHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxUaXRsZUVsZW1lbnQ6OnRleHRX
aXRoRGlyZWN0aW9uKCkKK3sKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUjsKKyAg
ICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxlID0gY29tcHV0ZWRTdHlsZSgpKQorICAgICAgICBkaXJl
Y3Rpb24gPSBzdHlsZS0+ZGlyZWN0aW9uKCk7CisgICAgZWxzZSBpZiAoUmVmUHRyPFJlbmRlclN0
eWxlPiBzdHlsZSA9IHN0eWxlRm9yUmVuZGVyZXIoKSkKKyAgICAgICAgZGlyZWN0aW9uID0gc3R5
bGUtPmRpcmVjdGlvbigpOworICAgIHJldHVybiBTdHJpbmdXaXRoRGlyZWN0aW9uKHRleHQoKSwg
ZGlyZWN0aW9uKTsKK30KKwogdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0
cmluZyAmdmFsdWUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaAkocmV2aXNpb24gODI1NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiAr
MjMsNyBAQAogI2RlZmluZSBIVE1MVGl0bGVFbGVtZW50X2gKIAogI2luY2x1ZGUgIkhUTUxFbGVt
ZW50LmgiCisjaW5jbHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTMzLDYgKzM0LDggQEAgcHVibGljOgogICAgIFN0cmluZyB0ZXh0KCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogCisgICAgU3RyaW5nV2l0aERp
cmVjdGlvbiB0ZXh0V2l0aERpcmVjdGlvbigpOworCiBwcml2YXRlOgogICAgIEhUTUxUaXRsZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTQwLDcgKzQzLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxz
ZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hp
bGRDb3VudERlbHRhID0gMCk7CiAKLSAgICBTdHJpbmcgbV90aXRsZTsKKyAgICBTdHJpbmdXaXRo
RGlyZWN0aW9uIG1fdGl0bGU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ5
LDcgKzY0OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BSZWNvcmRpbmdSZXNwb24KICAg
ICBtX3N0b3BSZWNvcmRpbmdSZXNwb25zZXMgPSB0cnVlOwogfQogCi12b2lkIERvY3VtZW50TG9h
ZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBEb2N1bWVudExvYWRlcjo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgaWYgKHRp
dGxlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rp
b24uaCIKICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEyMSw3ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGJvb2wgd2FzT25sb2FkSGFuZGxlZCgpIHsgcmV0dXJuIG1fd2FzT25s
b2FkSGFuZGxlZDsgfQogICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wpOwotICAgICAgICB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmlu
ZyYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJl
dHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIApAQCAtMTY4LDcgKzE2OSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBsYXN0Q2hlY2tlZFJl
cXVlc3QoKSAgeyByZXR1cm4gbV9sYXN0Q2hlY2tlZFJlcXVlc3Q7IH0KIAogICAgICAgICB2b2lk
IHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KICAgICAgICAg
Y29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsgfQog
CiAgICAgICAgIEtVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwpAQCAtMjk4LDcgKzI5OSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2lzQ2xpZW50UmVkaXJlY3Q7CiAg
ICAgICAgIGJvb2wgbV93YXNPbmxvYWRIYW5kbGVkOwogCi0gICAgICAgIFN0cmluZyBtX3BhZ2VU
aXRsZTsKKyAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3BhZ2VUaXRsZTsKICAgICAgICAg
U3RyaW5nIG1fcGFnZUljb25VUkw7CiAKICAgICAgICAgU3RyaW5nIG1fb3ZlcnJpZGVFbmNvZGlu
ZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDgyNTU0
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjYsNyArMjY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdp
bGxDbG9zZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5n
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFJlc291cmNlRXJyb3ImKSB7IH0KQEAgLTMzNCw3ICszMzQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSB7IH0KIAogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3Rp
dHV0ZURhdGEpIHsgcmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3Rp
dHV0ZURhdGEpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEtVUkwmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJB
Z2VudChjb25zdCBLVVJMJikgeyByZXR1cm4gIiI7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA4MjU1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMCw3ICs2MTAsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSgpCiAgICAgZGlzcGF0Y2hEaWRDbGVh
cldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpOwogICAgIAogICAgIGlmIChtX2RvY3VtZW50TG9h
ZGVyKSB7Ci0gICAgICAgIFN0cmluZyBwdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50aXRsZSgp
OworICAgICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHB0aXRsZSA9IG1fZG9jdW1lbnRMb2FkZXIt
PnRpdGxlKCk7CiAgICAgICAgIC8vIElmIHdlIGhhdmUgYSB0aXRsZSBsZXQgdGhlIFdlYlZpZXcg
a25vdyBhYm91dCBpdC4KICAgICAgICAgaWYgKCFwdGl0bGUuaXNOdWxsKCkpCiAgICAgICAgICAg
ICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUocHRpdGxlKTsKQEAgLTE5MjQsOSAr
MTkyNCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgKICAgICAg
ICAgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRp
dGxlIGxldCB0aGUgV2ViVmlldyBrbm93IGFib3V0IGl0LiAKLSAgICAgICAgU3RyaW5nIHRpdGxl
ID0gbV9kb2N1bWVudExvYWRlci0+dGl0bGUoKTsKLSAgICAgICAgaWYgKCF0aXRsZS5pc051bGwo
KSkgCi0gICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUp
OyAgICAgICAgIAorICAgICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gbV9kb2N1bWVu
dExvYWRlci0+dGl0bGUoKTsKKyAgICAgICAgaWYgKCF0aXRsZS5pc051bGwoKSkKKyAgICAgICAg
ICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh0aXRsZSk7CiAKICAgICAgICAg
Y2hlY2tDb21wbGV0ZWQoKTsKICAgICB9IGVsc2UgeyAgICAgICAgCkBAIC0zMzc1LDcgKzMzNzUs
NyBAQCBib29sIEZyYW1lTG9hZGVyOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0CiB9CiAjZW5kaWYK
IAotdm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQg
RnJhbWVMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQog
ewogICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFRpdGxlKHRpdGxlKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA4MjU1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBA
IGNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTZXJpYWxp
emVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTdHJpbmdXaXRoRGly
ZWN0aW9uOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVy
OwogCkBAIC0yODIsNyArMjgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxBbmRDbGVh
cigpOwogCi0gICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2b2lkIHNldEljb25VUkwoY29u
c3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDgyNTU0
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDYgKzg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAgICAgY2xhc3MgU2hh
cmVkQnVmZmVyOworICAgIGNsYXNzIFN0cmluZ1dpdGhEaXJlY3Rpb247CiAgICAgY2xhc3MgU3Vi
c3RpdHV0ZURhdGE7CiAgICAgY2xhc3MgV2lkZ2V0OwogCkBAIC0xMzksNyArMTQwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2Uo
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgp
ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFN0cmluZyYgdGl0bGUpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkBA
IC0yMjcsNyArMjI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpID0gMDsKIAogICAgICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mLCBjb25zdCBLVVJMJikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2Vu
dChjb25zdCBLVVJMJikgPSAwOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODI1NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUs
NyArMjY1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQmFja0Zvcgogewog
I2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhp
c3RvcnkgZm9yIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGJh
Y2svZm9yd2FyZCBuYXZpZ2F0aW9uIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYK
IAogICAgIC8vIE11c3QgZ3JhYiB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gYmVmb3JlIGRp
c3R1cmJpbmcgaXQKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVGb3JSZWxvYWQoCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3Jl
SGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVsb2FkIGluIGZyYW1lICVzIiwgbV9mcmFt
ZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9y
IHJlbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigp
LT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKICAgICBpZiAobV9j
dXJyZW50SXRlbSkgewpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnVwZGF0ZUZvclJlZGlyZWMKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fZnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNv
cmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRpcmVjdCBsb2FkIGluIGZyYW1lICVz
IiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhp
c3RvcnkgZm9yIHJlZGlyZWN0IGxvYWQgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRp
ZgogICAgIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CkBA
IC0zODUsNyArMzg1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50
UgogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0
aW5nIEhpc3RvcnkgZm9yIGNsaWVudCByZWRpcmVjdCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBjbGll
bnQgcmVkaXJlY3QgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCiAgICAgLy8g
Q2xlYXIgb3V0IGZvcm0gZGF0YSBzbyB3ZSBkb24ndCB0cnkgdG8gcmVzdG9yZSBpdCBpbnRvIHRo
ZSBpbmNvbWluZyBwYWdlLiAgTXVzdCBoYXBwZW4gYWZ0ZXIKQEAgLTQxMCw3ICs0MTAsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQoCiAgICAgRnJhbWVMb2FkZXIq
IGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7CiAjaWYgIUxPR19ESVNBQkxFRAogICAg
IGlmIChmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3Rvcnks
ICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY29tbWl0IGluIGZyYW1lICVz
IiwgZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3Rvcnkg
Zm9yIGNvbW1pdCBpbiBmcmFtZSAlcyIsIGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT50
aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgRnJhbWVMb2FkVHlw
ZSB0eXBlID0gZnJhbWVMb2FkZXItPmxvYWRUeXBlKCk7CiAgICAgaWYgKGlzQmFja0ZvcndhcmRM
b2FkVHlwZSh0eXBlKQpAQCAtNTI2LDEwICs1MjYsMTEgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxl
cjo6c2V0Q3VycmVudEl0ZW0oSAogICAgIG1fY3VycmVudEl0ZW0gPSBpdGVtOwogfQogCi12b2lk
IEhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUpCit2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGlmIChtX2N1cnJlbnRJdGVtKQotICAg
ICAgICBtX2N1cnJlbnRJdGVtLT5zZXRUaXRsZSh0aXRsZSk7CisgICAgICAgIC8vIEZJWE1FOiBt
YWtlIHVzZSBvZiB0aXRsZS5kaXJlY3Rpb24oKSBhcyB3ZWxsLgorICAgICAgICBtX2N1cnJlbnRJ
dGVtLT5zZXRUaXRsZSh0aXRsZS5zdHJpbmcoKSk7CiB9CiAKIGJvb2wgSGlzdG9yeUNvbnRyb2xs
ZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0CkBAIC01NzYsMTIgKzU3Nywx
MyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbShICiAgICAgCiAgICAg
RnJhbWUqIHBhcmVudEZyYW1lID0gbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKICAgICBTdHJp
bmcgcGFyZW50ID0gcGFyZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1l
KCkgOiAiIjsKLSAgICBTdHJpbmcgdGl0bGUgPSBkb2N1bWVudExvYWRlci0+dGl0bGUoKTsKKyAg
ICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7CiAK
ICAgICBpdGVtLT5zZXRVUkwodXJsKTsKICAgICBpdGVtLT5zZXRUYXJnZXQobV9mcmFtZS0+dHJl
ZSgpLT51bmlxdWVOYW1lKCkpOwogICAgIGl0ZW0tPnNldFBhcmVudChwYXJlbnQpOwotICAgIGl0
ZW0tPnNldFRpdGxlKHRpdGxlKTsKKyAgICAvLyBGSVhNRTogc2hvdWxkIHN0b3JlIHRpdGxlIGRp
cmVjdGlvbmFsaXR5IGluIGhpc3RvcnkgYXMgd2VsbC4KKyAgICBpdGVtLT5zZXRUaXRsZSh0aXRs
ZS5zdHJpbmcoKSk7CiAgICAgaXRlbS0+c2V0T3JpZ2luYWxVUkxTdHJpbmcob3JpZ2luYWxVUkwu
c3RyaW5nKCkpOwogCiAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgfHwgZG9jdW1l
bnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAkocmV2aXNpb24gODI1NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGcmFtZTsKIGNs
YXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU3Ry
aW5nV2l0aERpcmVjdGlvbjsKIAogY2xhc3MgSGlzdG9yeUNvbnRyb2xsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEhpc3RvcnlDb250cm9sbGVyKTsKQEAgLTcxLDcgKzcyLDcgQEAgcHVi
bGljOgogCiAgICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50SXRlbS5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0q
KTsKLSAgICB2b2lkIHNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICBi
b29sIGN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0OwogCiAgICAgSGlzdG9yeUl0
ZW0qIHByZXZpb3VzSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXNJdGVtLmdldCgpOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhE
aXJlY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
U3RyaW5nV2l0aERpcmVjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBTdHJpbmdXaXRoRGlyZWN0aW9uX2gKKyNkZWZpbmUgU3RyaW5nV2l0aERpcmVjdGlvbl9oCisK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBJbiBzb21lIGNpcmN1bXN0YW5jZXMgd2Ugd2Fu
dCB0byBzdG9yZSBhIFN0cmluZyBhbG9uZyB3aXRoIHRoZSBUZXh0RGlyZWN0aW9uCisvLyBvZiB0
aGUgU3RyaW5nIGFzIGxlYXJuZWQgZnJvbSB0aGUgY29udGV4dCBvZiB0aGUgU3RyaW5nLiBGb3Ig
ZXhhbXBsZSwKKy8vIGNvbnNpZGVyIHN0b3JpbmcgdGhlIHRpdGxlIGRlcml2ZWQgZnJvbSA8dGl0
bGUgZGlyPSdydGwnPnNvbWUgdGl0bGU8L3RpdGxlPgorLy8gaW4gdGhlIGhpc3RvcnkuCisvLwor
Ly8gTm90ZSB0aGF0IGlzIGV4cGxpY2l0bHkgKm5vdCogdGhlIGRpcmVjdGlvbiBvZiB0aGUgc3Ry
aW5nIGFzIGxlYXJuZWQKKy8vIGZyb20gdGhlIGNoYXJhY3RlcnMgb2YgdGhlIHN0cmluZzsgaXQn
cyBleHRyYSBtZXRhZGF0YSB3ZSBoYXZlIGV4dGVybmFsCisvLyB0byB0aGUgc3RyaW5nLgorY2xh
c3MgU3RyaW5nV2l0aERpcmVjdGlvbiB7CitwdWJsaWM6CisgICAgU3RyaW5nV2l0aERpcmVjdGlv
bigpIHt9CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywgVGV4
dERpcmVjdGlvbiBkaXIpIDogbV9zdHJpbmcoc3RyaW5nKSwgbV9kaXJlY3Rpb24oZGlyKSB7fQor
CisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQor
ICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247
IH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHko
KTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7
IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlci5tX3N0cmluZyA9PSBtX3N0cmlu
ZyAmJiBvdGhlci5tX2RpcmVjdGlvbiA9PSBtX2RpcmVjdGlvbjsKKyAgICB9CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCgqdGhpcykgPT0gb3RoZXIpOyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fc3RyaW5n
OworICAgIFRleHREaXJlY3Rpb24gbV9kaXJlY3Rpb247Cit9OworCit9CisKKyNlbmRpZiAvLyBT
dHJpbmdXaXRoRGlyZWN0aW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA4MjU1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw4IEBAIHZvaWQgU1ZHVGl0bGVF
bGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWUKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCgpOwogICAgIGlmIChmaXJzdENoaWxkKCkpCi0gICAgICAgIGRvY3Vt
ZW50KCktPnNldFRpdGxlRWxlbWVudCh0ZXh0Q29udGVudCgpLCB0aGlzKTsKKyAgICAgICAgLy8g
RklYTUU6IGRvZXMgU1ZHIGhhdmUgYSB0aXRsZSB0ZXh0IGRpcmVjdGlvbj8KKyAgICAgICAgZG9j
dW1lbnQoKS0+c2V0VGl0bGVFbGVtZW50KFN0cmluZ1dpdGhEaXJlY3Rpb24odGV4dENvbnRlbnQo
KSwgTFRSKSwgdGhpcyk7CiB9CiAKIHZvaWQgU1ZHVGl0bGVFbGVtZW50OjpyZW1vdmVkRnJvbURv
Y3VtZW50KCkKQEAgLTUzLDcgKzU0LDggQEAgdm9pZCBTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChibwogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQ
YXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAgICAg
aWYgKGluRG9jdW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0bGVFbGVtZW50KHRl
eHRDb250ZW50KCksIHRoaXMpOworICAgICAgICAvLyBGSVhNRTogZG9lcyBTVkcgaGF2ZSB0aXRs
ZSB0ZXh0IGRpcmVjdGlvbj8KKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0bGVFbGVtZW50KFN0
cmluZ1dpdGhEaXJlY3Rpb24odGV4dENvbnRlbnQoKSwgTFRSKSwgdGhpcyk7CiB9CiAKIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdUaXRsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMt
MzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0
cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNl
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTAzLTMwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gODI1NTQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3QKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJ
RCgpLCB1cmwsIHVucmVhY2hhYmxlVVJMLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rl
cih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mIHRpdGxlKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAtNDEyLDEwICs0MTIsMTEgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRh
OwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgotICAgIHdlYlBhZ2UtPmluamVj
dGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUod2ViUGFnZSwg
dGl0bGUsIG1fZnJhbWUsIHVzZXJEYXRhKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBv
ZiB0aXRsZS4KKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJl
Y2VpdmVUaXRsZUZvckZyYW1lKHdlYlBhZ2UsIHRpdGxlLnN0cmluZygpLCBtX2ZyYW1lLCB1c2Vy
RGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKG1fZnJhbWUt
PmZyYW1lSUQoKSwgdGl0bGUsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJE
YXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0aXRsZS5zdHJpbmco
KSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpA
QCAtODQ2LDcgKzg0Nyw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2Jh
bEgKIAogICAgIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUgZGF0YTsKICAgICBkYXRhLnVybCA9IGxv
YWRlci0+dXJsRm9ySGlzdG9yeSgpLnN0cmluZygpOwotICAgIGRhdGEudGl0bGUgPSBsb2FkZXIt
PnRpdGxlKCk7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgZGF0
YS50aXRsZSA9IGxvYWRlci0+dGl0bGUoKS5zdHJpbmcoKTsKIAogICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6RGlkTmF2aWdh
dGVXaXRoTmF2aWdhdGlvbkRhdGEod2ViUGFnZS0+cGFnZUlEKCksIGRhdGEsIG1fZnJhbWUtPmZy
YW1lSUQoKSksIDApOwogfQpAQCAtMTA2MSwxNCArMTA2MywxNSBAQCBQYXNzUmVmUHRyPERvY3Vt
ZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlCiAgICAgcmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVh
dGUocmVxdWVzdCwgZGF0YSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRp
dGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBj
b25zdCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiB1
c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6RGlkVXBkYXRlSGlzdG9yeVRpdGxlKHdl
YlBhZ2UtPnBhZ2VJRCgpLAotICAgICAgICB0aXRsZSwgdXJsLnN0cmluZygpLCBtX2ZyYW1lLT5m
cmFtZUlEKCkpLCAwKTsKKyAgICAgICAgdGl0bGUuc3RyaW5nKCksIHVybC5zdHJpbmcoKSwgbV9m
cmFtZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6
dXNlckFnZW50KGNvbnN0IEtVUkwmKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gODI1NTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGly
ZWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CkBAIC0xNjUsNyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3Jl
OjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIAogICAg
IHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODI1NTQpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBv
cnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50
IGludGVyZmFjZS4KKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZXRUaXRs
ZSk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNy
Yy9XZWJEYXRhU291cmNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFTb3VyY2VJ
bXBsOjpwYWdlVGl0bGUpOgorCiAyMDExLTAzLTMwICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5j
cHAJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM0LDEwICs3MzQsMTEgQEAg
dm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUwogICAgIH0KIH0KIAotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CisgICAgLy8gRklY
TUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCiAgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgp
KQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJh
bWUsIHRpdGxlKTsKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVUaXRs
ZShtX3dlYkZyYW1lLCB0aXRsZS5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKQEAgLTEzMjgsNyArMTMyOSw3IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9hZGVyQ2wKICAgICByZXR1cm4gZHMucmVs
ZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6c2V0VGl0bGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudElt
cGw6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJM
JiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluZm9ybSBjb25zdW1lciBvZiBjaGFuZ2VzIHRvIHRo
ZSB0aXRsZS4KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA4MjU1NCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9z
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIo
CiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6
U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJh
bWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRv
Q29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhU291cmNlSW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCShy
ZXZpc2lvbiA4MjU1NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFTb3Vy
Y2VJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsOCBAQCB2b2lkIFdlYkRhdGFT
b3VyY2VJbXBsOjpyZWRpcmVjdENoYWluKFdlCiAKIFdlYlN0cmluZyBXZWJEYXRhU291cmNlSW1w
bDo6cGFnZVRpdGxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGl0bGUoKTsKKyAgICAvLyBGSVhN
RTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZSBhcyB3ZWxsLgorICAgIHJldHVybiB0aXRsZSgpLnN0
cmluZygpOwogfQogCiBXZWJOYXZpZ2F0aW9uVHlwZSBXZWJEYXRhU291cmNlSW1wbDo6bmF2aWdh
dGlvblR5cGUoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gODI1NTQpCisr
KyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBz
dXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNs
aWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRFZmw6OnNldFRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oOgorCiAyMDExLTAzLTI5ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NzYsOSArNTc2LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkU3QK
ICAgICAgICAgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChtX3ZpZXcpOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcm
IHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7Ci0gICAgQ1N0cmluZyBjcyA9
IHRpdGxlLnV0ZjgoKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAg
ICBDU3RyaW5nIGNzID0gdGl0bGUuc3RyaW5nKCkudXRmOCgpOwogICAgIGV3a19mcmFtZV90aXRs
ZV9zZXQobV9mcmFtZSwgY3MuZGF0YSgpKTsKIAogICAgIGlmIChld2tfdmlld19mcmFtZV9tYWlu
X2dldChtX3ZpZXcpICE9IG1fZnJhbWUpCkBAIC03MDksNyArNzEwLDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6cHJlcGFyZUZvckRhdAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAg
Ly8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxs
YmFjawogfQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCShyZXZpc2lvbiA4MjU1NCkKKysrIFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1
YmxpYyBGcmFtCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGNs
YXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW0KICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgdmlydHVhbCBXVEY6OlBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwm
KTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisg
ICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTEtMDMtMjkgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IGRpc2FibGUgYW4gYXNzZXJ0IGluIHRlc3R3ZWJ2aWV3IGR1ZSB0bwpJbmRleDogU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAkocmV2aXNpb24gODI1NTQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0OSwxNCAr
OTQ5LDE1IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnQKICAgICBu
b3RpZnlTdGF0dXMobV9mcmFtZSwgV0VCS0lUX0xPQURfUFJPVklTSU9OQUwpOwogfQogCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcm
IHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgaWYgKG1fbG9hZGluZ0Vy
cm9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBw
cml2ID0gbV9mcmFtZS0+cHJpdjsKICAgICBnX2ZyZWUocHJpdi0+dGl0bGUpOwotICAgIHByaXYt
PnRpdGxlID0gZ19zdHJkdXAodGl0bGUudXRmOCgpLmRhdGEoKSk7CisgICAgLy8gRklYTUU6IHVz
ZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgcHJpdi0+dGl0bGUgPSBnX3N0cmR1cCh0aXRsZS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX2Zy
YW1lLCAidGl0bGUtY2hhbmdlZCIsIHByaXYtPnRpdGxlKTsKICAgICBnX29iamVjdF9ub3RpZnko
R19PQkpFQ1QobV9mcmFtZSksICJ0aXRsZSIpOwpAQCAtMTExOSwxMSArMTEyMCwxMiBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAg
ICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IG1fZnJhbWUtPnByaXY7CiAgICAg
Z19mcmVlKGZyYW1lRGF0YS0+dGl0bGUpOwotICAgIGZyYW1lRGF0YS0+dGl0bGUgPSBnX3N0cmR1
cCh0aXRsZS51dGY4KCkuZGF0YSgpKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0
aXRsZS4KKyAgICBmcmFtZURhdGEtPnRpdGxlID0gZ19zdHJkdXAodGl0bGUuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUNvbnRlbnRMZW5ndGgoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkocmV2
aXNpb24gODI1NTQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3Jl
OjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUljb25zKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExv
YWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNzQsNyArMTc0LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdl
YkNvcmU6OktVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNv
cmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAK
ICAgICAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VS
TCYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkocmV2aXNpb24gODI1NTQpCisrKyBTb3Vy
Y2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBv
cnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50
IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3UuaDoKKwogMjAxMS0wMy0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRIYWlrdS5jcHAJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYktpdC9o
YWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM3LDEzICsyMzcsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1Ojpk
aXNwYXRjaERpZAogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0
bGUmIHRpdGxlKQogewogICAgIGlmIChtX3dlYlZpZXcpIHsKLSAgICAgICAgbV93ZWJWaWV3LT5T
ZXRQYWdlVGl0bGUodGl0bGUpOwotCisgICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9m
IHRpdGxlLgorICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZS5tX3N0cmluZygp
KTsKICAgICAgICAgQk1lc3NhZ2UgbWVzc2FnZShUSVRMRV9DSEFOR0VEKTsKLSAgICAgICAgbWVz
c2FnZS5BZGRTdHJpbmcoInRpdGxlIiwgdGl0bGUpOworICAgICAgICBtZXNzYWdlLkFkZFN0cmlu
ZygidGl0bGUiLCB0aXRsZS5zdHJpbmcoKSk7CiAgICAgICAgIG1fbWVzc2VuZ2VyLT5TZW5kTWVz
c2FnZSgmbWVzc2FnZSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgJKHJl
dmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9z
ZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlu
aXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlz
aExvYWQoKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBhZGRIaXN0b3J5SXRlbUZvckZyYWdtZW50U2Nyb2xsKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpOwog
CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisg
ICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VGl0bGUpOgorCiAyMDExLTAzLTMwICBEb21pbmljIENvb25leSAg
PGRvbWluaWNjQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6
a292LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA4MjU1NCkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcm
IHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9h
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3Vt
ZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RG
OjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lk
IHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNy
ZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5h
bWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA4MjU1NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02
MjQsMTIgKzYyNCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0
CiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgV2Vi
VmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7ICAgCiAgICAgV2Vi
RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBX
ZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CiAgICAg
aWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jKQotICAgICAg
ICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpm
b3JGcmFtZTopLCAoTlNTdHJpbmcgKil0aXRsZSwgbV93ZWJGcmFtZS5nZXQoKSk7CisgICAgICAg
IC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBDYWxsRnJhbWVMb2Fk
RGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMsIHdl
YlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTopLCAoTlNT
dHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpAQCAtODkzLDcgKzg5
NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEgKICAgICAgICAg
V2ViSGlzdG9yeURlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0g
V2ViVmlld0dldEhpc3RvcnlEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh2aWV3KTsKICAgICAgICAg
aWYgKGltcGxlbWVudGF0aW9ucy0+bmF2aWdhdGVkRnVuYykgewogICAgICAgICAgICAgV2ViTmF2
aWdhdGlvbkRhdGEgKmRhdGEgPSBbW1dlYk5hdmlnYXRpb25EYXRhIGFsbG9jXSBpbml0V2l0aFVS
TFN0cmluZzpsb2FkZXItPnVybEZvckhpc3RvcnkoKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRs
ZTpsb2FkZXItPnRpdGxlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6bG9hZGVyLT50aXRs
ZSgpLnN0cmluZygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0OmxvYWRlci0+b3JpZ2luYWxS
ZXF1ZXN0Q29weSgpLm5zVVJMUmVxdWVzdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOmxv
YWRlci0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzU3Vic3RpdHV0ZURh
dGE6bG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKQpAQCAtOTA3LDcgKzkwOCw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEgKICAgICB9CiAKICAgICBb
W1dlYkhpc3Rvcnkgb3B0aW9uYWxTaGFyZWRIaXN0b3J5XSBfdmlzaXRlZFVSTDpsb2FkZXItPnVy
bEZvckhpc3RvcnkoKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpdGhUaXRsZTpsb2FkZXItPnRpdGxlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpdGhUaXRsZTpsb2FkZXItPnRpdGxlKCkuc3RyaW5nKCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDpsb2FkZXItPm9yaWdp
bmFsUmVxdWVzdENvcHkoKS5odHRwTWV0aG9kKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2FzRmFpbHVyZTpsb2FkZXItPnVybEZvckhpc3RvcnlSZWZsZWN0c0Zh
aWx1cmUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VWaXNpdENv
dW50OiFsb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpXTsgLy8gRG8gbm90
IGluY3JlYXNlIHZpc2l0IGNvdW50IGR1ZSB0byBuYXZpZ2F0aW9ucyB0aGF0IHdlcmUgbm90IGlu
aXRpYXRlZCBieSB0aGUgdXNlciBkaXJlY3RseSwgYXZvaWRpbmcgZ3Jvd3RoIGZyb20gcHJvZ3Jh
bW1hdGljIHJlbG9hZHMuCkBAIC0xMTc5LDcgKzExODAsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50
TG9hZGVyPiBXZWJGcmFtZUxvYWRlCiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAg
V2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgCkBAIC0x
MTg4LDcgKzExODksOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25z
CiAgICAgICAgIGlmICghaW1wbGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgQ2FsbEhpc3RvcnlEZWxlZ2F0ZShpbXBs
ZW1lbnRhdGlvbnMtPnNldFRpdGxlRnVuYywgdmlldywgQHNlbGVjdG9yKHdlYlZpZXc6dXBkYXRl
SGlzdG9yeVRpdGxlOmZvclVSTDopLCAoTlNTdHJpbmcgKil0aXRsZSwgKE5TU3RyaW5nICopdXJs
KTsKKyAgICAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAgIENh
bGxIaXN0b3J5RGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMsIHZpZXcsIEBz
ZWxlY3Rvcih3ZWJWaWV3OnVwZGF0ZUhpc3RvcnlUaXRsZTpmb3JVUkw6KSwgKE5TU3RyaW5nICop
dGl0bGUuc3RyaW5nKCksIChOU1N0cmluZyAqKXVybCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCkBAIC0xMTk2LDcgKzExOTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
ZXRUaXRsZShjb25zCiAgICAgbnNVUkwgPSBbbnNVUkwgX3dlYmtpdF9jYW5vbmljYWxpemVdOwog
ICAgIGlmKCFuc1VSTCkKICAgICAgICAgcmV0dXJuOwotICAgIE5TU3RyaW5nICp0aXRsZU5TU3Ry
aW5nID0gdGl0bGU7CisgICAgTlNTdHJpbmcgKnRpdGxlTlNTdHJpbmcgPSB0aXRsZS5zdHJpbmco
KTsKICAgICAgICAKICAgICBbW1tXZWJIaXN0b3J5IG9wdGlvbmFsU2hhcmVkSGlzdG9yeV0gaXRl
bUZvclVSTDpuc1VSTF0gc2V0VGl0bGU6dGl0bGVOU1N0cmluZ107CiB9CkBAIC0xMjg1LDcgKzEy
ODcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9DCiAgICAgICAg
IC8vIGxpa2UgdGhlIG9uZXMgdGhhdCBTYWZhcmkgdXNlcyBmb3IgYm9va21hcmtzIGl0IGlzIHRo
ZSBvbmx5IHdheSB0aGUgRG9jdW1lbnRMb2FkZXIKICAgICAgICAgLy8gd2lsbCBnZXQgdGhlIHBy
b3BlciB0aXRsZS4KICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9
IFtkYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0pCi0gICAgICAgICAgICBkb2N1bWVudExvYWRl
ci0+c2V0VGl0bGUoW2RhdGFTb3VyY2UgcGFnZVRpdGxlXSk7CisgICAgICAgICAgICBkb2N1bWVu
dExvYWRlci0+c2V0VGl0bGUoU3RyaW5nV2l0aERpcmVjdGlvbihbZGF0YVNvdXJjZSBwYWdlVGl0
bGVdLCBMVFIpKTsKICAgICB9CiAKICAgICBpZiAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25l
ciA9IGNvcmVGcmFtZS0+b3duZXJFbGVtZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkocmV2aXNpb24gODI1NTQp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjYxLDcgKzI2MSw3IEBAIC0gKE5TU3RyaW5nICopZG9jdW1lbnRT
b3VyY2UKIAogLSAoTlNTdHJpbmcgKil0aXRsZQogewotICAgIHJldHVybiBuc1N0cmluZ05pbElm
RW1wdHkoW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnRpdGxlKCkpOwor
ICAgIHJldHVybiBuc1N0cmluZ05pbElmRW1wdHkoW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1
bWVudExvYWRlcl0tPnRpdGxlKCkuc3RyaW5nKCkpOwogfQogCiAtIChET01Eb2N1bWVudCAqKURP
TURvY3VtZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gODI1NTQpCisrKyBTb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEx
LTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGly
IGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVy
ZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0
bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwog
MjAxMS0wMy0zMCAgWWkgU2hlbiAgPHlpLjQuc2hlbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJ
KHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ3LDggKzQ0Nyw5IEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRTdGEKIH0KIAogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogeworICAgIC8vIEZJWE1FOiB1c2UgZGly
ZWN0aW9uIG9mIHRpdGxlLgogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAg
ICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlVGl0bGU6ICVzXG4iLCBxUHJpbnRhYmxlKGRydERl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSwgcVByaW50YWJsZShRU3Ry
aW5nKHRpdGxlKSkpOwogCkBAIC03MDksMTYgKzcxMCwxNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OnByZXBhcmVGb3JEYXRhCiB7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmIHRpdGxlLCBj
b25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gVXNlZCBieSBBcHBsZSBXZWJLaXQgdG8gdXBkYXRl
IHRoZSB0aXRsZSBvZiBhbiBleGlzdGluZyBoaXN0b3J5IGl0ZW0uCiAgICAgLy8gUXRXZWJLaXQg
ZG9lc24ndCBhY2NvbW9kYXRlIHRoaXMgb24gaGlzdG9yeSBpdGVtcy4gSWYgaXQgZXZlciBkb2Vz
LAogICAgIC8vIGl0IHNob3VsZCBiZSBwcml2YXRlQnJvd3NpbmctYXdhcmUuRm9yIG5vdywgd2Ug
YXJlIGp1c3QgcGFzc2luZwogICAgIC8vIGdsb2JhbGhpc3RvcnkgbGF5b3V0IHRlc3RzLgorICAg
IC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIGlmIChkdW1wSGlzdG9yeUNh
bGxiYWNrcykgewogICAgICAgICBwcmludGYoIldlYlZpZXcgdXBkYXRlZCB0aGUgdGl0bGUgZm9y
IGhpc3RvcnkgVVJMIFwiJXNcIiB0byBcIiVzXCIuXG4iLAogICAgICAgICAgICAgcVByaW50YWJs
ZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwpKSwKLSAgICAgICAgICAg
IHFQcmludGFibGUoUVN0cmluZyh0aXRsZSkpKTsKKyAgICAgICAgICAgIHFQcmludGFibGUoUVN0
cmluZyh0aXRsZS5zdHJpbmcoKSkpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZp
c2lvbiA4MjU1NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhUaXRsZSYpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAg
dmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29u
c3QgU3RyaW5nV2l0aFRpdGxlJiwgY29uc3QgS1VSTCYpOwogCiAgICAgdmlydHVhbCBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKIApJbmRleDogU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwko
cmV2aXNpb24gODI1NTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAg
ICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRv
IG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDMtMzAgIFN0ZXZlIEZhbGtlbmJ1cmcg
IDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gODI1NTQpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2NCwxMiArMzY0LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkU3QKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUod2ViVmlldywgbV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBT
dHJpbmdXaXRoVGl0bGUmIHRpdGxlKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZy
YW1lLT53ZWJWaWV3KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVM
b2FkRGVsZWdhdGU7CiAgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0
ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKLSAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJl
Y2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CisgICAgICAg
IC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBmcmFtZUxvYWREZWxl
Z2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUuc3RyaW5nKCkpLCBt
X3dlYkZyYW1lKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDgyNTU0KQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgp
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0
cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBX
ZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CkBA
IC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0
ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0
IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0Nh
Y2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwpJ
bmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYktp
dC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0w
My0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBh
dHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZh
Y2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpz
ZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5D
RS5oOgorCiAyMDExLTAzLTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDgyNTU0KQorKysgU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hE
aWQKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC00OTAsNyArNDkwLDcg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpwcmVwYXJlRm9yRAogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6c2V0VGl0bGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhUaXRsZSYsIGNvbnN0IEtVUkwmKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAkocmV2aXNpb24gODI1
NTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE2OSw3ICsxNjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1l
bnQoKTsKIAogICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRU
aXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdl
bnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24g
ODI1NTQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE3IEBACisyMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4g
c2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1l
TG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4
OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFd4OjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFd4Lmg6CisKIDIwMTEtMDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJbmRleDogU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNw
cAkocmV2aXNpb24gODI1NTQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSwxMiArMjk1LDEzIEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRTdGEKIH0KIAogCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhUaXRsZSYgdGl0bGUpCiB7CiAgICAgaWYgKG1fd2ViVmlldykgewot
ICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZSk7CisgICAgICAgIC8vIEZJWE1F
OiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRs
ZSh0aXRsZS5zdHJpbmcoKSk7CiAgICAgICAgIHd4V2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCB3
a0V2ZW50KG1fd2ViVmlldyk7Ci0gICAgICAgIHdrRXZlbnQuU2V0VGl0bGUodGl0bGUpOworICAg
ICAgICB3a0V2ZW50LlNldFRpdGxlKHRpdGxlLnN0cmluZygpKTsKICAgICAgICAgbV93ZWJWaWV3
LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQpOwogICAgIH0KIH0KQEAg
LTUyNSw3ICs1MjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnByZXBhcmVGb3JEYXRh
CiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpzZXRUaXRsZShjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDgyNTU0KQorKysgU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxl
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpAQCAtMTQ1LDcgKzE0NSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZEhpc3RvcnlJdGVt
Rm9yRnJhZ21lbnRTY3JvbGwoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQo
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJik7CiAKICAgICAgICAgdmlydHVhbCBTdHJpbmcgdXNl
ckFnZW50KGNvbnN0IEtVUkwmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87699</attachid>
            <date>2011-03-31 04:43:25 -0700</date>
            <delta_ts>2011-03-31 05:33:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50961-20110331044803.patch</filename>
            <type>text/plain</type>
            <size>73342</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1NjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMDg1MWI2ZmE0NTE4YWEz
OGI5NDNhZWI0OWI2YTgwNTE0MGVjNTBlLi4zNTIxZWYwOTZiOTVhYmU0OGRjNTU4NDY3NDk0MzZl
ZWM2YTkxMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDMtMzEgIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisg
ICAgICAgIEludHJvZHVjZSBhIG5ldyBTdHJpbmdXaXRoRGlyZWN0aW9uIG9iamVjdCB0aGF0IGNh
cnJpZXMgYSBTdHJpbmcgYWxvbmcKKyAgICAgICAgd2l0aCB0aGUgVGV4dERpcmVjdGlvbiBhc3Nv
Y2lhdGVkIHdpdGggdGhlIFN0cmluZy4gIFVzZSB0aGlzIG9iamVjdCBmb3IKKyAgICAgICAgZG9j
dW1lbnQgdGl0bGVzIHVzZWQgd2l0aGluIFdlYkNvcmUsIGJlY2F1c2UgaW4gSFRNTCB0aGUgZGly
ZWN0aW9uIG9mCisgICAgICAgIGEgdGl0bGUgY2FuIGJlIHNldCB3aXRoIHRoZSAnZGlyJyBhdHRy
aWJ1dGUuCisKKyAgICAgICAgUHV0IEZJWE1FcyBhdCB0aGUgV2ViS2l0IGxldmVsIHRvIGV4cG9z
ZSB0aGUgbmV3IGRpcmVjdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICB0byBjbGllbnRzLgorCisg
ICAgICAgIE5vIGJlaGF2aW9yYWwgY2hhbmdlIGludGVuZGVkLCBzbyBubyBuZXcgdGVzdHMuICBB
IGZvbGxvdy11cCB3aWxsIGV4cG9zZQorICAgICAgICB0aGUgdGl0bGUgZGlyZWN0aW9uIGFuZCBo
b3BlZnVsbHkgY2FuIGJlIGFjY29tcGFuaWVkIGJ5IHRlc3RzIHRoYXQKKyAgICAgICAgdmVyaWZ5
IGl0IGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp1cGRhdGVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVRpdGxlKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aXRsZSk6CisgICAgICAg
ICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRs
ZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxl
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6dGV4dFdp
dGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0VGl0bGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnRpdGxlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRUaXRsZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRo
TG9ja2VkQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9s
bGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbjo6U3RyaW5n
V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb246Om9wZXJh
dG9yIT0pOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTEtMDMtMzEg
IEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZjQzY2Q1YmUxNDRiYzE4ZDI5
NmQ2NDk1NzAwMDc0YTQ5NGU4NWUxNS4uMWIyYTljMmIxMDA5MDI2NWU5ODNlZDJjMTZlM2VhNDQw
NmZkOTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTM0MSw3ICszNDEsNyBAQCBfX1pON1dl
YkNvcmUxNERvY3VtZW50TG9hZGVyMjJjYW5jZWxNYWluUmVzb3VyY2VMb2FkRVJLTlNfMTNSZXNv
dXJjZUVycm9yRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjI0cmVtb3ZlUGx1Z0luU3Ry
ZWFtTG9hZGVyRVBOU18xNFJlc291cmNlTG9hZGVyRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExv
YWRlcjdyZXF1ZXN0RXYKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI4c2V0RnJhbWVFUE5T
XzVGcmFtZUUKLV9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI4c2V0VGl0bGVFUktOM1dURjZT
dHJpbmdFCitfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOHNldFRpdGxlRVJLTlNfMTlTdHJp
bmdXaXRoRGlyZWN0aW9uRQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlckMxRVJLTlNfMTVS
ZXNvdXJjZVJlcXVlc3RFUktOU18xNFN1YnN0aXR1dGVEYXRhRQogX19aTjdXZWJDb3JlMTREb2N1
bWVudExvYWRlckMyRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFUktOU18xNFN1YnN0aXR1dGVEYXRh
RQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlckQyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NWVhNjY0ZDBhZTY1NDM3
ZjE1YWFjNmJiMTBiYTJjMmMwY2JjMmE0Li41MzQwZDYzMjkwYjNiNzQ2M2M2NzNiMmNiMWRhMzRl
YTI4MDIyN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zMTI4LDYgKzMxMjgsNyBAQAogCQk5OEVCMUY5NTEzMTNGRTA1MDBE
MEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk4RUIxRjk0MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRl
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlC
NDE3MDY0MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNDE3MDYyMTI1NjYy
QjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjQxNzA2NTEyNTY2MkIzMDA2QjI4
RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNDE3MDYzMTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBs
eUJsb2NrRWxlbWVudENvbW1hbmQuY3BwICovOyB9OworCQk5QjZDNDE1MzEzNDQ5NDkwMDAwODVC
NjIgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhE
aXJlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5QkFCNkM2QzEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkFCNkM2QTEyNTUwNjMxMDAx
NjI2RDQgLyogRWRpdGluZ1N0eWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOUJBQjZDNkQxMjU1MDYzMTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHls
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkFC
NkM2QjEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCAqLzsgfTsKIAkJOUJBRjNC
MjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQUYzQjIzMTJDMUEzOTgwMDAxNEJGMSAv
KiBXcml0aW5nRGlyZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTk2MjksNiArOTYzMCw3IEBACiAJCTk4RUIxRjk0MTMxM0ZFMDUwMEQw
RTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOb3RJbXBsZW1lbnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjQxNzA2
MjEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjQxNzA2MzEyNTY2MkIzMDA2QjI4RkMgLyogQXBw
bHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlCNkM0MTUyMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1dpdGhEaXJlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBQjZDNkExMjU1MDYzMTAwMTYyNkQ0
IC8qIEVkaXRpbmdTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0
aW5nU3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBQjZDNkIxMjU1MDYz
MTAwMTYyNkQ0IC8qIEVkaXRpbmdTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBFZGl0aW5nU3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5QkFGM0IyMzEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0aW5nRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNzc5OCw2ICsxNzgwMCw3IEBACiAJCQkJQjJDM0Q5RkUwRDAw
NkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAgKi8sCiAJCQkJQjJDM0Q5RkYwRDAw
NkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovLAogCQkJCUIyQzNEQTAwMEQwMDZD
MUQwMEVGNkYyNiAvKiBTdHJpbmcuY3BwICovLAorCQkJCTlCNkM0MTUyMTM0NDk0OTAwMDA4NUI2
MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggKi8sCiAJCQkJOTdDMDc4NEYxMTY1RDVCRTAwM0Ez
MkVGIC8qIFN1ZmZpeFRyZWUuaCAqLywKIAkJCQkzNzJDMDBDMzEyOTYxMUYxMDA1Qzk1NzUgLyog
VGV4dEJvdW5kYXJpZXMuY3BwICovLAogCQkJCUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBU
ZXh0Qm91bmRhcmllcy5oICovLApAQCAtMjIyNTcsNiArMjIyNjAsNyBAQAogCQkJCTNBQjAyRDJB
MTJENEY5MTYwMEZCQjY5NCAvKiBTdG9yYWdlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
M0FDMzY4MDAxMkVGN0EwOTAwNkEzRDZGIC8qIFN0b3JhZ2VUcmFja2VyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MUFDNkMzNjEzMUM1N0QzMDAwOUE3RTAgLyogU3RyaW5nQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAorCQkJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdX
aXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTQ4OEQ2QjBERDVBODNEMDA5RDgz
QjIgLyogU3RyaW5nU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMzU0MEYz
MEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTNkN2Y1M2RiMGZkZWY2MGU2MDZh
N2U1MDU2ZWU1ODgwMjdhOGI4Ni4uNTE0NDcwMzJlMDBmMzZlZDZiYTU5ZmI0YmI4MzMyOTk0NzJh
MGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zODksOCArMzg5LDYgQEAgRG9jdW1l
bnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUws
IGJvb2wgaXNIVE1MKQogICAgICwgbV9jb250YWluc1ZhbGlkaXR5U3R5bGVSdWxlcyhmYWxzZSkK
ICAgICAsIG1fdXBkYXRlRm9jdXNBcHBlYXJhbmNlUmVzdG9yZXNTZWxlY3Rpb24oZmFsc2UpCiAg
ICAgLCBtX2lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudCgwKQotICAgICwgbV90aXRsZSgiIikK
LSAgICAsIG1fcmF3VGl0bGUoIiIpCiAgICAgLCBtX3RpdGxlU2V0RXhwbGljaXRseShmYWxzZSkK
ICAgICAsIG1fdXBkYXRlRm9jdXNBcHBlYXJhbmNlVGltZXIodGhpcywgJkRvY3VtZW50Ojp1cGRh
dGVGb2N1c0FwcGVhcmFuY2VUaW1lckZpcmVkKQogICAgICwgbV9zdGFydFRpbWUoY3VycmVudFRp
bWUoKSkKQEAgLTEyNzEsOCArMTI2OSw5IEBAIEVsZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50
QnlBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAgKiAgMi4gVHJpbSBsZWFkaW5n
IGFuZCB0cmFpbGluZyBzcGFjZXMKICAqICAzLiBDb2xsYXBzZSBpbnRlcm5hbCB3aGl0ZXNwYWNl
LgogICovCi1zdGF0aWMgaW5saW5lIFN0cmluZyBjYW5vbmljYWxpemVkVGl0bGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKQorc3RhdGljIGlubGluZSBTdHJpbmdXaXRo
RGlyZWN0aW9uIGNhbm9uaWNhbGl6ZWRUaXRsZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlV2l0aERpcmVjdGlvbikKIHsKKyAgICBjb25zdCBTdHJp
bmcmIHRpdGxlID0gdGl0bGVXaXRoRGlyZWN0aW9uLnN0cmluZygpOwogICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzID0gdGl0bGUuY2hhcmFjdGVycygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHRpdGxlLmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIGk7CkBAIC0xMjg4LDcgKzEyODcsNyBAQCBz
dGF0aWMgaW5saW5lIFN0cmluZyBjYW5vbmljYWxpemVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIH0KIAogICAgIGlmIChpID09IGxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gU3RyaW5nV2l0aERpcmVjdGlvbigpOwog
CiAgICAgLy8gUmVwbGFjZSBjb250cm9sIGNoYXJhY3RlcnMgd2l0aCBzcGFjZXMsIGFuZCBiYWNr
c2xhc2hlcyB3aXRoIGN1cnJlbmN5IHN5bWJvbHMsIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlLgog
ICAgIGJvb2wgcHJldmlvdXNDaGFyV2FzV1MgPSBmYWxzZTsKQEAgLTEzMTMsMTcgKzEzMTIsMTcg
QEAgc3RhdGljIGlubGluZSBTdHJpbmcgY2Fub25pY2FsaXplZFRpdGxlKERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICB9CiAKICAgICBpZiAoIWJ1aWxkZXJJbmRl
eCAmJiBidWZmZXJbYnVpbGRlckluZGV4XSA9PSAnICcpCi0gICAgICAgIHJldHVybiAiIjsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZ1dpdGhEaXJlY3Rpb24oKTsKIAogICAgIGJ1ZmZlci5zaHJpbmso
YnVpbGRlckluZGV4ICsgMSk7CiAKICAgICAvLyBSZXBsYWNlIHRoZSBiYWNrc2xhc2hlcyB3aXRo
IGN1cnJlbmN5IHN5bWJvbHMgaWYgdGhlIGVuY29kaW5nIHJlcXVpcmVzIGl0LgogICAgIGRvY3Vt
ZW50LT5kaXNwbGF5QnVmZmVyTW9kaWZpZWRCeUVuY29kaW5nKGJ1ZmZlci5jaGFyYWN0ZXJzKCks
IGJ1ZmZlci5sZW5ndGgoKSk7CiAgICAgCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVy
KTsKKyAgICByZXR1cm4gU3RyaW5nV2l0aERpcmVjdGlvbihTdHJpbmc6OmFkb3B0KGJ1ZmZlciks
IHRpdGxlV2l0aERpcmVjdGlvbi5kaXJlY3Rpb24oKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnVw
ZGF0ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRs
ZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAobV9yYXdUaXRs
ZSA9PSB0aXRsZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0OSwxNiArMTM0OCwxNyBAQCB2b2lk
IERvY3VtZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgdXBkYXRlVGl0bGUodGl0bGUpOworICAgIC8vIFRoZSBET00gQVBJIGhhcyBubyBt
ZXRob2Qgb2Ygc3BlY2lmeWluZyBkaXJlY3Rpb24sIHNvIGFzc3VtZSBMVFIuCisgICAgdXBkYXRl
VGl0bGUoU3RyaW5nV2l0aERpcmVjdGlvbih0aXRsZSwgTFRSKSk7CiAKICAgICBpZiAobV90aXRs
ZUVsZW1lbnQpIHsKICAgICAgICAgQVNTRVJUKG1fdGl0bGVFbGVtZW50LT5oYXNUYWdOYW1lKHRp
dGxlVGFnKSk7CiAgICAgICAgIGlmIChtX3RpdGxlRWxlbWVudC0+aGFzVGFnTmFtZSh0aXRsZVRh
ZykpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVGl0bGVFbGVtZW50Kj4obV90aXRsZUVs
ZW1lbnQuZ2V0KCkpLT5zZXRUZXh0KG1fdGl0bGUpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
SFRNTFRpdGxlRWxlbWVudCo+KG1fdGl0bGVFbGVtZW50LmdldCgpKS0+c2V0VGV4dCh0aXRsZSk7
CiAgICAgfQogfQogCi12b2lkIERvY3VtZW50OjpzZXRUaXRsZUVsZW1lbnQoY29uc3QgU3RyaW5n
JiB0aXRsZSwgRWxlbWVudCogdGl0bGVFbGVtZW50KQordm9pZCBEb2N1bWVudDo6c2V0VGl0bGVF
bGVtZW50KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBFbGVtZW50KiB0aXRsZUVs
ZW1lbnQpCiB7CiAgICAgaWYgKHRpdGxlRWxlbWVudCAhPSBtX3RpdGxlRWxlbWVudCkgewogICAg
ICAgICBpZiAobV90aXRsZUVsZW1lbnQgfHwgbV90aXRsZVNldEV4cGxpY2l0bHkpCkBAIC0xMzgz
LDEzICsxMzgzLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZVRpdGxlKEVsZW1lbnQqIHRpdGxl
RWxlbWVudCkKICAgICAgICAgZm9yIChOb2RlKiBlID0gaGVhZEVsZW1lbnQtPmZpcnN0Q2hpbGQo
KTsgZTsgZSA9IGUtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgICAgICBpZiAoZS0+aGFzVGFnTmFt
ZSh0aXRsZVRhZykpIHsKICAgICAgICAgICAgICAgICBIVE1MVGl0bGVFbGVtZW50KiB0aXRsZUVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MVGl0bGVFbGVtZW50Kj4oZSk7Ci0gICAgICAgICAgICAg
ICAgc2V0VGl0bGVFbGVtZW50KHRpdGxlRWxlbWVudC0+dGV4dCgpLCB0aXRsZUVsZW1lbnQpOwor
ICAgICAgICAgICAgICAgIHNldFRpdGxlRWxlbWVudCh0aXRsZUVsZW1lbnQtPnRleHRXaXRoRGly
ZWN0aW9uKCksIHRpdGxlRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFtX3RpdGxlRWxlbWVudCkKLSAgICAgICAgdXBkYXRl
VGl0bGUoIiIpOworICAgICAgICB1cGRhdGVUaXRsZShTdHJpbmdXaXRoRGlyZWN0aW9uKCkpOwog
fQogCiBTdHJpbmcgRG9jdW1lbnQ6Om5vZGVOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggMDVkZmI3NmVmNTFmZDE1MTBlMTAzODEzNTFlY2NjMGMxM2RhNTdhYy4uOGE4M2Q1OWU3
OTNhYTQyZDg0ZDQ1ODM4Yzc1NDkwYjkwNTdjMGMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFRpbWluZy5oIgogI2luY2x1ZGUgIlF1
YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlIDx3dGYvRml4ZWRBcnJheS5oPgpAQCAt
ODExLDkgKzgxMiwxMSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyAwIGlmIHRoaXMgaXMgdGhl
IHRvcCBsZXZlbCBkb2N1bWVudC4KICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCgpIGNvbnN0OwogCi0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRs
ZTsgfQorICAgIC8vIFVzZWQgYnkgRE9NIGJpbmRpbmdzOyBubyBkaXJlY3Rpb24ga25vd24uCisg
ICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZS5zdHJpbmcoKTsgfQogICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRUaXRsZUVsZW1lbnQo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgRWxlbWVudCogdGl0bGVFbGVtZW50KTsKKworICAgIHZvaWQg
c2V0VGl0bGVFbGVtZW50KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBFbGVtZW50KiB0aXRs
ZUVsZW1lbnQpOwogICAgIHZvaWQgcmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50KTsK
IAogICAgIFN0cmluZyBjb29raWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpAQCAtMTE1OCw3ICsx
MTYxLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogCi0gICAg
dm9pZCB1cGRhdGVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIHVwZGF0ZVRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2b2lkIHVwZGF0ZUZvY3VzQXBw
ZWFyYW5jZVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+Kik7CiAgICAgdm9pZCB1cGRhdGVCYXNl
VVJMKCk7CiAKQEAgLTEyOTUsOCArMTI5OCw4IEBAIHByaXZhdGU6CiAgICAgLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jaWdub3JlLWRlc3RydWN0
aXZlLXdyaXRlcy1jb3VudGVyCiAgICAgdW5zaWduZWQgbV9pZ25vcmVEZXN0cnVjdGl2ZVdyaXRl
Q291bnQ7CiAKLSAgICBTdHJpbmcgbV90aXRsZTsKLSAgICBTdHJpbmcgbV9yYXdUaXRsZTsKKyAg
ICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fdGl0bGU7CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBt
X3Jhd1RpdGxlOwogICAgIGJvb2wgbV90aXRsZVNldEV4cGxpY2l0bHk7CiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IG1fdGl0bGVFbGVtZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUaXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVt
ZW50LmNwcAppbmRleCA3OGM4YjZhNzEzOTIxZGNmMDZmNTczNzUxODJhZjExMWY4MjE4OWUzLi5i
MDQ2YzdiNTkwNTgyYTA5MDFlNmE4NDEwMmQ2ZDI4NzFhM2MxMDc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzLDcg
KzM0LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogaW5saW5lIEhUTUxUaXRsZUVs
ZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCi0g
ICAgLCBtX3RpdGxlKCIiKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHRpdGxlVGFnKSk7CiB9
CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgSFRNTFRpdGxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1
bWVudCgpCiAKIHZvaWQgSFRNTFRpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQg
Y2hpbGRDb3VudERlbHRhKQogewotICAgIG1fdGl0bGUgPSB0ZXh0KCk7CisgICAgbV90aXRsZSA9
IHRleHRXaXRoRGlyZWN0aW9uKCk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAgZG9j
dW1lbnQoKS0+c2V0VGl0bGVFbGVtZW50KG1fdGl0bGUsIHRoaXMpOwogICAgIEhUTUxFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hh
bmdlLCBjaGlsZENvdW50RGVsdGEpOwpAQCAtNzEsMTAgKzcxLDIwIEBAIFN0cmluZyBIVE1MVGl0
bGVFbGVtZW50Ojp0ZXh0KCkgY29uc3QKICAgICAgICAgaWYgKG4tPmlzVGV4dE5vZGUoKSkKICAg
ICAgICAgICAgIHZhbCArPSBzdGF0aWNfY2FzdDxUZXh0Kj4obiktPmRhdGEoKTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gdmFsOwogfQogCitTdHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxUaXRs
ZUVsZW1lbnQ6OnRleHRXaXRoRGlyZWN0aW9uKCkKK3sKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUjsKKyAgICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxlID0gY29tcHV0ZWRTdHlsZSgp
KQorICAgICAgICBkaXJlY3Rpb24gPSBzdHlsZS0+ZGlyZWN0aW9uKCk7CisgICAgZWxzZSBpZiAo
UmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlRm9yUmVuZGVyZXIoKSkKKyAgICAgICAg
ZGlyZWN0aW9uID0gc3R5bGUtPmRpcmVjdGlvbigpOworICAgIHJldHVybiBTdHJpbmdXaXRoRGly
ZWN0aW9uKHRleHQoKSwgZGlyZWN0aW9uKTsKK30KKwogdm9pZCBIVE1MVGl0bGVFbGVtZW50Ojpz
ZXRUZXh0KGNvbnN0IFN0cmluZyAmdmFsdWUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCmluZGV4IDhiOTBmNTY0ZjNhYWYx
NjEwMzE0NmFjMDU4MjJmNmQ5ZTZhMWZhZTEuLjY5MjA5OTc4Mzk1YjA0NTNiMjQ1ZWM0MjM1MTA0
MDI5ZmQ0MjQ0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCkBAIC0y
Myw2ICsyMyw3IEBACiAjZGVmaW5lIEhUTUxUaXRsZUVsZW1lbnRfaAogCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTdHJpbmdXaXRoRGlyZWN0aW9uLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzMsNiArMzQsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRleHQo
KSBjb25zdDsKICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBTdHJpbmdX
aXRoRGlyZWN0aW9uIHRleHRXaXRoRGlyZWN0aW9uKCk7CisKIHByaXZhdGU6CiAgICAgSFRNTFRp
dGxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNDAsNyAr
NDMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7
CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9
IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGlu
dCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAotICAgIFN0cmluZyBtX3RpdGxlOworICAgIFN0cmlu
Z1dpdGhEaXJlY3Rpb24gbV90aXRsZTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDEyMTA0NWI1Yjk5ZmZhMDc5YjYwNTlm
N2UxOTdhZGQ0ZDNkYmMzZDIuLjE0MzdhZGM0ZTZkYjU3NGJmNzA5MTljNGNiMDA1YmMyNDkyMjNk
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjQ5LDcg
KzY0OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKQog
ICAgIG1fc3RvcFJlY29yZGluZ1Jlc3BvbnNlcyA9IHRydWU7CiB9CiAKLXZvaWQgRG9jdW1lbnRM
b2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIERvY3VtZW50TG9hZGVy
OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAo
dGl0bGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IDFmODgyNzJiMTkyMDA1ZDYyZTMyMDcxNzBiZjdjNWI4MjU3OTJi
YTUuLmM2ZjBiYzViMjY5NDRmZWJmOTY0YmZkZGMyNjU3Yjc2Njc1ZTM1ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTdHJpbmdXaXRoRGlyZWN0aW9uLmgiCiAj
aW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMjEsNyArMTIyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIHdhc09ubG9hZEhhbmRsZWQoKSB7IHJldHVybiBtX3dhc09ubG9hZEhhbmRs
ZWQ7IH0KICAgICAgICAgYm9vbCBpc0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAgICAgICAg
IHZvaWQgc2V0UHJpbWFyeUxvYWRDb21wbGV0ZShib29sKTsKLSAgICAgICAgdm9pZCBzZXRUaXRs
ZShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJik7CiAgICAgICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9v
dmVycmlkZUVuY29kaW5nOyB9CiAKQEAgLTE2OCw3ICsxNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbGFzdENoZWNrZWRSZXF1ZXN0KCkg
IHsgcmV0dXJuIG1fbGFzdENoZWNrZWRSZXF1ZXN0OyB9CiAKICAgICAgICAgdm9pZCBzdG9wUmVj
b3JkaW5nUmVzcG9uc2VzKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VUaXRsZTsgfQorICAgICAgICBjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CiAgICAgICAgIGNvbnN0IFN0
cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAgICAg
ICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKQEAgLTI5OCw3ICsyOTksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OwogICAgICAgICBi
b29sIG1fd2FzT25sb2FkSGFuZGxlZDsKIAotICAgICAgICBTdHJpbmcgbV9wYWdlVGl0bGU7Cisg
ICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV9wYWdlVGl0bGU7CiAgICAgICAgIFN0cmluZyBt
X3BhZ2VJY29uVVJMOwogCiAgICAgICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggNTlmZDg5NzljYmVlZmNjZmU5MDVhZGU3
ZDI2ZmZiMWRkYWU2ZTlhMy4uNmFjZjk5MjE5YmFjZTNjYzJkMDIzMzI5ZmQ2MWU3ZjAzZmIyNTVh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMjY2LDcgKzI2Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9
CkBAIC0zMzQsNyArMzM0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKSB7IHJldHVybiBE
b2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBL
VVJMJikgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpIHsg
cmV0dXJuICIiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDM0
N2E0MWVhYWUzYWI2MTdkYTMwMWNhYzEyOTc1MjU3ZGI4NGE1OWQuLmYxMDIwZTFmMzljYTdlNDI5
ODM1ZDZjMzA3NjE4NmM4NzQyYWZiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3RE
YXRhKCkKICAgICBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CiAg
ICAgCiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpIHsKLSAgICAgICAgU3RyaW5nIHB0aXRsZSA9
IG1fZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7CisgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24g
cHRpdGxlID0gbV9kb2N1bWVudExvYWRlci0+dGl0bGUoKTsKICAgICAgICAgLy8gSWYgd2UgaGF2
ZSBhIHRpdGxlIGxldCB0aGUgV2ViVmlldyBrbm93IGFib3V0IGl0LgogICAgICAgICBpZiAoIXB0
aXRsZS5pc051bGwoKSkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShwdGl0bGUpOwpAQCAtMTkyNCw5ICsxOTI0LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29t
bWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAK
ICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRpdGxlIGxldCB0aGUgV2ViVmlldyBrbm93IGFib3V0
IGl0LiAKLSAgICAgICAgU3RyaW5nIHRpdGxlID0gbV9kb2N1bWVudExvYWRlci0+dGl0bGUoKTsK
LSAgICAgICAgaWYgKCF0aXRsZS5pc051bGwoKSkgCi0gICAgICAgICAgICBtX2NsaWVudC0+ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOyAgICAgICAgIAorICAgICAgICBTdHJpbmdXaXRo
RGlyZWN0aW9uIHRpdGxlID0gbV9kb2N1bWVudExvYWRlci0+dGl0bGUoKTsKKyAgICAgICAgaWYg
KCF0aXRsZS5pc051bGwoKSkKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZSh0aXRsZSk7CiAKICAgICAgICAgY2hlY2tDb21wbGV0ZWQoKTsKICAgICB9IGVsc2Ug
eyAgICAgICAgCkBAIC0zMzc1LDcgKzMzNzUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsCiB9
CiAjZW5kaWYKIAotdm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlKQogewogICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFRpdGxlKHRpdGxlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggMWZiOWUzYzQ1ZjQ5MGUyOTlmYWZjNTRm
NGQzNWU2N2U0ZWIxMjk1Yy4uOTA2MmYyMTVjZWQ4MTU5ZmRhODljODVhZjZlMTZkODFhYzVmNTEy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTc4LDYgKzc4LDcgQEAgY2xh
c3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFN0cmluZ1dpdGhEaXJlY3Rp
b247CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAK
QEAgLTI4Miw3ICsyODMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhbmNlbEFuZENsZWFyKCk7
CiAKLSAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBT
dHJpbmcmKTsKIAogICAgIHZvaWQgY29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDdkNjQ5MTJiZGI0MTNhZTk1OWFi
MGU4ZjVhY2NhYWM2NjJmZmY5OTMuLmQ1ZDQ5ZWM5YzcwOGE5YzdlODk3NzNiMWQ2Mzg3YWJlZmI3
ZWYyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC04
NCw2ICs4NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
KyAgICBjbGFzcyBTdHJpbmdXaXRoRGlyZWN0aW9uOwogICAgIGNsYXNzIFN1YnN0aXR1dGVEYXRh
OwogICAgIGNsYXNzIFdpZGdldDsKIApAQCAtMTM5LDcgKzE0MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpAQCAtMjI3LDcgKzIy
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVG
b3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3Qg
S1VSTCYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VS
TCYpID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcAppbmRleCBiOGJlY2U5Yjc1MGM1Mzg2ZDhhM2Q4ZTFkMjhjOGQxZWQ3YjMxYmI5Li5j
MWM1NDE0MzJhYWRkOWY1YmRiYmFkNjI5YjBmOGEwNDZiNWFhOGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24oKQogewog
I2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhp
c3RvcnkgZm9yIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGJh
Y2svZm9yd2FyZCBuYXZpZ2F0aW9uIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYK
IAogICAgIC8vIE11c3QgZ3JhYiB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gYmVmb3JlIGRp
c3R1cmJpbmcgaXQKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVGb3JSZWxvYWQoKQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29y
ZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJh
bWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZv
ciByZWxvYWQgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCiAgICAgaWYgKG1f
Y3VycmVudEl0ZW0pIHsKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVy
Ojp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogewogI2lmICFM
T0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkp
Ci0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3Rvcnkg
Zm9yIHJlZGlyZWN0IGxvYWQgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3Rvcnks
ICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVkaXJlY3QgbG9hZCBpbiBm
cmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCiAgICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCgpCiB7CiAjaWYgIUxPR19ESVNB
QkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAg
ICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY2xp
ZW50IHJlZGlyZWN0IGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2Vi
Q29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGNsaWVudCByZWRpcmVjdCBpbiBmcmFt
ZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKICAgICAvLyBDbGVhciBvdXQgZm9ybSBkYXRh
IHNvIHdlIGRvbid0IHRyeSB0byByZXN0b3JlIGl0IGludG8gdGhlIGluY29taW5nIHBhZ2UuICBN
dXN0IGhhcHBlbiBhZnRlcgpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xs
ZXI6OnVwZGF0ZUZvckNvbW1pdCgpCiAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbV9m
cmFtZS0+bG9hZGVyKCk7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChmcmFtZUxvYWRlci0+
ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTog
VXBkYXRpbmcgSGlzdG9yeSBmb3IgY29tbWl0IGluIGZyYW1lICVzIiwgZnJhbWVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhIaXN0
b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGNvbW1pdCBpbiBmcmFt
ZSAlcyIsIGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgRnJhbWVMb2FkVHlwZSB0eXBlID0gZnJhbWVMb2Fk
ZXItPmxvYWRUeXBlKCk7CiAgICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZSh0eXBlKQpAQCAt
NTI2LDEwICs1MjYsMTEgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW0o
SGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgbV9jdXJyZW50SXRlbSA9IGl0ZW07CiB9CiAKLXZvaWQg
SGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSkKK3ZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgaWYgKG1fY3VycmVudEl0ZW0pCi0gICAg
ICAgIG1fY3VycmVudEl0ZW0tPnNldFRpdGxlKHRpdGxlKTsKKyAgICAgICAgLy8gRklYTUU6IG1h
a2UgdXNlIG9mIHRpdGxlLmRpcmVjdGlvbigpIGFzIHdlbGwuCisgICAgICAgIG1fY3VycmVudEl0
ZW0tPnNldFRpdGxlKHRpdGxlLnN0cmluZygpKTsKIH0KIAogYm9vbCBIaXN0b3J5Q29udHJvbGxl
cjo6Y3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29uc3QKQEAgLTU3NiwxMiArNTc3LDEz
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKiBp
dGVtKQogICAgIAogICAgIEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+cGFy
ZW50KCk7CiAgICAgU3RyaW5nIHBhcmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnRy
ZWUoKS0+dW5pcXVlTmFtZSgpIDogIiI7Ci0gICAgU3RyaW5nIHRpdGxlID0gZG9jdW1lbnRMb2Fk
ZXItPnRpdGxlKCk7CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9h
ZGVyLT50aXRsZSgpOwogCiAgICAgaXRlbS0+c2V0VVJMKHVybCk7CiAgICAgaXRlbS0+c2V0VGFy
Z2V0KG1fZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpKTsKICAgICBpdGVtLT5zZXRQYXJlbnQo
cGFyZW50KTsKLSAgICBpdGVtLT5zZXRUaXRsZSh0aXRsZSk7CisgICAgLy8gRklYTUU6IHNob3Vs
ZCBzdG9yZSB0aXRsZSBkaXJlY3Rpb25hbGl0eSBpbiBoaXN0b3J5IGFzIHdlbGwuCisgICAgaXRl
bS0+c2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwogICAgIGl0ZW0tPnNldE9yaWdpbmFsVVJMU3Ry
aW5nKG9yaWdpbmFsVVJMLnN0cmluZygpKTsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNF
bXB0eSgpIHx8IGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0g
NDAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAppbmRleCA1OWYx
MWEyNWM5MzNkM2Q3Yzk3MjUxYjkwYTkzYjMyZDU2Yjk5YWQ0Li4xNWUxMmMwOTlhM2VmMDcyNzU0
ZTY3ZTZjZDU2N2Y2YmUwOGJhNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwor
Y2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbjsKIAogY2xhc3MgSGlzdG9yeUNvbnRyb2xsZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhpc3RvcnlDb250cm9sbGVyKTsKQEAgLTcxLDcgKzcy
LDcgQEAgcHVibGljOgogCiAgICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50SXRlbS5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlz
dG9yeUl0ZW0qKTsKLSAgICB2b2lkIHNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
KTsKICAgICBib29sIGN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0OwogCiAgICAg
SGlzdG9yeUl0ZW0qIHByZXZpb3VzSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXNJdGVt
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmlu
Z1dpdGhEaXJlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0
aERpcmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMzRhYjZiZmY4Y2Q5MTA0ZTM1MWM1YzE3MTI5YzNm
ZmEyYTJlYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1N0cmluZ1dpdGhEaXJlY3Rpb24uaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJpbmdXaXRo
RGlyZWN0aW9uX2gKKyNkZWZpbmUgU3RyaW5nV2l0aERpcmVjdGlvbl9oCisKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBJbiBzb21lIGNpcmN1bXN0YW5jZXMgd2Ugd2FudCB0byBzdG9yZSBh
IFN0cmluZyBhbG9uZyB3aXRoIHRoZSBUZXh0RGlyZWN0aW9uCisvLyBvZiB0aGUgU3RyaW5nIGFz
IGxlYXJuZWQgZnJvbSB0aGUgY29udGV4dCBvZiB0aGUgU3RyaW5nLiBGb3IgZXhhbXBsZSwKKy8v
IGNvbnNpZGVyIHN0b3JpbmcgdGhlIHRpdGxlIGRlcml2ZWQgZnJvbSA8dGl0bGUgZGlyPSdydGwn
PnNvbWUgdGl0bGU8L3RpdGxlPgorLy8gaW4gdGhlIGhpc3RvcnkuCisvLworLy8gTm90ZSB0aGF0
IGlzIGV4cGxpY2l0bHkgKm5vdCogdGhlIGRpcmVjdGlvbiBvZiB0aGUgc3RyaW5nIGFzIGxlYXJu
ZWQKKy8vIGZyb20gdGhlIGNoYXJhY3RlcnMgb2YgdGhlIHN0cmluZzsgaXQncyBleHRyYSBtZXRh
ZGF0YSB3ZSBoYXZlIGV4dGVybmFsCisvLyB0byB0aGUgc3RyaW5nLgorY2xhc3MgU3RyaW5nV2l0
aERpcmVjdGlvbiB7CitwdWJsaWM6CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbigpIHt9CisgICAg
U3RyaW5nV2l0aERpcmVjdGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywgVGV4dERpcmVjdGlvbiBk
aXIpIDogbV9zdHJpbmcoc3RyaW5nKSwgbV9kaXJlY3Rpb24oZGlyKSB7fQorCisgICAgY29uc3Qg
U3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0KKworICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsgfQorICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBvdGhlci5tX3N0cmluZyA9PSBtX3N0cmluZyAmJiBvdGhlci5t
X2RpcmVjdGlvbiA9PSBtX2RpcmVjdGlvbjsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCgqdGhpcykg
PT0gb3RoZXIpOyB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fc3RyaW5nOworICAgIFRleHRE
aXJlY3Rpb24gbV9kaXJlY3Rpb247Cit9OworCit9CisKKyNlbmRpZiAvLyBTdHJpbmdXaXRoRGly
ZWN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAKaW5kZXggZWJjZGRi
NDZhMDI5ZDliMzRkY2VjMjU1YTJhOGNkYjFiNWIxODFlYy4uZDkyNTYwMzExZTc2NjI3NmM0ZjY3
YTg5OTE2MGQyYTM5YjdmODQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rp
dGxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5j
cHAKQEAgLTQwLDcgKzQwLDggQEAgdm9pZCBTVkdUaXRsZUVsZW1lbnQ6Omluc2VydGVkSW50b0Rv
Y3VtZW50KCkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgp
OwogICAgIGlmIChmaXJzdENoaWxkKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxlRWxl
bWVudCh0ZXh0Q29udGVudCgpLCB0aGlzKTsKKyAgICAgICAgLy8gRklYTUU6IGRvZXMgU1ZHIGhh
dmUgYSB0aXRsZSB0ZXh0IGRpcmVjdGlvbj8KKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0bGVF
bGVtZW50KFN0cmluZ1dpdGhEaXJlY3Rpb24odGV4dENvbnRlbnQoKSwgTFRSKSwgdGhpcyk7CiB9
CiAKIHZvaWQgU1ZHVGl0bGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKQEAgLTUzLDcg
KzU0LDggQEAgdm9pZCBTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5n
ZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLAogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQo
KS0+c2V0VGl0bGVFbGVtZW50KHRleHRDb250ZW50KCksIHRoaXMpOworICAgICAgICAvLyBGSVhN
RTogZG9lcyBTVkcgaGF2ZSB0aXRsZSB0ZXh0IGRpcmVjdGlvbj8KKyAgICAgICAgZG9jdW1lbnQo
KS0+c2V0VGl0bGVFbGVtZW50KFN0cmluZ1dpdGhEaXJlY3Rpb24odGV4dENvbnRlbnQoKSwgTFRS
KSwgdGhpcyk7CiB9CiAKIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdUaXRsZUVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggMmIwZTEzY2ZmMjE5MjM0MGIxNWEwZDE0ZmYxMDA5NjUxZTZiODY5Ni4uZGQ4MjY5YWVi
MTkzMjNjY2Q4NmFhZGExNzMzNzRkYTFkNTg2NjFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8
dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5l
dyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBs
OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6c2V0VGl0bGUpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuaDoKKyAgICAgICAgKiBzcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEYXRhU291cmNlSW1wbDo6cGFnZVRpdGxlKToKKwogMjAxMS0wMy0zMCAgRGF2aWQg
TGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5
IFRpdG92LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAKaW5kZXggNjQ3YTcwYzI4NWI2N2NlMGQ1NGEzYWUwODgxNDk4ZTExNDM2
ZDY1My4uY2Q3NjQ5MTA5ZDFiNWU0MDZlNzI1NDY3ZDY2M2U4MzBmOWFlODMxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3Bw
CkBAIC03MzQsMTAgKzczNCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0
Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVj
dGlvbiBvZiB0aXRsZS4KICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG1f
d2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUpOwor
ICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUs
IHRpdGxlLnN0cmluZygpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoKQpAQCAtMTMyOCw3ICsxMzI5LDcgQEAgUGFzc1JlZlB0cjxEb2N1
bWVudExvYWRlcj4gRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpjcmVhdGVEb2N1bWVudExvYWRlcigK
ICAgICByZXR1cm4gZHMucmVsZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBG
cmFtZUxvYWRlckNsaWVudEltcGw6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluZm9ybSBjb25zdW1l
ciBvZiBjaGFuZ2VzIHRvIHRoZSB0aXRsZS4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggZjE5YzI2YzUzOWExYzFiNWEy
NjU3YjdhYTI1ODk1YzFiMmY1MjEyNi4uMmIxYzI2ZjVkZGJjY2NhZGQyNmVhNDhhZjhkOGFkZjQ1
YjJiYTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBX
VEY6OlN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNjYsNyArMTY2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2Vt
ZW50KCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcigKICAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1
c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxh
dGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwogICAgIHZpcnR1
YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2Fj
aGVkRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRh
dGFTb3VyY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFTb3Vy
Y2VJbXBsLmNwcAppbmRleCAxMzY2YTgwOTRhNTA2Mzk3ZTA5NDgzNDA4MDI2NWRiY2E3YmU2NjFh
Li4zMTcwYWZmYmU0YjRiMWY4NDBjNjc1OTBlOWQ2YmFhZDU3ODUwZTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhU291cmNlSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwCkBAIC04Miw3ICs4
Miw4IEBAIHZvaWQgV2ViRGF0YVNvdXJjZUltcGw6OnJlZGlyZWN0Q2hhaW4oV2ViVmVjdG9yPFdl
YlVSTD4mIHJlc3VsdCkgY29uc3QKIAogV2ViU3RyaW5nIFdlYkRhdGFTb3VyY2VJbXBsOjpwYWdl
VGl0bGUoKSBjb25zdAogewotICAgIHJldHVybiB0aXRsZSgpOworICAgIC8vIEZJWE1FOiB1c2Ug
ZGlyZWN0aW9uIG9mIHRpdGxlIGFzIHdlbGwuCisgICAgcmV0dXJuIHRpdGxlKCkuc3RyaW5nKCk7
CiB9CiAKIFdlYk5hdmlnYXRpb25UeXBlIFdlYkRhdGFTb3VyY2VJbXBsOjpuYXZpZ2F0aW9uVHlw
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMzVkYTA5YzM0OTZjZTM3MGVlZmI5ZWEyOTc3
YWVmMzI0NjBkMDA4ZS4uN2NlYTY1YTZlMzY5NzliMDM2YTMyMWFhYTIwYzBjMjI0MzA5MWIxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTMxICBFdmFuIE1hcnRp
biAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAg
ICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisKIDIwMTEtMDMtMjkgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBbnRvbmlvIEdvbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCmluZGV4IGZhMzRhYzljMGQ3ZDYw
ODE5ODI1ODczMzQxM2YyNWFiMmE5MGJhMjYuLjk2Yjg1OWJmZTk1NjFlN2I4OTI3ODE0NjllNzFh
M2E4MmZjZDQ5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKQEAgLTU3Niw5ICs1NzYsMTAgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgp
CiAgICAgICAgIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWwobV92aWV3KTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5n
JiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewotICAgIENTdHJpbmcgY3Mg
PSB0aXRsZS51dGY4KCk7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisg
ICAgQ1N0cmluZyBjcyA9IHRpdGxlLnN0cmluZygpLnV0ZjgoKTsKICAgICBld2tfZnJhbWVfdGl0
bGVfc2V0KG1fZnJhbWUsIGNzLmRhdGEoKSk7CiAKICAgICBpZiAoZXdrX3ZpZXdfZnJhbWVfbWFp
bl9nZXQobV92aWV3KSAhPSBtX2ZyYW1lKQpAQCAtNzA5LDcgKzcxMCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25z
dCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlIGlzIHRoZSByaWdodCBjYWxsYmFjawogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKaW5kZXggNWVhNGU4Y2Fj
OTdjMGJhOWU4ZWU2OWM5MjI3NzM5Y2UxNzgxYTQwYy4uYmQwN2EzMDM0YjYxODZiMDRhYjA0OWUz
ZGYxMjBiYmQ1ZjljNDVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgY2xh
c3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExv
YWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBjbGFzcyBGcmFtZUxvYWRl
ckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgV1RGOjpQ
YXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJM
Jik7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKaW5kZXggMDVjMTVkNDc0ZjQ3OGU1ZGQwMzZhN2U0YTdiMDdhNjY0MTkzNzVhYS4u
ZWQ3M2E3ZTFlMjdjODRhMTViYzYyYTVmZDk1OThhN2NmMzg4Y2M3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0
aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3
IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oOgorCiAyMDExLTAzLTI5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBkaXNhYmxlIGFuIGFzc2VydCBp
biB0ZXN0d2VidmlldyBkdWUgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCBjYThiZjlhMDg5YWQ3
MzgzYzhkNDUzMjdhODdkODUzNGI4NWRlMDk3Li41YzU5NGU4NTZiYjBhZjRkMWYyY2RlZTAzNTY1
Mjc0MmRmYzFiODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC05NDksMTQgKzk0OSwxNSBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkK
ICAgICBub3RpZnlTdGF0dXMobV9mcmFtZSwgV0VCS0lUX0xPQURfUFJPVklTSU9OQUwpOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgaWYgKG1fbG9h
ZGluZ0Vycm9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViS2l0V2ViRnJhbWVQcml2
YXRlKiBwcml2ID0gbV9mcmFtZS0+cHJpdjsKICAgICBnX2ZyZWUocHJpdi0+dGl0bGUpOwotICAg
IHByaXYtPnRpdGxlID0gZ19zdHJkdXAodGl0bGUudXRmOCgpLmRhdGEoKSk7CisgICAgLy8gRklY
TUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgcHJpdi0+dGl0bGUgPSBnX3N0cmR1cCh0
aXRsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZShtX2ZyYW1lLCAidGl0bGUtY2hhbmdlZCIsIHByaXYtPnRpdGxlKTsKICAgICBnX29iamVjdF9u
b3RpZnkoR19PQkpFQ1QobV9mcmFtZSksICJ0aXRsZSIpOwpAQCAtMTExOSwxMSArMTEyMCwxMiBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50
KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwg
Y29uc3QgS1VSTCYgdXJsKQogewogICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRh
ID0gbV9mcmFtZS0+cHJpdjsKICAgICBnX2ZyZWUoZnJhbWVEYXRhLT50aXRsZSk7Ci0gICAgZnJh
bWVEYXRhLT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgIC8vIEZJ
WE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgIGZyYW1lRGF0YS0+dGl0bGUgPSBnX3N0
cmR1cCh0aXRsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmgKaW5kZXggYjdlYWQ3YWY1ZWJiOWU2NzY1Yzk0NmMzNTVhYzk5ZTg5YzFlOTU0
MS4uOTdlYjBmZjY4NmEzNmM1MTkxYWY0ZTAyYTZhN2RmOGY0N2FkNjI3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oCkBAIC04MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CkBAIC0xNzQsNyArMTc0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICAgICAg
dmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25z
dCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mIHRp
dGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAgICAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmlu
ZGV4IDc3NTdmZTc5MjMxNjVkZmM4Y2IxY2Q0ZGU0ZTk1MzgzZWIwOWY5ZGYuLjk5NmExZjQ0NjIx
YmUwMmRiMjY2ZDU5YjNlNmNjMjUzMmQ2MTcwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
aGFpa3UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBz
aG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVM
b2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oOgorCiAyMDExLTAzLTI1ICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCmluZGV4IDI0YTk4ZDU2MzQyODZlN2I0NDljMTEwYjNl
MWRiNTNiYTg1ZTBkMGIuLmMwNGNiN2Q0YzZmMWM4YjZhOGU0MmJlMDUyZmQ5NDIyMTExMzQ0Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcApAQCAtMjM3LDEzICsyMzcsMTMgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkK
ICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlr
dTo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aFRpdGxlJiB0aXRsZSkK
IHsKICAgICBpZiAobV93ZWJWaWV3KSB7Ci0gICAgICAgIG1fd2ViVmlldy0+U2V0UGFnZVRpdGxl
KHRpdGxlKTsKLQorICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAg
ICAgICAgbV93ZWJWaWV3LT5TZXRQYWdlVGl0bGUodGl0bGUubV9zdHJpbmcoKSk7CiAgICAgICAg
IEJNZXNzYWdlIG1lc3NhZ2UoVElUTEVfQ0hBTkdFRCk7Ci0gICAgICAgIG1lc3NhZ2UuQWRkU3Ry
aW5nKCJ0aXRsZSIsIHRpdGxlKTsKKyAgICAgICAgbWVzc2FnZS5BZGRTdHJpbmcoInRpdGxlIiwg
dGl0bGUuc3RyaW5nKCkpOwogICAgICAgICBtX21lc3Nlbmdlci0+U2VuZE1lc3NhZ2UoJm1lc3Nh
Z2UpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oIGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKaW5kZXggZGJkMzA4NGNhNGNiN2Yy
OWFlYjc2ZDI0NGZkZGQ5MzBlOTg5NzBiMi4uZjU3NjU0NWM4NmE2YmE0MzdhMWQ2NmQ3Y2ZlZmUy
NzQ1ZmRiNzY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9z
ZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlu
aXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlz
aExvYWQoKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBhZGRIaXN0b3J5SXRlbUZvckZyYWdtZW50U2Nyb2xsKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpOwog
CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCBkMmMyMGVkYmJjNDVmMDY5NzhhYjllYjMyNTdkNDNkZTJmYjc1MDQ2Li5j
OTYyYTY5NTRmNzNkODJmYmYyNWJhNjliYTkyNjkxZjE2NzEzNjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRp
dGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcg
RnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0
bGUpOgorCiAyMDExLTAzLTMwICBEb21pbmljIENvb25leSAgPGRvbWluaWNjQGdvb2dsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggNGZlNTY2NGRkNjA1MTZjMTE4NmU4NTVkYjIzYjM3ZTUyNGQzODM2Ni4uZGY4YjM0YjUyNmNm
ODhlODRkMDZkODJhYTNlODg1NjY2OWNlMWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMDEsNyAr
MTAxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmlu
Z1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRs
ZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25z
dCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwog
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpI
VE1MRnJhbWVPd25lckVsZW1lbnQqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4
IDkyYzJiMDNiMWM5Y2YwYzhiYmVmMTExMTdhMDA4ZmRiOTM2M2UwYzAuLjI3Y2U2MmFjNGQwZTM2
YTRjMjZmNzlkZWVmZjIzZTQxY2MwNWRkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC02MjQsMTIg
KzYyNCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKCkKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0
aW9ucy0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxl
Y3Rvcih3ZWJWaWV3OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6KSwgbV93ZWJGcmFt
ZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRs
ZSkKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgp
KTsgICAKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxl
bWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3
ZWJWaWV3KTsKICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZUZ1bmMpCi0gICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlk
UmVjZWl2ZVRpdGxlOmZvckZyYW1lOiksIChOU1N0cmluZyAqKXRpdGxlLCBtX3dlYkZyYW1lLmdl
dCgpKTsKKyAgICAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAg
IENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZVRpdGxlOmZv
ckZyYW1lOiksIChOU1N0cmluZyAqKXRpdGxlLnN0cmluZygpLCBtX3dlYkZyYW1lLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygp
CkBAIC04OTMsNyArODk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xv
YmFsSGlzdG9yeSgpCiAgICAgICAgIFdlYkhpc3RvcnlEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2Fj
aGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRIaXN0b3J5RGVsZWdhdGVJbXBsZW1lbnRh
dGlvbnModmlldyk7CiAgICAgICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPm5hdmlnYXRlZEZ1bmMp
IHsKICAgICAgICAgICAgIFdlYk5hdmlnYXRpb25EYXRhICpkYXRhID0gW1tXZWJOYXZpZ2F0aW9u
RGF0YSBhbGxvY10gaW5pdFdpdGhVUkxTdHJpbmc6bG9hZGVyLT51cmxGb3JIaXN0b3J5KCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGl0bGU6bG9hZGVyLT50aXRsZSgpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRpdGxlOmxvYWRlci0+dGl0bGUoKS5zdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsUmVx
dWVzdDpsb2FkZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKS5uc1VSTFJlcXVlc3QoKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXNwb25zZTpsb2FkZXItPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhhc1N1YnN0aXR1dGVEYXRhOmxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlk
KCkKQEAgLTkwNyw3ICs5MDgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVH
bG9iYWxIaXN0b3J5KCkKICAgICB9CiAKICAgICBbW1dlYkhpc3Rvcnkgb3B0aW9uYWxTaGFyZWRI
aXN0b3J5XSBfdmlzaXRlZFVSTDpsb2FkZXItPnVybEZvckhpc3RvcnkoKSAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhUaXRsZTpsb2FkZXItPnRpdGxlKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhUaXRsZTpsb2Fk
ZXItPnRpdGxlKCkuc3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1ldGhvZDpsb2FkZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKS5odHRwTWV0aG9k
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzRmFpbHVyZTps
b2FkZXItPnVybEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmUoKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5jcmVhc2VWaXNpdENvdW50OiFsb2FkZXItPmNsaWVudFJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeSgpXTsgLy8gRG8gbm90IGluY3JlYXNlIHZpc2l0IGNvdW50IGR1ZSB0
byBuYXZpZ2F0aW9ucyB0aGF0IHdlcmUgbm90IGluaXRpYXRlZCBieSB0aGUgdXNlciBkaXJlY3Rs
eSwgYXZvaWRpbmcgZ3Jvd3RoIGZyb20gcHJvZ3JhbW1hdGljIHJlbG9hZHMuCkBAIC0xMTc5LDcg
KzExODAsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBsb2FkZXIucmVs
ZWFzZSgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYg
dXJsKQogewogICAgIFdlYlZpZXcqIHZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkp
OwogICAgIApAQCAtMTE4OCw3ICsxMTg5LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQogICAgICAgICBp
ZiAoIWltcGxlbWVudGF0aW9ucy0+c2V0VGl0bGVGdW5jKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgCi0gICAgICAgIENhbGxIaXN0b3J5RGVsZWdhdGUoaW1wbGVtZW50YXRpb25z
LT5zZXRUaXRsZUZ1bmMsIHZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnVwZGF0ZUhpc3RvcnlUaXRs
ZTpmb3JVUkw6KSwgKE5TU3RyaW5nICopdGl0bGUsIChOU1N0cmluZyAqKXVybCk7CisgICAgICAg
IC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBDYWxsSGlzdG9yeURl
bGVnYXRlKGltcGxlbWVudGF0aW9ucy0+c2V0VGl0bGVGdW5jLCB2aWV3LCBAc2VsZWN0b3Iod2Vi
Vmlldzp1cGRhdGVIaXN0b3J5VGl0bGU6Zm9yVVJMOiksIChOU1N0cmluZyAqKXRpdGxlLnN0cmlu
ZygpLCAoTlNTdHJpbmcgKil1cmwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAt
MTE5Niw3ICsxMTk4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQogICAgIG5zVVJMID0gW25zVVJMIF93
ZWJraXRfY2Fub25pY2FsaXplXTsKICAgICBpZighbnNVUkwpCiAgICAgICAgIHJldHVybjsKLSAg
ICBOU1N0cmluZyAqdGl0bGVOU1N0cmluZyA9IHRpdGxlOworICAgIE5TU3RyaW5nICp0aXRsZU5T
U3RyaW5nID0gdGl0bGUuc3RyaW5nKCk7CiAgICAgICAgCiAgICAgW1tbV2ViSGlzdG9yeSBvcHRp
b25hbFNoYXJlZEhpc3RvcnldIGl0ZW1Gb3JVUkw6bnNVUkxdIHNldFRpdGxlOnRpdGxlTlNTdHJp
bmddOwogfQpAQCAtMTI4NSw3ICsxMjg3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgICAgIC8vIGxpa2UgdGhlIG9u
ZXMgdGhhdCBTYWZhcmkgdXNlcyBmb3IgYm9va21hcmtzIGl0IGlzIHRoZSBvbmx5IHdheSB0aGUg
RG9jdW1lbnRMb2FkZXIKICAgICAgICAgLy8gd2lsbCBnZXQgdGhlIHByb3BlciB0aXRsZS4KICAg
ICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IFtkYXRhU291cmNlIF9k
b2N1bWVudExvYWRlcl0pCi0gICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VGl0bGUoW2Rh
dGFTb3VyY2UgcGFnZVRpdGxlXSk7CisgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VGl0
bGUoU3RyaW5nV2l0aERpcmVjdGlvbihbZGF0YVNvdXJjZSBwYWdlVGl0bGVdLCBMVFIpKTsKICAg
ICB9CiAKICAgICBpZiAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGNvcmVGcmFtZS0+
b3duZXJFbGVtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDAzZWRkNWQ2OTIyNTA1ZDcwMTlhYjE3MjIxODRkZGFi
NmJiMjU5ZjIuLjg0MmU2MDVmYmFlOTk5NTM1Njg0MGNmOGZmMDg2NWM4Y2NhMzEwZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
CkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvbmNhdGVuYXRlQXJyYXlzKE5T
QXJyYXkgKmZpcnN0LCBOU0FycmF5ICpzZWNvbmQpCiAKIC0gKE5TU3RyaW5nICopdGl0bGUKIHsK
LSAgICByZXR1cm4gbnNTdHJpbmdOaWxJZkVtcHR5KFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9j
dW1lbnRMb2FkZXJdLT50aXRsZSgpKTsKKyAgICByZXR1cm4gbnNTdHJpbmdOaWxJZkVtcHR5KFtf
cHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT50aXRsZSgpLnN0cmluZygpKTsK
IH0KIAogLSAoRE9NRG9jdW1lbnQgKilET01Eb2N1bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA3YmFi
NmE5MjliOGZjN2M3YmMwYzhlNzE3YzM1MmM0ZjY4OWFjZDBiLi5mYjVlNmIzMGMyZTVlMTZiMjc4
Zjc4OGUwNzI3YTM3N2UyN2M4ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQg
ZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGlu
dGVyZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0
VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoK
KwogMjAxMS0wMy0zMCAgWWkgU2hlbiAgPHlpLjQuc2hlbkBub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRl
eCBkMzE4NDk0YmFlY2MzMmU4MDgxOWY5ZmY2NDJjOTZlZjhiZmNiN2NiLi5mODI5ZjMzYjZmZGQ3
NDg1YjI2NDhmZmE0YzA4YzhjODkxNDdjMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTQ0Nyw4ICs0
NDcsOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKQogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUpCiB7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCiAgICAgaWYgKGR1
bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFJlY2VpdmVU
aXRsZTogJXNcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQobV9mcmFtZSkpLCBxUHJpbnRhYmxlKFFTdHJpbmcodGl0bGUpKSk7CiAKQEAgLTcwOSwxNiAr
NzEwLDE3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cHJlcGFyZUZvckRhdGFTb3VyY2VS
ZXBsYWNlbWVudCgpCiB7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3Qg
S1VSTCYgdXJsKQogewogICAgIC8vIFVzZWQgYnkgQXBwbGUgV2ViS2l0IHRvIHVwZGF0ZSB0aGUg
dGl0bGUgb2YgYW4gZXhpc3RpbmcgaGlzdG9yeSBpdGVtLgogICAgIC8vIFF0V2ViS2l0IGRvZXNu
J3QgYWNjb21vZGF0ZSB0aGlzIG9uIGhpc3RvcnkgaXRlbXMuIElmIGl0IGV2ZXIgZG9lcywKICAg
ICAvLyBpdCBzaG91bGQgYmUgcHJpdmF0ZUJyb3dzaW5nLWF3YXJlLkZvciBub3csIHdlIGFyZSBq
dXN0IHBhc3NpbmcKICAgICAvLyBnbG9iYWxoaXN0b3J5IGxheW91dCB0ZXN0cy4KKyAgICAvLyBG
SVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KICAgICBpZiAoZHVtcEhpc3RvcnlDYWxsYmFj
a3MpIHsKICAgICAgICAgcHJpbnRmKCJXZWJWaWV3IHVwZGF0ZWQgdGhlIHRpdGxlIGZvciBoaXN0
b3J5IFVSTCBcIiVzXCIgdG8gXCIlc1wiLlxuIiwKICAgICAgICAgICAgIHFQcmludGFibGUoZHJ0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSksCi0gICAgICAgICAgICBxUHJp
bnRhYmxlKFFTdHJpbmcodGl0bGUpKSk7CisgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmco
dGl0bGUuc3RyaW5nKCkpKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCmluZGV4IDNlYzVmMjBkYjgy
ZjBlNjg0NTM4ZmM1NjRiNGJmMTNkZWZkN2Y4MmEuLjkwMDQ4OWQwNjEwZjVmYmUyMDBjMmRhN2Mz
MmJkNzk2YjVlOWNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAog
ICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJik7CiAKICAgICB2aXJ0dWFs
IFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
aW5kZXggMThmYWU4YTY4MzI5MTBkNWNiYjAyZmY0ZWE5MmJmNDM0YjQ2NDIwNS4uZjY3MWZiYzAw
NWIyOWMzYzE0YjhjMDEzMTE4Y2YzZWIzNTQ5ODUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4gc2hv
dWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9h
ZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKwogMjAxMS0wMy0zMCAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggMTBhMzE5MGQyYTRhYWU2OWUwMGNiYTZmZDhkY2VlOTFiYzllMGY0My4uN2JkOWM4
YzA4MjMyNzY4ZDBhYzZjOTFhZDAwOWFiODVhYWM1OGZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtMzY0LDEyICszNjQsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOwogfQogCi12
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgV2ViVmll
dyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1l
TG9hZERlbGVnYXRlPiBmcmFtZUxvYWREZWxlZ2F0ZTsKICAgICBpZiAoU1VDQ0VFREVEKHdlYlZp
ZXctPmZyYW1lTG9hZERlbGVnYXRlKCZmcmFtZUxvYWREZWxlZ2F0ZSkpKQotICAgICAgICBmcmFt
ZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUpLCBt
X3dlYkZyYW1lKTsKKyAgICAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisg
ICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywgQlN0cmlu
Zyh0aXRsZS5zdHJpbmcoKSksIG1fd2ViRnJhbWUpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKQEAgLTY3MiwxMyArNjczLDEzIEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1
bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAg
V2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdl
Ykhpc3RvcnlEZWxlZ2F0ZT4gaGlzdG9yeURlbGVnYXRlOwogICAgIHdlYlZpZXctPmhpc3RvcnlE
ZWxlZ2F0ZSgmaGlzdG9yeURlbGVnYXRlKTsKICAgICBpZiAoaGlzdG9yeURlbGVnYXRlKSB7Ci0g
ICAgICAgIEJTdHJpbmcgdGl0bGVCU1RSKHRpdGxlKTsKKyAgICAgICAgQlN0cmluZyB0aXRsZUJT
VFIodGl0bGUuc3RyaW5nKCkpOwogICAgICAgICBCU3RyaW5nIHVybEJTVFIodXJsLnN0cmluZygp
KTsKICAgICAgICAgaGlzdG9yeURlbGVnYXRlLT51cGRhdGVIaXN0b3J5VGl0bGUod2ViVmlldywg
dGl0bGVCU1RSLCB1cmxCU1RSKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzA0LDcgKzcwNSw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKICAgICBpZiAoIWl0ZW1Qcml2YXRlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpdGVtUHJpdmF0ZS0+c2V0VGl0bGUoQlN0cmluZyh0aXRsZSkpOworICAgIGl0ZW1Q
cml2YXRlLT5zZXRUaXRsZShCU3RyaW5nKHRpdGxlLnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZy
YW1lKiBjYWNoZWRGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGQ4NjRiMjM0ZTQwMzU5ODNjN2Mz
ZTMzYWRjMmQ4N2UyM2I0YmRmMWMuLjE4NTcwODg0Njk5Yjc0MjI2YzIwN2NhYjE2ZjkzNWIwN2Qx
YmZhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1l
bnRMb2FkKCk7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0
Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAgdmlydHVh
bCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNo
ZWRGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCBlNTk1ZjI1ZGM3ODM1MTFiZDk3YmVj
ZTQxNDQzNzUyZTRlYTAyNTA2Li5jZTkxYzk4ODQ3NjZmYjFhMTdiMGUyNjgxZGMzOWFjOWUzN2Zh
Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTMxICBF
dmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEK
KworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNldFRpdGxl
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6CisK
IDIwMTEtMDMtMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3Bw
CmluZGV4IDJkODgxMmZhMGRhMTYyMjZiMjBjNmNmZTFlZjg4N2M3OGNhZmI4YjkuLjY0OGM0YTU1
YTI0NWQzNGU1NGViMjVhNzU4MTM4ODhkMDc2ZDIwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
LmNwcApAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlz
cGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmcmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5D
RTo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZShjb25zdCBTdHJp
bmcmLCBjb25zdCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCmluZGV4IDQwMTIyNWQyMjllODY5M2M5
ZTZhZDFiOWQ1ZTRmMTVmN2MyYjlmYmUuLjYxNTM5YzU1NjczMDg3NGVjMWNkYThkMDEyY2RjZDdi
Yzc5NjJlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCkBAIC03Niw3ICs3Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQ
cm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTY5LDcg
KzE2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VS
ZXBsYWNlbWVudCgpOwogCiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggOTgw
ZmE4YTAyYjNkYTkxYTU1YWY0NDU0MzQxNWI2MzNlMjAxNzZhYS4uMWEwYTMxNDVlOGYzYjAyMmY1
OTQzNWU0MzE1NzNjYWYyNGVhNjlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0
IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBp
bnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0
VGl0bGUpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgor
CiAyMDExLTAzLTI1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAppbmRleCBhZmMyNTVjY2FjZjk0
Yjc0YmQ0MzIyOWQzNjZjY2JhY2IwMTZmMjA4Li5iNDA4NjM2ZDMzOWQ2Y2NjZjBjY2U2ZTg2NzI4
YmMzMGExM2UxYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCkBAIC0yOTUsMTIgKzI5NSwxMyBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogfQog
CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgaWYg
KG1fd2ViVmlldykgewotICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZSk7Cisg
ICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBtX3dlYlZp
ZXctPlNldFBhZ2VUaXRsZSh0aXRsZS5zdHJpbmcoKSk7CiAgICAgICAgIHd4V2ViVmlld1JlY2Vp
dmVkVGl0bGVFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7Ci0gICAgICAgIHdrRXZlbnQuU2V0VGl0
bGUodGl0bGUpOworICAgICAgICB3a0V2ZW50LlNldFRpdGxlKHRpdGxlLnN0cmluZygpKTsKICAg
ICAgICAgbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQp
OwogICAgIH0KIH0KQEAgLTUyNSw3ICs1MjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6
OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogfQogCiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXeDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlLCBjb25zdCBLVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guaCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
LmgKaW5kZXggMjU0Zjk1YzQyYzQyMjk0ZmNkZTI2OGU4NjBkZWNmYmUxZmVjYzc2YS4uYjI4ZDM4
OTdhYzliZDBhNWNlZTYyMTZkYzQxNTQ2M2YzNGNiMzg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCkBAIC0xMDMsNyAr
MTAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hXaWxsQ2xvc2UoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFN0cmluZyYgdGl0bGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkKCk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkSGlzdG9yeUl0ZW1Gb3JGcmFnbWVudFNjcm9sbCgp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0
IEtVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggOWY3NjgyNGZkOTYyZGY5YjViNTU3ZjBhZGY4NjAyOGJiZjc0NWUy
Mi4uOTZlOTAwM2NkNGY1YTc3ODgyYTEzMTMzYzUyYzJhZjY1ZWZlOWQyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRs
ZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZy
YW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0wMy0zMCAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1h
Y2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBm
YTNjZGNlZjdiNTUyMDI0MzBlNTk3ZjFlZDc0MTY3M2NiMGIwMDU4Li4xNDg3YTM1YTUyNTI2OWJj
MmRkZDM3MzI0MmRjZWEyOGY2ODcxMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5m
cmFtZUlEKCksIHVybCwgdW5yZWFjaGFibGVVUkwsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC00MTIsMTAgKzQxMiwxMSBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlKQogICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRo
ZSBidW5kbGUgY2xpZW50LgotICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50
KCkuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUod2ViUGFnZSwgdGl0bGUsIG1fZnJhbWUsIHVzZXJE
YXRhKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHdl
YlBhZ2UsIHRpdGxlLnN0cmluZygpLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3Rp
ZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgdGl0bGUsIElu
amVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJh
bWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0aXRsZS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpAQCAtODQ2LDcgKzg0Nyw4IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogCiAgICAgV2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZSBkYXRhOwogICAgIGRhdGEudXJsID0gbG9hZGVyLT51cmxGb3JI
aXN0b3J5KCkuc3RyaW5nKCk7Ci0gICAgZGF0YS50aXRsZSA9IGxvYWRlci0+dGl0bGUoKTsKKyAg
ICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBkYXRhLnRpdGxlID0gbG9h
ZGVyLT50aXRsZSgpLnN0cmluZygpOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0
aW9uRGF0YSh3ZWJQYWdlLT5wYWdlSUQoKSwgZGF0YSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7
CiB9CkBAIC0xMDYxLDE0ICsxMDYzLDE1IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAg
cmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgZGF0YSk7CiB9CiAKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFn
ZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAorICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4
dDo6RGlkVXBkYXRlSGlzdG9yeVRpdGxlKHdlYlBhZ2UtPnBhZ2VJRCgpLAotICAgICAgICB0aXRs
ZSwgdXJsLnN0cmluZygpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpLCAwKTsKKyAgICAgICAgdGl0bGUu
c3RyaW5nKCksIHVybC5zdHJpbmcoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CiAKIFN0
cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDE5NDg1NDE5MjA3MzEwMmQwZTdkZTcyODJiYTc0
MDNkZjZhOTg1MWIuLjZjODNlOWRiMDdmZDI0YTRkZGE0MzYwNDRjOTM2Y2M5ODA0ZjI3ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNjUs
NyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3Vy
Y2VSZXBsYWNlbWVudCgpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGly
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIAogICAgIHZpcnR1YWwgU3RyaW5n
IHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87704</attachid>
            <date>2011-03-31 05:33:21 -0700</date>
            <delta_ts>2011-03-31 05:41:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50961-20110331053800.patch</filename>
            <type>text/plain</type>
            <size>75102</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1NjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMDg1MWI2ZmE0NTE4YWEz
OGI5NDNhZWI0OWI2YTgwNTE0MGVjNTBlLi4zNTIxZWYwOTZiOTVhYmU0OGRjNTU4NDY3NDk0MzZl
ZWM2YTkxMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDMtMzEgIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisg
ICAgICAgIEludHJvZHVjZSBhIG5ldyBTdHJpbmdXaXRoRGlyZWN0aW9uIG9iamVjdCB0aGF0IGNh
cnJpZXMgYSBTdHJpbmcgYWxvbmcKKyAgICAgICAgd2l0aCB0aGUgVGV4dERpcmVjdGlvbiBhc3Nv
Y2lhdGVkIHdpdGggdGhlIFN0cmluZy4gIFVzZSB0aGlzIG9iamVjdCBmb3IKKyAgICAgICAgZG9j
dW1lbnQgdGl0bGVzIHVzZWQgd2l0aGluIFdlYkNvcmUsIGJlY2F1c2UgaW4gSFRNTCB0aGUgZGly
ZWN0aW9uIG9mCisgICAgICAgIGEgdGl0bGUgY2FuIGJlIHNldCB3aXRoIHRoZSAnZGlyJyBhdHRy
aWJ1dGUuCisKKyAgICAgICAgUHV0IEZJWE1FcyBhdCB0aGUgV2ViS2l0IGxldmVsIHRvIGV4cG9z
ZSB0aGUgbmV3IGRpcmVjdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICB0byBjbGllbnRzLgorCisg
ICAgICAgIE5vIGJlaGF2aW9yYWwgY2hhbmdlIGludGVuZGVkLCBzbyBubyBuZXcgdGVzdHMuICBB
IGZvbGxvdy11cCB3aWxsIGV4cG9zZQorICAgICAgICB0aGUgdGl0bGUgZGlyZWN0aW9uIGFuZCBo
b3BlZnVsbHkgY2FuIGJlIGFjY29tcGFuaWVkIGJ5IHRlc3RzIHRoYXQKKyAgICAgICAgdmVyaWZ5
IGl0IGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp1cGRhdGVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVRpdGxlKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aXRsZSk6CisgICAgICAg
ICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRs
ZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxl
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6dGV4dFdp
dGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0VGl0bGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnRpdGxlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRUaXRsZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRo
TG9ja2VkQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9s
bGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbjo6U3RyaW5n
V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb246Om9wZXJh
dG9yIT0pOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTEtMDMtMzEg
IEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDFlNjllZWNhMjViNzliYzQ2
YmIxNDE5YTM5NjNmMjU4ZmQyY2U4Yi4uMWVkMDY1YzhiNDBiZDkyYjBhODcwYTg2MGEwYTBlZWE4
NzI4MTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI2ODgsNiArMjY4OCw3IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRT
dHJpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmlu
Zy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N1ZmZpeFRyZWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEJvdW5kYXJpZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGY0M2NkNWJl
MTQ0YmMxOGQyOTZkNjQ5NTcwMDA3NGE0OTRlODVlMTUuLjFiMmE5YzJiMTAwOTAyNjVlOTgzZWQy
YzE2ZTNlYTQ0MDZmZDk3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zNDEsNyArMzQxLDcg
QEAgX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjIyY2FuY2VsTWFpblJlc291cmNlTG9hZEVS
S05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIyNHJlbW92
ZVBsdWdJblN0cmVhbUxvYWRlckVQTlNfMTRSZXNvdXJjZUxvYWRlckUKIF9fWk43V2ViQ29yZTE0
RG9jdW1lbnRMb2FkZXI3cmVxdWVzdEV2CiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOHNl
dEZyYW1lRVBOU181RnJhbWVFCi1fX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOHNldFRpdGxl
RVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjhzZXRUaXRsZUVS
S05TXzE5U3RyaW5nV2l0aERpcmVjdGlvbkUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXJD
MUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTRTdWJzdGl0dXRlRGF0YUUKIF9fWk43V2Vi
Q29yZTE0RG9jdW1lbnRMb2FkZXJDMkVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTRTdWJz
dGl0dXRlRGF0YUUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXJEMkV2CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggNTU3NmI5OGFkNGVhY2VhYzZhMzZjMjJjOTE4YTlhMDMzZmI3ZTUzZS4uY2I0MjZk
NzkyZGM5MWZiMTk1MTU2MDU3ZjJhNGM3ZTQyODE3ZDU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
NDg0NCw2ICs0ODQ0LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHBy
ZXNzaW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS90ZXh0L1N1ZmZpeFRyZWUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9U
ZXh0Qm91bmRhcmllcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3JJQ1UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggZjAwYTU5MTYyZjdkN2E4NWFkZWFhZjI3MGMzZTI5NTA3ZjQ2YmE4OC4u
MTQ4MjhhMWZlZDhhMGUwYzk2MjQwYTNhZWQyOWRiNGY3M2U5YjdmMSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMwNTI5LDYgKzMwNTI5LDEw
IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVx0ZXh0XFN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcU3VmZml4
VHJlZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ1ZWE2NjRkMGFlNjU0MzdmMTVhYWM2
YmIxMGJhMmMyYzBjYmMyYTQuLjUzNDBkNjMyOTBiM2I3NDYzYzY3M2IyY2IxZGEzNGVhMjgwMjI3
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTMxMjgsNiArMzEyOCw3IEBACiAJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFFQSAv
KiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUI0MTcwNjQx
MjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0MTcwNjIxMjU2NjJCMzAwNkIy
OEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCNDE3MDY1MTI1NjYyQjMwMDZCMjhGQyAvKiBB
cHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUI0MTcwNjMxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tF
bGVtZW50Q29tbWFuZC5jcHAgKi87IH07CisJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBT
dHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjZDNDE1MjEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlC
QUI2QzZDMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQUI2QzZBMTI1NTA2MzEwMDE2MjZENCAv
KiBFZGl0aW5nU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5QkFCNkM2RDEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQUI2QzZCMTI1
NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuY3BwICovOyB9OwogCQk5QkFGM0IyNDEyQzFB
Mzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJBRjNCMjMxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRp
bmdEaXJlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTYyOSw2ICs5NjMwLDcgQEAKIAkJOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8q
IE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdElt
cGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNDE3MDYyMTI1NjYy
QjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCNDE3MDYzMTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2Nr
RWxlbWVudENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nV2l0aERpcmVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QTEyNTUwNjMxMDAxNjI2RDQgLyogRWRp
dGluZ1N0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdTdHls
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QjEyNTUwNjMxMDAxNjI2
RDQgLyogRWRpdGluZ1N0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEVkaXRpbmdTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQUYz
QjIzMTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRpbmdEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3Nzk4LDYgKzE3ODAwLDcgQEAKIAkJCQlCMkMzRDlGRTBEMDA2QzFEMDBF
RjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCAqLywKIAkJCQlCMkMzRDlGRjBEMDA2QzFEMDBF
RjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmggKi8sCiAJCQkJQjJDM0RBMDAwRDAwNkMxRDAwRUY2
RjI2IC8qIFN0cmluZy5jcHAgKi8sCisJCQkJOUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0
cmluZ1dpdGhEaXJlY3Rpb24uaCAqLywKIAkJCQk5N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyog
U3VmZml4VHJlZS5oICovLAogCQkJCTM3MkMwMEMzMTI5NjExRjEwMDVDOTU3NSAvKiBUZXh0Qm91
bmRhcmllcy5jcHAgKi8sCiAJCQkJQjJDM0RBMDQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3Vu
ZGFyaWVzLmggKi8sCkBAIC0yMjI1Nyw2ICsyMjI2MCw3IEBACiAJCQkJM0FCMDJEMkExMkQ0Rjkx
NjAwRkJCNjk0IC8qIFN0b3JhZ2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzQUMzNjgw
MDEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgxQUM2QzM2MTMxQzU3RDMwMDA5QTdFMCAvKiBTdHJpbmdDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOUI2QzQxNTMxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJl
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NDg4RDZCMERENUE4M0QwMDlEODNCMiAvKiBT
dHJpbmdTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIzNTQwRjMwRDAwNzgy
RTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5Rjc3
NzYwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlM2Q3ZjUzZGIwZmRlZjYwZTYwNmE3ZTUwNTZl
ZTU4ODAyN2E4Yjg2Li41MTQ0NzAzMmUwMGYzNmVkNmJhNTlmYjRiYjgzMzI5OTQ3MmEwZDU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM4OSw4ICszODksNiBAQCBEb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBp
c0hUTUwpCiAgICAgLCBtX2NvbnRhaW5zVmFsaWRpdHlTdHlsZVJ1bGVzKGZhbHNlKQogICAgICwg
bV91cGRhdGVGb2N1c0FwcGVhcmFuY2VSZXN0b3Jlc1NlbGVjdGlvbihmYWxzZSkKICAgICAsIG1f
aWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50KDApCi0gICAgLCBtX3RpdGxlKCIiKQotICAgICwg
bV9yYXdUaXRsZSgiIikKICAgICAsIG1fdGl0bGVTZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICwg
bV91cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OnVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZVRpbWVyRmlyZWQpCiAgICAgLCBtX3N0YXJ0VGltZShjdXJyZW50VGltZSgpKQpA
QCAtMTI3MSw4ICsxMjY5LDkgQEAgRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFjY2Vz
c0tleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKICAqICAyLiBUcmltIGxlYWRpbmcgYW5kIHRy
YWlsaW5nIHNwYWNlcwogICogIDMuIENvbGxhcHNlIGludGVybmFsIHdoaXRlc3BhY2UuCiAgKi8K
LXN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhbm9uaWNhbGl6ZWRUaXRsZShEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitzdGF0aWMgaW5saW5lIFN0cmluZ1dpdGhEaXJlY3Rp
b24gY2Fub25pY2FsaXplZFRpdGxlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgdGl0bGVXaXRoRGlyZWN0aW9uKQogeworICAgIGNvbnN0IFN0cmluZyYgdGl0
bGUgPSB0aXRsZVdpdGhEaXJlY3Rpb24uc3RyaW5nKCk7CiAgICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMgPSB0aXRsZS5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGl0bGUu
bGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgaTsKQEAgLTEyODgsNyArMTI4Nyw3IEBAIHN0YXRpYyBp
bmxpbmUgU3RyaW5nIGNhbm9uaWNhbGl6ZWRUaXRsZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCiAgICAgfQogCiAgICAgaWYgKGkgPT0gbGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBTdHJpbmdXaXRoRGlyZWN0aW9uKCk7CiAKICAgICAv
LyBSZXBsYWNlIGNvbnRyb2wgY2hhcmFjdGVycyB3aXRoIHNwYWNlcywgYW5kIGJhY2tzbGFzaGVz
IHdpdGggY3VycmVuY3kgc3ltYm9scywgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UuCiAgICAgYm9v
bCBwcmV2aW91c0NoYXJXYXNXUyA9IGZhbHNlOwpAQCAtMTMxMywxNyArMTMxMiwxNyBAQCBzdGF0
aWMgaW5saW5lIFN0cmluZyBjYW5vbmljYWxpemVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHRpdGxlKQogICAgIH0KIAogICAgIGlmICghYnVpbGRlckluZGV4ICYmIGJ1
ZmZlcltidWlsZGVySW5kZXhdID09ICcgJykKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICBy
ZXR1cm4gU3RyaW5nV2l0aERpcmVjdGlvbigpOwogCiAgICAgYnVmZmVyLnNocmluayhidWlsZGVy
SW5kZXggKyAxKTsKIAogICAgIC8vIFJlcGxhY2UgdGhlIGJhY2tzbGFzaGVzIHdpdGggY3VycmVu
Y3kgc3ltYm9scyBpZiB0aGUgZW5jb2RpbmcgcmVxdWlyZXMgaXQuCiAgICAgZG9jdW1lbnQtPmRp
c3BsYXlCdWZmZXJNb2RpZmllZEJ5RW5jb2RpbmcoYnVmZmVyLmNoYXJhY3RlcnMoKSwgYnVmZmVy
Lmxlbmd0aCgpKTsKICAgICAKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOworICAg
IHJldHVybiBTdHJpbmdXaXRoRGlyZWN0aW9uKFN0cmluZzo6YWRvcHQoYnVmZmVyKSwgdGl0bGVX
aXRoRGlyZWN0aW9uLmRpcmVjdGlvbigpKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6dXBkYXRlVGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGlmIChtX3Jhd1RpdGxlID09IHRp
dGxlKQogICAgICAgICByZXR1cm47CkBAIC0xMzQ5LDE2ICsxMzQ4LDE3IEBAIHZvaWQgRG9jdW1l
bnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICB1cGRhdGVUaXRsZSh0aXRsZSk7CisgICAgLy8gVGhlIERPTSBBUEkgaGFzIG5vIG1ldGhvZCBv
ZiBzcGVjaWZ5aW5nIGRpcmVjdGlvbiwgc28gYXNzdW1lIExUUi4KKyAgICB1cGRhdGVUaXRsZShT
dHJpbmdXaXRoRGlyZWN0aW9uKHRpdGxlLCBMVFIpKTsKIAogICAgIGlmIChtX3RpdGxlRWxlbWVu
dCkgewogICAgICAgICBBU1NFUlQobV90aXRsZUVsZW1lbnQtPmhhc1RhZ05hbWUodGl0bGVUYWcp
KTsKICAgICAgICAgaWYgKG1fdGl0bGVFbGVtZW50LT5oYXNUYWdOYW1lKHRpdGxlVGFnKSkKLSAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPihtX3RpdGxlRWxlbWVudC5n
ZXQoKSktPnNldFRleHQobV90aXRsZSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVGl0
bGVFbGVtZW50Kj4obV90aXRsZUVsZW1lbnQuZ2V0KCkpLT5zZXRUZXh0KHRpdGxlKTsKICAgICB9
CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlRWxlbWVudChjb25zdCBTdHJpbmcmIHRpdGxl
LCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpCit2b2lkIERvY3VtZW50OjpzZXRUaXRsZUVsZW1lbnQo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIEVsZW1lbnQqIHRpdGxlRWxlbWVudCkK
IHsKICAgICBpZiAodGl0bGVFbGVtZW50ICE9IG1fdGl0bGVFbGVtZW50KSB7CiAgICAgICAgIGlm
IChtX3RpdGxlRWxlbWVudCB8fCBtX3RpdGxlU2V0RXhwbGljaXRseSkKQEAgLTEzODMsMTMgKzEz
ODMsMTMgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50
KQogICAgICAgICBmb3IgKE5vZGUqIGUgPSBoZWFkRWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBlOyBl
ID0gZS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIGlmIChlLT5oYXNUYWdOYW1lKHRpdGxl
VGFnKSkgewogICAgICAgICAgICAgICAgIEhUTUxUaXRsZUVsZW1lbnQqIHRpdGxlRWxlbWVudCA9
IHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPihlKTsKLSAgICAgICAgICAgICAgICBzZXRU
aXRsZUVsZW1lbnQodGl0bGVFbGVtZW50LT50ZXh0KCksIHRpdGxlRWxlbWVudCk7CisgICAgICAg
ICAgICAgICAgc2V0VGl0bGVFbGVtZW50KHRpdGxlRWxlbWVudC0+dGV4dFdpdGhEaXJlY3Rpb24o
KSwgdGl0bGVFbGVtZW50KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAoIW1fdGl0bGVFbGVtZW50KQotICAgICAgICB1cGRhdGVUaXRsZSgi
Iik7CisgICAgICAgIHVwZGF0ZVRpdGxlKFN0cmluZ1dpdGhEaXJlY3Rpb24oKSk7CiB9CiAKIFN0
cmluZyBEb2N1bWVudDo6bm9kZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAw
NWRmYjc2ZWY1MWZkMTUxMGUxMDM4MTM1MWVjY2MwYzEzZGE1N2FjLi44YTgzZDU5ZTc5M2FhNDJk
ODRkNDU4MzhjNzU0OTBiOTA1N2MwYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVk
TmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
dHJpbmdXaXRoRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaWV3
cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CkBAIC04MTEsOSAr
ODEyLDExIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIDAgaWYgdGhpcyBpcyB0aGUgdG9wIGxl
dmVsIGRvY3VtZW50LgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KCkg
Y29uc3Q7CiAKLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9Cisg
ICAgLy8gVXNlZCBieSBET00gYmluZGluZ3M7IG5vIGRpcmVjdGlvbiBrbm93bi4KKyAgICBTdHJp
bmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlLnN0cmluZygpOyB9CiAgICAgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFRpdGxlRWxlbWVudChjb25zdCBT
dHJpbmcmIHRpdGxlLCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpOworCisgICAgdm9pZCBzZXRUaXRs
ZUVsZW1lbnQoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIEVsZW1lbnQqIHRpdGxlRWxlbWVu
dCk7CiAgICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpOwogCiAgICAg
U3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CkBAIC0xMTU4LDcgKzExNjEsNyBA
QCBwcml2YXRlOgogCiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIHVw
ZGF0ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZvaWQgdXBkYXRlVGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNl
VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsKICAgICB2b2lkIHVwZGF0ZUJhc2VVUkwoKTsK
IApAQCAtMTI5NSw4ICsxMjk4LDggQEAgcHJpdmF0ZToKICAgICAvLyBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNpZ25vcmUtZGVzdHJ1Y3RpdmUtd3Jp
dGVzLWNvdW50ZXIKICAgICB1bnNpZ25lZCBtX2lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudDsK
IAotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX3Jhd1RpdGxlOworICAgIFN0cmlu
Z1dpdGhEaXJlY3Rpb24gbV90aXRsZTsKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fcmF3VGl0
bGU7CiAgICAgYm9vbCBtX3RpdGxlU2V0RXhwbGljaXRseTsKICAgICBSZWZQdHI8RWxlbWVudD4g
bV90aXRsZUVsZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRp
dGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3Bw
CmluZGV4IDc4YzhiNmE3MTM5MjFkY2YwNmY1NzM3NTE4MmFmMTExZjgyMTg5ZTMuLmIwNDZjN2I1
OTA1ODJhMDkwMWU2YTg0MTAyZDZkMjg3MWEzYzEwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGl0bGVFbGVtZW50LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgog
I2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzMsNyArMzQsNiBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBpbmxpbmUgSFRNTFRpdGxlRWxlbWVudDo6
SFRNTFRpdGxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1f
dGl0bGUoIiIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGl0bGVUYWcpKTsKIH0KQEAgLTU3
LDcgKzU3LDcgQEAgdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkK
IAogdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENv
dW50RGVsdGEpCiB7Ci0gICAgbV90aXRsZSA9IHRleHQoKTsKKyAgICBtX3RpdGxlID0gdGV4dFdp
dGhEaXJlY3Rpb24oKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudCgp
LT5zZXRUaXRsZUVsZW1lbnQobV90aXRsZSwgdGhpcyk7CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CkBAIC03MSwxMCArNzEsMjAgQEAgU3RyaW5nIEhUTUxUaXRsZUVsZW1l
bnQ6OnRleHQoKSBjb25zdAogICAgICAgICBpZiAobi0+aXNUZXh0Tm9kZSgpKQogICAgICAgICAg
ICAgdmFsICs9IHN0YXRpY19jYXN0PFRleHQqPihuKS0+ZGF0YSgpOwogICAgIH0KLSAgICAKKwog
ICAgIHJldHVybiB2YWw7CiB9CiAKK1N0cmluZ1dpdGhEaXJlY3Rpb24gSFRNTFRpdGxlRWxlbWVu
dDo6dGV4dFdpdGhEaXJlY3Rpb24oKQoreworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
TFRSOworICAgIGlmIChSZW5kZXJTdHlsZSogc3R5bGUgPSBjb21wdXRlZFN0eWxlKCkpCisgICAg
ICAgIGRpcmVjdGlvbiA9IHN0eWxlLT5kaXJlY3Rpb24oKTsKKyAgICBlbHNlIGlmIChSZWZQdHI8
UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVGb3JSZW5kZXJlcigpKQorICAgICAgICBkaXJlY3Rp
b24gPSBzdHlsZS0+ZGlyZWN0aW9uKCk7CisgICAgcmV0dXJuIFN0cmluZ1dpdGhEaXJlY3Rpb24o
dGV4dCgpLCBkaXJlY3Rpb24pOworfQorCiB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQo
Y29uc3QgU3RyaW5nICZ2YWx1ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKaW5kZXggOGI5MGY1NjRmM2FhZjE2MTAzMTQ2
YWMwNTgyMmY2ZDllNmExZmFlMS4uNjkyMDk5NzgzOTViMDQ1M2IyNDVlYzQyMzUxMDQwMjlmZDQy
NDQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKQEAgLTIzLDYgKzIz
LDcgQEAKICNkZWZpbmUgSFRNTFRpdGxlRWxlbWVudF9oCiAKICNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zMyw2ICszNCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKIAorICAgIFN0cmluZ1dpdGhEaXJl
Y3Rpb24gdGV4dFdpdGhEaXJlY3Rpb24oKTsKKwogcHJpdmF0ZToKICAgICBIVE1MVGl0bGVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC00MCw3ICs0Myw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2Us
IE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxk
Q291bnREZWx0YSA9IDApOwogCi0gICAgU3RyaW5nIG1fdGl0bGU7CisgICAgU3RyaW5nV2l0aERp
cmVjdGlvbiBtX3RpdGxlOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMTIxMDQ1YjViOTlmZmEwNzliNjA1OWY3ZTE5N2Fk
ZDRkM2RiYzNkMi4uMTQzN2FkYzRlNmRiNTc0YmY3MDkxOWM0Y2IwMDViYzI0OTIyM2RkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC02NDksNyArNjQ5LDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpCiAgICAgbV9z
dG9wUmVjb3JkaW5nUmVzcG9uc2VzID0gdHJ1ZTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGlmICh0aXRsZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKaW5kZXggMWY4ODI3MmIxOTIwMDVkNjJlMzIwNzE3MGJmN2M1YjgyNTc5MmJhNS4uYzZm
MGJjNWIyNjk0NGZlYmY5NjRiZmRkYzI2NTdiNzY2NzVlMzVkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKICNpbmNsdWRl
ICJTdWJzdGl0dXRlRGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KQEAgLTEyMSw3ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgd2FzT25sb2FkSGFuZGxlZCgpIHsgcmV0dXJuIG1fd2FzT25sb2FkSGFuZGxlZDsgfQog
ICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBz
ZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wpOwotICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0
IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mKTsKICAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBj
b25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRl
RW5jb2Rpbmc7IH0KIApAQCAtMTY4LDcgKzE2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBsYXN0Q2hlY2tlZFJlcXVlc3QoKSAgeyByZXR1
cm4gbV9sYXN0Q2hlY2tlZFJlcXVlc3Q7IH0KIAogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdS
ZXNwb25zZXMoKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxl
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBp
Y29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsgfQogCiAgICAgICAgIEtVUkwg
dXJsRm9ySGlzdG9yeSgpIGNvbnN0OwpAQCAtMjk4LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgYm9vbCBtX2lzQ2xpZW50UmVkaXJlY3Q7CiAgICAgICAgIGJvb2wgbV93
YXNPbmxvYWRIYW5kbGVkOwogCi0gICAgICAgIFN0cmluZyBtX3BhZ2VUaXRsZTsKKyAgICAgICAg
U3RyaW5nV2l0aERpcmVjdGlvbiBtX3BhZ2VUaXRsZTsKICAgICAgICAgU3RyaW5nIG1fcGFnZUlj
b25VUkw7CiAKICAgICAgICAgU3RyaW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA1OWZkODk3OWNiZWVmY2NmZTkwNWFkZTdkMjZmZmIx
ZGRhZTZlOWEzLi42YWNmOTkyMTliYWNlM2NjMmQwMjMzMjlmZDYxZTdmMDNmYjI1NWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yNjYsNyArMjY2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KQEAgLTMz
NCw3ICszMzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291
cmNlUmVwbGFjZW1lbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudExv
YWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpIHsgcmV0dXJuIERvY3VtZW50
TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKSB7
IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgeyByZXR1cm4g
IiI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMzQ3YTQxZWFh
ZTNhYjYxN2RhMzAxY2FjMTI5NzUyNTdkYjg0YTU5ZC4uZjEwMjBlMWYzOWNhN2U0Mjk4MzVkNmMz
MDc2MTg2Yzg3NDJhZmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC02MTAsNyArNjEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQog
ICAgIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKICAgICAKICAg
ICBpZiAobV9kb2N1bWVudExvYWRlcikgewotICAgICAgICBTdHJpbmcgcHRpdGxlID0gbV9kb2N1
bWVudExvYWRlci0+dGl0bGUoKTsKKyAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBwdGl0bGUg
PSBtX2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0
bGUgbGV0IHRoZSBXZWJWaWV3IGtub3cgYWJvdXQgaXQuCiAgICAgICAgIGlmICghcHRpdGxlLmlz
TnVsbCgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHB0
aXRsZSk7CkBAIC0xOTI0LDkgKzE5MjQsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92
aXNpb25hbExvYWQoKQogICAgICAgICBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKIAogICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJWaWV3IGtub3cgYWJvdXQgaXQuIAot
ICAgICAgICBTdHJpbmcgdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOwotICAgICAg
ICBpZiAoIXRpdGxlLmlzTnVsbCgpKSAKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZSh0aXRsZSk7ICAgICAgICAgCisgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rp
b24gdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOworICAgICAgICBpZiAoIXRpdGxl
LmlzTnVsbCgpKQorICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KHRpdGxlKTsKIAogICAgICAgICBjaGVja0NvbXBsZXRlZCgpOwogICAgIH0gZWxzZSB7ICAgICAg
ICAKQEAgLTMzNzUsNyArMzM3NSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwKIH0KICNlbmRp
ZgogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9p
ZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUp
CiB7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0bGUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCAxZmI5ZTNjNDVmNDkwZTI5OWZhZmM1NGY0ZDM1ZTY3
ZTRlYjEyOTVjLi45MDYyZjIxNWNlZDgxNTlmZGE4OWM4NWFmNmUxNmQ4MWFjNWY1MTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBTY3Jp
cHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbjsKIGNs
YXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIApAQCAtMjgy
LDcgKzI4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAotICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYp
OwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggN2Q2NDkxMmJkYjQxM2FlOTU5YWIwZThmNWFj
Y2FhYzY2MmZmZjk5My4uZDVkNDllYzljNzA4YTljN2U4OTc3M2IxZDYzODdhYmVmYjdlZjJkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg0LDYgKzg0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAg
ICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAgICAgY2xhc3MgU2hhcmVkQnVmZmVyOworICAgIGNs
YXNzIFN0cmluZ1dpdGhEaXJlY3Rpb247CiAgICAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAgICAg
Y2xhc3MgV2lkZ2V0OwogCkBAIC0xMzksNyArMTQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUljb25zKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21t
aXRMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkBAIC0yMjcsNyArMjI4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFT
b3VyY2VSZXBsYWNlbWVudCgpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJikg
PSAwOwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgPSAw
OwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGI4YmVjZTliNzUwYzUzODZkOGEzZDhlMWQyOGM4ZDFlZDdiMzFiYjkuLmMxYzU0MTQz
MmFhZGQ5ZjViZGJiYWQ2MjliMGY4YTA0NmI1YWE4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnVwZGF0ZUZvckJhY2tGb3J3YXJkTmF2aWdhdGlvbigpCiB7CiAjaWYgIUxP
R19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkK
LSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBm
b3IgYmFjay9mb3J3YXJkIG5hdmlnYXRpb24gaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9H
KEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgYmFjay9mb3J3
YXJkIG5hdmlnYXRpb24gaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCiAgICAg
Ly8gTXVzdCBncmFiIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBiZWZvcmUgZGlzdHVyYmlu
ZyBpdApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZv
clJlbG9hZCgpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9y
eTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVsb2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlbG9h
ZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRs
ZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKICAgICBpZiAobV9jdXJyZW50
SXRlbSkgewpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0
ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpCiB7CiAjaWYgIUxPR19ESVNB
QkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAg
ICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVk
aXJlY3QgbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNv
cmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRpcmVjdCBsb2FkIGluIGZyYW1lICVz
IiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBt
X2ZyYW1lLT5zZXR0aW5ncygpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAg
ICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBMT0co
SGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBjbGllbnQgcmVk
aXJlY3QgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+
dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlz
dG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY2xpZW50IHJlZGlyZWN0IGluIGZyYW1lICVzIiwg
bV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAjZW5kaWYKIAogICAgIC8vIENsZWFyIG91dCBmb3JtIGRhdGEgc28gd2Ug
ZG9uJ3QgdHJ5IHRvIHJlc3RvcmUgaXQgaW50byB0aGUgaW5jb21pbmcgcGFnZS4gIE11c3QgaGFw
cGVuIGFmdGVyCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBk
YXRlRm9yQ29tbWl0KCkKICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5s
b2FkZXIoKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKGZyYW1lTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpKQotICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGlu
ZyBIaXN0b3J5IGZvciBjb21taXQgaW4gZnJhbWUgJXMiLCBmcmFtZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJX
ZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY29tbWl0IGluIGZyYW1lICVzIiwg
ZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAjZW5kaWYKICAgICBGcmFtZUxvYWRUeXBlIHR5cGUgPSBmcmFtZUxvYWRlci0+bG9h
ZFR5cGUoKTsKICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKHR5cGUpCkBAIC01MjYsMTAg
KzUyNiwxMSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5
SXRlbSogaXRlbSkKICAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKIH0KIAotdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9p
ZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAobV9jdXJyZW50SXRlbSkKLSAgICAgICAgbV9j
dXJyZW50SXRlbS0+c2V0VGl0bGUodGl0bGUpOworICAgICAgICAvLyBGSVhNRTogbWFrZSB1c2Ug
b2YgdGl0bGUuZGlyZWN0aW9uKCkgYXMgd2VsbC4KKyAgICAgICAgbV9jdXJyZW50SXRlbS0+c2V0
VGl0bGUodGl0bGUuc3RyaW5nKCkpOwogfQogCiBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJy
ZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdApAQCAtNTc2LDEyICs1NzcsMTMgQEAgdm9p
ZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAg
ICAgCiAgICAgRnJhbWUqIHBhcmVudEZyYW1lID0gbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsK
ICAgICBTdHJpbmcgcGFyZW50ID0gcGFyZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dHJlZSgpLT51
bmlxdWVOYW1lKCkgOiAiIjsKLSAgICBTdHJpbmcgdGl0bGUgPSBkb2N1bWVudExvYWRlci0+dGl0
bGUoKTsKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRp
dGxlKCk7CiAKICAgICBpdGVtLT5zZXRVUkwodXJsKTsKICAgICBpdGVtLT5zZXRUYXJnZXQobV9m
cmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkpOwogICAgIGl0ZW0tPnNldFBhcmVudChwYXJlbnQp
OwotICAgIGl0ZW0tPnNldFRpdGxlKHRpdGxlKTsKKyAgICAvLyBGSVhNRTogc2hvdWxkIHN0b3Jl
IHRpdGxlIGRpcmVjdGlvbmFsaXR5IGluIGhpc3RvcnkgYXMgd2VsbC4KKyAgICBpdGVtLT5zZXRU
aXRsZSh0aXRsZS5zdHJpbmcoKSk7CiAgICAgaXRlbS0+c2V0T3JpZ2luYWxVUkxTdHJpbmcob3Jp
Z2luYWxVUkwuc3RyaW5nKCkpOwogCiAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkg
fHwgZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCmluZGV4IDU5ZjExYTI1Yzkz
M2QzZDdjOTcyNTFiOTBhOTNiMzJkNTZiOTlhZDQuLjE1ZTEyYzA5OWEzZWYwNzI3NTRlNjdlNmNk
NTY3ZjZiZTA4YmE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwog
Y2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBT
dHJpbmdXaXRoRGlyZWN0aW9uOwogCiBjbGFzcyBIaXN0b3J5Q29udHJvbGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSGlzdG9yeUNvbnRyb2xsZXIpOwpAQCAtNzEsNyArNzIsNyBAQCBw
dWJsaWM6CiAKICAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRJdGVtLmdldCgpOyB9CiAgICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRl
bSopOwotICAgIHZvaWQgc2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAg
IGJvb2wgY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29uc3Q7CiAKICAgICBIaXN0b3J5
SXRlbSogcHJldmlvdXNJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c0l0ZW0uZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERp
cmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWEzNGFiNmJmZjhjZDkxMDRlMzUxYzVjMTcxMjljM2ZmYTJhMmVj
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5n
V2l0aERpcmVjdGlvbi5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0cmluZ1dpdGhEaXJlY3Rp
b25faAorI2RlZmluZSBTdHJpbmdXaXRoRGlyZWN0aW9uX2gKKworI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKy8vIEluIHNvbWUgY2lyY3Vtc3RhbmNlcyB3ZSB3YW50IHRvIHN0b3JlIGEgU3RyaW5n
IGFsb25nIHdpdGggdGhlIFRleHREaXJlY3Rpb24KKy8vIG9mIHRoZSBTdHJpbmcgYXMgbGVhcm5l
ZCBmcm9tIHRoZSBjb250ZXh0IG9mIHRoZSBTdHJpbmcuIEZvciBleGFtcGxlLAorLy8gY29uc2lk
ZXIgc3RvcmluZyB0aGUgdGl0bGUgZGVyaXZlZCBmcm9tIDx0aXRsZSBkaXI9J3J0bCc+c29tZSB0
aXRsZTwvdGl0bGU+CisvLyBpbiB0aGUgaGlzdG9yeS4KKy8vCisvLyBOb3RlIHRoYXQgaXMgZXhw
bGljaXRseSAqbm90KiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzdHJpbmcgYXMgbGVhcm5lZAorLy8g
ZnJvbSB0aGUgY2hhcmFjdGVycyBvZiB0aGUgc3RyaW5nOyBpdCdzIGV4dHJhIG1ldGFkYXRhIHdl
IGhhdmUgZXh0ZXJuYWwKKy8vIHRvIHRoZSBzdHJpbmcuCitjbGFzcyBTdHJpbmdXaXRoRGlyZWN0
aW9uIHsKK3B1YmxpYzoKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uKCkge30KKyAgICBTdHJpbmdX
aXRoRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBUZXh0RGlyZWN0aW9uIGRpcikgOiBt
X3N0cmluZyhzdHJpbmcpLCBtX2RpcmVjdGlvbihkaXIpIHt9CisKKyAgICBjb25zdCBTdHJpbmcm
IHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorCisgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQorCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG90aGVyLm1fc3RyaW5nID09IG1fc3RyaW5nICYmIG90aGVyLm1fZGlyZWN0
aW9uID09IG1fZGlyZWN0aW9uOworICAgIH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKCp0aGlzKSA9PSBvdGhl
cik7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9zdHJpbmc7CisgICAgVGV4dERpcmVjdGlv
biBtX2RpcmVjdGlvbjsKK307CisKK30KKworI2VuZGlmIC8vIFN0cmluZ1dpdGhEaXJlY3Rpb25f
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAppbmRleCBlYmNkZGI0NmEwMjlk
OWIzNGRjZWMyNTVhMmE4Y2RiMWI1YjE4MWVjLi5kOTI1NjAzMTFlNzY2Mjc2YzRmNjdhODk5MTYw
ZDJhMzliN2Y4NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcApAQCAt
NDAsNyArNDAsOCBAQCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAg
aWYgKGZpcnN0Q2hpbGQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0bGVFbGVtZW50KHRl
eHRDb250ZW50KCksIHRoaXMpOworICAgICAgICAvLyBGSVhNRTogZG9lcyBTVkcgaGF2ZSBhIHRp
dGxlIHRleHQgZGlyZWN0aW9uPworICAgICAgICBkb2N1bWVudCgpLT5zZXRUaXRsZUVsZW1lbnQo
U3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0Q29udGVudCgpLCBMVFIpLCB0aGlzKTsKIH0KIAogdm9p
ZCBTVkdUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQpAQCAtNTMsNyArNTQsOCBA
QCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3Vu
dERlbHRhKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRU
aXRsZUVsZW1lbnQodGV4dENvbnRlbnQoKSwgdGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiBkb2Vz
IFNWRyBoYXZlIHRpdGxlIHRleHQgZGlyZWN0aW9uPworICAgICAgICBkb2N1bWVudCgpLT5zZXRU
aXRsZUVsZW1lbnQoU3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0Q29udGVudCgpLCBMVFIpLCB0aGlz
KTsKIH0KIAogQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RpdGxlRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAy
YjBlMTNjZmYyMTkyMzQwYjE1YTBkMTRmZjEwMDk2NTFlNmI4Njk2Li5kZDgyNjlhZWIxOTMyM2Nj
ZDg2YWFkYTE3MzM3NGRhMWQ1ODY2MWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4g
c2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1l
TG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpzZXRUaXRsZSk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJEYXRhU291cmNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRhdGFTb3VyY2VJbXBsOjpwYWdlVGl0bGUpOgorCiAyMDExLTAzLTMwICBEYXZpZCBMZXZpbiAg
PGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3Yu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAppbmRleCA2NDdhNzBjMjg1YjY3Y2UwZDU0YTNhZTA4ODE0OThlMTE0MzZkNjUzLi5j
ZDc2NDkxMDlkMWI1ZTQwNmU3MjU0NjdkNjYzZTgzMGY5YWU4MzFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTcz
NCwxMCArNzM0LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBG
cmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogeworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9m
IHRpdGxlLgogICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFt
ZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVUaXRsZShtX3dlYkZyYW1lLCB0aXRsZSk7CisgICAgICAg
IG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUu
c3RyaW5nKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpCkBAIC0xMzI4LDcgKzEzMjksNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9h
ZGVyPiBGcmFtZUxvYWRlckNsaWVudEltcGw6OmNyZWF0ZURvY3VtZW50TG9hZGVyKAogICAgIHJl
dHVybiBkcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZXRU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBGSVhNRTogaW5mb3JtIGNvbnN1bWVyIG9mIGNo
YW5nZXMgdG8gdGhlIHRpdGxlLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRleCBmMTljMjZjNTM5YTFjMWI1YTI2NTdiN2Fh
MjU4OTVjMWIyZjUyMTI2Li4yYjFjMjZmNWRkYmNjY2FkZDI2ZWE0OGFmOGQ4YWRmNDViMmJhNzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3Ry
aW5nJiB0aXRsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1p
dExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRs
ZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2Vu
dChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURh
dGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lk
IHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFt
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJj
ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwu
Y3BwCmluZGV4IDEzNjZhODA5NGE1MDYzOTdlMDk0ODM0MDgwMjY1ZGJjYTdiZTY2MWEuLjMxNzBh
ZmZiZTRiNGIxZjg0MGM2NzU5MGU5ZDZiYWFkNTc4NTBlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhU291cmNlSW1wbC5jcHAKQEAgLTgyLDcgKzgyLDggQEAg
dm9pZCBXZWJEYXRhU291cmNlSW1wbDo6cmVkaXJlY3RDaGFpbihXZWJWZWN0b3I8V2ViVVJMPiYg
cmVzdWx0KSBjb25zdAogCiBXZWJTdHJpbmcgV2ViRGF0YVNvdXJjZUltcGw6OnBhZ2VUaXRsZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRpdGxlKCk7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rp
b24gb2YgdGl0bGUgYXMgd2VsbC4KKyAgICByZXR1cm4gdGl0bGUoKS5zdHJpbmcoKTsKIH0KIAog
V2ViTmF2aWdhdGlvblR5cGUgV2ViRGF0YVNvdXJjZUltcGw6Om5hdmlnYXRpb25UeXBlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwppbmRleCAzNWRhMDljMzQ5NmNlMzcwZWVmYjllYTI5NzdhZWYzMjQ2
MGQwMDhlLi43Y2VhNjVhNmUzNjk3OWIwMzZhMzIxYWFhMjBjMGMyMjQzMDkxYjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAg
ICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0
ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKKwogMjAxMS0wMy0yOSAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
dG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggZmEzNGFjOWMwZDdkNjA4MTk4MjU4
NzMzNDEzZjI1YWIyYTkwYmEyNi4uOTZiODU5YmZlOTU2MWU3Yjg5Mjc4MTQ2OWU3MWEzYTgyZmNk
NDkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtNTc2LDkgKzU3NiwxMCBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAg
ICAgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChtX3ZpZXcpOwogfQogCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxl
KQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7Ci0gICAgQ1N0cmluZyBjcyA9IHRpdGxl
LnV0ZjgoKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBDU3Ry
aW5nIGNzID0gdGl0bGUuc3RyaW5nKCkudXRmOCgpOwogICAgIGV3a19mcmFtZV90aXRsZV9zZXQo
bV9mcmFtZSwgY3MuZGF0YSgpKTsKIAogICAgIGlmIChld2tfdmlld19mcmFtZV9tYWluX2dldCht
X3ZpZXcpICE9IG1fZnJhbWUpCkBAIC03MDksNyArNzEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVm
bDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwm
IHVybCkKIHsKICAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMg
dGhlIHJpZ2h0IGNhbGxiYWNrCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAppbmRleCA1ZWE0ZThjYWM5N2MwYmE5
ZThlZTY5YzkyMjc3MzljZTE3ODFhNDBjLi5iZDA3YTMwMzRiNjE4NmIwNGFiMDQ5ZTNkZjEyMGJi
ZDVmOWM0NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBGcmFt
ZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENo
YW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50
RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKIAog
ICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCAwNWMxNWQ0NzRmNDc4ZTVkZDAzNmE3ZTRhN2IwN2E2NjQxOTM3NWFhLi5lZDczYTdl
MWUyN2M4NGExNWJjNjJhNWZkOTU5OGE3Y2YzODhjYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBz
aG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVM
b2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmg6CisKIDIwMTEtMDMtMjkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGRpc2FibGUgYW4gYXNzZXJ0IGluIHRlc3R3
ZWJ2aWV3IGR1ZSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGNhOGJmOWEwODlhZDczODNjOGQ0
NTMyN2E4N2Q4NTM0Yjg1ZGUwOTcuLjVjNTk0ZTg1NmJiMGFmNGQxZjJjZGVlMDM1NjUyNzQyZGZj
MWI4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTk0OSwxNCArOTQ5LDE1IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIG5v
dGlmeVN0YXR1cyhtX2ZyYW1lLCBXRUJLSVRfTE9BRF9QUk9WSVNJT05BTCk7CiB9CiAKLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAobV9sb2FkaW5nRXJy
b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHBy
aXYgPSBtX2ZyYW1lLT5wcml2OwogICAgIGdfZnJlZShwcml2LT50aXRsZSk7Ci0gICAgcHJpdi0+
dGl0bGUgPSBnX3N0cmR1cCh0aXRsZS51dGY4KCkuZGF0YSgpKTsKKyAgICAvLyBGSVhNRTogdXNl
IGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBwcml2LT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fZnJh
bWUsICJ0aXRsZS1jaGFuZ2VkIiwgcHJpdi0+dGl0bGUpOwogICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChtX2ZyYW1lKSwgInRpdGxlIik7CkBAIC0xMTE5LDExICsxMTIwLDEyIEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBmcmFtZURhdGEgPSBtX2Zy
YW1lLT5wcml2OwogICAgIGdfZnJlZShmcmFtZURhdGEtPnRpdGxlKTsKLSAgICBmcmFtZURhdGEt
PnRpdGxlID0gZ19zdHJkdXAodGl0bGUudXRmOCgpLmRhdGEoKSk7CisgICAgLy8gRklYTUU6IHVz
ZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgZnJhbWVEYXRhLT50aXRsZSA9IGdfc3RyZHVwKHRp
dGxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuaAppbmRleCBiN2VhZDdhZjVlYmI5ZTY3NjVjOTQ2YzM1NWFjOTllODljMWU5NTQxLi45N2Vi
MGZmNjg2YTM2YzUxOTFhZjRlMDJhNmE3ZGY4ZjQ3YWQ2Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAg
LTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxDbG9zZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
QEAgLTE3NCw3ICsxNzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFs
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRM
b2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6
U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJB
Z2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
aGFpa3UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggNzc1
N2ZlNzkyMzE2NWRmYzhjYjFjZDRkZTRlOTUzODNlYjA5ZjlkZi4uOTk2YTFmNDQ2MjFiZTAyZGIy
NjZkNTliM2U2Y2MyNTMyZDYxNzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBz
dXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNs
aWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1Lmg6CisKIDIwMTEtMDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEhhaWt1LmNwcCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdS5jcHAKaW5kZXggMjRhOThkNTYzNDI4NmU3YjQ0OWMxMTBiM2UxZGI1M2Jh
ODVlMGQwYi4uYzA0Y2I3ZDRjNmYxYzhiNmE4ZTQyYmUwNTJmZDk0MjIxMTEzNDQ3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEhhaWt1LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UuY3BwCkBAIC0yMzcsMTMgKzIzNywxMyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIH0K
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmIHRpdGxlKQogewogICAg
IGlmIChtX3dlYlZpZXcpIHsKLSAgICAgICAgbV93ZWJWaWV3LT5TZXRQYWdlVGl0bGUodGl0bGUp
OwotCisgICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBt
X3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZS5tX3N0cmluZygpKTsKICAgICAgICAgQk1lc3Nh
Z2UgbWVzc2FnZShUSVRMRV9DSEFOR0VEKTsKLSAgICAgICAgbWVzc2FnZS5BZGRTdHJpbmcoInRp
dGxlIiwgdGl0bGUpOworICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidGl0bGUiLCB0aXRsZS5z
dHJpbmcoKSk7CiAgICAgICAgIG1fbWVzc2VuZ2VyLT5TZW5kTWVzc2FnZSgmbWVzc2FnZSk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEhhaWt1LmggYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAppbmRleCBkYmQzMDg0Y2E0Y2I3ZjI5YWViNzZk
MjQ0ZmRkZDkzMGU5ODk3MGIyLi5mNTc2NTQ1Yzg2YTZiYTQzN2ExZDY2ZDdjZmVmZTI3NDVmZGI3
NjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaApAQCAtMTAyLDcgKzEwMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mIHRpdGxlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1
bWVudExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgp
OwpAQCAtMTQzLDcgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCB2b2lkIGFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JE
YXRhU291cmNlUmVwbGFjZW1lbnQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJik7CiAKICAgICAg
ICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IGQyYzIwZWRiYmM0NWYwNjk3OGFiOWViMzI1N2Q0M2RlMmZiNzUwNDYuLmM5NjJhNjk1
NGY3M2Q4MmZiZjI1YmE2OWJhOTI2OTFmMTY3MTM2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNo
b3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxv
YWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisK
IDIwMTEtMDMtMzAgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0ZmU1
NjY0ZGQ2MDUxNmMxMTg2ZTg1NWRiMjNiMzdlNTI0ZDM4MzY2Li5kZjhiMzRiNTI2Y2Y4OGU4NGQw
NmQ4MmFhM2U4ODU2NjY5Y2UxZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERp
cmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25z
dCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNv
cmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1h
cmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggOTJjMmIw
M2IxYzljZjBjOGJiZWYxMTExN2EwMDhmZGI5MzYzZTBjMC4uMjdjZTYyYWM0ZDBlMzZhNGMyNmY3
OWRlZWZmMjNlNDFjYzA1ZGRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTYyNCwxMiArNjI0LDEz
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25h
bExvYWQoKQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5k
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTopLCBtX3dlYkZyYW1lLmdldCgp
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewog
ICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAog
ICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRp
b25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcp
OwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYykK
LSAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZl
VGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUsIG1fd2ViRnJhbWUuZ2V0KCkpOwor
ICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAgICAgQ2FsbEZy
YW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVG
dW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6
KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKQEAgLTg5
Myw3ICs4OTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0
b3J5KCkKICAgICAgICAgV2ViSGlzdG9yeURlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1w
bGVtZW50YXRpb25zID0gV2ViVmlld0dldEhpc3RvcnlEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh2
aWV3KTsKICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+bmF2aWdhdGVkRnVuYykgewogICAg
ICAgICAgICAgV2ViTmF2aWdhdGlvbkRhdGEgKmRhdGEgPSBbW1dlYk5hdmlnYXRpb25EYXRhIGFs
bG9jXSBpbml0V2l0aFVSTFN0cmluZzpsb2FkZXItPnVybEZvckhpc3RvcnkoKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aXRsZTpsb2FkZXItPnRpdGxlKCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0
bGU6bG9hZGVyLT50aXRsZSgpLnN0cmluZygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0Omxv
YWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLm5zVVJMUmVxdWVzdCgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlOmxvYWRlci0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGFzU3Vic3RpdHV0ZURhdGE6bG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKQpAQCAt
OTA3LDcgKzkwOCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhp
c3RvcnkoKQogICAgIH0KIAogICAgIFtbV2ViSGlzdG9yeSBvcHRpb25hbFNoYXJlZEhpc3Rvcnld
IF92aXNpdGVkVVJMOmxvYWRlci0+dXJsRm9ySGlzdG9yeSgpIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFRpdGxlOmxvYWRlci0+dGl0bGUoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFRpdGxlOmxvYWRlci0+dGl0
bGUoKS5zdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0aG9kOmxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLmh0dHBNZXRob2QoKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXNGYWlsdXJlOmxvYWRlci0+
dXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmNyZWFzZVZpc2l0Q291bnQ6IWxvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5KCldOyAvLyBEbyBub3QgaW5jcmVhc2UgdmlzaXQgY291bnQgZHVlIHRvIG5hdmln
YXRpb25zIHRoYXQgd2VyZSBub3QgaW5pdGlhdGVkIGJ5IHRoZSB1c2VyIGRpcmVjdGx5LCBhdm9p
ZGluZyBncm93dGggZnJvbSBwcm9ncmFtbWF0aWMgcmVsb2Fkcy4KQEAgLTExNzksNyArMTE4MCw3
IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7
CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7
CiAgICAgV2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAg
CkBAIC0xMTg4LDcgKzExODksOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRs
ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIGlmICghaW1w
bGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAKLSAgICAgICAgQ2FsbEhpc3RvcnlEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPnNldFRp
dGxlRnVuYywgdmlldywgQHNlbGVjdG9yKHdlYlZpZXc6dXBkYXRlSGlzdG9yeVRpdGxlOmZvclVS
TDopLCAoTlNTdHJpbmcgKil0aXRsZSwgKE5TU3RyaW5nICopdXJsKTsKKyAgICAgICAgLy8gRklY
TUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAgIENhbGxIaXN0b3J5RGVsZWdhdGUo
aW1wbGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMsIHZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnVw
ZGF0ZUhpc3RvcnlUaXRsZTpmb3JVUkw6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIChO
U1N0cmluZyAqKXVybCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xMTk2LDcg
KzExOTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgbnNVUkwgPSBbbnNVUkwgX3dlYmtpdF9j
YW5vbmljYWxpemVdOwogICAgIGlmKCFuc1VSTCkKICAgICAgICAgcmV0dXJuOwotICAgIE5TU3Ry
aW5nICp0aXRsZU5TU3RyaW5nID0gdGl0bGU7CisgICAgTlNTdHJpbmcgKnRpdGxlTlNTdHJpbmcg
PSB0aXRsZS5zdHJpbmcoKTsKICAgICAgICAKICAgICBbW1tXZWJIaXN0b3J5IG9wdGlvbmFsU2hh
cmVkSGlzdG9yeV0gaXRlbUZvclVSTDpuc1VSTF0gc2V0VGl0bGU6dGl0bGVOU1N0cmluZ107CiB9
CkBAIC0xMjg1LDcgKzEyODcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0
aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICAgICAgLy8gbGlrZSB0aGUgb25lcyB0aGF0
IFNhZmFyaSB1c2VzIGZvciBib29rbWFya3MgaXQgaXMgdGhlIG9ubHkgd2F5IHRoZSBEb2N1bWVu
dExvYWRlcgogICAgICAgICAvLyB3aWxsIGdldCB0aGUgcHJvcGVyIHRpdGxlLgogICAgICAgICBp
ZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gW2RhdGFTb3VyY2UgX2RvY3VtZW50
TG9hZGVyXSkKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUaXRsZShbZGF0YVNvdXJj
ZSBwYWdlVGl0bGVdKTsKKyAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUaXRsZShTdHJp
bmdXaXRoRGlyZWN0aW9uKFtkYXRhU291cmNlIHBhZ2VUaXRsZV0sIExUUikpOwogICAgIH0KIAog
ICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gY29yZUZyYW1lLT5vd25lckVs
ZW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0KaW5kZXggMDNlZGQ1ZDY5MjI1MDVkNzAxOWFiMTcyMjE4NGRkYWI2YmIyNTlm
Mi4uODQyZTYwNWZiYWU5OTk1MzU2ODQwY2Y4ZmYwODY1YzhjY2EzMTBmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTI2
MSw3ICsyNjEsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29uY2F0ZW5hdGVBcnJheXMoTlNBcnJheSAq
Zmlyc3QsIE5TQXJyYXkgKnNlY29uZCkKIAogLSAoTlNTdHJpbmcgKil0aXRsZQogewotICAgIHJl
dHVybiBuc1N0cmluZ05pbElmRW1wdHkoW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExv
YWRlcl0tPnRpdGxlKCkpOworICAgIHJldHVybiBuc1N0cmluZ05pbElmRW1wdHkoW19wcml2YXRl
LT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnRpdGxlKCkuc3RyaW5nKCkpOwogfQogCiAt
IChET01Eb2N1bWVudCAqKURPTURvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDdiYWI2YTkyOWI4
ZmM3YzdiYzBjOGU3MTdjMzUyYzRmNjg5YWNkMGIuLmZiNWU2YjMwYzJlNWUxNmIyNzhmNzg4ZTA3
MjdhMzc3ZTI3YzhmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMt
MzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0
cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNl
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDEx
LTAzLTMwICBZaSBTaGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IGQzMTg0
OTRiYWVjYzMyZTgwODE5ZjlmZjY0MmM5NmVmOGJmY2I3Y2IuLmY4MjlmMzNiNmZkZDc0ODViMjY0
OGZmYTRjMDhjOGM4OTE0N2MyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApAQCAtNDQ3LDggKzQ0Nyw5IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCgpCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsK
KyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KICAgICBpZiAoZHVtcEZyYW1l
TG9hZGVyQ2FsbGJhY2tzKQogICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZVRpdGxlOiAl
c1xuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2Zy
YW1lKSksIHFQcmludGFibGUoUVN0cmluZyh0aXRsZSkpKTsKIApAQCAtNzA5LDE2ICs3MTAsMTcg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2Vt
ZW50KCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1
cmwpCiB7CiAgICAgLy8gVXNlZCBieSBBcHBsZSBXZWJLaXQgdG8gdXBkYXRlIHRoZSB0aXRsZSBv
ZiBhbiBleGlzdGluZyBoaXN0b3J5IGl0ZW0uCiAgICAgLy8gUXRXZWJLaXQgZG9lc24ndCBhY2Nv
bW9kYXRlIHRoaXMgb24gaGlzdG9yeSBpdGVtcy4gSWYgaXQgZXZlciBkb2VzLAogICAgIC8vIGl0
IHNob3VsZCBiZSBwcml2YXRlQnJvd3NpbmctYXdhcmUuRm9yIG5vdywgd2UgYXJlIGp1c3QgcGFz
c2luZwogICAgIC8vIGdsb2JhbGhpc3RvcnkgbGF5b3V0IHRlc3RzLgorICAgIC8vIEZJWE1FOiB1
c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIGlmIChkdW1wSGlzdG9yeUNhbGxiYWNrcykgewog
ICAgICAgICBwcmludGYoIldlYlZpZXcgdXBkYXRlZCB0aGUgdGl0bGUgZm9yIGhpc3RvcnkgVVJM
IFwiJXNcIiB0byBcIiVzXCIuXG4iLAogICAgICAgICAgICAgcVByaW50YWJsZShkcnREZXNjcmlw
dGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwpKSwKLSAgICAgICAgICAgIHFQcmludGFibGUo
UVN0cmluZyh0aXRsZSkpKTsKKyAgICAgICAgICAgIHFQcmludGFibGUoUVN0cmluZyh0aXRsZS5z
dHJpbmcoKSkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKaW5kZXggM2VjNWYyMGRiODJmMGU2ODQ1
MzhmYzU2NGI0YmYxM2RlZmQ3ZjgyYS4uOTAwNDg5ZDA2MTBmNWZiZTIwMGMyZGE3YzMyYmQ3OTZi
NWU5Y2JjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgdmly
dHVhbCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3Vt
ZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKTsKIAogICAgIHZpcnR1YWwgU3RyaW5n
IHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAx
OGZhZThhNjgzMjkxMGQ1Y2JiMDJmZjRlYTkyYmY0MzRiNDY0MjA1Li5mNjcxZmJjMDA1YjI5YzNj
MTRiOGMwMTMxMThjZjNlYjM1NDk4NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3Vw
cG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGll
bnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorCiAyMDExLTAzLTMwICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCAxMGEzMTkwZDJhNGFhZTY5ZTAwY2JhNmZkOGRjZWU5MWJjOWUwZjQzLi43YmQ5YzhjMDgyMzI3
NjhkMGFjNmM5MWFkMDA5YWI4NWFhYzU4ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zNjQs
MTIgKzM2NCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUod2ViVmlldywgbV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBXZWJWaWV3KiB3ZWJW
aWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViRnJhbWVMb2FkRGVs
ZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRlOwogICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+ZnJh
bWVMb2FkRGVsZWdhdGUoJmZyYW1lTG9hZERlbGVnYXRlKSkpCi0gICAgICAgIGZyYW1lTG9hZERl
bGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywgQlN0cmluZyh0aXRsZSksIG1fd2ViRnJh
bWUpOworICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAgICAg
ZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxl
LnN0cmluZygpKSwgbV93ZWJGcmFtZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpAQCAtNjcyLDEzICs2NzMsMTMgQEAgUGFzc1JlZlB0
cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9h
ZGVyKGNvbnN0IFJlc28KICAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
S1VSTCYgdXJsKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViSGlzdG9y
eURlbGVnYXRlPiBoaXN0b3J5RGVsZWdhdGU7CiAgICAgd2ViVmlldy0+aGlzdG9yeURlbGVnYXRl
KCZoaXN0b3J5RGVsZWdhdGUpOwogICAgIGlmIChoaXN0b3J5RGVsZWdhdGUpIHsKLSAgICAgICAg
QlN0cmluZyB0aXRsZUJTVFIodGl0bGUpOworICAgICAgICBCU3RyaW5nIHRpdGxlQlNUUih0aXRs
ZS5zdHJpbmcoKSk7CiAgICAgICAgIEJTdHJpbmcgdXJsQlNUUih1cmwuc3RyaW5nKCkpOwogICAg
ICAgICBoaXN0b3J5RGVsZWdhdGUtPnVwZGF0ZUhpc3RvcnlUaXRsZSh3ZWJWaWV3LCB0aXRsZUJT
VFIsIHVybEJTVFIpOwogICAgICAgICByZXR1cm47CkBAIC03MDQsNyArNzA1LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
S1VSTCYgdXJsKQogICAgIGlmICghaXRlbVByaXZhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGl0ZW1Qcml2YXRlLT5zZXRUaXRsZShCU3RyaW5nKHRpdGxlKSk7CisgICAgaXRlbVByaXZhdGUt
PnNldFRpdGxlKEJTdHJpbmcodGl0bGUuc3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNh
Y2hlZEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZDg2NGIyMzRlNDAzNTk4M2M3YzNlMzNhZGMy
ZDg3ZTIzYjRiZGYxYy4uMTg1NzA4ODQ2OTliNzQyMjZjMjA3Y2FiMTZmOTM1YjA3ZDFiZmFlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdU
Rjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1p
dExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQo
KTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4g
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUo
Y29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0
YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1l
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGU1OTVmMjVkYzc4MzUxMWJkOTdiZWNlNDE0NDM3
NTJlNGVhMDI1MDYuLmNlOTFjOTg4NDc2NmZiMWExN2IwZTI2ODFkYzM5YWM5ZTM3ZmFjZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFy
dGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAg
ICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6c2V0VGl0bGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaDoKKwogMjAxMS0w
My0yNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKaW5kZXgg
MmQ4ODEyZmEwZGExNjIyNmIyMGM2Y2ZlMWVmODg3Yzc4Y2FmYjhiOS4uNjQ4YzRhNTVhMjQ1ZDM0
ZTU0ZWIyNWE3NTgxMzg4OGQwNzZkMjAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCkBA
IC0zNzEsNyArMzcxLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZyYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpwcmVw
YXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEtVUkwmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKaW5kZXggNDAxMjI1ZDIyOWU4NjkzYzllNmFkMWI5
ZDVlNGYxNWY3YzJiOWZiZS4uNjE1MzljNTU2NzMwODc0ZWMxY2RhOGQwMTJjZGNkN2JjNzk2MmVl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNjksNyArMTY5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2Vt
ZW50KCk7CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExv
YWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6U3RyaW5nV2l0aERpcmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKIAogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
eC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCA5ODBmYThhMDJi
M2RhOTFhNTVhZjQ0NTQzNDE1YjYzM2UyMDE3NmFhLi4xYTBhMzE0NWU4ZjNiMDIyZjU5NDM1ZTQz
MTU3M2NhZjI0ZWE2OWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAz
LTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0
dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFj
ZS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpzZXRUaXRsZSk6
CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMTEt
MDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkZWxlIFBldGVyc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCmluZGV4IGFmYzI1NWNjYWNmOTRiNzRiZDQz
MjI5ZDM2NmNjYmFjYjAxNmYyMDguLmI0MDg2MzZkMzM5ZDZjY2NmMGNjZTZlODY3MjhiYzMwYTEz
ZTFhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHAKQEAgLTI5NSwxMiArMjk1LDEzIEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiB9CiAKIAotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJp
bmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAobV93ZWJW
aWV3KSB7Ci0gICAgICAgIG1fd2ViVmlldy0+U2V0UGFnZVRpdGxlKHRpdGxlKTsKKyAgICAgICAg
Ly8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAgIG1fd2ViVmlldy0+U2V0
UGFnZVRpdGxlKHRpdGxlLnN0cmluZygpKTsKICAgICAgICAgd3hXZWJWaWV3UmVjZWl2ZWRUaXRs
ZUV2ZW50IHdrRXZlbnQobV93ZWJWaWV3KTsKLSAgICAgICAgd2tFdmVudC5TZXRUaXRsZSh0aXRs
ZSk7CisgICAgICAgIHdrRXZlbnQuU2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwogICAgICAgICBt
X3dlYlZpZXctPkdldEV2ZW50SGFuZGxlcigpLT5Qcm9jZXNzRXZlbnQod2tFdmVudCk7CiAgICAg
fQogfQpAQCAtNTI1LDcgKzUyNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6cHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFd4OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJikKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXeDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUsIGNvbnN0IEtVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oIGIv
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAppbmRl
eCAyNTRmOTVjNDJjNDIyOTRmY2RlMjY4ZTg2MGRlY2ZiZTFmZWNjNzZhLi5iMjhkMzg5N2FjOWJk
MGE1Y2VlNjIxNmRjNDE1NDYzZjM0Y2IzODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKQEAgLTEwMyw3ICsxMDMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxD
bG9zZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5n
JiB0aXRsZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
bmlzaExvYWQoKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBhZGRIaXN0b3J5SXRlbUZvckZyYWdtZW50U2Nyb2xsKCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYp
OwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA5Zjc2ODI0ZmQ5NjJkZjliNWI1NTdmMGFkZjg2MDI4YmJmNzQ1ZTIyLi45NmU5
MDAzY2Q0ZjVhNzc4ODJhMTMxMzNjNTJjMmFmNjVlZmU5ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91
bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2Fk
ZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDExLTAzLTMwICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0
YWNob3dpYWsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGZhM2NkY2Vm
N2I1NTIwMjQzMGU1OTdmMWVkNzQxNjczY2IwYjAwNTguLjE0ODdhMzVhNTI1MjY5YmMyZGRkMzcz
MjQyZGNlYTI4ZjY4NzEzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC00MDMsNyArNDAzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQo
KSwgdXJsLCB1bnJlYWNoYWJsZVVSTCwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIo
dXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJiB0aXRsZSkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwog
ICAgIGlmICghd2ViUGFnZSkKQEAgLTQxMiwxMCArNDEyLDExIEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAg
ICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRs
ZSBjbGllbnQuCi0gICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRS
ZWNlaXZlVGl0bGVGb3JGcmFtZSh3ZWJQYWdlLCB0aXRsZSwgbV9mcmFtZSwgdXNlckRhdGEpOwor
ICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgIHdlYlBhZ2UtPmluamVj
dGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUod2ViUGFnZSwg
dGl0bGUuc3RyaW5nKCksIG1fZnJhbWUsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUg
VUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UmVjZWl2ZVRpdGxlRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0aXRsZSwgSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShtX2Zy
YW1lLT5mcmFtZUlEKCksIHRpdGxlLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCkBAIC04NDYsNyArODQ3LDggQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCiAKICAgICBXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlIGRhdGE7CiAgICAgZGF0YS51cmwgPSBsb2FkZXItPnVybEZvckhpc3Rvcnko
KS5zdHJpbmcoKTsKLSAgICBkYXRhLnRpdGxlID0gbG9hZGVyLT50aXRsZSgpOworICAgIC8vIEZJ
WE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgIGRhdGEudGl0bGUgPSBsb2FkZXItPnRp
dGxlKCkuc3RyaW5nKCk7CiAKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
KHdlYlBhZ2UtPnBhZ2VJRCgpLCBkYXRhLCBtX2ZyYW1lLT5mcmFtZUlEKCkpLCAwKTsKIH0KQEAg
LTEwNjEsMTQgKzEwNjMsMTUgQEAgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc28KICAgICByZXR1cm4g
RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBkYXRhKTsKIH0KIAotdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYg
dXJsKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQ
YWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCiAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpEaWRV
cGRhdGVIaXN0b3J5VGl0bGUod2ViUGFnZS0+cGFnZUlEKCksCi0gICAgICAgIHRpdGxlLCB1cmwu
c3RyaW5nKCksIG1fZnJhbWUtPmZyYW1lSUQoKSksIDApOworICAgICAgICB0aXRsZS5zdHJpbmco
KSwgdXJsLnN0cmluZygpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpLCAwKTsKIH0KIAogU3RyaW5nIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggMTk0ODU0MTkyMDczMTAyZDBlN2RlNzI4MmJhNzQwM2RmNmE5
ODUxYi4uNmM4M2U5ZGIwN2ZkMjRhNGRkYTQzNjA0NGM5MzZjYzk4MDRmMjdmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92
aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE2NSw3ICsxNjUs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxh
Y2VtZW50KCk7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAg
dmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgCiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87705</attachid>
            <date>2011-03-31 05:41:09 -0700</date>
            <delta_ts>2011-03-31 07:23:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50961-20110331054548.patch</filename>
            <type>text/plain</type>
            <size>76705</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1NjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMDg1MWI2ZmE0NTE4YWEz
OGI5NDNhZWI0OWI2YTgwNTE0MGVjNTBlLi4zNTIxZWYwOTZiOTVhYmU0OGRjNTU4NDY3NDk0MzZl
ZWM2YTkxMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDMtMzEgIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisg
ICAgICAgIEludHJvZHVjZSBhIG5ldyBTdHJpbmdXaXRoRGlyZWN0aW9uIG9iamVjdCB0aGF0IGNh
cnJpZXMgYSBTdHJpbmcgYWxvbmcKKyAgICAgICAgd2l0aCB0aGUgVGV4dERpcmVjdGlvbiBhc3Nv
Y2lhdGVkIHdpdGggdGhlIFN0cmluZy4gIFVzZSB0aGlzIG9iamVjdCBmb3IKKyAgICAgICAgZG9j
dW1lbnQgdGl0bGVzIHVzZWQgd2l0aGluIFdlYkNvcmUsIGJlY2F1c2UgaW4gSFRNTCB0aGUgZGly
ZWN0aW9uIG9mCisgICAgICAgIGEgdGl0bGUgY2FuIGJlIHNldCB3aXRoIHRoZSAnZGlyJyBhdHRy
aWJ1dGUuCisKKyAgICAgICAgUHV0IEZJWE1FcyBhdCB0aGUgV2ViS2l0IGxldmVsIHRvIGV4cG9z
ZSB0aGUgbmV3IGRpcmVjdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICB0byBjbGllbnRzLgorCisg
ICAgICAgIE5vIGJlaGF2aW9yYWwgY2hhbmdlIGludGVuZGVkLCBzbyBubyBuZXcgdGVzdHMuICBB
IGZvbGxvdy11cCB3aWxsIGV4cG9zZQorICAgICAgICB0aGUgdGl0bGUgZGlyZWN0aW9uIGFuZCBo
b3BlZnVsbHkgY2FuIGJlIGFjY29tcGFuaWVkIGJ5IHRlc3RzIHRoYXQKKyAgICAgICAgdmVyaWZ5
IGl0IGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp1cGRhdGVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVRpdGxlKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aXRsZSk6CisgICAgICAg
ICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRs
ZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxl
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6dGV4dFdp
dGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0VGl0bGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnRpdGxlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRUaXRsZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRo
TG9ja2VkQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9s
bGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbjo6U3RyaW5n
V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb246Om9wZXJh
dG9yIT0pOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTEtMDMtMzEg
IEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDFlNjllZWNhMjViNzliYzQ2
YmIxNDE5YTM5NjNmMjU4ZmQyY2U4Yi4uMWVkMDY1YzhiNDBiZDkyYjBhODcwYTg2MGEwYTBlZWE4
NzI4MTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI2ODgsNiArMjY4OCw3IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRT
dHJpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmlu
Zy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N1ZmZpeFRyZWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEJvdW5kYXJpZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGY0M2NkNWJl
MTQ0YmMxOGQyOTZkNjQ5NTcwMDA3NGE0OTRlODVlMTUuLjFiMmE5YzJiMTAwOTAyNjVlOTgzZWQy
YzE2ZTNlYTQ0MDZmZDk3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zNDEsNyArMzQxLDcg
QEAgX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjIyY2FuY2VsTWFpblJlc291cmNlTG9hZEVS
S05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIyNHJlbW92
ZVBsdWdJblN0cmVhbUxvYWRlckVQTlNfMTRSZXNvdXJjZUxvYWRlckUKIF9fWk43V2ViQ29yZTE0
RG9jdW1lbnRMb2FkZXI3cmVxdWVzdEV2CiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOHNl
dEZyYW1lRVBOU181RnJhbWVFCi1fX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOHNldFRpdGxl
RVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjhzZXRUaXRsZUVS
S05TXzE5U3RyaW5nV2l0aERpcmVjdGlvbkUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXJD
MUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTRTdWJzdGl0dXRlRGF0YUUKIF9fWk43V2Vi
Q29yZTE0RG9jdW1lbnRMb2FkZXJDMkVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTRTdWJz
dGl0dXRlRGF0YUUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXJEMkV2CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggNTU3NmI5OGFkNGVhY2VhYzZhMzZjMjJjOTE4YTlhMDMzZmI3ZTUzZS4uY2I0MjZk
NzkyZGM5MWZiMTk1MTU2MDU3ZjJhNGM3ZTQyODE3ZDU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
NDg0NCw2ICs0ODQ0LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHBy
ZXNzaW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS90ZXh0L1N1ZmZpeFRyZWUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9U
ZXh0Qm91bmRhcmllcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3JJQ1UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggZjAwYTU5MTYyZjdkN2E4NWFkZWFhZjI3MGMzZTI5NTA3ZjQ2YmE4OC4u
MTQ4MjhhMWZlZDhhMGUwYzk2MjQwYTNhZWQyOWRiNGY3M2U5YjdmMSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMwNTI5LDYgKzMwNTI5LDEw
IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVx0ZXh0XFN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcU3VmZml4
VHJlZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ1ZWE2NjRkMGFlNjU0MzdmMTVhYWM2
YmIxMGJhMmMyYzBjYmMyYTQuLjUzNDBkNjMyOTBiM2I3NDYzYzY3M2IyY2IxZGEzNGVhMjgwMjI3
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTMxMjgsNiArMzEyOCw3IEBACiAJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFFQSAv
KiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUI0MTcwNjQx
MjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0MTcwNjIxMjU2NjJCMzAwNkIy
OEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCNDE3MDY1MTI1NjYyQjMwMDZCMjhGQyAvKiBB
cHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUI0MTcwNjMxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tF
bGVtZW50Q29tbWFuZC5jcHAgKi87IH07CisJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBT
dHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjZDNDE1MjEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlC
QUI2QzZDMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQUI2QzZBMTI1NTA2MzEwMDE2MjZENCAv
KiBFZGl0aW5nU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5QkFCNkM2RDEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQUI2QzZCMTI1
NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuY3BwICovOyB9OwogCQk5QkFGM0IyNDEyQzFB
Mzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJBRjNCMjMxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRp
bmdEaXJlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTYyOSw2ICs5NjMwLDcgQEAKIAkJOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8q
IE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdElt
cGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNDE3MDYyMTI1NjYy
QjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCNDE3MDYzMTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2Nr
RWxlbWVudENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nV2l0aERpcmVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QTEyNTUwNjMxMDAxNjI2RDQgLyogRWRp
dGluZ1N0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdTdHls
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QjEyNTUwNjMxMDAxNjI2
RDQgLyogRWRpdGluZ1N0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEVkaXRpbmdTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQUYz
QjIzMTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRpbmdEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3Nzk4LDYgKzE3ODAwLDcgQEAKIAkJCQlCMkMzRDlGRTBEMDA2QzFEMDBF
RjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCAqLywKIAkJCQlCMkMzRDlGRjBEMDA2QzFEMDBF
RjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmggKi8sCiAJCQkJQjJDM0RBMDAwRDAwNkMxRDAwRUY2
RjI2IC8qIFN0cmluZy5jcHAgKi8sCisJCQkJOUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0
cmluZ1dpdGhEaXJlY3Rpb24uaCAqLywKIAkJCQk5N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyog
U3VmZml4VHJlZS5oICovLAogCQkJCTM3MkMwMEMzMTI5NjExRjEwMDVDOTU3NSAvKiBUZXh0Qm91
bmRhcmllcy5jcHAgKi8sCiAJCQkJQjJDM0RBMDQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3Vu
ZGFyaWVzLmggKi8sCkBAIC0yMjI1Nyw2ICsyMjI2MCw3IEBACiAJCQkJM0FCMDJEMkExMkQ0Rjkx
NjAwRkJCNjk0IC8qIFN0b3JhZ2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzQUMzNjgw
MDEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgxQUM2QzM2MTMxQzU3RDMwMDA5QTdFMCAvKiBTdHJpbmdDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOUI2QzQxNTMxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJl
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NDg4RDZCMERENUE4M0QwMDlEODNCMiAvKiBT
dHJpbmdTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIzNTQwRjMwRDAwNzgy
RTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5Rjc3
NzYwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlM2Q3ZjUzZGIwZmRlZjYwZTYwNmE3ZTUwNTZl
ZTU4ODAyN2E4Yjg2Li41MTQ0NzAzMmUwMGYzNmVkNmJhNTlmYjRiYjgzMzI5OTQ3MmEwZDU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM4OSw4ICszODksNiBAQCBEb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBp
c0hUTUwpCiAgICAgLCBtX2NvbnRhaW5zVmFsaWRpdHlTdHlsZVJ1bGVzKGZhbHNlKQogICAgICwg
bV91cGRhdGVGb2N1c0FwcGVhcmFuY2VSZXN0b3Jlc1NlbGVjdGlvbihmYWxzZSkKICAgICAsIG1f
aWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50KDApCi0gICAgLCBtX3RpdGxlKCIiKQotICAgICwg
bV9yYXdUaXRsZSgiIikKICAgICAsIG1fdGl0bGVTZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICwg
bV91cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OnVwZGF0ZUZvY3Vz
QXBwZWFyYW5jZVRpbWVyRmlyZWQpCiAgICAgLCBtX3N0YXJ0VGltZShjdXJyZW50VGltZSgpKQpA
QCAtMTI3MSw4ICsxMjY5LDkgQEAgRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFjY2Vz
c0tleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKICAqICAyLiBUcmltIGxlYWRpbmcgYW5kIHRy
YWlsaW5nIHNwYWNlcwogICogIDMuIENvbGxhcHNlIGludGVybmFsIHdoaXRlc3BhY2UuCiAgKi8K
LXN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhbm9uaWNhbGl6ZWRUaXRsZShEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitzdGF0aWMgaW5saW5lIFN0cmluZ1dpdGhEaXJlY3Rp
b24gY2Fub25pY2FsaXplZFRpdGxlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgdGl0bGVXaXRoRGlyZWN0aW9uKQogeworICAgIGNvbnN0IFN0cmluZyYgdGl0
bGUgPSB0aXRsZVdpdGhEaXJlY3Rpb24uc3RyaW5nKCk7CiAgICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMgPSB0aXRsZS5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGl0bGUu
bGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgaTsKQEAgLTEyODgsNyArMTI4Nyw3IEBAIHN0YXRpYyBp
bmxpbmUgU3RyaW5nIGNhbm9uaWNhbGl6ZWRUaXRsZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCiAgICAgfQogCiAgICAgaWYgKGkgPT0gbGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBTdHJpbmdXaXRoRGlyZWN0aW9uKCk7CiAKICAgICAv
LyBSZXBsYWNlIGNvbnRyb2wgY2hhcmFjdGVycyB3aXRoIHNwYWNlcywgYW5kIGJhY2tzbGFzaGVz
IHdpdGggY3VycmVuY3kgc3ltYm9scywgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UuCiAgICAgYm9v
bCBwcmV2aW91c0NoYXJXYXNXUyA9IGZhbHNlOwpAQCAtMTMxMywxNyArMTMxMiwxNyBAQCBzdGF0
aWMgaW5saW5lIFN0cmluZyBjYW5vbmljYWxpemVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHRpdGxlKQogICAgIH0KIAogICAgIGlmICghYnVpbGRlckluZGV4ICYmIGJ1
ZmZlcltidWlsZGVySW5kZXhdID09ICcgJykKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICBy
ZXR1cm4gU3RyaW5nV2l0aERpcmVjdGlvbigpOwogCiAgICAgYnVmZmVyLnNocmluayhidWlsZGVy
SW5kZXggKyAxKTsKIAogICAgIC8vIFJlcGxhY2UgdGhlIGJhY2tzbGFzaGVzIHdpdGggY3VycmVu
Y3kgc3ltYm9scyBpZiB0aGUgZW5jb2RpbmcgcmVxdWlyZXMgaXQuCiAgICAgZG9jdW1lbnQtPmRp
c3BsYXlCdWZmZXJNb2RpZmllZEJ5RW5jb2RpbmcoYnVmZmVyLmNoYXJhY3RlcnMoKSwgYnVmZmVy
Lmxlbmd0aCgpKTsKICAgICAKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOworICAg
IHJldHVybiBTdHJpbmdXaXRoRGlyZWN0aW9uKFN0cmluZzo6YWRvcHQoYnVmZmVyKSwgdGl0bGVX
aXRoRGlyZWN0aW9uLmRpcmVjdGlvbigpKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6dXBkYXRlVGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGlmIChtX3Jhd1RpdGxlID09IHRp
dGxlKQogICAgICAgICByZXR1cm47CkBAIC0xMzQ5LDE2ICsxMzQ4LDE3IEBAIHZvaWQgRG9jdW1l
bnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICB1cGRhdGVUaXRsZSh0aXRsZSk7CisgICAgLy8gVGhlIERPTSBBUEkgaGFzIG5vIG1ldGhvZCBv
ZiBzcGVjaWZ5aW5nIGRpcmVjdGlvbiwgc28gYXNzdW1lIExUUi4KKyAgICB1cGRhdGVUaXRsZShT
dHJpbmdXaXRoRGlyZWN0aW9uKHRpdGxlLCBMVFIpKTsKIAogICAgIGlmIChtX3RpdGxlRWxlbWVu
dCkgewogICAgICAgICBBU1NFUlQobV90aXRsZUVsZW1lbnQtPmhhc1RhZ05hbWUodGl0bGVUYWcp
KTsKICAgICAgICAgaWYgKG1fdGl0bGVFbGVtZW50LT5oYXNUYWdOYW1lKHRpdGxlVGFnKSkKLSAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPihtX3RpdGxlRWxlbWVudC5n
ZXQoKSktPnNldFRleHQobV90aXRsZSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVGl0
bGVFbGVtZW50Kj4obV90aXRsZUVsZW1lbnQuZ2V0KCkpLT5zZXRUZXh0KHRpdGxlKTsKICAgICB9
CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlRWxlbWVudChjb25zdCBTdHJpbmcmIHRpdGxl
LCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpCit2b2lkIERvY3VtZW50OjpzZXRUaXRsZUVsZW1lbnQo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIEVsZW1lbnQqIHRpdGxlRWxlbWVudCkK
IHsKICAgICBpZiAodGl0bGVFbGVtZW50ICE9IG1fdGl0bGVFbGVtZW50KSB7CiAgICAgICAgIGlm
IChtX3RpdGxlRWxlbWVudCB8fCBtX3RpdGxlU2V0RXhwbGljaXRseSkKQEAgLTEzODMsMTMgKzEz
ODMsMTMgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50
KQogICAgICAgICBmb3IgKE5vZGUqIGUgPSBoZWFkRWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBlOyBl
ID0gZS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIGlmIChlLT5oYXNUYWdOYW1lKHRpdGxl
VGFnKSkgewogICAgICAgICAgICAgICAgIEhUTUxUaXRsZUVsZW1lbnQqIHRpdGxlRWxlbWVudCA9
IHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPihlKTsKLSAgICAgICAgICAgICAgICBzZXRU
aXRsZUVsZW1lbnQodGl0bGVFbGVtZW50LT50ZXh0KCksIHRpdGxlRWxlbWVudCk7CisgICAgICAg
ICAgICAgICAgc2V0VGl0bGVFbGVtZW50KHRpdGxlRWxlbWVudC0+dGV4dFdpdGhEaXJlY3Rpb24o
KSwgdGl0bGVFbGVtZW50KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAoIW1fdGl0bGVFbGVtZW50KQotICAgICAgICB1cGRhdGVUaXRsZSgi
Iik7CisgICAgICAgIHVwZGF0ZVRpdGxlKFN0cmluZ1dpdGhEaXJlY3Rpb24oKSk7CiB9CiAKIFN0
cmluZyBEb2N1bWVudDo6bm9kZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAw
NWRmYjc2ZWY1MWZkMTUxMGUxMDM4MTM1MWVjY2MwYzEzZGE1N2FjLi44YTgzZDU5ZTc5M2FhNDJk
ODRkNDU4MzhjNzU0OTBiOTA1N2MwYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVk
TmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
dHJpbmdXaXRoRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaWV3
cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CkBAIC04MTEsOSAr
ODEyLDExIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIDAgaWYgdGhpcyBpcyB0aGUgdG9wIGxl
dmVsIGRvY3VtZW50LgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KCkg
Y29uc3Q7CiAKLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9Cisg
ICAgLy8gVXNlZCBieSBET00gYmluZGluZ3M7IG5vIGRpcmVjdGlvbiBrbm93bi4KKyAgICBTdHJp
bmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlLnN0cmluZygpOyB9CiAgICAgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFRpdGxlRWxlbWVudChjb25zdCBT
dHJpbmcmIHRpdGxlLCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpOworCisgICAgdm9pZCBzZXRUaXRs
ZUVsZW1lbnQoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIEVsZW1lbnQqIHRpdGxlRWxlbWVu
dCk7CiAgICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVsZW1lbnQpOwogCiAgICAg
U3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CkBAIC0xMTU4LDcgKzExNjEsNyBA
QCBwcml2YXRlOgogCiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIHVw
ZGF0ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZvaWQgdXBkYXRlVGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNl
VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsKICAgICB2b2lkIHVwZGF0ZUJhc2VVUkwoKTsK
IApAQCAtMTI5NSw4ICsxMjk4LDggQEAgcHJpdmF0ZToKICAgICAvLyBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNpZ25vcmUtZGVzdHJ1Y3RpdmUtd3Jp
dGVzLWNvdW50ZXIKICAgICB1bnNpZ25lZCBtX2lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudDsK
IAotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX3Jhd1RpdGxlOworICAgIFN0cmlu
Z1dpdGhEaXJlY3Rpb24gbV90aXRsZTsKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fcmF3VGl0
bGU7CiAgICAgYm9vbCBtX3RpdGxlU2V0RXhwbGljaXRseTsKICAgICBSZWZQdHI8RWxlbWVudD4g
bV90aXRsZUVsZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRp
dGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3Bw
CmluZGV4IDc4YzhiNmE3MTM5MjFkY2YwNmY1NzM3NTE4MmFmMTExZjgyMTg5ZTMuLmIwNDZjN2I1
OTA1ODJhMDkwMWU2YTg0MTAyZDZkMjg3MWEzYzEwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGl0bGVFbGVtZW50LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgog
I2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzMsNyArMzQsNiBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBpbmxpbmUgSFRNTFRpdGxlRWxlbWVudDo6
SFRNTFRpdGxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1f
dGl0bGUoIiIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGl0bGVUYWcpKTsKIH0KQEAgLTU3
LDcgKzU3LDcgQEAgdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkK
IAogdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENv
dW50RGVsdGEpCiB7Ci0gICAgbV90aXRsZSA9IHRleHQoKTsKKyAgICBtX3RpdGxlID0gdGV4dFdp
dGhEaXJlY3Rpb24oKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudCgp
LT5zZXRUaXRsZUVsZW1lbnQobV90aXRsZSwgdGhpcyk7CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CkBAIC03MSwxMCArNzEsMjAgQEAgU3RyaW5nIEhUTUxUaXRsZUVsZW1l
bnQ6OnRleHQoKSBjb25zdAogICAgICAgICBpZiAobi0+aXNUZXh0Tm9kZSgpKQogICAgICAgICAg
ICAgdmFsICs9IHN0YXRpY19jYXN0PFRleHQqPihuKS0+ZGF0YSgpOwogICAgIH0KLSAgICAKKwog
ICAgIHJldHVybiB2YWw7CiB9CiAKK1N0cmluZ1dpdGhEaXJlY3Rpb24gSFRNTFRpdGxlRWxlbWVu
dDo6dGV4dFdpdGhEaXJlY3Rpb24oKQoreworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
TFRSOworICAgIGlmIChSZW5kZXJTdHlsZSogc3R5bGUgPSBjb21wdXRlZFN0eWxlKCkpCisgICAg
ICAgIGRpcmVjdGlvbiA9IHN0eWxlLT5kaXJlY3Rpb24oKTsKKyAgICBlbHNlIGlmIChSZWZQdHI8
UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVGb3JSZW5kZXJlcigpKQorICAgICAgICBkaXJlY3Rp
b24gPSBzdHlsZS0+ZGlyZWN0aW9uKCk7CisgICAgcmV0dXJuIFN0cmluZ1dpdGhEaXJlY3Rpb24o
dGV4dCgpLCBkaXJlY3Rpb24pOworfQorCiB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRleHQo
Y29uc3QgU3RyaW5nICZ2YWx1ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKaW5kZXggOGI5MGY1NjRmM2FhZjE2MTAzMTQ2
YWMwNTgyMmY2ZDllNmExZmFlMS4uNjkyMDk5NzgzOTViMDQ1M2IyNDVlYzQyMzUxMDQwMjlmZDQy
NDQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKQEAgLTIzLDYgKzIz
LDcgQEAKICNkZWZpbmUgSFRNTFRpdGxlRWxlbWVudF9oCiAKICNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zMyw2ICszNCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKIAorICAgIFN0cmluZ1dpdGhEaXJl
Y3Rpb24gdGV4dFdpdGhEaXJlY3Rpb24oKTsKKwogcHJpdmF0ZToKICAgICBIVE1MVGl0bGVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC00MCw3ICs0Myw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2Us
IE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxk
Q291bnREZWx0YSA9IDApOwogCi0gICAgU3RyaW5nIG1fdGl0bGU7CisgICAgU3RyaW5nV2l0aERp
cmVjdGlvbiBtX3RpdGxlOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMTIxMDQ1YjViOTlmZmEwNzliNjA1OWY3ZTE5N2Fk
ZDRkM2RiYzNkMi4uMTQzN2FkYzRlNmRiNTc0YmY3MDkxOWM0Y2IwMDViYzI0OTIyM2RkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC02NDksNyArNjQ5LDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpCiAgICAgbV9z
dG9wUmVjb3JkaW5nUmVzcG9uc2VzID0gdHJ1ZTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGlmICh0aXRsZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKaW5kZXggMWY4ODI3MmIxOTIwMDVkNjJlMzIwNzE3MGJmN2M1YjgyNTc5MmJhNS4uYzZm
MGJjNWIyNjk0NGZlYmY5NjRiZmRkYzI2NTdiNzY2NzVlMzVkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKICNpbmNsdWRl
ICJTdWJzdGl0dXRlRGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KQEAgLTEyMSw3ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgd2FzT25sb2FkSGFuZGxlZCgpIHsgcmV0dXJuIG1fd2FzT25sb2FkSGFuZGxlZDsgfQog
ICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBz
ZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wpOwotICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0
IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mKTsKICAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBj
b25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRl
RW5jb2Rpbmc7IH0KIApAQCAtMTY4LDcgKzE2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBsYXN0Q2hlY2tlZFJlcXVlc3QoKSAgeyByZXR1
cm4gbV9sYXN0Q2hlY2tlZFJlcXVlc3Q7IH0KIAogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdS
ZXNwb25zZXMoKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxl
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBp
Y29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsgfQogCiAgICAgICAgIEtVUkwg
dXJsRm9ySGlzdG9yeSgpIGNvbnN0OwpAQCAtMjk4LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgYm9vbCBtX2lzQ2xpZW50UmVkaXJlY3Q7CiAgICAgICAgIGJvb2wgbV93
YXNPbmxvYWRIYW5kbGVkOwogCi0gICAgICAgIFN0cmluZyBtX3BhZ2VUaXRsZTsKKyAgICAgICAg
U3RyaW5nV2l0aERpcmVjdGlvbiBtX3BhZ2VUaXRsZTsKICAgICAgICAgU3RyaW5nIG1fcGFnZUlj
b25VUkw7CiAKICAgICAgICAgU3RyaW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA1OWZkODk3OWNiZWVmY2NmZTkwNWFkZTdkMjZmZmIx
ZGRhZTZlOWEzLi42YWNmOTkyMTliYWNlM2NjMmQwMjMzMjlmZDYxZTdmMDNmYjI1NWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yNjYsNyArMjY2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KQEAgLTMz
NCw3ICszMzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291
cmNlUmVwbGFjZW1lbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudExv
YWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpIHsgcmV0dXJuIERvY3VtZW50
TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKSB7
IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgeyByZXR1cm4g
IiI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMzQ3YTQxZWFh
ZTNhYjYxN2RhMzAxY2FjMTI5NzUyNTdkYjg0YTU5ZC4uZjEwMjBlMWYzOWNhN2U0Mjk4MzVkNmMz
MDc2MTg2Yzg3NDJhZmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC02MTAsNyArNjEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQog
ICAgIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKICAgICAKICAg
ICBpZiAobV9kb2N1bWVudExvYWRlcikgewotICAgICAgICBTdHJpbmcgcHRpdGxlID0gbV9kb2N1
bWVudExvYWRlci0+dGl0bGUoKTsKKyAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBwdGl0bGUg
PSBtX2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0
bGUgbGV0IHRoZSBXZWJWaWV3IGtub3cgYWJvdXQgaXQuCiAgICAgICAgIGlmICghcHRpdGxlLmlz
TnVsbCgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHB0
aXRsZSk7CkBAIC0xOTI0LDkgKzE5MjQsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92
aXNpb25hbExvYWQoKQogICAgICAgICBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKIAogICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJWaWV3IGtub3cgYWJvdXQgaXQuIAot
ICAgICAgICBTdHJpbmcgdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOwotICAgICAg
ICBpZiAoIXRpdGxlLmlzTnVsbCgpKSAKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZSh0aXRsZSk7ICAgICAgICAgCisgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rp
b24gdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOworICAgICAgICBpZiAoIXRpdGxl
LmlzTnVsbCgpKQorICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KHRpdGxlKTsKIAogICAgICAgICBjaGVja0NvbXBsZXRlZCgpOwogICAgIH0gZWxzZSB7ICAgICAg
ICAKQEAgLTMzNzUsNyArMzM3NSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwKIH0KICNlbmRp
ZgogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9p
ZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUp
CiB7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0bGUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCAxZmI5ZTNjNDVmNDkwZTI5OWZhZmM1NGY0ZDM1ZTY3
ZTRlYjEyOTVjLi45MDYyZjIxNWNlZDgxNTlmZGE4OWM4NWFmNmUxNmQ4MWFjNWY1MTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBTY3Jp
cHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbjsKIGNs
YXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIApAQCAtMjgy
LDcgKzI4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAotICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYp
OwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggN2Q2NDkxMmJkYjQxM2FlOTU5YWIwZThmNWFj
Y2FhYzY2MmZmZjk5My4uZDVkNDllYzljNzA4YTljN2U4OTc3M2IxZDYzODdhYmVmYjdlZjJkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg0LDYgKzg0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAg
ICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAgICAgY2xhc3MgU2hhcmVkQnVmZmVyOworICAgIGNs
YXNzIFN0cmluZ1dpdGhEaXJlY3Rpb247CiAgICAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAgICAg
Y2xhc3MgV2lkZ2V0OwogCkBAIC0xMzksNyArMTQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUljb25zKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21t
aXRMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkBAIC0yMjcsNyArMjI4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFT
b3VyY2VSZXBsYWNlbWVudCgpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJikg
PSAwOwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgPSAw
OwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGI4YmVjZTliNzUwYzUzODZkOGEzZDhlMWQyOGM4ZDFlZDdiMzFiYjkuLmMxYzU0MTQz
MmFhZGQ5ZjViZGJiYWQ2MjliMGY4YTA0NmI1YWE4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnVwZGF0ZUZvckJhY2tGb3J3YXJkTmF2aWdhdGlvbigpCiB7CiAjaWYgIUxP
R19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkK
LSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBm
b3IgYmFjay9mb3J3YXJkIG5hdmlnYXRpb24gaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9H
KEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgYmFjay9mb3J3
YXJkIG5hdmlnYXRpb24gaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCiAgICAg
Ly8gTXVzdCBncmFiIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBiZWZvcmUgZGlzdHVyYmlu
ZyBpdApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZv
clJlbG9hZCgpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9y
eTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVsb2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlbG9h
ZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRs
ZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKICAgICBpZiAobV9jdXJyZW50
SXRlbSkgewpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0
ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpCiB7CiAjaWYgIUxPR19ESVNB
QkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAg
ICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVk
aXJlY3QgbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNv
cmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRpcmVjdCBsb2FkIGluIGZyYW1lICVz
IiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBt
X2ZyYW1lLT5zZXR0aW5ncygpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAg
ICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBMT0co
SGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBjbGllbnQgcmVk
aXJlY3QgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+
dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlz
dG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY2xpZW50IHJlZGlyZWN0IGluIGZyYW1lICVzIiwg
bV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAjZW5kaWYKIAogICAgIC8vIENsZWFyIG91dCBmb3JtIGRhdGEgc28gd2Ug
ZG9uJ3QgdHJ5IHRvIHJlc3RvcmUgaXQgaW50byB0aGUgaW5jb21pbmcgcGFnZS4gIE11c3QgaGFw
cGVuIGFmdGVyCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBk
YXRlRm9yQ29tbWl0KCkKICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5s
b2FkZXIoKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKGZyYW1lTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpKQotICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGlu
ZyBIaXN0b3J5IGZvciBjb21taXQgaW4gZnJhbWUgJXMiLCBmcmFtZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJX
ZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY29tbWl0IGluIGZyYW1lICVzIiwg
ZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAjZW5kaWYKICAgICBGcmFtZUxvYWRUeXBlIHR5cGUgPSBmcmFtZUxvYWRlci0+bG9h
ZFR5cGUoKTsKICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKHR5cGUpCkBAIC01MjYsMTAg
KzUyNiwxMSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5
SXRlbSogaXRlbSkKICAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKIH0KIAotdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9p
ZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAobV9jdXJyZW50SXRlbSkKLSAgICAgICAgbV9j
dXJyZW50SXRlbS0+c2V0VGl0bGUodGl0bGUpOworICAgICAgICAvLyBGSVhNRTogbWFrZSB1c2Ug
b2YgdGl0bGUuZGlyZWN0aW9uKCkgYXMgd2VsbC4KKyAgICAgICAgbV9jdXJyZW50SXRlbS0+c2V0
VGl0bGUodGl0bGUuc3RyaW5nKCkpOwogfQogCiBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJy
ZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdApAQCAtNTc2LDEyICs1NzcsMTMgQEAgdm9p
ZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAg
ICAgCiAgICAgRnJhbWUqIHBhcmVudEZyYW1lID0gbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsK
ICAgICBTdHJpbmcgcGFyZW50ID0gcGFyZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dHJlZSgpLT51
bmlxdWVOYW1lKCkgOiAiIjsKLSAgICBTdHJpbmcgdGl0bGUgPSBkb2N1bWVudExvYWRlci0+dGl0
bGUoKTsKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRp
dGxlKCk7CiAKICAgICBpdGVtLT5zZXRVUkwodXJsKTsKICAgICBpdGVtLT5zZXRUYXJnZXQobV9m
cmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkpOwogICAgIGl0ZW0tPnNldFBhcmVudChwYXJlbnQp
OwotICAgIGl0ZW0tPnNldFRpdGxlKHRpdGxlKTsKKyAgICAvLyBGSVhNRTogc2hvdWxkIHN0b3Jl
IHRpdGxlIGRpcmVjdGlvbmFsaXR5IGluIGhpc3RvcnkgYXMgd2VsbC4KKyAgICBpdGVtLT5zZXRU
aXRsZSh0aXRsZS5zdHJpbmcoKSk7CiAgICAgaXRlbS0+c2V0T3JpZ2luYWxVUkxTdHJpbmcob3Jp
Z2luYWxVUkwuc3RyaW5nKCkpOwogCiAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkg
fHwgZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCmluZGV4IDU5ZjExYTI1Yzkz
M2QzZDdjOTcyNTFiOTBhOTNiMzJkNTZiOTlhZDQuLjE1ZTEyYzA5OWEzZWYwNzI3NTRlNjdlNmNk
NTY3ZjZiZTA4YmE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwog
Y2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBT
dHJpbmdXaXRoRGlyZWN0aW9uOwogCiBjbGFzcyBIaXN0b3J5Q29udHJvbGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSGlzdG9yeUNvbnRyb2xsZXIpOwpAQCAtNzEsNyArNzIsNyBAQCBw
dWJsaWM6CiAKICAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRJdGVtLmdldCgpOyB9CiAgICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRl
bSopOwotICAgIHZvaWQgc2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAg
IGJvb2wgY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29uc3Q7CiAKICAgICBIaXN0b3J5
SXRlbSogcHJldmlvdXNJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c0l0ZW0uZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERp
cmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWEzNGFiNmJmZjhjZDkxMDRlMzUxYzVjMTcxMjljM2ZmYTJhMmVj
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5n
V2l0aERpcmVjdGlvbi5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0cmluZ1dpdGhEaXJlY3Rp
b25faAorI2RlZmluZSBTdHJpbmdXaXRoRGlyZWN0aW9uX2gKKworI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKy8vIEluIHNvbWUgY2lyY3Vtc3RhbmNlcyB3ZSB3YW50IHRvIHN0b3JlIGEgU3RyaW5n
IGFsb25nIHdpdGggdGhlIFRleHREaXJlY3Rpb24KKy8vIG9mIHRoZSBTdHJpbmcgYXMgbGVhcm5l
ZCBmcm9tIHRoZSBjb250ZXh0IG9mIHRoZSBTdHJpbmcuIEZvciBleGFtcGxlLAorLy8gY29uc2lk
ZXIgc3RvcmluZyB0aGUgdGl0bGUgZGVyaXZlZCBmcm9tIDx0aXRsZSBkaXI9J3J0bCc+c29tZSB0
aXRsZTwvdGl0bGU+CisvLyBpbiB0aGUgaGlzdG9yeS4KKy8vCisvLyBOb3RlIHRoYXQgaXMgZXhw
bGljaXRseSAqbm90KiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzdHJpbmcgYXMgbGVhcm5lZAorLy8g
ZnJvbSB0aGUgY2hhcmFjdGVycyBvZiB0aGUgc3RyaW5nOyBpdCdzIGV4dHJhIG1ldGFkYXRhIHdl
IGhhdmUgZXh0ZXJuYWwKKy8vIHRvIHRoZSBzdHJpbmcuCitjbGFzcyBTdHJpbmdXaXRoRGlyZWN0
aW9uIHsKK3B1YmxpYzoKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uKCkge30KKyAgICBTdHJpbmdX
aXRoRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBUZXh0RGlyZWN0aW9uIGRpcikgOiBt
X3N0cmluZyhzdHJpbmcpLCBtX2RpcmVjdGlvbihkaXIpIHt9CisKKyAgICBjb25zdCBTdHJpbmcm
IHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorCisgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQorCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG90aGVyLm1fc3RyaW5nID09IG1fc3RyaW5nICYmIG90aGVyLm1fZGlyZWN0
aW9uID09IG1fZGlyZWN0aW9uOworICAgIH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKCp0aGlzKSA9PSBvdGhl
cik7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9zdHJpbmc7CisgICAgVGV4dERpcmVjdGlv
biBtX2RpcmVjdGlvbjsKK307CisKK30KKworI2VuZGlmIC8vIFN0cmluZ1dpdGhEaXJlY3Rpb25f
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAppbmRleCBlYmNkZGI0NmEwMjlk
OWIzNGRjZWMyNTVhMmE4Y2RiMWI1YjE4MWVjLi5kOTI1NjAzMTFlNzY2Mjc2YzRmNjdhODk5MTYw
ZDJhMzliN2Y4NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcApAQCAt
NDAsNyArNDAsOCBAQCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAg
aWYgKGZpcnN0Q2hpbGQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0bGVFbGVtZW50KHRl
eHRDb250ZW50KCksIHRoaXMpOworICAgICAgICAvLyBGSVhNRTogZG9lcyBTVkcgaGF2ZSBhIHRp
dGxlIHRleHQgZGlyZWN0aW9uPworICAgICAgICBkb2N1bWVudCgpLT5zZXRUaXRsZUVsZW1lbnQo
U3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0Q29udGVudCgpLCBMVFIpLCB0aGlzKTsKIH0KIAogdm9p
ZCBTVkdUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQpAQCAtNTMsNyArNTQsOCBA
QCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3Vu
dERlbHRhKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRU
aXRsZUVsZW1lbnQodGV4dENvbnRlbnQoKSwgdGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiBkb2Vz
IFNWRyBoYXZlIHRpdGxlIHRleHQgZGlyZWN0aW9uPworICAgICAgICBkb2N1bWVudCgpLT5zZXRU
aXRsZUVsZW1lbnQoU3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0Q29udGVudCgpLCBMVFIpLCB0aGlz
KTsKIH0KIAogQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RpdGxlRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAy
YjBlMTNjZmYyMTkyMzQwYjE1YTBkMTRmZjEwMDk2NTFlNmI4Njk2Li5kZDgyNjlhZWIxOTMyM2Nj
ZDg2YWFkYTE3MzM3NGRhMWQ1ODY2MWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4g
c2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1l
TG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpzZXRUaXRsZSk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJEYXRhU291cmNlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRhdGFTb3VyY2VJbXBsOjpwYWdlVGl0bGUpOgorCiAyMDExLTAzLTMwICBEYXZpZCBMZXZpbiAg
PGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3Yu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAppbmRleCA2NDdhNzBjMjg1YjY3Y2UwZDU0YTNhZTA4ODE0OThlMTE0MzZkNjUzLi5j
ZDc2NDkxMDlkMWI1ZTQwNmU3MjU0NjdkNjYzZTgzMGY5YWU4MzFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTcz
NCwxMCArNzM0LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBG
cmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogeworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9m
IHRpdGxlLgogICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFt
ZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVUaXRsZShtX3dlYkZyYW1lLCB0aXRsZSk7CisgICAgICAg
IG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUu
c3RyaW5nKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpCkBAIC0xMzI4LDcgKzEzMjksNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9h
ZGVyPiBGcmFtZUxvYWRlckNsaWVudEltcGw6OmNyZWF0ZURvY3VtZW50TG9hZGVyKAogICAgIHJl
dHVybiBkcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZXRU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBGSVhNRTogaW5mb3JtIGNvbnN1bWVyIG9mIGNo
YW5nZXMgdG8gdGhlIHRpdGxlLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRleCBmMTljMjZjNTM5YTFjMWI1YTI2NTdiN2Fh
MjU4OTVjMWIyZjUyMTI2Li4yYjFjMjZmNWRkYmNjY2FkZDI2ZWE0OGFmOGQ4YWRmNDViMmJhNzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3Ry
aW5nJiB0aXRsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1p
dExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRs
ZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2Vu
dChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURh
dGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lk
IHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFt
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJj
ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YVNvdXJjZUltcGwu
Y3BwCmluZGV4IDEzNjZhODA5NGE1MDYzOTdlMDk0ODM0MDgwMjY1ZGJjYTdiZTY2MWEuLjMxNzBh
ZmZiZTRiNGIxZjg0MGM2NzU5MGU5ZDZiYWFkNTc4NTBlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhU291cmNlSW1wbC5jcHAKQEAgLTgyLDcgKzgyLDggQEAg
dm9pZCBXZWJEYXRhU291cmNlSW1wbDo6cmVkaXJlY3RDaGFpbihXZWJWZWN0b3I8V2ViVVJMPiYg
cmVzdWx0KSBjb25zdAogCiBXZWJTdHJpbmcgV2ViRGF0YVNvdXJjZUltcGw6OnBhZ2VUaXRsZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRpdGxlKCk7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rp
b24gb2YgdGl0bGUgYXMgd2VsbC4KKyAgICByZXR1cm4gdGl0bGUoKS5zdHJpbmcoKTsKIH0KIAog
V2ViTmF2aWdhdGlvblR5cGUgV2ViRGF0YVNvdXJjZUltcGw6Om5hdmlnYXRpb25UeXBlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwppbmRleCAzNWRhMDljMzQ5NmNlMzcwZWVmYjllYTI5NzdhZWYzMjQ2
MGQwMDhlLi43Y2VhNjVhNmUzNjk3OWIwMzZhMzIxYWFhMjBjMGMyMjQzMDkxYjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAg
ICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0
ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKKwogMjAxMS0wMy0yOSAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
dG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggZmEzNGFjOWMwZDdkNjA4MTk4MjU4
NzMzNDEzZjI1YWIyYTkwYmEyNi4uOTZiODU5YmZlOTU2MWU3Yjg5Mjc4MTQ2OWU3MWEzYTgyZmNk
NDkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtNTc2LDkgKzU3NiwxMCBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAg
ICAgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChtX3ZpZXcpOwogfQogCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxl
KQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7Ci0gICAgQ1N0cmluZyBjcyA9IHRpdGxl
LnV0ZjgoKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBDU3Ry
aW5nIGNzID0gdGl0bGUuc3RyaW5nKCkudXRmOCgpOwogICAgIGV3a19mcmFtZV90aXRsZV9zZXQo
bV9mcmFtZSwgY3MuZGF0YSgpKTsKIAogICAgIGlmIChld2tfdmlld19mcmFtZV9tYWluX2dldCht
X3ZpZXcpICE9IG1fZnJhbWUpCkBAIC03MDksNyArNzEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVm
bDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwm
IHVybCkKIHsKICAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMg
dGhlIHJpZ2h0IGNhbGxiYWNrCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAppbmRleCA1ZWE0ZThjYWM5N2MwYmE5
ZThlZTY5YzkyMjc3MzljZTE3ODFhNDBjLi5iZDA3YTMwMzRiNjE4NmIwNGFiMDQ5ZTNkZjEyMGJi
ZDVmOWM0NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBGcmFt
ZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENo
YW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50
RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQ
dHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKIAog
ICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCAwNWMxNWQ0NzRmNDc4ZTVkZDAzNmE3ZTRhN2IwN2E2NjQxOTM3NWFhLi5lZDczYTdl
MWUyN2M4NGExNWJjNjJhNWZkOTU5OGE3Y2YzODhjYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBz
aG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVM
b2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmg6CisKIDIwMTEtMDMtMjkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGRpc2FibGUgYW4gYXNzZXJ0IGluIHRlc3R3
ZWJ2aWV3IGR1ZSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGNhOGJmOWEwODlhZDczODNjOGQ0
NTMyN2E4N2Q4NTM0Yjg1ZGUwOTcuLjVjNTk0ZTg1NmJiMGFmNGQxZjJjZGVlMDM1NjUyNzQyZGZj
MWI4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTk0OSwxNCArOTQ5LDE1IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIG5v
dGlmeVN0YXR1cyhtX2ZyYW1lLCBXRUJLSVRfTE9BRF9QUk9WSVNJT05BTCk7CiB9CiAKLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAobV9sb2FkaW5nRXJy
b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHBy
aXYgPSBtX2ZyYW1lLT5wcml2OwogICAgIGdfZnJlZShwcml2LT50aXRsZSk7Ci0gICAgcHJpdi0+
dGl0bGUgPSBnX3N0cmR1cCh0aXRsZS51dGY4KCkuZGF0YSgpKTsKKyAgICAvLyBGSVhNRTogdXNl
IGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBwcml2LT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fZnJh
bWUsICJ0aXRsZS1jaGFuZ2VkIiwgcHJpdi0+dGl0bGUpOwogICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChtX2ZyYW1lKSwgInRpdGxlIik7CkBAIC0xMTE5LDExICsxMTIwLDEyIEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBmcmFtZURhdGEgPSBtX2Zy
YW1lLT5wcml2OwogICAgIGdfZnJlZShmcmFtZURhdGEtPnRpdGxlKTsKLSAgICBmcmFtZURhdGEt
PnRpdGxlID0gZ19zdHJkdXAodGl0bGUudXRmOCgpLmRhdGEoKSk7CisgICAgLy8gRklYTUU6IHVz
ZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgZnJhbWVEYXRhLT50aXRsZSA9IGdfc3RyZHVwKHRp
dGxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuaAppbmRleCBiN2VhZDdhZjVlYmI5ZTY3NjVjOTQ2YzM1NWFjOTllODljMWU5NTQxLi45N2Vi
MGZmNjg2YTM2YzUxOTFhZjRlMDJhNmE3ZGY4ZjQ3YWQ2Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAg
LTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxDbG9zZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
QEAgLTE3NCw3ICsxNzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFs
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRM
b2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6
U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJB
Z2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
aGFpa3UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggNzc1
N2ZlNzkyMzE2NWRmYzhjYjFjZDRkZTRlOTUzODNlYjA5ZjlkZi4uOTk2YTFmNDQ2MjFiZTAyZGIy
NjZkNTliM2U2Y2MyNTMyZDYxNzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBz
dXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNs
aWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1Lmg6CisKIDIwMTEtMDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEhhaWt1LmNwcCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdS5jcHAKaW5kZXggMjRhOThkNTYzNDI4NmU3YjQ0OWMxMTBiM2UxZGI1M2Jh
ODVlMGQwYi4uYzA0Y2I3ZDRjNmYxYzhiNmE4ZTQyYmUwNTJmZDk0MjIxMTEzNDQ3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEhhaWt1LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UuY3BwCkBAIC0yMzcsMTMgKzIzNywxMyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIH0K
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUmIHRpdGxlKQogewogICAg
IGlmIChtX3dlYlZpZXcpIHsKLSAgICAgICAgbV93ZWJWaWV3LT5TZXRQYWdlVGl0bGUodGl0bGUp
OwotCisgICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBt
X3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZS5tX3N0cmluZygpKTsKICAgICAgICAgQk1lc3Nh
Z2UgbWVzc2FnZShUSVRMRV9DSEFOR0VEKTsKLSAgICAgICAgbWVzc2FnZS5BZGRTdHJpbmcoInRp
dGxlIiwgdGl0bGUpOworICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidGl0bGUiLCB0aXRsZS5z
dHJpbmcoKSk7CiAgICAgICAgIG1fbWVzc2VuZ2VyLT5TZW5kTWVzc2FnZSgmbWVzc2FnZSk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEhhaWt1LmggYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAppbmRleCBkYmQzMDg0Y2E0Y2I3ZjI5YWViNzZk
MjQ0ZmRkZDkzMGU5ODk3MGIyLi5mNTc2NTQ1Yzg2YTZiYTQzN2ExZDY2ZDdjZmVmZTI3NDVmZGI3
NjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaApAQCAtMTAyLDcgKzEwMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mIHRpdGxlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1
bWVudExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgp
OwpAQCAtMTQzLDcgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCB2b2lkIGFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JE
YXRhU291cmNlUmVwbGFjZW1lbnQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJik7CiAKICAgICAg
ICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IGQyYzIwZWRiYmM0NWYwNjk3OGFiOWViMzI1N2Q0M2RlMmZiNzUwNDYuLmM5NjJhNjk1
NGY3M2Q4MmZiZjI1YmE2OWJhOTI2OTFmMTY3MTM2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNo
b3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxv
YWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisK
IDIwMTEtMDMtMzAgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0ZmU1
NjY0ZGQ2MDUxNmMxMTg2ZTg1NWRiMjNiMzdlNTI0ZDM4MzY2Li5kZjhiMzRiNTI2Y2Y4OGU4NGQw
NmQ4MmFhM2U4ODU2NjY5Y2UxZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERp
cmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25z
dCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNv
cmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1h
cmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggOTJjMmIw
M2IxYzljZjBjOGJiZWYxMTExN2EwMDhmZGI5MzYzZTBjMC4uMjdjZTYyYWM0ZDBlMzZhNGMyNmY3
OWRlZWZmMjNlNDFjYzA1ZGRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTYyNCwxMiArNjI0LDEz
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25h
bExvYWQoKQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5k
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTopLCBtX3dlYkZyYW1lLmdldCgp
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewog
ICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAog
ICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRp
b25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcp
OwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYykK
LSAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZl
VGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUsIG1fd2ViRnJhbWUuZ2V0KCkpOwor
ICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAgICAgQ2FsbEZy
YW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVG
dW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6
KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKQEAgLTg5
Myw3ICs4OTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0
b3J5KCkKICAgICAgICAgV2ViSGlzdG9yeURlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1w
bGVtZW50YXRpb25zID0gV2ViVmlld0dldEhpc3RvcnlEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh2
aWV3KTsKICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+bmF2aWdhdGVkRnVuYykgewogICAg
ICAgICAgICAgV2ViTmF2aWdhdGlvbkRhdGEgKmRhdGEgPSBbW1dlYk5hdmlnYXRpb25EYXRhIGFs
bG9jXSBpbml0V2l0aFVSTFN0cmluZzpsb2FkZXItPnVybEZvckhpc3RvcnkoKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aXRsZTpsb2FkZXItPnRpdGxlKCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0
bGU6bG9hZGVyLT50aXRsZSgpLnN0cmluZygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0Omxv
YWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLm5zVVJMUmVxdWVzdCgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlOmxvYWRlci0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGFzU3Vic3RpdHV0ZURhdGE6bG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKQpAQCAt
OTA3LDcgKzkwOCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhp
c3RvcnkoKQogICAgIH0KIAogICAgIFtbV2ViSGlzdG9yeSBvcHRpb25hbFNoYXJlZEhpc3Rvcnld
IF92aXNpdGVkVVJMOmxvYWRlci0+dXJsRm9ySGlzdG9yeSgpIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFRpdGxlOmxvYWRlci0+dGl0bGUoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFRpdGxlOmxvYWRlci0+dGl0
bGUoKS5zdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0aG9kOmxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLmh0dHBNZXRob2QoKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXNGYWlsdXJlOmxvYWRlci0+
dXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmNyZWFzZVZpc2l0Q291bnQ6IWxvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5KCldOyAvLyBEbyBub3QgaW5jcmVhc2UgdmlzaXQgY291bnQgZHVlIHRvIG5hdmln
YXRpb25zIHRoYXQgd2VyZSBub3QgaW5pdGlhdGVkIGJ5IHRoZSB1c2VyIGRpcmVjdGx5LCBhdm9p
ZGluZyBncm93dGggZnJvbSBwcm9ncmFtbWF0aWMgcmVsb2Fkcy4KQEAgLTExNzksNyArMTE4MCw3
IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7
CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7
CiAgICAgV2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAg
CkBAIC0xMTg4LDcgKzExODksOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRs
ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIGlmICghaW1w
bGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAKLSAgICAgICAgQ2FsbEhpc3RvcnlEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPnNldFRp
dGxlRnVuYywgdmlldywgQHNlbGVjdG9yKHdlYlZpZXc6dXBkYXRlSGlzdG9yeVRpdGxlOmZvclVS
TDopLCAoTlNTdHJpbmcgKil0aXRsZSwgKE5TU3RyaW5nICopdXJsKTsKKyAgICAgICAgLy8gRklY
TUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAgIENhbGxIaXN0b3J5RGVsZWdhdGUo
aW1wbGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMsIHZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnVw
ZGF0ZUhpc3RvcnlUaXRsZTpmb3JVUkw6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIChO
U1N0cmluZyAqKXVybCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xMTk2LDcg
KzExOTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgbnNVUkwgPSBbbnNVUkwgX3dlYmtpdF9j
YW5vbmljYWxpemVdOwogICAgIGlmKCFuc1VSTCkKICAgICAgICAgcmV0dXJuOwotICAgIE5TU3Ry
aW5nICp0aXRsZU5TU3RyaW5nID0gdGl0bGU7CisgICAgTlNTdHJpbmcgKnRpdGxlTlNTdHJpbmcg
PSB0aXRsZS5zdHJpbmcoKTsKICAgICAgICAKICAgICBbW1tXZWJIaXN0b3J5IG9wdGlvbmFsU2hh
cmVkSGlzdG9yeV0gaXRlbUZvclVSTDpuc1VSTF0gc2V0VGl0bGU6dGl0bGVOU1N0cmluZ107CiB9
CkBAIC0xMjg1LDcgKzEyODcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0
aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICAgICAgLy8gbGlrZSB0aGUgb25lcyB0aGF0
IFNhZmFyaSB1c2VzIGZvciBib29rbWFya3MgaXQgaXMgdGhlIG9ubHkgd2F5IHRoZSBEb2N1bWVu
dExvYWRlcgogICAgICAgICAvLyB3aWxsIGdldCB0aGUgcHJvcGVyIHRpdGxlLgogICAgICAgICBp
ZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gW2RhdGFTb3VyY2UgX2RvY3VtZW50
TG9hZGVyXSkKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUaXRsZShbZGF0YVNvdXJj
ZSBwYWdlVGl0bGVdKTsKKyAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUaXRsZShTdHJp
bmdXaXRoRGlyZWN0aW9uKFtkYXRhU291cmNlIHBhZ2VUaXRsZV0sIExUUikpOwogICAgIH0KIAog
ICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gY29yZUZyYW1lLT5vd25lckVs
ZW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0KaW5kZXggMDNlZGQ1ZDY5MjI1MDVkNzAxOWFiMTcyMjE4NGRkYWI2YmIyNTlm
Mi4uODQyZTYwNWZiYWU5OTk1MzU2ODQwY2Y4ZmYwODY1YzhjY2EzMTBmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTI2
MSw3ICsyNjEsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29uY2F0ZW5hdGVBcnJheXMoTlNBcnJheSAq
Zmlyc3QsIE5TQXJyYXkgKnNlY29uZCkKIAogLSAoTlNTdHJpbmcgKil0aXRsZQogewotICAgIHJl
dHVybiBuc1N0cmluZ05pbElmRW1wdHkoW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExv
YWRlcl0tPnRpdGxlKCkpOworICAgIHJldHVybiBuc1N0cmluZ05pbElmRW1wdHkoW19wcml2YXRl
LT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnRpdGxlKCkuc3RyaW5nKCkpOwogfQogCiAt
IChET01Eb2N1bWVudCAqKURPTURvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDdiYWI2YTkyOWI4
ZmM3YzdiYzBjOGU3MTdjMzUyYzRmNjg5YWNkMGIuLmZiNWU2YjMwYzJlNWUxNmIyNzhmNzg4ZTA3
MjdhMzc3ZTI3YzhmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMt
MzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0
cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNl
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDEx
LTAzLTMwICBZaSBTaGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IGQzMTg0
OTRiYWVjYzMyZTgwODE5ZjlmZjY0MmM5NmVmOGJmY2I3Y2IuLjgwODliZmU4OGY5ZDRlZjdhYjlm
ZDZhZDhjNzU2ZGQwMTA4NDc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApAQCAtNDQ3LDE1ICs0NDcsMTYg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCkKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQog
eworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIGlmIChkdW1wRnJh
bWVMb2FkZXJDYWxsYmFja3MpCi0gICAgICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlVGl0bGU6
ICVzXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1f
ZnJhbWUpKSwgcVByaW50YWJsZShRU3RyaW5nKHRpdGxlKSkpOworICAgICAgICBwcmludGYoIiVz
IC0gZGlkUmVjZWl2ZVRpdGxlOiAlc1xuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSksIHFQcmludGFibGUoUVN0cmluZyh0aXRsZS5zdHJp
bmcoKSkpKTsKIAogICAgIGlmICghbV93ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
ZW1pdCB0aXRsZUNoYW5nZWQodGl0bGUpOworICAgIGVtaXQgdGl0bGVDaGFuZ2VkKHRpdGxlLnN0
cmluZygpKTsKIH0KIAogCkBAIC03MDksMTYgKzcxMCwxNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogewogfQogCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtV
UkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBVc2VkIGJ5
IEFwcGxlIFdlYktpdCB0byB1cGRhdGUgdGhlIHRpdGxlIG9mIGFuIGV4aXN0aW5nIGhpc3Rvcnkg
aXRlbS4KICAgICAvLyBRdFdlYktpdCBkb2Vzbid0IGFjY29tb2RhdGUgdGhpcyBvbiBoaXN0b3J5
IGl0ZW1zLiBJZiBpdCBldmVyIGRvZXMsCiAgICAgLy8gaXQgc2hvdWxkIGJlIHByaXZhdGVCcm93
c2luZy1hd2FyZS5Gb3Igbm93LCB3ZSBhcmUganVzdCBwYXNzaW5nCiAgICAgLy8gZ2xvYmFsaGlz
dG9yeSBsYXlvdXQgdGVzdHMuCisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUu
CiAgICAgaWYgKGR1bXBIaXN0b3J5Q2FsbGJhY2tzKSB7CiAgICAgICAgIHByaW50ZigiV2ViVmll
dyB1cGRhdGVkIHRoZSB0aXRsZSBmb3IgaGlzdG9yeSBVUkwgXCIlc1wiIHRvIFwiJXNcIi5cbiIs
CiAgICAgICAgICAgICBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVz
dWx0KHVybCkpLAotICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nKHRpdGxlKSkpOworICAg
ICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nKHRpdGxlLnN0cmluZygpKSkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaAppbmRleCAzZWM1ZjIwZGI4MmYwZTY4NDUzOGZjNTY0YjRiZjEzZGVmZDdmODJh
Li45MDA0ODlkMDYxMGY1ZmJlMjAwYzJkYTdjMzJiZDc5NmI1ZTljYmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaApA
QCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxs
Q2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7
CkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwg
Y29uc3QgS1VSTCYpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDE4ZmFlOGE2ODMyOTEwZDVjYmIwMmZm
NGVhOTJiZjQzNGI0NjQyMDUuLmY2NzFmYmMwMDViMjljM2MxNGI4YzAxMzExOGNmM2ViMzU0OTg1
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMy0zMSAgRXZhbiBN
YXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAg
ICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDMtMzAgIFN0
ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDEwYTMxOTBkMmE0YWFlNjllMDBj
YmE2ZmQ4ZGNlZTkxYmM5ZTBmNDMuLmUyNzZiZTYzMjE3MWRhNzA4ZDRlYzlkMjJlZDNhNjNmZGNk
OGU0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTM2NCwxMiArMzY0LDEzIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAg
ICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh3
ZWJWaWV3LCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mIHRpdGxlKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJW
aWV3KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdh
dGU7CiAgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZSgmZnJhbWVM
b2FkRGVsZWdhdGUpKSkKLSAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRs
ZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CisgICAgICAgIC8vIEZJWE1F
OiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlk
UmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUuc3RyaW5nKCkpLCBtX3dlYkZyYW1l
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpCkBAIC01NDIsNyArNTQzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRl
R2xvYmFsSGlzdG9yeSgpCiAgICAgICAgIENPTVB0cjxJV2ViVVJMUmVxdWVzdD4gdXJsUmVxdWVz
dChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKGxvYWRlci0+
b3JpZ2luYWxSZXF1ZXN0Q29weSgpKSk7CiAgICAgICAgIAogICAgICAgICBDT01QdHI8SVdlYk5h
dmlnYXRpb25EYXRhPiBuYXZpZ2F0aW9uRGF0YShBZG9wdENPTSwgV2ViTmF2aWdhdGlvbkRhdGE6
OmNyZWF0ZUluc3RhbmNlKAotICAgICAgICAgICAgbG9hZGVyLT51cmxGb3JIaXN0b3J5KCksIGxv
YWRlci0+dGl0bGUoKSwgdXJsUmVxdWVzdC5nZXQoKSwgdXJsUmVzcG9uc2UuZ2V0KCksIGxvYWRl
ci0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCksIGxvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5KCkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpLCBs
b2FkZXItPnRpdGxlKCkuc3RyaW5nKCksIHVybFJlcXVlc3QuZ2V0KCksIHVybFJlc3BvbnNlLmdl
dCgpLCBsb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpLCBsb2FkZXItPmNsaWVudFJl
ZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpKSk7CiAKICAgICAgICAgaGlzdG9yeURlbGVnYXRlLT5k
aWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh3ZWJWaWV3LCBuYXZpZ2F0aW9uRGF0YS5nZXQo
KSwgbV93ZWJGcmFtZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY3MiwxMyArNjczLDEzIEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1
bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAg
V2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdl
Ykhpc3RvcnlEZWxlZ2F0ZT4gaGlzdG9yeURlbGVnYXRlOwogICAgIHdlYlZpZXctPmhpc3RvcnlE
ZWxlZ2F0ZSgmaGlzdG9yeURlbGVnYXRlKTsKICAgICBpZiAoaGlzdG9yeURlbGVnYXRlKSB7Ci0g
ICAgICAgIEJTdHJpbmcgdGl0bGVCU1RSKHRpdGxlKTsKKyAgICAgICAgQlN0cmluZyB0aXRsZUJT
VFIodGl0bGUuc3RyaW5nKCkpOwogICAgICAgICBCU3RyaW5nIHVybEJTVFIodXJsLnN0cmluZygp
KTsKICAgICAgICAgaGlzdG9yeURlbGVnYXRlLT51cGRhdGVIaXN0b3J5VGl0bGUod2ViVmlldywg
dGl0bGVCU1RSLCB1cmxCU1RSKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzA0LDcgKzcwNSw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKICAgICBpZiAoIWl0ZW1Qcml2YXRlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpdGVtUHJpdmF0ZS0+c2V0VGl0bGUoQlN0cmluZyh0aXRsZSkpOworICAgIGl0ZW1Q
cml2YXRlLT5zZXRUaXRsZShCU3RyaW5nKHRpdGxlLnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZy
YW1lKiBjYWNoZWRGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGQ4NjRiMjM0ZTQwMzU5ODNjN2Mz
ZTMzYWRjMmQ4N2UyM2I0YmRmMWMuLjE4NTcwODg0Njk5Yjc0MjI2YzIwN2NhYjE2ZjkzNWIwN2Qx
YmZhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1l
bnRMb2FkKCk7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0
Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAgdmlydHVh
bCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNo
ZWRGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCAwMzUwMzczMmM0
MzYyYTgxOGRkOTM4N2JjYjMwNjc2MzM1MTM2YWI0Li4xNDk4ZjZlNWZmZWE2OGQ5YTlhZjRkNDhm
ZjdkY2FmZjhiNGY3MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMjQ2
LDcgKzI0Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6aXNM
b2FkaW5nKAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291cmNlOjpwYWdlVGl0
bGUoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogdGl0bGUpCiB7Ci0gICAgKnRpdGxl
ID0gQlN0cmluZyhtX2xvYWRlci0+dGl0bGUoKSkucmVsZWFzZSgpOworICAgICp0aXRsZSA9IEJT
dHJpbmcobV9sb2FkZXItPnRpdGxlKCkuc3RyaW5nKCkpLnJlbGVhc2UoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCBlNTk1ZjI1ZGM3ODM1MTFiZDk3YmVj
ZTQxNDQzNzUyZTRlYTAyNTA2Li5jZTkxYzk4ODQ3NjZmYjFhMTdiMGUyNjgxZGMzOWFjOWUzN2Zh
Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTMxICBF
dmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEK
KworICAgICAgICBVcGRhdGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNldFRpdGxl
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6CisK
IDIwMTEtMDMtMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3Bw
CmluZGV4IDJkODgxMmZhMGRhMTYyMjZiMjBjNmNmZTFlZjg4N2M3OGNhZmI4YjkuLjY0OGM0YTU1
YTI0NWQzNGU1NGViMjVhNzU4MTM4ODhkMDc2ZDIwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
LmNwcApAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlz
cGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmcmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5D
RTo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZShjb25zdCBTdHJp
bmcmLCBjb25zdCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCmluZGV4IDQwMTIyNWQyMjllODY5M2M5
ZTZhZDFiOWQ1ZTRmMTVmN2MyYjlmYmUuLjYxNTM5YzU1NjczMDg3NGVjMWNkYThkMDEyY2RjZDdi
Yzc5NjJlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCkBAIC03Niw3ICs3Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdURjo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQ
cm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTY5LDcg
KzE2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VS
ZXBsYWNlbWVudCgpOwogCiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggOTgw
ZmE4YTAyYjNkYTkxYTU1YWY0NDU0MzQxNWI2MzNlMjAxNzZhYS4uMWEwYTMxNDVlOGYzYjAyMmY1
OTQzNWU0MzE1NzNjYWYyNGVhNjlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0
IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBp
bnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6c2V0
VGl0bGUpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgor
CiAyMDExLTAzLTI1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAppbmRleCBhZmMyNTVjY2FjZjk0
Yjc0YmQ0MzIyOWQzNjZjY2JhY2IwMTZmMjA4Li5iNDA4NjM2ZDMzOWQ2Y2NjZjBjY2U2ZTg2NzI4
YmMzMGExM2UxYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCkBAIC0yOTUsMTIgKzI5NSwxMyBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogfQog
CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgaWYg
KG1fd2ViVmlldykgewotICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZSk7Cisg
ICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBtX3dlYlZp
ZXctPlNldFBhZ2VUaXRsZSh0aXRsZS5zdHJpbmcoKSk7CiAgICAgICAgIHd4V2ViVmlld1JlY2Vp
dmVkVGl0bGVFdmVudCB3a0V2ZW50KG1fd2ViVmlldyk7Ci0gICAgICAgIHdrRXZlbnQuU2V0VGl0
bGUodGl0bGUpOworICAgICAgICB3a0V2ZW50LlNldFRpdGxlKHRpdGxlLnN0cmluZygpKTsKICAg
ICAgICAgbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQp
OwogICAgIH0KIH0KQEAgLTUyNSw3ICs1MjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6
OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogfQogCiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXeDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlLCBjb25zdCBLVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guaCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
LmgKaW5kZXggMjU0Zjk1YzQyYzQyMjk0ZmNkZTI2OGU4NjBkZWNmYmUxZmVjYzc2YS4uYjI4ZDM4
OTdhYzliZDBhNWNlZTYyMTZkYzQxNTQ2M2YzNGNiMzg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCkBAIC0xMDMsNyAr
MTAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hXaWxsQ2xvc2UoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFN0cmluZyYgdGl0bGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkKCk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkSGlzdG9yeUl0ZW1Gb3JGcmFnbWVudFNjcm9sbCgp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0
IEtVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggOWY3NjgyNGZkOTYyZGY5YjViNTU3ZjBhZGY4NjAyOGJiZjc0NWUy
Mi4uOTZlOTAwM2NkNGY1YTc3ODgyYTEzMTMzYzUyYzJhZjY1ZWZlOWQyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIDx0aXRs
ZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRhdGUgdG8gbmV3IEZy
YW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0wMy0zMCAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1h
Y2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBm
YTNjZGNlZjdiNTUyMDI0MzBlNTk3ZjFlZDc0MTY3M2NiMGIwMDU4Li4xNDg3YTM1YTUyNTI2OWJj
MmRkZDM3MzI0MmRjZWEyOGY2ODcxMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5m
cmFtZUlEKCksIHVybCwgdW5yZWFjaGFibGVVUkwsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC00MTIsMTAgKzQxMiwxMSBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlKQogICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRo
ZSBidW5kbGUgY2xpZW50LgotICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50
KCkuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUod2ViUGFnZSwgdGl0bGUsIG1fZnJhbWUsIHVzZXJE
YXRhKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHdl
YlBhZ2UsIHRpdGxlLnN0cmluZygpLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3Rp
ZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgdGl0bGUsIElu
amVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJh
bWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB0aXRsZS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpAQCAtODQ2LDcgKzg0Nyw4IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogCiAgICAgV2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZSBkYXRhOwogICAgIGRhdGEudXJsID0gbG9hZGVyLT51cmxGb3JI
aXN0b3J5KCkuc3RyaW5nKCk7Ci0gICAgZGF0YS50aXRsZSA9IGxvYWRlci0+dGl0bGUoKTsKKyAg
ICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBkYXRhLnRpdGxlID0gbG9h
ZGVyLT50aXRsZSgpLnN0cmluZygpOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0
aW9uRGF0YSh3ZWJQYWdlLT5wYWdlSUQoKSwgZGF0YSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7
CiB9CkBAIC0xMDYxLDE0ICsxMDYzLDE1IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAg
cmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgZGF0YSk7CiB9CiAKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFn
ZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAorICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4
dDo6RGlkVXBkYXRlSGlzdG9yeVRpdGxlKHdlYlBhZ2UtPnBhZ2VJRCgpLAotICAgICAgICB0aXRs
ZSwgdXJsLnN0cmluZygpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpLCAwKTsKKyAgICAgICAgdGl0bGUu
c3RyaW5nKCksIHVybC5zdHJpbmcoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CiAKIFN0
cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDE5NDg1NDE5MjA3MzEwMmQwZTdkZTcyODJiYTc0
MDNkZjZhOTg1MWIuLjZjODNlOWRiMDdmZDI0YTRkZGE0MzYwNDRjOTM2Y2M5ODA0ZjI3ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNjUs
NyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3Vy
Y2VSZXBsYWNlbWVudCgpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGly
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIAogICAgIHZpcnR1YWwgU3RyaW5n
IHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87722</attachid>
            <date>2011-03-31 07:23:42 -0700</date>
            <delta_ts>2011-03-31 07:37:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50961-20110331072822.patch</filename>
            <type>text/plain</type>
            <size>77366</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1NzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1M2FhOWM1ZDI2NTAyZjk2
ZWY1YTA0MTViMGQ5MWM3NDEwODQwMDgxLi5jNjRjY2E4M2Q1ODE5NDE2NThmM2RkM2YyYzM1ZDA0
NDYzOGY1Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDMtMzEgIEV2YW4g
TWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisg
ICAgICAgIEludHJvZHVjZSBhIG5ldyBTdHJpbmdXaXRoRGlyZWN0aW9uIG9iamVjdCB0aGF0IGNh
cnJpZXMgYSBTdHJpbmcgYWxvbmcKKyAgICAgICAgd2l0aCB0aGUgVGV4dERpcmVjdGlvbiBhc3Nv
Y2lhdGVkIHdpdGggdGhlIFN0cmluZy4gIFVzZSB0aGlzIG9iamVjdCBmb3IKKyAgICAgICAgZG9j
dW1lbnQgdGl0bGVzIHVzZWQgd2l0aGluIFdlYkNvcmUsIGJlY2F1c2UgaW4gSFRNTCB0aGUgZGly
ZWN0aW9uIG9mCisgICAgICAgIGEgdGl0bGUgY2FuIGJlIHNldCB3aXRoIHRoZSAnZGlyJyBhdHRy
aWJ1dGUuCisKKyAgICAgICAgUHV0IEZJWE1FcyBhdCB0aGUgV2ViS2l0IGxldmVsIHRvIGV4cG9z
ZSB0aGUgbmV3IGRpcmVjdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICB0byBjbGllbnRzLgorCisg
ICAgICAgIE5vIGJlaGF2aW9yYWwgY2hhbmdlIGludGVuZGVkLCBzbyBubyBuZXcgdGVzdHMuICBB
IGZvbGxvdy11cCB3aWxsIGV4cG9zZQorICAgICAgICB0aGUgdGl0bGUgZGlyZWN0aW9uIGFuZCBo
b3BlZnVsbHkgY2FuIGJlIGFjY29tcGFuaWVkIGJ5IHRlc3RzIHRoYXQKKyAgICAgICAgdmVyaWZ5
IGl0IGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp1cGRhdGVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVRpdGxlKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0aXRsZSk6CisgICAgICAg
ICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRs
ZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxl
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudDo6dGV4dFdp
dGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0VGl0bGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnRpdGxlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRUaXRsZSk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRo
TG9ja2VkQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9s
bGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbjo6U3RyaW5n
V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb246Om9wZXJh
dG9yIT0pOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTEtMDMtMzEg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MjU2NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZTJj
NDliNDc5NTM5YThmOWU2NzdhY2RhMmUwMWU0MWM3OTEwYjg0Ny4uODhhMWYwN2JjNTgwNmU0MWI5
OGFhNzAyODA3NDg2M2MxOGJiNGUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI2ODksNiAr
MjY4OSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1NlZ21lbnRlZFN0cmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmlu
Zy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlv
bi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N1ZmZpeFRyZWUuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IGY0M2NkNWJlMTQ0YmMxOGQyOTZkNjQ5NTcwMDA3NGE0OTRlODVlMTUuLjFiMmE5YzJi
MTAwOTAyNjVlOTgzZWQyYzE2ZTNlYTQ0MDZmZDk3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0zNDEsNyArMzQxLDcgQEAgX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjIyY2FuY2VsTWFp
blJlc291cmNlTG9hZEVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2ViQ29yZTE0RG9jdW1l
bnRMb2FkZXIyNHJlbW92ZVBsdWdJblN0cmVhbUxvYWRlckVQTlNfMTRSZXNvdXJjZUxvYWRlckUK
IF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI3cmVxdWVzdEV2CiBfX1pON1dlYkNvcmUxNERv
Y3VtZW50TG9hZGVyOHNldEZyYW1lRVBOU181RnJhbWVFCi1fX1pON1dlYkNvcmUxNERvY3VtZW50
TG9hZGVyOHNldFRpdGxlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTREb2N1bWVudExv
YWRlcjhzZXRUaXRsZUVSS05TXzE5U3RyaW5nV2l0aERpcmVjdGlvbkUKIF9fWk43V2ViQ29yZTE0
RG9jdW1lbnRMb2FkZXJDMUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTRTdWJzdGl0dXRl
RGF0YUUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXJDMkVSS05TXzE1UmVzb3VyY2VSZXF1
ZXN0RVJLTlNfMTRTdWJzdGl0dXRlRGF0YUUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXJE
MkV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggODdjZWZhM2U4ZmMyZGQ2YWY1M2Q4YjE2ZjViYTYxOWM2
ZmU1YTFhZS4uZWYwNzFkYzdkODNmNWZiOTYwZjNjYTU1NjcyNWFiYzI4Y2U4MjcwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtNDg0NCw2ICs0ODQ0LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90
ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9T
ZWdtZW50ZWRTdHJpbmcuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1N0cmluZy5j
cHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1N1ZmZpeFRyZWUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYWZkYjQ1NTZiN2I2ODNiNmZhNGIwMzg5OGYw
ZTk1MDI4Y2RiMzRhMS4uZWRiNzA3OWNlZGQ1NDEwZjM1ZmRhN2UxNDFkNmQ1YjJkZTU0ZWVjMCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMw
NTMzLDYgKzMwNTMzLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXHRleHRcU3VmZml4VHJlZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZlMTgyZjA3
MGZlYzViMjM1YWQwZDc4MzBkMTNiMzBjYzBhODI2ZGQuLjhhN2VjMTcwNWFlZTllNWE2NTg5Zjc3
NWYwMWQ1MjQ0YWVhMWIzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxMzAsNiArMzEzMCw3IEBACiAJCTk4RUIxRjk1MTMx
M0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdElt
cGxlbWVudGVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOUI0MTcwNjQxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFu
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0MTcw
NjIxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCNDE3MDY1MTI1NjYy
QjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0MTcwNjMxMjU2NjJCMzAwNkIyOEZD
IC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAgKi87IH07CisJCTlCNkM0MTUzMTM0NDk0
OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjZDNDE1MjEzNDQ5NDkwMDAwODVCNjIgLyogU3Ry
aW5nV2l0aERpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTlCQUI2QzZDMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQUI2QzZBMTI1
NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QkFCNkM2RDEyNTUwNjMxMDAxNjI2RDQgLyogRWRp
dGluZ1N0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCQUI2QzZCMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuY3BwICovOyB9Owog
CQk5QkFGM0IyNDEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJBRjNCMjMxMkMxQTM5ODAw
MDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTYzMiw2ICs5NjMzLDcgQEAKIAkJOThFQjFGOTQxMzEz
RkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5vdEltcGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCNDE3MDYyMTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5k
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNDE3MDYzMTI1NjYyQjMwMDZCMjhG
QyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhE
aXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nV2l0aERp
cmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2QTEyNTUwNjMx
MDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVkaXRpbmdTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkFCNkM2
QjEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRpbmdTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCQUYzQjIzMTJDMUEzOTgwMDAxNEJGMSAvKiBXcml0aW5nRGlyZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRpbmdEaXJlY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3ODAxLDYgKzE3ODAzLDcgQEAKIAkJCQlCMkMz
RDlGRTBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCAqLywKIAkJCQlCMkMz
RDlGRjBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmggKi8sCiAJCQkJQjJDM0RB
MDAwRDAwNkMxRDAwRUY2RjI2IC8qIFN0cmluZy5jcHAgKi8sCisJCQkJOUI2QzQxNTIxMzQ0OTQ5
MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCAqLywKIAkJCQk5N0MwNzg0RjExNjVE
NUJFMDAzQTMyRUYgLyogU3VmZml4VHJlZS5oICovLAogCQkJCTM3MkMwMEMzMTI5NjExRjEwMDVD
OTU3NSAvKiBUZXh0Qm91bmRhcmllcy5jcHAgKi8sCiAJCQkJQjJDM0RBMDQwRDAwNkMxRDAwRUY2
RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggKi8sCkBAIC0yMjI2MSw2ICsyMjI2NCw3IEBACiAJCQkJ
M0FCMDJEMkExMkQ0RjkxNjAwRkJCNjk0IC8qIFN0b3JhZ2VUcmFja2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzQUMzNjgwMDEyRUY3QTA5MDA2QTNENkYgLyogU3RvcmFnZVRyYWNrZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgxQUM2QzM2MTMxQzU3RDMwMDA5QTdFMCAvKiBTdHJpbmdD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUI2QzQxNTMxMzQ0OTQ5MDAwMDg1QjYyIC8q
IFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NDg4RDZCMERENUE4
M0QwMDlEODNCMiAvKiBTdHJpbmdTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIzNTQwRjMwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlM2Q3ZjUzZGIwZmRl
ZjYwZTYwNmE3ZTUwNTZlZTU4ODAyN2E4Yjg2Li41MTQ0NzAzMmUwMGYzNmVkNmJhNTlmYjRiYjgz
MzI5OTQ3MmEwZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM4OSw4ICszODksNiBA
QCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wg
aXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2NvbnRhaW5zVmFsaWRpdHlTdHlsZVJ1bGVz
KGZhbHNlKQogICAgICwgbV91cGRhdGVGb2N1c0FwcGVhcmFuY2VSZXN0b3Jlc1NlbGVjdGlvbihm
YWxzZSkKICAgICAsIG1faWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50KDApCi0gICAgLCBtX3Rp
dGxlKCIiKQotICAgICwgbV9yYXdUaXRsZSgiIikKICAgICAsIG1fdGl0bGVTZXRFeHBsaWNpdGx5
KGZhbHNlKQogICAgICwgbV91cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lcih0aGlzLCAmRG9jdW1l
bnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyRmlyZWQpCiAgICAgLCBtX3N0YXJ0VGltZShj
dXJyZW50VGltZSgpKQpAQCAtMTI3MSw4ICsxMjY5LDkgQEAgRWxlbWVudCogRG9jdW1lbnQ6Omdl
dEVsZW1lbnRCeUFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKICAqICAyLiBUcmlt
IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcwogICogIDMuIENvbGxhcHNlIGludGVybmFsIHdo
aXRlc3BhY2UuCiAgKi8KLXN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhbm9uaWNhbGl6ZWRUaXRsZShE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitzdGF0aWMgaW5saW5lIFN0
cmluZ1dpdGhEaXJlY3Rpb24gY2Fub25pY2FsaXplZFRpdGxlKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGVXaXRoRGlyZWN0aW9uKQogeworICAgIGNv
bnN0IFN0cmluZyYgdGl0bGUgPSB0aXRsZVdpdGhEaXJlY3Rpb24uc3RyaW5nKCk7CiAgICAgY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0aXRsZS5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gdGl0bGUubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgaTsKQEAgLTEyODgsNyArMTI4
Nyw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhbm9uaWNhbGl6ZWRUaXRsZShEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgfQogCiAgICAgaWYgKGkgPT0gbGVu
Z3RoKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBTdHJpbmdXaXRoRGlyZWN0
aW9uKCk7CiAKICAgICAvLyBSZXBsYWNlIGNvbnRyb2wgY2hhcmFjdGVycyB3aXRoIHNwYWNlcywg
YW5kIGJhY2tzbGFzaGVzIHdpdGggY3VycmVuY3kgc3ltYm9scywgYW5kIGNvbGxhcHNlIHdoaXRl
c3BhY2UuCiAgICAgYm9vbCBwcmV2aW91c0NoYXJXYXNXUyA9IGZhbHNlOwpAQCAtMTMxMywxNyAr
MTMxMiwxNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBjYW5vbmljYWxpemVkVGl0bGUoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIH0KIAogICAgIGlmICghYnVp
bGRlckluZGV4ICYmIGJ1ZmZlcltidWlsZGVySW5kZXhdID09ICcgJykKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gU3RyaW5nV2l0aERpcmVjdGlvbigpOwogCiAgICAgYnVmZmVy
LnNocmluayhidWlsZGVySW5kZXggKyAxKTsKIAogICAgIC8vIFJlcGxhY2UgdGhlIGJhY2tzbGFz
aGVzIHdpdGggY3VycmVuY3kgc3ltYm9scyBpZiB0aGUgZW5jb2RpbmcgcmVxdWlyZXMgaXQuCiAg
ICAgZG9jdW1lbnQtPmRpc3BsYXlCdWZmZXJNb2RpZmllZEJ5RW5jb2RpbmcoYnVmZmVyLmNoYXJh
Y3RlcnMoKSwgYnVmZmVyLmxlbmd0aCgpKTsKICAgICAKLSAgICByZXR1cm4gU3RyaW5nOjphZG9w
dChidWZmZXIpOworICAgIHJldHVybiBTdHJpbmdXaXRoRGlyZWN0aW9uKFN0cmluZzo6YWRvcHQo
YnVmZmVyKSwgdGl0bGVXaXRoRGlyZWN0aW9uLmRpcmVjdGlvbigpKTsKIH0KIAotdm9pZCBEb2N1
bWVudDo6dXBkYXRlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRG9jdW1lbnQ6OnVw
ZGF0ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIGlmICht
X3Jhd1RpdGxlID09IHRpdGxlKQogICAgICAgICByZXR1cm47CkBAIC0xMzQ5LDE2ICsxMzQ4LDE3
IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICB1cGRhdGVUaXRsZSh0aXRsZSk7CisgICAgLy8gVGhlIERPTSBBUEkg
aGFzIG5vIG1ldGhvZCBvZiBzcGVjaWZ5aW5nIGRpcmVjdGlvbiwgc28gYXNzdW1lIExUUi4KKyAg
ICB1cGRhdGVUaXRsZShTdHJpbmdXaXRoRGlyZWN0aW9uKHRpdGxlLCBMVFIpKTsKIAogICAgIGlm
IChtX3RpdGxlRWxlbWVudCkgewogICAgICAgICBBU1NFUlQobV90aXRsZUVsZW1lbnQtPmhhc1Rh
Z05hbWUodGl0bGVUYWcpKTsKICAgICAgICAgaWYgKG1fdGl0bGVFbGVtZW50LT5oYXNUYWdOYW1l
KHRpdGxlVGFnKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPiht
X3RpdGxlRWxlbWVudC5nZXQoKSktPnNldFRleHQobV90aXRsZSk7CisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxIVE1MVGl0bGVFbGVtZW50Kj4obV90aXRsZUVsZW1lbnQuZ2V0KCkpLT5zZXRUZXh0
KHRpdGxlKTsKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlRWxlbWVudChjb25z
dCBTdHJpbmcmIHRpdGxlLCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpCit2b2lkIERvY3VtZW50Ojpz
ZXRUaXRsZUVsZW1lbnQoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIEVsZW1lbnQq
IHRpdGxlRWxlbWVudCkKIHsKICAgICBpZiAodGl0bGVFbGVtZW50ICE9IG1fdGl0bGVFbGVtZW50
KSB7CiAgICAgICAgIGlmIChtX3RpdGxlRWxlbWVudCB8fCBtX3RpdGxlU2V0RXhwbGljaXRseSkK
QEAgLTEzODMsMTMgKzEzODMsMTMgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlVGl0bGUoRWxlbWVu
dCogdGl0bGVFbGVtZW50KQogICAgICAgICBmb3IgKE5vZGUqIGUgPSBoZWFkRWxlbWVudC0+Zmly
c3RDaGlsZCgpOyBlOyBlID0gZS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIGlmIChlLT5o
YXNUYWdOYW1lKHRpdGxlVGFnKSkgewogICAgICAgICAgICAgICAgIEhUTUxUaXRsZUVsZW1lbnQq
IHRpdGxlRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUaXRsZUVsZW1lbnQqPihlKTsKLSAgICAg
ICAgICAgICAgICBzZXRUaXRsZUVsZW1lbnQodGl0bGVFbGVtZW50LT50ZXh0KCksIHRpdGxlRWxl
bWVudCk7CisgICAgICAgICAgICAgICAgc2V0VGl0bGVFbGVtZW50KHRpdGxlRWxlbWVudC0+dGV4
dFdpdGhEaXJlY3Rpb24oKSwgdGl0bGVFbGVtZW50KTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIW1fdGl0bGVFbGVtZW50KQotICAgICAg
ICB1cGRhdGVUaXRsZSgiIik7CisgICAgICAgIHVwZGF0ZVRpdGxlKFN0cmluZ1dpdGhEaXJlY3Rp
b24oKSk7CiB9CiAKIFN0cmluZyBEb2N1bWVudDo6bm9kZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCAwNWRmYjc2ZWY1MWZkMTUxMGUxMDM4MTM1MWVjY2MwYzEzZGE1N2FjLi44
YTgzZDU5ZTc5M2FhNDJkODRkNDU4MzhjNzU0OTBiOTA1N2MwYzE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5j
bHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJTdHJpbmdXaXRoRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5
Lmg+CkBAIC04MTEsOSArODEyLDExIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIDAgaWYgdGhp
cyBpcyB0aGUgdG9wIGxldmVsIGRvY3VtZW50LgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXJFbGVtZW50KCkgY29uc3Q7CiAKLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVy
biBtX3RpdGxlOyB9CisgICAgLy8gVXNlZCBieSBET00gYmluZGluZ3M7IG5vIGRpcmVjdGlvbiBr
bm93bi4KKyAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlLnN0cmluZygp
OyB9CiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFRpdGxl
RWxlbWVudChjb25zdCBTdHJpbmcmIHRpdGxlLCBFbGVtZW50KiB0aXRsZUVsZW1lbnQpOworCisg
ICAgdm9pZCBzZXRUaXRsZUVsZW1lbnQoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIEVsZW1l
bnQqIHRpdGxlRWxlbWVudCk7CiAgICAgdm9pZCByZW1vdmVUaXRsZShFbGVtZW50KiB0aXRsZUVs
ZW1lbnQpOwogCiAgICAgU3RyaW5nIGNvb2tpZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CkBAIC0x
MTU4LDcgKzExNjEsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7
CiAKLSAgICB2b2lkIHVwZGF0ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZvaWQg
dXBkYXRlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZvaWQgdXBkYXRl
Rm9jdXNBcHBlYXJhbmNlVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsKICAgICB2b2lkIHVw
ZGF0ZUJhc2VVUkwoKTsKIApAQCAtMTI5NSw4ICsxMjk4LDggQEAgcHJpdmF0ZToKICAgICAvLyBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNpZ25vcmUt
ZGVzdHJ1Y3RpdmUtd3JpdGVzLWNvdW50ZXIKICAgICB1bnNpZ25lZCBtX2lnbm9yZURlc3RydWN0
aXZlV3JpdGVDb3VudDsKIAotICAgIFN0cmluZyBtX3RpdGxlOwotICAgIFN0cmluZyBtX3Jhd1Rp
dGxlOworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gbV90aXRsZTsKKyAgICBTdHJpbmdXaXRoRGly
ZWN0aW9uIG1fcmF3VGl0bGU7CiAgICAgYm9vbCBtX3RpdGxlU2V0RXhwbGljaXRseTsKICAgICBS
ZWZQdHI8RWxlbWVudD4gbV90aXRsZUVsZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
aXRsZUVsZW1lbnQuY3BwCmluZGV4IDc4YzhiNmE3MTM5MjFkY2YwNmY1NzM3NTE4MmFmMTExZjgy
MTg5ZTMuLmIwNDZjN2I1OTA1ODJhMDkwMWU2YTg0MTAyZDZkMjg3MWEzYzEwNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJS
ZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzMsNyArMzQsNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBpbmxpbmUgSFRN
TFRpdGxlRWxlbWVudDo6SFRNTFRpdGxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKLSAgICAsIG1fdGl0bGUoIiIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGl0bGVU
YWcpKTsKIH0KQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpyZW1vdmVk
RnJvbURvY3VtZW50KCkKIAogdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Ym9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFu
Z2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7Ci0gICAgbV90aXRsZSA9IHRleHQoKTsKKyAgICBt
X3RpdGxlID0gdGV4dFdpdGhEaXJlY3Rpb24oKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAg
ICAgICBkb2N1bWVudCgpLT5zZXRUaXRsZUVsZW1lbnQobV90aXRsZSwgdGhpcyk7CiAgICAgSFRN
TEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwg
YWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBAIC03MSwxMCArNzEsMjAgQEAgU3RyaW5n
IEhUTUxUaXRsZUVsZW1lbnQ6OnRleHQoKSBjb25zdAogICAgICAgICBpZiAobi0+aXNUZXh0Tm9k
ZSgpKQogICAgICAgICAgICAgdmFsICs9IHN0YXRpY19jYXN0PFRleHQqPihuKS0+ZGF0YSgpOwog
ICAgIH0KLSAgICAKKwogICAgIHJldHVybiB2YWw7CiB9CiAKK1N0cmluZ1dpdGhEaXJlY3Rpb24g
SFRNTFRpdGxlRWxlbWVudDo6dGV4dFdpdGhEaXJlY3Rpb24oKQoreworICAgIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uID0gTFRSOworICAgIGlmIChSZW5kZXJTdHlsZSogc3R5bGUgPSBjb21wdXRl
ZFN0eWxlKCkpCisgICAgICAgIGRpcmVjdGlvbiA9IHN0eWxlLT5kaXJlY3Rpb24oKTsKKyAgICBl
bHNlIGlmIChSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVGb3JSZW5kZXJlcigpKQor
ICAgICAgICBkaXJlY3Rpb24gPSBzdHlsZS0+ZGlyZWN0aW9uKCk7CisgICAgcmV0dXJuIFN0cmlu
Z1dpdGhEaXJlY3Rpb24odGV4dCgpLCBkaXJlY3Rpb24pOworfQorCiB2b2lkIEhUTUxUaXRsZUVs
ZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nICZ2YWx1ZSkKIHsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKaW5kZXggOGI5MGY1
NjRmM2FhZjE2MTAzMTQ2YWMwNTgyMmY2ZDllNmExZmFlMS4uNjkyMDk5NzgzOTViMDQ1M2IyNDVl
YzQyMzUxMDQwMjlmZDQyNDQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGl0bGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50
LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgSFRNTFRpdGxlRWxlbWVudF9oCiAKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rpb24uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMyw2ICszNCw4IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgdGV4dCgpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKIAorICAg
IFN0cmluZ1dpdGhEaXJlY3Rpb24gdGV4dFdpdGhEaXJlY3Rpb24oKTsKKwogcHJpdmF0ZToKICAg
ICBIVE1MVGl0bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBA
IC00MCw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9j
dW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5
UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdl
ID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCi0gICAgU3RyaW5nIG1fdGl0bGU7Cisg
ICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3RpdGxlOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMTIxMDQ1YjViOTlmZmEw
NzliNjA1OWY3ZTE5N2FkZDRkM2RiYzNkMi4uMTQzN2FkYzRlNmRiNTc0YmY3MDkxOWM0Y2IwMDVi
YzI0OTIyM2RkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC02NDksNyArNjQ5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcFJlY29yZGluZ1Jlc3Bv
bnNlcygpCiAgICAgbV9zdG9wUmVjb3JkaW5nUmVzcG9uc2VzID0gdHJ1ZTsKIH0KIAotdm9pZCBE
b2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewog
ICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggMWY4ODI3MmIxOTIwMDVkNjJlMzIwNzE3MGJmN2M1
YjgyNTc5MmJhNS4uYzZmMGJjNWIyNjk0NGZlYmY5NjRiZmRkYzI2NTdiNzY2NzVlMzVkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlN0cmluZ1dpdGhEaXJlY3Rp
b24uaCIKICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEyMSw3ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGJvb2wgd2FzT25sb2FkSGFuZGxlZCgpIHsgcmV0dXJuIG1fd2FzT25s
b2FkSGFuZGxlZDsgfQogICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wpOwotICAgICAgICB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmlu
ZyYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJl
dHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIApAQCAtMTY4LDcgKzE2OSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBsYXN0Q2hlY2tlZFJl
cXVlc3QoKSAgeyByZXR1cm4gbV9sYXN0Q2hlY2tlZFJlcXVlc3Q7IH0KIAogICAgICAgICB2b2lk
IHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KICAgICAgICAg
Y29uc3QgU3RyaW5nJiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsgfQog
CiAgICAgICAgIEtVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwpAQCAtMjk4LDcgKzI5OSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2lzQ2xpZW50UmVkaXJlY3Q7CiAg
ICAgICAgIGJvb2wgbV93YXNPbmxvYWRIYW5kbGVkOwogCi0gICAgICAgIFN0cmluZyBtX3BhZ2VU
aXRsZTsKKyAgICAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBtX3BhZ2VUaXRsZTsKICAgICAgICAg
U3RyaW5nIG1fcGFnZUljb25VUkw7CiAKICAgICAgICAgU3RyaW5nIG1fb3ZlcnJpZGVFbmNvZGlu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA1OWZkODk3OWNiZWVmY2Nm
ZTkwNWFkZTdkMjZmZmIxZGRhZTZlOWEzLi42YWNmOTkyMTliYWNlM2NjMmQwMjMzMjlmZDYxZTdm
MDNmYjI1NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yNjYsNyAr
MjY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJy
b3ImKSB7IH0KQEAgLTMzNCw3ICszMzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpIHsg
cmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYs
IGNvbnN0IEtVUkwmKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBL
VVJMJikgeyByZXR1cm4gIiI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggMzQ3YTQxZWFhZTNhYjYxN2RhMzAxY2FjMTI5NzUyNTdkYjg0YTU5ZC4uZjEwMjBlMWYz
OWNhN2U0Mjk4MzVkNmMzMDc2MTg2Yzg3NDJhZmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2
ZWRGaXJzdERhdGEoKQogICAgIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3Js
ZHMoKTsKICAgICAKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikgewotICAgICAgICBTdHJpbmcg
cHRpdGxlID0gbV9kb2N1bWVudExvYWRlci0+dGl0bGUoKTsKKyAgICAgICAgU3RyaW5nV2l0aERp
cmVjdGlvbiBwdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJWaWV3IGtub3cgYWJvdXQgaXQuCiAgICAgICAg
IGlmICghcHRpdGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKHB0aXRsZSk7CkBAIC0xOTI0LDkgKzE5MjQsOSBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBkaXNwYXRjaERpZENvbW1pdExv
YWQoKTsKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJWaWV3IGtu
b3cgYWJvdXQgaXQuIAotICAgICAgICBTdHJpbmcgdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50
aXRsZSgpOwotICAgICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKSAKLSAgICAgICAgICAgIG1fY2xp
ZW50LT5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh0aXRsZSk7ICAgICAgICAgCisgICAgICAgIFN0
cmluZ1dpdGhEaXJlY3Rpb24gdGl0bGUgPSBtX2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOworICAg
ICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKHRpdGxlKTsKIAogICAgICAgICBjaGVja0NvbXBsZXRlZCgpOwogICAg
IH0gZWxzZSB7ICAgICAgICAKQEAgLTMzNzUsNyArMzM3NSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUmVzb3VyY2VMb2FkZXIqIGxv
YWRlciwKIH0KICNlbmRpZgogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJp
bmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYgdGl0bGUpCiB7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0bGUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCAxZmI5ZTNjNDVmNDkwZTI5
OWZhZmM1NGY0ZDM1ZTY3ZTRlYjEyOTVjLi45MDYyZjIxNWNlZDgxNTlmZGE4OWM4NWFmNmUxNmQ4
MWFjNWY1MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNzgsNiArNzgs
NyBAQCBjbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU3RyaW5nV2l0
aERpcmVjdGlvbjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dFJlc291cmNlRGVj
b2RlcjsKIApAQCAtMjgyLDcgKzI4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FuY2VsQW5k
Q2xlYXIoKTsKIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdm9pZCBzZXRJY29uVVJM
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggN2Q2NDkxMmJkYjQx
M2FlOTU5YWIwZThmNWFjY2FhYzY2MmZmZjk5My4uZDVkNDllYzljNzA4YTljN2U4OTc3M2IxZDYz
ODdhYmVmYjdlZjJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTg0LDYgKzg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAgICAgY2xhc3MgU2hhcmVk
QnVmZmVyOworICAgIGNsYXNzIFN0cmluZ1dpdGhEaXJlY3Rpb247CiAgICAgY2xhc3MgU3Vic3Rp
dHV0ZURhdGE7CiAgICAgY2xhc3MgV2lkZ2V0OwogCkBAIC0xMzksNyArMTQwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0g
MDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZyYgdGl0bGUpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkBAIC0y
MjcsNyArMjI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpID0gMDsKIAogICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
LCBjb25zdCBLVVJMJikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChj
b25zdCBLVVJMJikgPSAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9y
eUNvbnRyb2xsZXIuY3BwCmluZGV4IGI4YmVjZTliNzUwYzUzODZkOGEzZDhlMWQyOGM4ZDFlZDdi
MzFiYjkuLmMxYzU0MTQzMmFhZGQ5ZjViZGJiYWQ2MjliMGY4YTA0NmI1YWE4ZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMjY1LDcgKzI2NSw3
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckJhY2tGb3J3YXJkTmF2aWdhdGlv
bigpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBk
YXRpbmcgSGlzdG9yeSBmb3IgYmFjay9mb3J3YXJkIG5hdmlnYXRpb24gaW4gZnJhbWUgJXMiLCBt
X2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9y
eSBmb3IgYmFjay9mb3J3YXJkIG5hdmlnYXRpb24gaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICNlbmRpZgogCiAgICAgLy8gTXVzdCBncmFiIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBi
ZWZvcmUgZGlzdHVyYmluZyBpdApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnVwZGF0ZUZvclJlbG9hZCgpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmICht
X2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3Rvcnks
ICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVsb2FkIGluIGZyYW1lICVz
IiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhp
c3RvcnkgZm9yIHJlbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKICAg
ICBpZiAobV9jdXJyZW50SXRlbSkgewpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpCiB7
CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcg
SGlzdG9yeSBmb3IgcmVkaXJlY3QgbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0co
SGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRpcmVjdCBs
b2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRp
dGxlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAKICAgICBTZXR0aW5n
cyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KCkKIHsKICNpZiAh
TE9HX0RJU0FCTEVECiAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigp
KQotICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5
IGZvciBjbGllbnQgcmVkaXJlY3QgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKEhpc3Rv
cnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY2xpZW50IHJlZGlyZWN0
IGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpdGxl
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIAogICAgIC8vIENsZWFyIG91dCBm
b3JtIGRhdGEgc28gd2UgZG9uJ3QgdHJ5IHRvIHJlc3RvcmUgaXQgaW50byB0aGUgaW5jb21pbmcg
cGFnZS4gIE11c3QgaGFwcGVuIGFmdGVyCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yQ29tbWl0KCkKICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2Fk
ZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKGZyYW1l
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVI
aXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBjb21taXQgaW4gZnJhbWUgJXMiLCBmcmFtZUxv
YWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
TE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY29tbWl0
IGluIGZyYW1lICVzIiwgZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICBGcmFtZUxvYWRUeXBlIHR5cGUgPSBm
cmFtZUxvYWRlci0+bG9hZFR5cGUoKTsKICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKHR5
cGUpCkBAIC01MjYsMTAgKzUyNiwxMSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJy
ZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKIH0K
IAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJp
bmcmIHRpdGxlKQordm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBpZiAobV9jdXJyZW50SXRl
bSkKLSAgICAgICAgbV9jdXJyZW50SXRlbS0+c2V0VGl0bGUodGl0bGUpOworICAgICAgICAvLyBG
SVhNRTogbWFrZSB1c2Ugb2YgdGl0bGUuZGlyZWN0aW9uKCkgYXMgd2VsbC4KKyAgICAgICAgbV9j
dXJyZW50SXRlbS0+c2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwogfQogCiBib29sIEhpc3RvcnlD
b250cm9sbGVyOjpjdXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdApAQCAtNTc2LDEy
ICs1NzcsMTMgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9y
eUl0ZW0qIGl0ZW0pCiAgICAgCiAgICAgRnJhbWUqIHBhcmVudEZyYW1lID0gbV9mcmFtZS0+dHJl
ZSgpLT5wYXJlbnQoKTsKICAgICBTdHJpbmcgcGFyZW50ID0gcGFyZW50RnJhbWUgPyBwYXJlbnRG
cmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkgOiAiIjsKLSAgICBTdHJpbmcgdGl0bGUgPSBkb2N1
bWVudExvYWRlci0+dGl0bGUoKTsKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gZG9j
dW1lbnRMb2FkZXItPnRpdGxlKCk7CiAKICAgICBpdGVtLT5zZXRVUkwodXJsKTsKICAgICBpdGVt
LT5zZXRUYXJnZXQobV9mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkpOwogICAgIGl0ZW0tPnNl
dFBhcmVudChwYXJlbnQpOwotICAgIGl0ZW0tPnNldFRpdGxlKHRpdGxlKTsKKyAgICAvLyBGSVhN
RTogc2hvdWxkIHN0b3JlIHRpdGxlIGRpcmVjdGlvbmFsaXR5IGluIGhpc3RvcnkgYXMgd2VsbC4K
KyAgICBpdGVtLT5zZXRUaXRsZSh0aXRsZS5zdHJpbmcoKSk7CiAgICAgaXRlbS0+c2V0T3JpZ2lu
YWxVUkxTdHJpbmcob3JpZ2luYWxVUkwuc3RyaW5nKCkpOwogCiAgICAgaWYgKCF1bnJlYWNoYWJs
ZVVSTC5pc0VtcHR5KCkgfHwgZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0Nv
ZGUoKSA+PSA0MDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCmlu
ZGV4IDU5ZjExYTI1YzkzM2QzZDdjOTcyNTFiOTBhOTNiMzJkNTZiOTlhZDQuLjE1ZTEyYzA5OWEz
ZWYwNzI3NTRlNjdlNmNkNTY3ZjZiZTA4YmE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9I
aXN0b3J5Q29udHJvbGxlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CitjbGFzcyBTdHJpbmdXaXRoRGlyZWN0aW9uOwogCiBjbGFzcyBIaXN0b3J5Q29udHJv
bGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGlzdG9yeUNvbnRyb2xsZXIpOwpAQCAt
NzEsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRJdGVtLmdldCgpOyB9CiAgICAgdm9pZCBzZXRDdXJyZW50
SXRlbShIaXN0b3J5SXRlbSopOwotICAgIHZvaWQgc2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIHNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYpOwogICAgIGJvb2wgY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29uc3Q7
CiAKICAgICBIaXN0b3J5SXRlbSogcHJldmlvdXNJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2
aW91c0l0ZW0uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9T
dHJpbmdXaXRoRGlyZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWEzNGFiNmJmZjhjZDkxMDRlMzUxYzVj
MTcxMjljM2ZmYTJhMmVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0
cmluZ1dpdGhEaXJlY3Rpb25faAorI2RlZmluZSBTdHJpbmdXaXRoRGlyZWN0aW9uX2gKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluIHNvbWUgY2lyY3Vtc3RhbmNlcyB3ZSB3YW50IHRv
IHN0b3JlIGEgU3RyaW5nIGFsb25nIHdpdGggdGhlIFRleHREaXJlY3Rpb24KKy8vIG9mIHRoZSBT
dHJpbmcgYXMgbGVhcm5lZCBmcm9tIHRoZSBjb250ZXh0IG9mIHRoZSBTdHJpbmcuIEZvciBleGFt
cGxlLAorLy8gY29uc2lkZXIgc3RvcmluZyB0aGUgdGl0bGUgZGVyaXZlZCBmcm9tIDx0aXRsZSBk
aXI9J3J0bCc+c29tZSB0aXRsZTwvdGl0bGU+CisvLyBpbiB0aGUgaGlzdG9yeS4KKy8vCisvLyBO
b3RlIHRoYXQgaXMgZXhwbGljaXRseSAqbm90KiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzdHJpbmcg
YXMgbGVhcm5lZAorLy8gZnJvbSB0aGUgY2hhcmFjdGVycyBvZiB0aGUgc3RyaW5nOyBpdCdzIGV4
dHJhIG1ldGFkYXRhIHdlIGhhdmUgZXh0ZXJuYWwKKy8vIHRvIHRoZSBzdHJpbmcuCitjbGFzcyBT
dHJpbmdXaXRoRGlyZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uKCkg
e30KKyAgICBTdHJpbmdXaXRoRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBUZXh0RGly
ZWN0aW9uIGRpcikgOiBtX3N0cmluZyhzdHJpbmcpLCBtX2RpcmVjdGlvbihkaXIpIHt9CisKKyAg
ICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQor
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9
CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fc3RyaW5nID09IG1fc3RyaW5nICYm
IG90aGVyLm1fZGlyZWN0aW9uID09IG1fZGlyZWN0aW9uOworICAgIH0KKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KCp0aGlzKSA9PSBvdGhlcik7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9zdHJpbmc7Cisg
ICAgVGV4dERpcmVjdGlvbiBtX2RpcmVjdGlvbjsKK307CisKK30KKworI2VuZGlmIC8vIFN0cmlu
Z1dpdGhEaXJlY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAppbmRl
eCBlYmNkZGI0NmEwMjlkOWIzNGRjZWMyNTVhMmE4Y2RiMWI1YjE4MWVjLi5kOTI1NjAzMTFlNzY2
Mjc2YzRmNjdhODk5MTYwZDJhMzliN2Y4NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVF
bGVtZW50LmNwcApAQCAtNDAsNyArNDAsOCBAQCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6Omluc2VydGVkSW50b0Rv
Y3VtZW50KCk7CiAgICAgaWYgKGZpcnN0Q2hpbGQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0
VGl0bGVFbGVtZW50KHRleHRDb250ZW50KCksIHRoaXMpOworICAgICAgICAvLyBGSVhNRTogZG9l
cyBTVkcgaGF2ZSBhIHRpdGxlIHRleHQgZGlyZWN0aW9uPworICAgICAgICBkb2N1bWVudCgpLT5z
ZXRUaXRsZUVsZW1lbnQoU3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0Q29udGVudCgpLCBMVFIpLCB0
aGlzKTsKIH0KIAogdm9pZCBTVkdUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQpA
QCAtNTMsNyArNTQsOCBAQCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsCiB7CiAgICAgU1ZHRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNo
YW5nZSwgY2hpbGRDb3VudERlbHRhKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQotICAgICAgICBk
b2N1bWVudCgpLT5zZXRUaXRsZUVsZW1lbnQodGV4dENvbnRlbnQoKSwgdGhpcyk7CisgICAgICAg
IC8vIEZJWE1FOiBkb2VzIFNWRyBoYXZlIHRpdGxlIHRleHQgZGlyZWN0aW9uPworICAgICAgICBk
b2N1bWVudCgpLT5zZXRUaXRsZUVsZW1lbnQoU3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0Q29udGVu
dCgpLCBMVFIpLCB0aGlzKTsKIH0KIAogQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1Rp
dGxlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCAyYjBlMTNjZmYyMTkyMzQwYjE1YTBkMTRmZjEwMDk2NTFlNmI4Njk2Li5k
ZDgyNjlhZWIxOTMyM2NjZDg2YWFkYTE3MzM3NGRhMWQ1ODY2MWEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTAzLTMxICBFdmFuIE1hcnRpbiAgPGV2
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisg
ICAgICAgIDx0aXRsZT4gc2hvdWxkIHN1cHBvcnQgZGlyIGF0dHJpYnV0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA5NjEKKworICAgICAgICBVcGRh
dGUgdG8gbmV3IEZyYW1lTG9hZGVyQ2xpZW50IGludGVyZmFjZS4KKworICAgICAgICAqIHNyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudEltcGw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpzZXRUaXRsZSk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJEYXRhU291cmNlSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRhdGFTb3VyY2VJbXBsOjpwYWdlVGl0bGUpOgorCiAyMDExLTAzLTMw
ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEbWl0cnkgVGl0b3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA2NDdhNzBjMjg1YjY3Y2UwZDU0YTNhZTA4ODE0
OThlMTE0MzZkNjUzLi5jZDc2NDkxMDlkMWI1ZTQwNmU3MjU0NjdkNjYzZTgzMGY5YWU4MzFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAKQEAgLTczNCwxMCArNzM0LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBs
OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKICAgICB9CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcm
IHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogeworICAgIC8vIEZJWE1FOiB1
c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAg
ICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVUaXRsZShtX3dlYkZyYW1lLCB0
aXRsZSk7CisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSZWNlaXZlVGl0bGUobV93
ZWJGcmFtZSwgdGl0bGUuc3RyaW5nKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCkBAIC0xMzI4LDcgKzEzMjksNyBAQCBQYXNzUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBGcmFtZUxvYWRlckNsaWVudEltcGw6OmNyZWF0ZURvY3VtZW50
TG9hZGVyKAogICAgIHJldHVybiBkcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRJbXBsOjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwp
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBGSVhNRTogaW5mb3Jt
IGNvbnN1bWVyIG9mIGNoYW5nZXMgdG8gdGhlIHRpdGxlLgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRleCBmMTljMjZjNTM5
YTFjMWI1YTI2NTdiN2FhMjU4OTVjMWIyZjUyMTI2Li4yYjFjMjZmNWRkYmNjY2FkZDI2ZWE0OGFm
OGQ4YWRmNDViMmJhNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTE2Niw3
ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNl
UmVwbGFjZW1lbnQoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
V2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lk
IHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAg
ICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJD
b3JlOjpDYWNoZWRGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGF0YVNvdXJjZUltcGwuY3BwCmluZGV4IDEzNjZhODA5NGE1MDYzOTdlMDk0ODM0MDgwMjY1ZGJj
YTdiZTY2MWEuLjMxNzBhZmZiZTRiNGIxZjg0MGM2NzU5MGU5ZDZiYWFkNTc4NTBlNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhU291cmNlSW1wbC5jcHAKQEAg
LTgyLDcgKzgyLDggQEAgdm9pZCBXZWJEYXRhU291cmNlSW1wbDo6cmVkaXJlY3RDaGFpbihXZWJW
ZWN0b3I8V2ViVVJMPiYgcmVzdWx0KSBjb25zdAogCiBXZWJTdHJpbmcgV2ViRGF0YVNvdXJjZUlt
cGw6OnBhZ2VUaXRsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRpdGxlKCk7CisgICAgLy8gRklY
TUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUgYXMgd2VsbC4KKyAgICByZXR1cm4gdGl0bGUoKS5z
dHJpbmcoKTsKIH0KIAogV2ViTmF2aWdhdGlvblR5cGUgV2ViRGF0YVNvdXJjZUltcGw6Om5hdmln
YXRpb25UeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAzNWRhMDljMzQ5NmNlMzcwZWVm
YjllYTI5NzdhZWYzMjQ2MGQwMDhlLi43Y2VhNjVhNmUzNjk3OWIwMzZhMzIxYWFhMjBjMGMyMjQz
MDkxYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2
YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQor
CisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzZXRUaXRsZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKKwogMjAxMS0w
My0yOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggZmEzNGFj
OWMwZDdkNjA4MTk4MjU4NzMzNDEzZjI1YWIyYTkwYmEyNi4uOTZiODU5YmZlOTU2MWU3Yjg5Mjc4
MTQ2OWU3MWEzYTgyZmNkNDkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtNTc2LDkgKzU3Niwx
MCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKCkKICAgICAgICAgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbChtX3ZpZXcpOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiB7Ci0gICAgQ1N0
cmluZyBjcyA9IHRpdGxlLnV0ZjgoKTsKKyAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0
aXRsZS4KKyAgICBDU3RyaW5nIGNzID0gdGl0bGUuc3RyaW5nKCkudXRmOCgpOwogICAgIGV3a19m
cmFtZV90aXRsZV9zZXQobV9mcmFtZSwgY3MuZGF0YSgpKTsKIAogICAgIGlmIChld2tfdmlld19m
cmFtZV9tYWluX2dldChtX3ZpZXcpICE9IG1fZnJhbWUpCkBAIC03MDksNyArNzEwLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAppbmRleCA1
ZWE0ZThjYWM5N2MwYmE5ZThlZTY5YzkyMjc3MzljZTE3ODFhNDBjLi5iZDA3YTMwMzRiNjE4NmIw
NGFiMDQ5ZTNkZjEyMGJiZDVmOWM0NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKQEAgLTEwMiw3ICsxMDIs
NyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVu
dCB7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGNsYXNzIEZy
YW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgdmlydHVh
bCBXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNv
bnN0IEtVUkwmKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwppbmRleCAwNWMxNWQ0NzRmNDc4ZTVkZDAzNmE3ZTRhN2IwN2E2NjQx
OTM3NWFhLi5lZDczYTdlMWUyN2M4NGExNWJjNjJhNWZkOTU5OGE3Y2YzODhjYzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZh
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAg
ICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0
ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTEtMDMtMjkgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGRpc2FibGUgYW4g
YXNzZXJ0IGluIHRlc3R3ZWJ2aWV3IGR1ZSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGNhOGJm
OWEwODlhZDczODNjOGQ0NTMyN2E4N2Q4NTM0Yjg1ZGUwOTcuLjVjNTk0ZTg1NmJiMGFmNGQxZjJj
ZGVlMDM1NjUyNzQyZGZjMWI4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTk0OSwxNCArOTQ5
LDE1IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25h
bExvYWQoKQogICAgIG5vdGlmeVN0YXR1cyhtX2ZyYW1lLCBXRUJLSVRfTE9BRF9QUk9WSVNJT05B
TCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKICAgICBp
ZiAobV9sb2FkaW5nRXJyb3JQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRXZWJG
cmFtZVByaXZhdGUqIHByaXYgPSBtX2ZyYW1lLT5wcml2OwogICAgIGdfZnJlZShwcml2LT50aXRs
ZSk7Ci0gICAgcHJpdi0+dGl0bGUgPSBnX3N0cmR1cCh0aXRsZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBwcml2LT50aXRsZSA9IGdf
c3RyZHVwKHRpdGxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKG1fZnJhbWUsICJ0aXRsZS1jaGFuZ2VkIiwgcHJpdi0+dGl0bGUpOwogICAgIGdf
b2JqZWN0X25vdGlmeShHX09CSkVDVChtX2ZyYW1lKSwgInRpdGxlIik7CkBAIC0xMTE5LDExICsx
MTIwLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVw
bGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBm
cmFtZURhdGEgPSBtX2ZyYW1lLT5wcml2OwogICAgIGdfZnJlZShmcmFtZURhdGEtPnRpdGxlKTsK
LSAgICBmcmFtZURhdGEtPnRpdGxlID0gZ19zdHJkdXAodGl0bGUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgZnJhbWVEYXRhLT50aXRs
ZSA9IGdfc3RyZHVwKHRpdGxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVj
ZWl2ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBiN2VhZDdhZjVlYmI5ZTY3NjVjOTQ2YzM1NWFjOTll
ODljMWU5NTQxLi45N2ViMGZmNjg2YTM2YzUxOTFhZjRlMDJhNmE3ZGY4ZjQ3YWQ2Mjc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmgKQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rp
b24mKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAog
ICAgICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4g
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRp
dGxlKGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVj
dGlvbiYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKIAogICAgICAgICB2aXJ0dWFsIFdU
Rjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFu
Z2VMb2cKaW5kZXggNzc1N2ZlNzkyMzE2NWRmYzhjYjFjZDRkZTRlOTUzODNlYjA5ZjlkZi4uOTk2
YTFmNDQ2MjFiZTAyZGIyNjZkNTliM2U2Y2MyNTMyZDYxNzBmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8
dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5l
dyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1Lmg6CisKIDIwMTEtMDMtMjUgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBl
dGVyc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAKaW5kZXggMjRhOThkNTYzNDI4NmU3YjQ0
OWMxMTBiM2UxZGI1M2JhODVlMGQwYi4uYzA0Y2I3ZDRjNmYxYzhiNmE4ZTQyYmUwNTJmZDk0MjIx
MTEzNDQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCkBAIC0yMzcsMTMgKzIzNywxMyBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25h
bExvYWQoKQogICAgIH0KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBGcmFtZUxvYWRlckNs
aWVudEhhaWt1OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoVGl0bGUm
IHRpdGxlKQogewogICAgIGlmIChtX3dlYlZpZXcpIHsKLSAgICAgICAgbV93ZWJWaWV3LT5TZXRQ
YWdlVGl0bGUodGl0bGUpOwotCisgICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRp
dGxlLgorICAgICAgICBtX3dlYlZpZXctPlNldFBhZ2VUaXRsZSh0aXRsZS5tX3N0cmluZygpKTsK
ICAgICAgICAgQk1lc3NhZ2UgbWVzc2FnZShUSVRMRV9DSEFOR0VEKTsKLSAgICAgICAgbWVzc2Fn
ZS5BZGRTdHJpbmcoInRpdGxlIiwgdGl0bGUpOworICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygi
dGl0bGUiLCB0aXRsZS5zdHJpbmcoKSk7CiAgICAgICAgIG1fbWVzc2VuZ2VyLT5TZW5kTWVzc2Fn
ZSgmbWVzc2FnZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmggYi9Tb3VyY2UvV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAppbmRleCBkYmQzMDg0
Y2E0Y2I3ZjI5YWViNzZkMjQ0ZmRkZDkzMGU5ODk3MGIyLi5mNTc2NTQ1Yzg2YTZiYTQzN2ExZDY2
ZDdjZmVmZTI3NDVmZGI3NjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaApAQCAtMTAyLDcgKzEw
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbENsb3NlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29u
KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmluaXNoTG9hZCgpOwpAQCAtMTQzLDcgKzE0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRTY3JvbGwoKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBL
VVJMJik7CiAKICAgICAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IGQyYzIwZWRiYmM0NWYwNjk3OGFiOWViMzI1N2Q0M2RlMmZi
NzUwNDYuLmM5NjJhNjk1NGY3M2Q4MmZiZjI1YmE2OWJhOTI2OTFmMTY3MTM2NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAg
ICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRl
IHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzZXRUaXRsZSk6CisKIDIwMTEtMDMtMzAgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCA0ZmU1NjY0ZGQ2MDUxNmMxMTg2ZTg1NWRiMjNiMzdlNTI0ZDM4MzY2Li5kZjhi
MzRiNTI2Y2Y4OGU4NGQwNmQ4MmFhM2U4ODU2NjY5Y2UxZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxD
bG9zZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENo
YW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9h
ZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0
aXR1dGVEYXRhJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV1RGOjpTdHJp
bmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRp
dGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpL
VVJMJik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZy
YW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Nj
cm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KaW5kZXggOTJjMmIwM2IxYzljZjBjOGJiZWYxMTExN2EwMDhmZGI5MzYzZTBjMC4uMjdjZTYy
YWM0ZDBlMzZhNGMyNmY3OWRlZWZmMjNlNDFjYzA1ZGRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAg
LTYyNCwxMiArNjI0LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1w
bGVtZW50YXRpb25zLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lRnVuYywgd2ViVmll
dywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTopLCBt
X3dlYkZyYW1lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJh
bWUuZ2V0KCkpOyAgIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNo
ZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50
YXRpb25zKHdlYlZpZXcpOwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lRnVuYykKLSAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0
aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2Vi
VmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUsIG1fd2Vi
RnJhbWUuZ2V0KCkpOworICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4K
KyAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZl
VGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIG1fd2ViRnJhbWUu
Z2V0KCkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKCkKQEAgLTg5Myw3ICs4OTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1
cGRhdGVHbG9iYWxIaXN0b3J5KCkKICAgICAgICAgV2ViSGlzdG9yeURlbGVnYXRlSW1wbGVtZW50
YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEhpc3RvcnlEZWxlZ2F0ZUlt
cGxlbWVudGF0aW9ucyh2aWV3KTsKICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+bmF2aWdh
dGVkRnVuYykgewogICAgICAgICAgICAgV2ViTmF2aWdhdGlvbkRhdGEgKmRhdGEgPSBbW1dlYk5h
dmlnYXRpb25EYXRhIGFsbG9jXSBpbml0V2l0aFVSTFN0cmluZzpsb2FkZXItPnVybEZvckhpc3Rv
cnkoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTpsb2FkZXItPnRpdGxlKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGl0bGU6bG9hZGVyLT50aXRsZSgpLnN0cmluZygpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Jp
Z2luYWxSZXF1ZXN0OmxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLm5zVVJMUmVxdWVzdCgp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOmxvYWRlci0+cmVzcG9uc2UoKS5uc1VSTFJlc3Bv
bnNlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGFzU3Vic3RpdHV0ZURhdGE6bG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgp
LmlzVmFsaWQoKQpAQCAtOTA3LDcgKzkwOCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogICAgIH0KIAogICAgIFtbV2ViSGlzdG9yeSBvcHRpb25h
bFNoYXJlZEhpc3RvcnldIF92aXNpdGVkVVJMOmxvYWRlci0+dXJsRm9ySGlzdG9yeSgpIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFRpdGxlOmxvYWRlci0+
dGl0bGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFRp
dGxlOmxvYWRlci0+dGl0bGUoKS5zdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWV0aG9kOmxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLmh0
dHBNZXRob2QoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXNG
YWlsdXJlOmxvYWRlci0+dXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZVZpc2l0Q291bnQ6IWxvYWRlci0+Y2xpZW50
UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCldOyAvLyBEbyBub3QgaW5jcmVhc2UgdmlzaXQgY291
bnQgZHVlIHRvIG5hdmlnYXRpb25zIHRoYXQgd2VyZSBub3QgaW5pdGlhdGVkIGJ5IHRoZSB1c2Vy
IGRpcmVjdGx5LCBhdm9pZGluZyBncm93dGggZnJvbSBwcm9ncmFtbWF0aWMgcmVsb2Fkcy4KQEAg
LTExNzksNyArMTE4MCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIGxv
YWRlci5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25z
dCBLVVJMJiB1cmwpCiB7CiAgICAgV2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFt
ZS5nZXQoKSk7CiAgICAgCkBAIC0xMTg4LDcgKzExODksOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiAg
ICAgICAgIGlmICghaW1wbGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgQ2FsbEhpc3RvcnlEZWxlZ2F0ZShpbXBsZW1l
bnRhdGlvbnMtPnNldFRpdGxlRnVuYywgdmlldywgQHNlbGVjdG9yKHdlYlZpZXc6dXBkYXRlSGlz
dG9yeVRpdGxlOmZvclVSTDopLCAoTlNTdHJpbmcgKil0aXRsZSwgKE5TU3RyaW5nICopdXJsKTsK
KyAgICAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgICAgIENhbGxI
aXN0b3J5RGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5zZXRUaXRsZUZ1bmMsIHZpZXcsIEBzZWxl
Y3Rvcih3ZWJWaWV3OnVwZGF0ZUhpc3RvcnlUaXRsZTpmb3JVUkw6KSwgKE5TU3RyaW5nICopdGl0
bGUuc3RyaW5nKCksIChOU1N0cmluZyAqKXVybCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCkBAIC0xMTk2LDcgKzExOTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgbnNVUkwgPSBb
bnNVUkwgX3dlYmtpdF9jYW5vbmljYWxpemVdOwogICAgIGlmKCFuc1VSTCkKICAgICAgICAgcmV0
dXJuOwotICAgIE5TU3RyaW5nICp0aXRsZU5TU3RyaW5nID0gdGl0bGU7CisgICAgTlNTdHJpbmcg
KnRpdGxlTlNTdHJpbmcgPSB0aXRsZS5zdHJpbmcoKTsKICAgICAgICAKICAgICBbW1tXZWJIaXN0
b3J5IG9wdGlvbmFsU2hhcmVkSGlzdG9yeV0gaXRlbUZvclVSTDpuc1VSTF0gc2V0VGl0bGU6dGl0
bGVOU1N0cmluZ107CiB9CkBAIC0xMjg1LDcgKzEyODcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICAgICAgLy8gbGlr
ZSB0aGUgb25lcyB0aGF0IFNhZmFyaSB1c2VzIGZvciBib29rbWFya3MgaXQgaXMgdGhlIG9ubHkg
d2F5IHRoZSBEb2N1bWVudExvYWRlcgogICAgICAgICAvLyB3aWxsIGdldCB0aGUgcHJvcGVyIHRp
dGxlLgogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gW2RhdGFT
b3VyY2UgX2RvY3VtZW50TG9hZGVyXSkKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRU
aXRsZShbZGF0YVNvdXJjZSBwYWdlVGl0bGVdKTsKKyAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
LT5zZXRUaXRsZShTdHJpbmdXaXRoRGlyZWN0aW9uKFtkYXRhU291cmNlIHBhZ2VUaXRsZV0sIExU
UikpOwogICAgIH0KIAogICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gY29y
ZUZyYW1lLT5vd25lckVsZW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggMDNlZGQ1ZDY5MjI1MDVkNzAxOWFiMTcy
MjE4NGRkYWI2YmIyNTlmMi4uODQyZTYwNWZiYWU5OTk1MzU2ODQwY2Y4ZmYwODY1YzhjY2EzMTBm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0KQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29uY2F0ZW5hdGVB
cnJheXMoTlNBcnJheSAqZmlyc3QsIE5TQXJyYXkgKnNlY29uZCkKIAogLSAoTlNTdHJpbmcgKil0
aXRsZQogewotICAgIHJldHVybiBuc1N0cmluZ05pbElmRW1wdHkoW19wcml2YXRlLT5kYXRhU291
cmNlIF9kb2N1bWVudExvYWRlcl0tPnRpdGxlKCkpOworICAgIHJldHVybiBuc1N0cmluZ05pbElm
RW1wdHkoW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnRpdGxlKCkuc3Ry
aW5nKCkpOwogfQogCiAtIChET01Eb2N1bWVudCAqKURPTURvY3VtZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IDdiYWI2YTkyOWI4ZmM3YzdiYzBjOGU3MTdjMzUyYzRmNjg5YWNkMGIuLmZiNWU2YjMwYzJl
NWUxNmIyNzhmNzg4ZTA3MjdhMzc3ZTI3YzhmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRpdGxlPiBzaG91bGQg
c3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJD
bGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oOgorCiAyMDExLTAzLTMwICBZaSBTaGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCmluZGV4IGQzMTg0OTRiYWVjYzMyZTgwODE5ZjlmZjY0MmM5NmVmOGJmY2I3Y2IuLjgwODli
ZmU4OGY5ZDRlZjdhYjlmZDZhZDhjNzU2ZGQwMTA4NDc5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApAQCAt
NDQ3LDE1ICs0NDcsMTYgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mIHRpdGxlKQogeworICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgog
ICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCi0gICAgICAgIHByaW50ZigiJXMgLSBk
aWRSZWNlaXZlVGl0bGU6ICVzXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KG1fZnJhbWUpKSwgcVByaW50YWJsZShRU3RyaW5nKHRpdGxlKSkpOworICAg
ICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZVRpdGxlOiAlc1xuIiwgcVByaW50YWJsZShkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSksIHFQcmludGFibGUoUVN0
cmluZyh0aXRsZS5zdHJpbmcoKSkpKTsKIAogICAgIGlmICghbV93ZWJGcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZW1pdCB0aXRsZUNoYW5nZWQodGl0bGUpOworICAgIGVtaXQgdGl0bGVD
aGFuZ2VkKHRpdGxlLnN0cmluZygpKTsKIH0KIAogCkBAIC03MDksMTYgKzcxMCwxNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQog
ewogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKIHsK
ICAgICAvLyBVc2VkIGJ5IEFwcGxlIFdlYktpdCB0byB1cGRhdGUgdGhlIHRpdGxlIG9mIGFuIGV4
aXN0aW5nIGhpc3RvcnkgaXRlbS4KICAgICAvLyBRdFdlYktpdCBkb2Vzbid0IGFjY29tb2RhdGUg
dGhpcyBvbiBoaXN0b3J5IGl0ZW1zLiBJZiBpdCBldmVyIGRvZXMsCiAgICAgLy8gaXQgc2hvdWxk
IGJlIHByaXZhdGVCcm93c2luZy1hd2FyZS5Gb3Igbm93LCB3ZSBhcmUganVzdCBwYXNzaW5nCiAg
ICAgLy8gZ2xvYmFsaGlzdG9yeSBsYXlvdXQgdGVzdHMuCisgICAgLy8gRklYTUU6IHVzZSBkaXJl
Y3Rpb24gb2YgdGl0bGUuCiAgICAgaWYgKGR1bXBIaXN0b3J5Q2FsbGJhY2tzKSB7CiAgICAgICAg
IHByaW50ZigiV2ViVmlldyB1cGRhdGVkIHRoZSB0aXRsZSBmb3IgaGlzdG9yeSBVUkwgXCIlc1wi
IHRvIFwiJXNcIi5cbiIsCiAgICAgICAgICAgICBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KHVybCkpLAotICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5n
KHRpdGxlKSkpOworICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nKHRpdGxlLnN0cmluZygp
KSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAppbmRleCAzZWM1ZjIwZGI4MmYwZTY4NDUzOGZjNTY0
YjRiZjEzZGVmZDdmODJhLi45MDA0ODlkMDYxMGY1ZmJlMjAwYzJkYTdjMzJiZDc5NmI1ZTljYmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJik7CkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2aXJ0dWFsIFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDE4ZmFlOGE2
ODMyOTEwZDVjYmIwMmZmNGVhOTJiZjQzNGI0NjQyMDUuLmY2NzFmYmMwMDViMjljM2MxNGI4YzAx
MzExOGNmM2ViMzU0OTg1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAx
MS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRp
ciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRl
cmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisK
IDIwMTEtMDMtMzAgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDEwYTMx
OTBkMmE0YWFlNjllMDBjYmE2ZmQ4ZGNlZTkxYmM5ZTBmNDMuLmNhNjFkMzAzNTcxYTc1NjkwYmE2
YTg2MDQ4OTIxNmE5NTJmYjM5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTM2NCwxMiArMzY0
LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKQogICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZSh3ZWJWaWV3LCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBt
X3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4g
ZnJhbWVMb2FkRGVsZWdhdGU7CiAgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWRE
ZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKLSAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUt
PmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7Cisg
ICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgICAgICBmcmFtZUxv
YWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUuc3RyaW5n
KCkpLCBtX3dlYkZyYW1lKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucygpCkBAIC01NDIsNyArNTQzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCiAgICAgICAgIENPTVB0cjxJV2ViVVJMUmVx
dWVzdD4gdXJsUmVxdWVzdChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUlu
c3RhbmNlKGxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpKSk7CiAgICAgICAgIAogICAgICAg
ICBDT01QdHI8SVdlYk5hdmlnYXRpb25EYXRhPiBuYXZpZ2F0aW9uRGF0YShBZG9wdENPTSwgV2Vi
TmF2aWdhdGlvbkRhdGE6OmNyZWF0ZUluc3RhbmNlKAotICAgICAgICAgICAgbG9hZGVyLT51cmxG
b3JIaXN0b3J5KCksIGxvYWRlci0+dGl0bGUoKSwgdXJsUmVxdWVzdC5nZXQoKSwgdXJsUmVzcG9u
c2UuZ2V0KCksIGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCksIGxvYWRlci0+Y2xp
ZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+dXJs
Rm9ySGlzdG9yeSgpLCBsb2FkZXItPnRpdGxlKCkuc3RyaW5nKCksIHVybFJlcXVlc3QuZ2V0KCks
IHVybFJlc3BvbnNlLmdldCgpLCBsb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpLCBs
b2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpKSk7CiAKICAgICAgICAgaGlz
dG9yeURlbGVnYXRlLT5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh3ZWJWaWV3LCBuYXZp
Z2F0aW9uRGF0YS5nZXQoKSwgbV93ZWJGcmFtZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU1Miw3
ICs1NTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5
KCkKICAgICBpZiAoIWhpc3RvcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhpc3RvcnktPnZp
c2l0ZWRVUkwobG9hZGVyLT51cmxGb3JIaXN0b3J5KCksIGxvYWRlci0+dGl0bGUoKSwgbG9hZGVy
LT5vcmlnaW5hbFJlcXVlc3RDb3B5KCkuaHR0cE1ldGhvZCgpLCBsb2FkZXItPnVybEZvckhpc3Rv
cnlSZWZsZWN0c0ZhaWx1cmUoKSwgIWxvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0
b3J5KCkpOworICAgIGhpc3RvcnktPnZpc2l0ZWRVUkwobG9hZGVyLT51cmxGb3JIaXN0b3J5KCks
IGxvYWRlci0+dGl0bGUoKS5zdHJpbmcoKSwgbG9hZGVyLT5vcmlnaW5hbFJlcXVlc3RDb3B5KCku
aHR0cE1ldGhvZCgpLCBsb2FkZXItPnVybEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmUoKSwgIWxv
YWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpOwogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpCkBAIC02
NzIsMTMgKzY3MywxMyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBsb2Fk
ZXIucmVsZWFzZSgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3Qg
S1VSTCYgdXJsKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3
KCk7CiAgICAgQ09NUHRyPElXZWJIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKICAg
ICB3ZWJWaWV3LT5oaXN0b3J5RGVsZWdhdGUoJmhpc3RvcnlEZWxlZ2F0ZSk7CiAgICAgaWYgKGhp
c3RvcnlEZWxlZ2F0ZSkgewotICAgICAgICBCU3RyaW5nIHRpdGxlQlNUUih0aXRsZSk7CisgICAg
ICAgIEJTdHJpbmcgdGl0bGVCU1RSKHRpdGxlLnN0cmluZygpKTsKICAgICAgICAgQlN0cmluZyB1
cmxCU1RSKHVybC5zdHJpbmcoKSk7CiAgICAgICAgIGhpc3RvcnlEZWxlZ2F0ZS0+dXBkYXRlSGlz
dG9yeVRpdGxlKHdlYlZpZXcsIHRpdGxlQlNUUiwgdXJsQlNUUik7CiAgICAgICAgIHJldHVybjsK
QEAgLTcwNCw3ICs3MDUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgaWYgKCFpdGVtUHJpdmF0
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaXRlbVByaXZhdGUtPnNldFRpdGxlKEJTdHJpbmco
dGl0bGUpKTsKKyAgICBpdGVtUHJpdmF0ZS0+c2V0VGl0bGUoQlN0cmluZyh0aXRsZS5zdHJpbmco
KSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9D
YWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBk
ODY0YjIzNGU0MDM1OTgzYzdjM2UzM2FkYzJkODdlMjNiNGJkZjFjLi4xODU3MDg4NDY5OWI3NDIy
NmMyMDdjYWIxNmY5MzViMDdkMWJmYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTY5LDcgKzY5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlv
biYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRG
cmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVk
RnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5j
cHAKaW5kZXggMDM1MDM3MzJjNDM2MmE4MThkZDkzODdiY2IzMDY3NjMzNTEzNmFiNC4uMTQ5OGY2
ZTVmZmVhNjhkOWE5YWY0ZDQ4ZmY3ZGNhZmY4YjRmNzBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRGF0
YVNvdXJjZS5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkRhdGFTb3VyY2U6OmlzTG9hZGluZygKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RGF0YVNvdXJjZTo6cGFnZVRpdGxlKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHRp
dGxlKQogewotICAgICp0aXRsZSA9IEJTdHJpbmcobV9sb2FkZXItPnRpdGxlKCkpLnJlbGVhc2Uo
KTsKKyAgICAqdGl0bGUgPSBCU3RyaW5nKG1fbG9hZGVyLT50aXRsZSgpLnN0cmluZygpKS5yZWxl
YXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXggZTU5
NWYyNWRjNzgzNTExYmQ5N2JlY2U0MTQ0Mzc1MmU0ZWEwMjUwNi4uY2U5MWM5ODg0NzY2ZmIxYTE3
YjBlMjY4MWRjMzlhYzllMzdmYWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMS0wMy0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBz
dXBwb3J0IGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNs
aWVudCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudFdpbkNFOjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRS5oOgorCiAyMDExLTAzLTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9n
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmNwcAppbmRleCAyZDg4MTJmYTBkYTE2MjI2YjIwYzZjZmUxZWY4ODdj
NzhjYWZiOGI5Li42NDhjNGE1NWEyNDVkMzRlNTRlYjI1YTc1ODEzODg4ZDA3NmQyMDNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKQEAgLTM3MSw3ICszNzEsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRX
aW5DRTo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V2luQ0U6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJM
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmggYi9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAppbmRl
eCA0MDEyMjVkMjI5ZTg2OTNjOWU2YWQxYjlkNWU0ZjE1ZjdjMmI5ZmJlLi42MTUzOWM1NTY3MzA4
NzRlYzFjZGE4ZDAxMmNkY2Q3YmM3OTYyZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaApAQCAt
NzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3Nl
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXVEY6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUs
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
V1RGOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCiAgICAg
dmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd3gv
Q2hhbmdlTG9nCmluZGV4IDk4MGZhOGEwMmIzZGE5MWE1NWFmNDQ1NDM0MTViNjMzZTIwMTc2YWEu
LjFhMGEzMTQ1ZThmM2IwMjJmNTk0MzVlNDMxNTczY2FmMjRlYTY5YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgPHRp
dGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVwZGF0ZSB0byBuZXcg
RnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50V3g6OnNldFRpdGxlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMS0wMy0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAK
aW5kZXggYWZjMjU1Y2NhY2Y5NGI3NGJkNDMyMjlkMzY2Y2NiYWNiMDE2ZjIwOC4uYjQwODYzNmQz
MzlkNmNjY2YwY2NlNmU4NjcyOGJjMzBhMTNlMWE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcApAQCAtMjk1LDEy
ICsyOTUsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKCkKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlKQogewogICAgIGlmIChtX3dlYlZpZXcpIHsKLSAgICAgICAgbV93ZWJWaWV3LT5TZXRQ
YWdlVGl0bGUodGl0bGUpOworICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRs
ZS4KKyAgICAgICAgbV93ZWJWaWV3LT5TZXRQYWdlVGl0bGUodGl0bGUuc3RyaW5nKCkpOwogICAg
ICAgICB3eFdlYlZpZXdSZWNlaXZlZFRpdGxlRXZlbnQgd2tFdmVudChtX3dlYlZpZXcpOwotICAg
ICAgICB3a0V2ZW50LlNldFRpdGxlKHRpdGxlKTsKKyAgICAgICAgd2tFdmVudC5TZXRUaXRsZSh0
aXRsZS5zdHJpbmcoKSk7CiAgICAgICAgIG1fd2ViVmlldy0+R2V0RXZlbnRIYW5kbGVyKCktPlBy
b2Nlc3NFdmVudCh3a0V2ZW50KTsKICAgICB9CiB9CkBAIC01MjUsNyArNTI2LDcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFd4OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKIH0K
IAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IEtVUkwmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpzZXRUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5oCmluZGV4IDI1NGY5NWM0MmM0MjI5NGZjZGUyNjhlODYwZGVj
ZmJlMWZlY2M3NmEuLmIyOGQzODk3YWM5YmQwYTVjZWU2MjE2ZGM0MTU0NjNmMzRjYjM4NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFd4LmgKKysrIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guaApAQCAtMTAzLDcgKzEwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxl
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpAQCAtMTQ1LDcgKzE0NSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZEhpc3RvcnlJdGVt
Rm9yRnJhZ21lbnRTY3JvbGwoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQo
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJik7CiAKICAgICAgICAgdmlydHVhbCBTdHJpbmcgdXNl
ckFnZW50KGNvbnN0IEtVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDJiZTMxZmE1Y2ZjNmFhN2ViYmJh
ZWM3NjMyMmZhMzg1YmQ2MTA4MmMuLmI4YTA4NmIzMGNjMGQ4MjQ5Y2JlZWIxNjRkYWMwOGI1MDMy
ZmEzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTcsNiArNywyMCBAQAogCiAgICAgICAgICogU2hhcmVkL0FQ
SS9jL2d0ay9XS0Jhc2VHdGsuaDogQWRkIHRoZSBzdGRib29sLmggaW5jbHVkZS4KIAorMjAxMS0w
My0zMSAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICA8dGl0bGU+IHNob3VsZCBzdXBwb3J0IGRpciBh
dHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwOTYxCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBGcmFtZUxvYWRlckNsaWVudCBpbnRlcmZh
Y2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDMtMzAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZmEzY2RjZWY3YjU1MjAyNDMwZTU5N2Yx
ZWQ3NDE2NzNjYjBiMDA1OC4uMTQ4N2EzNWE1MjUyNjliYzJkZGQzNzMyNDJkY2VhMjhmNjg3MTM3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQwMyw3ICs0MDMsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCkKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCB1cmwsIHVucmVhY2hh
YmxlVVJMLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkp
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewog
ICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdl
KQpAQCAtNDEyLDEwICs0MTIsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBSZWZQdHI8QVBJT2Jq
ZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KLSAgICB3
ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lKHdlYlBhZ2UsIHRpdGxlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CisgICAgLy8gRklYTUU6IHVz
ZSBkaXJlY3Rpb24gb2YgdGl0bGUuCisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJD
bGllbnQoKS5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh3ZWJQYWdlLCB0aXRsZS5zdHJpbmcoKSwg
bV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHRpdGxlLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwg
dGl0bGUuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRh
LmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENo
YW5nZUljb25zKCkKQEAgLTg0Niw3ICs4NDcsOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKIAogICAgIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUgZGF0
YTsKICAgICBkYXRhLnVybCA9IGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpLnN0cmluZygpOwotICAg
IGRhdGEudGl0bGUgPSBsb2FkZXItPnRpdGxlKCk7CisgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rp
b24gb2YgdGl0bGUuCisgICAgZGF0YS50aXRsZSA9IGxvYWRlci0+dGl0bGUoKS5zdHJpbmcoKTsK
IAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViQ29udGV4dDo6RGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEod2ViUGFnZS0+cGFnZUlE
KCksIGRhdGEsIG1fZnJhbWUtPmZyYW1lSUQoKSksIDApOwogfQpAQCAtMTA2MSwxNCArMTA2Mywx
NSBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBEb2N1bWVudExvYWRlcjo6
Y3JlYXRlKHJlcXVlc3QsIGRhdGEpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRs
ZSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhN
RTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkRpZFVwZGF0ZUhpc3RvcnlUaXRs
ZSh3ZWJQYWdlLT5wYWdlSUQoKSwKLSAgICAgICAgdGl0bGUsIHVybC5zdHJpbmcoKSwgbV9mcmFt
ZS0+ZnJhbWVJRCgpKSwgMCk7CisgICAgICAgIHRpdGxlLnN0cmluZygpLCB1cmwuc3RyaW5nKCks
IG1fZnJhbWUtPmZyYW1lSUQoKSksIDApOwogfQogCiBTdHJpbmcgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCAxOTQ4NTQxOTIwNzMxMDJkMGU3ZGU3MjgyYmE3NDAzZGY2YTk4NTFiLi42YzgzZTlkYjA3
ZmQyNGE0ZGRhNDM2MDQ0YzkzNmNjOTgwNGYyN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24o
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKICAgICAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKICAgICAKICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwogICAgIAo=
</data>
<flag name="review"
          id="80161"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>