<?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>110263</bug_id>
          
          <creation_ts>2013-02-19 14:27:44 -0800</creation_ts>
          <short_desc>Add the default video poster if it doesn&apos;t exist in video tag</short_desc>
          <delta_ts>2013-03-13 19:23:50 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>michaelbai</reporter>
          <assigned_to>michaelbai</assigned_to>
          <cc>benm</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>michaelbai</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>philn</cc>
    
    <cc>pnormand</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>schenney</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>836780</commentid>
    <comment_count>0</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-19 14:27:44 -0800</bug_when>
    <thetext>The Android web view application could provide the default poster for a video that doesn&apos;t have the poster attribute.

To provide the default poster, the application must set defaultVideoPosterURL setting and return the image in the response of that URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836818</commentid>
    <comment_count>1</comment_count>
      <attachid>189171</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-19 15:06:07 -0800</bug_when>
    <thetext>Created attachment 189171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836827</commentid>
    <comment_count>2</comment_count>
      <attachid>189174</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-19 15:09:08 -0800</bug_when>
    <thetext>Created attachment 189174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836933</commentid>
    <comment_count>3</comment_count>
      <attachid>189174</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-19 16:18:23 -0800</bug_when>
    <thetext>Comment on attachment 189174
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        No new tests, covered by existing tests.

How is this new functionallity covered by existing tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836945</commentid>
    <comment_count>4</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-19 16:24:14 -0800</bug_when>
    <thetext>Sorry, I just found out I could write a Layout test to test this feature, I am working on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837651</commentid>
    <comment_count>5</comment_count>
      <attachid>189357</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-20 12:25:11 -0800</bug_when>
    <thetext>Created attachment 189357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837722</commentid>
    <comment_count>6</comment_count>
      <attachid>189368</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-20 13:48:34 -0800</bug_when>
    <thetext>Created attachment 189368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838253</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-02-21 02:34:51 -0800</bug_when>
    <thetext>GTK build fails because the new symbols are not referenced in Source/autotools/symbols.filter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838409</commentid>
    <comment_count>8</comment_count>
      <attachid>189368</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-21 07:32:10 -0800</bug_when>
    <thetext>Comment on attachment 189368
Patch

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

Marking r- because of the GTK problem.

&gt; LayoutTests/media/video-default-poster.html:17
&gt; +          document.getElementById(&quot;result-no-poster&quot;).innerText =
&gt; +              poster.value == default_poster ? &quot;PASS&quot; : &quot;FAIL&quot;;

Nit: I think the line break + ternary make this more difficult to understand instead of easier.

&gt; LayoutTests/media/video-default-poster.html:20
&gt; +      } else {
&gt; +          document.getElementById(&quot;result-no-poster&quot;).innerText = &quot;FAIL: poster attribute is null&quot;;
&gt; +      }

Nit: single line if conditionals don&apos;t need braces.

&gt; LayoutTests/media/video-default-poster.html:27
&gt; +      if (poster) {
&gt; +          document.getElementById(&quot;result-has-poster&quot;).innerText =
&gt; +              poster.value == &quot;content/abe.png&quot; ? &quot;PASS&quot; : &quot;FAIL: poster was changed&quot;;
&gt; +      } else {
&gt; +          document.getElementById(&quot;result-has-poster&quot;).innerText = &quot;FAIL: poster attribute is null&quot;;
&gt; +      }

Dittos.

&gt; LayoutTests/media/video-no-default-poster.html:21
&gt; +      document.getElementById(&quot;result-no-poster&quot;).innerText =
&gt; +          poster ? &quot;FAIL : poster was added.&quot; : &quot;PASS&quot;;
&gt; +      poster = document.getElementById(&quot;video-has-poster&quot;).getAttributeNode(&quot;poster&quot;);
&gt; +      if (poster) {
&gt; +          document.getElementById(&quot;result-has-poster&quot;).innerText =
&gt; +              poster.value == &quot;content/abe.png&quot; ? &quot;PASS&quot; : &quot;FAIL: poster was changed&quot;;
&gt; +      } else {
&gt; +          document.getElementById(&quot;result-has-poster&quot;).innerText = &quot;FAIL: poster attribute is null&quot;;
&gt; +      }

Dittos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838612</commentid>
    <comment_count>9</comment_count>
      <attachid>189562</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-21 11:19:08 -0800</bug_when>
    <thetext>Created attachment 189562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838768</commentid>
    <comment_count>10</comment_count>
      <attachid>189562</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-21 13:27:21 -0800</bug_when>
    <thetext>Comment on attachment 189562
Patch

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

&gt; Source/WebCore/ChangeLog:22
&gt; +        (WebCore::HTMLVideoElement::attach):
&gt; +        * page/Settings.in:
&gt; +        * testing/InternalSettings.cpp:
&gt; +        (WebCore::InternalSettings::Backup::Backup):
&gt; +        (WebCore::InternalSettings::Backup::restoreTo):
&gt; +        (WebCore::InternalSettings::setDefaultVideoPosterURL):
&gt; +        (WebCore):
&gt; +        * testing/InternalSettings.h:
&gt; +        (Backup):
&gt; +        (InternalSettings):
&gt; +        * testing/InternalSettings.idl:

Sorry I didn&apos;t notice this before, but it is helpful to have per-method comments about what changed here.

&gt; LayoutTests/media/video-default-poster.html:11
&gt; +    var default_poster = &quot;about:blank&quot;;

Why use an invalid poster?

&gt; LayoutTests/media/video-default-poster.html:17
&gt; +      if (poster) {
&gt; +        if (poster.value)
&gt; +          document.getElementById(&quot;result-no-poster&quot;).innerText = &quot;PASS&quot;;

Shouldn&apos;t this test the poster value before declaring success?

&gt; ChangeLog:8
&gt; +        * Source/autotools/symbols.filter:

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838813</commentid>
    <comment_count>11</comment_count>
      <attachid>189596</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-21 14:02:03 -0800</bug_when>
    <thetext>Created attachment 189596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838818</commentid>
    <comment_count>12</comment_count>
      <attachid>189562</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-21 14:05:21 -0800</bug_when>
    <thetext>Comment on attachment 189562
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt; +        * testing/InternalSettings.idl:
&gt; 
&gt; Sorry I didn&apos;t notice this before, but it is helpful to have per-method comments about what changed here.

Never mind, Done

&gt;&gt; LayoutTests/media/video-default-poster.html:11
&gt;&gt; +    var default_poster = &quot;about:blank&quot;;
&gt; 
&gt; Why use an invalid poster?

I were trying to use content/abe.png, but the test failed because content/abe.png is not a valid URL for KURL&apos;s GURL implementation.
The default poster URL couldn&apos;t be related path in practice, so it shouldn&apos;t be an issue.

&gt;&gt; LayoutTests/media/video-default-poster.html:17
&gt;&gt; +          document.getElementById(&quot;result-no-poster&quot;).innerText = &quot;PASS&quot;;
&gt; 
&gt; Shouldn&apos;t this test the poster value before declaring success?

Done

&gt;&gt; ChangeLog:8
&gt;&gt; +        * Source/autotools/symbols.filter:
&gt; 
&gt; Ditto.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839944</commentid>
    <comment_count>13</comment_count>
      <attachid>189596</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-22 14:11:08 -0800</bug_when>
    <thetext>Comment on attachment 189596
Patch

Attachment 189596 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16722088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839951</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-22 14:14:25 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 189596 [details])
&gt; Attachment 189596 [details] did not pass win-ews (win):
&gt; Output: http://queues.webkit.org/results/16722088

10&gt;WebCoreTestSupport.lib(InternalSettings.obj) : error LNK2019: unresolved external symbol &quot;public: __thiscall WebCore::KURL::KURL(enum WebCore::ParsedURLStringTag,class WTF::String const &amp;)&quot; (??0KURL@WebCore@@QAE@W4ParsedURLStringTag@1@ABVString@WTF@@@Z) referenced in function &quot;public: void __thiscall WebCore::InternalSettings::Backup::restoreTo(class WebCore::Settings *)&quot; (?restoreTo@Backup@InternalSettings@WebCore@@QAEXPAVSettings@3@@Z)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839981</commentid>
    <comment_count>15</comment_count>
      <attachid>189829</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-22 14:29:54 -0800</bug_when>
    <thetext>Created attachment 189829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839986</commentid>
    <comment_count>16</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-22 14:32:10 -0800</bug_when>
    <thetext>This should fix win bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839992</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-22 14:35:59 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; This should fix win bot.

Looks like you need to rebase the patch:

Last 500 characters of output:
ebKitExports.def.in.rej
patching file Source/autotools/symbols.filter
Hunk #1 succeeded at 272 (offset 10 lines).
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/media/video-default-poster-expected.txt
patching file LayoutTests/media/video-default-poster.html
patching file LayoutTests/media/video-no-default-poster-expected.txt
patching file LayoutTests/media/video-no-default-poster.html
patching file ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840025</commentid>
    <comment_count>18</comment_count>
      <attachid>189839</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-22 14:57:06 -0800</bug_when>
    <thetext>Created attachment 189839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840295</commentid>
    <comment_count>19</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-22 21:37:32 -0800</bug_when>
    <thetext>Why win bot didn&apos;t showup?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841060</commentid>
    <comment_count>20</comment_count>
      <attachid>190080</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-25 10:05:03 -0800</bug_when>
    <thetext>Created attachment 190080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841061</commentid>
    <comment_count>21</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-25 10:06:04 -0800</bug_when>
    <thetext>Rebase again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841083</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-25 10:20:44 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt;&gt; LayoutTests/media/video-default-poster.html:11
&gt; &gt;&gt; +    var default_poster = &quot;about:blank&quot;;
&gt; &gt; 
&gt; &gt; Why use an invalid poster?
&gt; 
&gt; I were trying to use content/abe.png, but the test failed because content/abe.png is not a valid URL for KURL&apos;s GURL implementation.
&gt; The default poster URL couldn&apos;t be related path in practice, so it shouldn&apos;t be an issue.

The test can construct an absolute URL for content/abe.png.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841163</commentid>
    <comment_count>23</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-25 11:51:19 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #12)
&gt; &gt; &gt;&gt; LayoutTests/media/video-default-poster.html:11
&gt; &gt; &gt;&gt; +    var default_poster = &quot;about:blank&quot;;
&gt; &gt; &gt; 
&gt; &gt; &gt; Why use an invalid poster?
&gt; &gt; 
&gt; &gt; I were trying to use content/abe.png, but the test failed because content/abe.png is not a valid URL for KURL&apos;s GURL implementation.
&gt; &gt; The default poster URL couldn&apos;t be related path in practice, so it shouldn&apos;t be an issue.
&gt; 
&gt; The test can construct an absolute URL for content/abe.png.

Would you like point an example to me, thanks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841315</commentid>
    <comment_count>24</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-25 14:56:45 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; &gt;&gt; LayoutTests/media/video-default-poster.html:11
&gt; &gt; &gt; &gt;&gt; +    var default_poster = &quot;about:blank&quot;;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Why use an invalid poster?
&gt; &gt; &gt; 
&gt; &gt; &gt; I were trying to use content/abe.png, but the test failed because content/abe.png is not a valid URL for KURL&apos;s GURL implementation.
&gt; &gt; &gt; The default poster URL couldn&apos;t be related path in practice, so it shouldn&apos;t be an issue.
&gt; &gt; 
&gt; &gt; The test can construct an absolute URL for content/abe.png.
&gt; 
&gt; Would you like point an example to me, thanks?



I just found out the testcase&apos;s URL with window.location, it is the file name itself, like &apos;video-default-poster.html&apos;, so I guess use &apos;about:blank&apos; is a good way here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842082</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-26 09:26:20 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; I just found out the testcase&apos;s URL with window.location, it is the file name itself, like &apos;video-default-poster.html&apos;, so I guess use &apos;about:blank&apos; is a good way here.

Did you try document.URL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842130</commentid>
    <comment_count>26</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-26 10:07:00 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; I just found out the testcase&apos;s URL with window.location, it is the file name itself, like &apos;video-default-poster.html&apos;, so I guess use &apos;about:blank&apos; is a good way here.
&gt; 
&gt; Did you try document.URL?

It is same, gives file name itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842140</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-26 10:14:02 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; It is same, gives file name itself.

Strange, given the many tests that use document.URL such as fast/loader/external-script-URL-location.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842156</commentid>
    <comment_count>28</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-26 10:39:09 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; It is same, gives file name itself.

Something is strange. I modified your test to just log window.location.href:

&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;script&gt;
  if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
  }

  if (window.internals) {
    addEventListener(&quot;load&quot;, function() {
      alert(window.location.href);
      testRunner.notifyDone();
    }, false);
  }

&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;pre id=&quot;result-no-poster&quot;&gt;&lt;/pre&gt;
&lt;pre id=&quot;result-has-poster&quot;&gt;&lt;/pre&gt;
&lt;video id=&quot;video-no-poster&quot; src=&quot;content/test.mp4&quot; preload=&quot;none&quot; /&gt;
&lt;video id=&quot;video-has-poster&quot; src=&quot;content/test.mp4&quot; poster=&quot;content/abe.png&quot; preload=&quot;none&quot; /&gt;
&lt;/body&gt;
&lt;/html&gt;

and the result is

ALERT: file:///Volumes/User/WebKit/Sources/OpenSource/LayoutTests/media/temp.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842165</commentid>
    <comment_count>29</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-26 10:44:20 -0800</bug_when>
    <thetext>Would you like me to know how did you run it?

I ran the test with the following command,
perl Tools/Scripts/run-webkit-tests  --chromium --debug LayoutTests/media/video-default-poster.html

I think this might be the reason I only got the file name itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842174</commentid>
    <comment_count>30</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-26 10:51:58 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; It is same, gives file name itself.
&gt; 
&gt; Strange, given the many tests that use document.URL such as fast/loader/external-script-URL-location.html.


This test also passed when I ran it with

perl Tools/Scripts/run-webkit-tests  --chromium --debug LayoutTests/fast/loader/external-script-URL-location.html

The test passed even the Document.URL doesn&apos;t have &apos;/&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842220</commentid>
    <comment_count>31</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-26 11:33:33 -0800</bug_when>
    <thetext>It seemed that console.log only output the relative path. I will provide another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842245</commentid>
    <comment_count>32</comment_count>
      <attachid>190338</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-26 12:00:50 -0800</bug_when>
    <thetext>Created attachment 190338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842246</commentid>
    <comment_count>33</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-26 12:01:58 -0800</bug_when>
    <thetext>Changed to construct URL in Javascript, PTAL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842263</commentid>
    <comment_count>34</comment_count>
      <attachid>190338</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-26 12:31:32 -0800</bug_when>
    <thetext>Comment on attachment 190338
Patch

Thank you for updating the test!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842568</commentid>
    <comment_count>35</comment_count>
      <attachid>190338</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-26 17:58:30 -0800</bug_when>
    <thetext>Comment on attachment 190338
Patch

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

&gt; Source/WebCore/html/HTMLVideoElement.cpp:90
&gt; +            setAttribute(posterAttr, defaultVideoPosterURL.string());

I don’t know why I didn’t notice this earlier. This is not the right way to do it! We should do this logic when getting the poster attribute. We shouldn’t actually set the poster attribute on an element. It’s not good to have an element that modifies itself during the attach process -- it could even lead to a security bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842640</commentid>
    <comment_count>36</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-26 20:23:38 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; (From update of attachment 190338 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190338&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLVideoElement.cpp:90
&gt; &gt; +            setAttribute(posterAttr, defaultVideoPosterURL.string());
&gt; 
&gt; I don’t know why I didn’t notice this earlier. This is not the right way to do it! We should do this logic when getting the poster attribute. We shouldn’t actually set the poster attribute on an element. It’s not good to have an element that modifies itself during the attach process -- it could even lead to a security bug.

Would you like me know why there is a security bug here? What the right way to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843069</commentid>
    <comment_count>37</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-02-27 07:59:17 -0800</bug_when>
    <thetext>Hi Darin,

Only Android web view application will enable this feature, beside this there is no API or UI coud access this, the application could do whatever they would like and it is the user&apos;s choice to trust the application. It shouldn&apos;t have security issue here.

In another word, it has no impact to the rest of the world.

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844415</commentid>
    <comment_count>38</comment_count>
      <attachid>190796</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-02-28 13:25:43 -0800</bug_when>
    <thetext>Created attachment 190796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845210</commentid>
    <comment_count>39</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-03-01 08:47:11 -0800</bug_when>
    <thetext>ping...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847876</commentid>
    <comment_count>40</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-05 11:51:22 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; Only Android web view application will enable this feature, beside this there is no API or UI coud access this, the application could do whatever they would like and it is the user&apos;s choice to trust the application. It shouldn&apos;t have security issue here.

Your analysis is incorrect. If this Android web view app loads content from the web, the web content could exploit the bug and take advantage of it to run arbitrary code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847883</commentid>
    <comment_count>41</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-03-05 11:55:11 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; (In reply to comment #37)
&gt; &gt; Only Android web view application will enable this feature, beside this there is no API or UI coud access this, the application could do whatever they would like and it is the user&apos;s choice to trust the application. It shouldn&apos;t have security issue here.
&gt; 
&gt; Your analysis is incorrect. If this Android web view app loads content from the web, the web content could exploit the bug and take advantage of it to run arbitrary code.

Thanks for reply, I still not quite understand how the security issue could happen? Did you mean load the poster image could run arbitrary code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847886</commentid>
    <comment_count>42</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-05 11:58:31 -0800</bug_when>
    <thetext>The correct way to do this is to put this logic into the code that fetches the poster. We should not actually change the poster attribute on the DOM element, instead we should fetch the appropriate poster.

The way to do this would be:

A) Replace the Element::imageSourceAttributeName function with an Element::imageSourceURL function that returns the imageSourceURL as a const AtomicString&amp;. The body will be the same as before, it will just also include a call to getAttribute. Also will need to revise the four classes that override that function.

B) Add a new HTMLVideoElement::posterImageURL function that implements the default poster URL logic.

C) Update the four functions that get the poster attribute to handle poster loading and display to call posterImageURL.

1) HTMLVideoElement::imageSourceURL.
2) HTMLVideoElement::setDisplayMode.
3) HTMLVideoElement::updateDisplayState.
4) HTMLMediaElement::getPluginProxyParams. Will need to cast to HTMLVideoElement after checking isVideo.

That’s the correct way to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847891</commentid>
    <comment_count>43</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-05 11:59:42 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; Did you mean load the poster image could run arbitrary code?

Setting a poster DOM attribute will allow handlers on the webpage to run arbitrary JavaScript during the attach process. Running arbitrary JavaScript at that time can result in the engine following stale pointers, which is exploitable to run arbitrary code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848331</commentid>
    <comment_count>44</comment_count>
      <attachid>191627</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-05 18:10:31 -0800</bug_when>
    <thetext>Created attachment 191627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848332</commentid>
    <comment_count>45</comment_count>
      <attachid>191627</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-05 18:11:50 -0800</bug_when>
    <thetext>Comment on attachment 191627
Patch

Not for review, just want to try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848981</commentid>
    <comment_count>46</comment_count>
      <attachid>191627</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-06 09:47:49 -0800</bug_when>
    <thetext>Comment on attachment 191627
Patch

Drive by comment: I would recommend only removing extraneous white-space in functions where you are also changing code. Removing it as you have here makes it harder to pick out what you have actually changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849289</commentid>
    <comment_count>47</comment_count>
      <attachid>191830</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-06 14:15:32 -0800</bug_when>
    <thetext>Created attachment 191830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849293</commentid>
    <comment_count>48</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-03-06 14:17:31 -0800</bug_when>
    <thetext>I should add new symbols in  Source/WebCore/WebCore.order, but don&apos;t have corresponding platform, will add them once error appears in bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849332</commentid>
    <comment_count>49</comment_count>
      <attachid>191830</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-03-06 14:56:08 -0800</bug_when>
    <thetext>Comment on attachment 191830
Patch

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

&gt; Source/WebCore/ChangeLog:16
&gt; +

Nowhere here do you explain why imageSourceAttributeName must be changed to imageSourceURL, which seems to be a signficant outcome of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849343</commentid>
    <comment_count>50</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-03-06 15:03:55 -0800</bug_when>
    <thetext>(In reply to comment #49)
&gt; (From update of attachment 191830 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191830&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +
&gt; 
&gt; Nowhere here do you explain why imageSourceAttributeName must be changed to imageSourceURL, which seems to be a signficant outcome of this patch.

I followed Darin Adler&apos;s suggestion (refer comments 42), actually, the return value from imageSourceAttributeName() ends up with getAttribute(imageSourceAttributeName()), it&apos;s exactly same as the default implementation of imageSourceURL() does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849347</commentid>
    <comment_count>51</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-03-06 15:05:50 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; (In reply to comment #49)
&gt; &gt; (From update of attachment 191830 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191830&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Nowhere here do you explain why imageSourceAttributeName must be changed to imageSourceURL, which seems to be a signficant outcome of this patch.
&gt; 
&gt; I followed Darin Adler&apos;s suggestion (refer comments 42), actually, the return value from imageSourceAttributeName() ends up with getAttribute(imageSourceAttributeName()), it&apos;s exactly same as the default implementation of imageSourceURL() does.

Yes, but I believe the ChangeLog should say something. Probably just repeat Darin&apos;s outline of the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849388</commentid>
    <comment_count>52</comment_count>
      <attachid>191856</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-06 15:51:19 -0800</bug_when>
    <thetext>Created attachment 191856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849391</commentid>
    <comment_count>53</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-03-06 15:52:12 -0800</bug_when>
    <thetext>Update ChangeLog, thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850946</commentid>
    <comment_count>54</comment_count>
      <attachid>192167</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-08 00:19:00 -0800</bug_when>
    <thetext>Created attachment 192167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851139</commentid>
    <comment_count>55</comment_count>
      <attachid>192167</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-03-08 06:37:29 -0800</bug_when>
    <thetext>Comment on attachment 192167
Patch

Looks good to me, but I think Darin should give the final word. I&apos;m ultimately not an expert in this area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851180</commentid>
    <comment_count>56</comment_count>
      <attachid>192167</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-08 07:24:07 -0800</bug_when>
    <thetext>Comment on attachment 192167
Patch

Attachment 192167 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17007165

New failing tests:
editing/selection/selection-modify-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851602</commentid>
    <comment_count>57</comment_count>
      <attachid>192167</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-08 16:30:25 -0800</bug_when>
    <thetext>Comment on attachment 192167
Patch

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

Looks OK, but breaks whitespace handling in video element poster URLs. I’m surprised there was no test for this that is broken. Please fix that.

&gt; Source/WebCore/html/HTMLVideoElement.cpp:312
&gt; +    const AtomicString&amp; url = imageSourceURL();

It’s a shame to make a virtual function call here. No big deal, but not ideal either.

&gt; Source/WebCore/html/HTMLVideoElement.cpp:315
&gt; +    if (url.isEmpty())
&gt; +        return KURL();
&gt; +    return document()-&gt;completeURL(url);

This is missing a call to stripLeadingAndTrailingHTMLSpaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851658</commentid>
    <comment_count>58</comment_count>
      <attachid>192318</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-08 18:03:59 -0800</bug_when>
    <thetext>Created attachment 192318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851659</commentid>
    <comment_count>59</comment_count>
      <attachid>192167</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-08 18:06:15 -0800</bug_when>
    <thetext>Comment on attachment 192167
Patch

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

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:315
&gt;&gt; +    return document()-&gt;completeURL(url);
&gt; 
&gt; This is missing a call to stripLeadingAndTrailingHTMLSpaces.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853552</commentid>
    <comment_count>60</comment_count>
      <attachid>192318</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-12 09:36:21 -0700</bug_when>
    <thetext>Comment on attachment 192318
Patch

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

&gt; Source/WebCore/html/HTMLVideoElement.cpp:189
&gt; +    const AtomicString&amp; url = getAttribute(posterAttr);
&gt; +    if (!url.isEmpty())
&gt; +        return url;

On reflection, it’s a little strange here to special case only an empty URL without considering whitespace stripping. I could imagine special casing only a null URL, which means we’d only do this when the poster attribute is entirely missing. Or special casing any URL that ends up empty, and therefore is something we won&apos;t even try to load.

&gt; Source/WebCore/html/HTMLVideoElement.cpp:316
&gt; +    const AtomicString&amp; url = imageSourceURL();
&gt; +    if (url.isEmpty())
&gt; +        return KURL();
&gt; +    return document()-&gt;completeURL(stripLeadingAndTrailingHTMLSpaces(url));

This is still wrong. The stripping of needs to be done before the isEmpty check. Just look at the code in getNonEmptyURLAttribute and match its behavior exactly. That’s the problem with copied and pasted code, I guess. Hard to get it right!

&gt; Source/WebCore/html/HTMLVideoElement.h:94
&gt; +    AtomicString m_defaultPosterURL;

It’s a little strange to store a copy of this in every video element. There’s no reason we couldn’t fetch it from the document settings when we need it instead of when we create the video element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853611</commentid>
    <comment_count>61</comment_count>
      <attachid>192766</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-12 10:53:37 -0700</bug_when>
    <thetext>Created attachment 192766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853614</commentid>
    <comment_count>62</comment_count>
      <attachid>192318</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-12 10:56:27 -0700</bug_when>
    <thetext>Comment on attachment 192318
Patch

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

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:189
&gt;&gt; +        return url;
&gt; 
&gt; On reflection, it’s a little strange here to special case only an empty URL without considering whitespace stripping. I could imagine special casing only a null URL, which means we’d only do this when the poster attribute is entirely missing. Or special casing any URL that ends up empty, and therefore is something we won&apos;t even try to load.

Thanks, I striped space for isEmpty() checking, but returned the original value, I think imageSoureURL is supposed to return unstriped value.

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:316
&gt;&gt; +    return document()-&gt;completeURL(stripLeadingAndTrailingHTMLSpaces(url));
&gt; 
&gt; This is still wrong. The stripping of needs to be done before the isEmpty check. Just look at the code in getNonEmptyURLAttribute and match its behavior exactly. That’s the problem with copied and pasted code, I guess. Hard to get it right!

Done

&gt;&gt; Source/WebCore/html/HTMLVideoElement.h:94
&gt;&gt; +    AtomicString m_defaultPosterURL;
&gt; 
&gt; It’s a little strange to store a copy of this in every video element. There’s no reason we couldn’t fetch it from the document settings when we need it instead of when we create the video element.

The document-&gt;settings()-&gt;defaultVideoPosterURL() returns value, but imageSourceURL() returns a reference, I didn&apos;t find other workaround, so have to hold the value here. :(
I just guess the settings doesn&apos;t return reference might because the settings could be changed during the page&apos;s life cycle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853616</commentid>
    <comment_count>63</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-03-12 10:57:03 -0700</bug_when>
    <thetext>PTAL when you have time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854356</commentid>
    <comment_count>64</comment_count>
      <attachid>192766</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-13 09:26:03 -0700</bug_when>
    <thetext>Comment on attachment 192766
Patch

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

review- because the whitespace stripping is still wrong in this patch; I’m guessing you uploaded the wrong one

&gt; Source/WebCore/ChangeLog:37
&gt; +        * WebCore.order: Replace imageSourceAttributeName() with imageSourceURL()

This file does not need to be updated. You can just remove this change from your patch.

&gt; Source/WebCore/ChangeLog:39
&gt; +        * dom/Element.cpp: Replace imageSourceAttributeName() with imageSourceURL()
&gt; +        (WebCore::Element::imageSourceURL):

Comments should go on the functions, not the entire file, unless there is no function name.

&gt; Source/WebCore/ChangeLog:41
&gt; +        (Element):

Bogus lines like this should just be deleted from the ChangeLog. The script generates them.

&gt; Source/WebCore/myChangeLog:1
&gt; +2013-03-06  Tao Bai  &lt;michaelbai@chromium.org&gt;

Please don’t land this second change log file!

&gt; Source/WebCore/html/HTMLVideoElement.cpp:189
&gt; +    const AtomicString&amp; url = getAttribute(posterAttr);
&gt; +    if (!url.isEmpty())
&gt; +        return url;

As I mentioned in my last patch, it’s not right to check isEmpty here. It would be OK to check isNull, or to check isEmpty after calling stripLeadingAndTrailingHTMLSpaces.

&gt; Source/WebCore/html/HTMLVideoElement.cpp:316
&gt; +    const AtomicString&amp; url = imageSourceURL();
&gt; +    if (url.isEmpty())
&gt; +        return KURL();
&gt; +    return document()-&gt;completeURL(stripLeadingAndTrailingHTMLSpaces(url));

The stripLeadingAndTrailingHTMLSpaces call needs to be *before* calling isEmpty. Isn’t that why I said review- last time? Did you upload the wrong version of the patch?

&gt; Source/WebCore/html/HTMLVideoElement.h:68
&gt; +    KURL posterImageURL();

Should be const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854393</commentid>
    <comment_count>65</comment_count>
      <attachid>192945</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-13 10:35:40 -0700</bug_when>
    <thetext>Created attachment 192945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854394</commentid>
    <comment_count>66</comment_count>
      <attachid>192766</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-13 10:36:25 -0700</bug_when>
    <thetext>Comment on attachment 192766
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:37
&gt;&gt; +        * WebCore.order: Replace imageSourceAttributeName() with imageSourceURL()
&gt; 
&gt; This file does not need to be updated. You can just remove this change from your patch.

Done

&gt;&gt; Source/WebCore/ChangeLog:39
&gt;&gt; +        (WebCore::Element::imageSourceURL):
&gt; 
&gt; Comments should go on the functions, not the entire file, unless there is no function name.

Done

&gt;&gt; Source/WebCore/ChangeLog:41
&gt;&gt; +        (Element):
&gt; 
&gt; Bogus lines like this should just be deleted from the ChangeLog. The script generates them.

Done

&gt;&gt; Source/WebCore/myChangeLog:1
&gt;&gt; +2013-03-06  Tao Bai  &lt;michaelbai@chromium.org&gt;
&gt; 
&gt; Please don’t land this second change log file!

Sorry, it is my bad, this is just wrong patch

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:189
&gt;&gt; +        return url;
&gt; 
&gt; As I mentioned in my last patch, it’s not right to check isEmpty here. It would be OK to check isNull, or to check isEmpty after calling stripLeadingAndTrailingHTMLSpaces.

Sorry for the wrong patch.

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:316
&gt;&gt; +    return document()-&gt;completeURL(stripLeadingAndTrailingHTMLSpaces(url));
&gt; 
&gt; The stripLeadingAndTrailingHTMLSpaces call needs to be *before* calling isEmpty. Isn’t that why I said review- last time? Did you upload the wrong version of the patch?

Sorry again.

&gt;&gt; Source/WebCore/html/HTMLVideoElement.h:68
&gt;&gt; +    KURL posterImageURL();
&gt; 
&gt; Should be const.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854511</commentid>
    <comment_count>67</comment_count>
      <attachid>192945</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-13 12:58:54 -0700</bug_when>
    <thetext>Comment on attachment 192945
Patch

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

&gt; Source/WebCore/html/HTMLVideoElement.cpp:188
&gt; +    if (!stripLeadingAndTrailingHTMLSpaces(url).isEmpty())

Some day we may want to replace this by an isAllHTMLSpaces function that does not require copying the string even if the string contains leading or trailing spaces.

&gt; Source/WebCore/html/HTMLVideoElement.h:72
&gt; +    const KURL posterImageURL();

The const here before KURL is unneeded and nearly meaningless. It just means that you can’t call non-const member functions on the return value from this function.

What I meant when I said that this function should be const is that there should be a const *after* the parentheses, allowing this to be called on a const HTMLVideoElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854542</commentid>
    <comment_count>68</comment_count>
      <attachid>192979</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-13 13:14:50 -0700</bug_when>
    <thetext>Created attachment 192979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854545</commentid>
    <comment_count>69</comment_count>
      <attachid>192945</attachid>
    <who name="">michaelbai</who>
    <bug_when>2013-03-13 13:15:51 -0700</bug_when>
    <thetext>Comment on attachment 192945
Patch

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

&gt;&gt; Source/WebCore/html/HTMLVideoElement.h:72
&gt;&gt; +    const KURL posterImageURL();
&gt; 
&gt; The const here before KURL is unneeded and nearly meaningless. It just means that you can’t call non-const member functions on the return value from this function.
&gt; 
&gt; What I meant when I said that this function should be const is that there should be a const *after* the parentheses, allowing this to be called on a const HTMLVideoElement.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854615</commentid>
    <comment_count>70</comment_count>
      <attachid>192979</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 14:19:04 -0700</bug_when>
    <thetext>Comment on attachment 192979
Patch

Clearing flags on attachment: 192979

Committed r145750: &lt;http://trac.webkit.org/changeset/145750&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854616</commentid>
    <comment_count>71</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 14:19:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854693</commentid>
    <comment_count>72</comment_count>
      <attachid>192979</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-13 15:03:09 -0700</bug_when>
    <thetext>Comment on attachment 192979
Patch

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

&gt; Source/WebCore/html/HTMLVideoElement.cpp:320
&gt; +    const AtomicString&amp; url = stripLeadingAndTrailingHTMLSpaces(imageSourceURL());

After this landed, I noticed a mistake here. This should be typed either const String&amp; or String. Using the type &quot;const AtomicString&amp;&quot; means we’ll do an extra hash lookup to make an atomic string, but there is no value to doing that.

We need a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854868</commentid>
    <comment_count>73</comment_count>
    <who name="">michaelbai</who>
    <bug_when>2013-03-13 19:23:50 -0700</bug_when>
    <thetext>Will do</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189171</attachid>
            <date>2013-02-19 15:06:07 -0800</date>
            <delta_ts>2013-02-19 15:09:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130219150229.patch</filename>
            <type>text/plain</type>
            <size>2696</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ1YzlmMDIxNmNkNGYz
MTM0OWNlOTAwNzBlODc2YmM3NGI1NGQxNy4uZDM0YmJmOGRkMjdhNDQzM2I3NDUyY2ZlNDExNmQ4
M2MyMGZjM2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAyLTE5ICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEFuZHJvaWQgd2ViIHZp
ZXcgYXBwbGljYXRpb24gY291bGQgcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIKKyAgICAgICAg
Zm9yIGEgdmlkZW8gdGhhdCBkb2Vzbid0IGhhdmUgdGhlIHBvc3RlciBhdHRyaWJ1dGUuCisKKyAg
ICAgICAgVG8gcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIsIHRoZSBhcHBsaWNhdGlvbiBtdXN0
IHNldAorICAgICAgICBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZyBhbmQgcmV0dXJuIHRo
ZSBpbWFnZSBpbiB0aGUgcmVzcG9uc2Ugb2YKKyAgICAgICAgdGhhdCBVUkwuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6YXR0YWNoKToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOgorCiAyMDEzLTAyLTE5ICBFbWlsIEEgRWtsdW5kICA8ZWFl
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBMYXlvdXRVbml0OjplcHNpbG9uIHNob3VsZG4ndCBi
ZSBuZWNlc3NhcnkgdG8gcGxhY2UgZmxvYXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcAppbmRleCA3Y2UyODVjYjU4NGE3Nzc4NmU0ODUxYjg4MjMwOTQwMWE0N2I2ZTE0
Li5iZjA0NDdhZjBkZDJiMmJmYzNlZmViYzAzY2JiMTAwNzIwYjdkYWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtODEsNyArODIsMTIgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphdHRhY2go
KQogICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2Fk
ZXIodGhpcykpOwogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwog
ICAgICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVy
ZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1h
Z2UoKSk7IAorICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNv
dXJjZSgpLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKKyAgICB9Cisg
ICAgaWYgKCFoYXNBdHRyaWJ1dGUocG9zdGVyQXR0cikgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3Mo
KSkgeworICAgICAgICBLVVJMIGRlZmF1bHRWaWRlb1Bvc3RlclVSTCA9IGRvY3VtZW50KCktPnNl
dHRpbmdzKCktPmRlZmF1bHRWaWRlb1Bvc3RlclVSTCgpOworICAgICAgICBpZiAoIWRlZmF1bHRW
aWRlb1Bvc3RlclVSTC5pc0VtcHR5KCkpCisgICAgICAgICAgICBzZXRBdHRyaWJ1dGUocG9zdGVy
QXR0ciwgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLnN0cmluZygpKTsKICAgICB9CiAjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmluCmluZGV4IGQyOTA0ZDBmODJmOTg4ZWFjMzZkNDIxOWNiMWU3
ZjhhYTVkYjA2MDYuLjViOTNlN2JkMmRiNTkzMWIyY2Q4YjM5ZDgzMmUyODAxYzVlN2RkMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5pbgpAQCAtMTc4LDMgKzE3OCw2IEBAIHRvdWNoRHJhZ0Ryb3BF
bmFibGVkIGluaXRpYWw9ZmFsc2UKIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQgaW5pdGlhbD1k
ZWZhdWx0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZAogCiBsb2dzUGFnZU1lc3NhZ2VzVG9TeXN0
ZW1Db25zb2xlRW5hYmxlZCBpbml0aWFsPWZhbHNlCisKKyMgU29tZSBhcHBzIGNvdWxkIGhhdmUg
YSBkZWZhdWx0IHZpZGVvIHBvc3RlciBpZiBpdCBpcyBub3Qgc2V0LgorZGVmYXVsdFZpZGVvUG9z
dGVyVVJMIHR5cGU9S1VSTAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189174</attachid>
            <date>2013-02-19 15:09:08 -0800</date>
            <delta_ts>2013-02-20 12:25:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130219150531.patch</filename>
            <type>text/plain</type>
            <size>2715</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ1YzlmMDIxNmNkNGYz
MTM0OWNlOTAwNzBlODc2YmM3NGI1NGQxNy4uMGY2MTEwMjA0N2Y2OTVhYTUwNzFlNzY3Mzg1ZWU3
ZjhlNTdjZDUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAyLTE5ICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEFuZHJvaWQgd2ViIHZp
ZXcgYXBwbGljYXRpb24gY291bGQgcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIKKyAgICAgICAg
Zm9yIGEgdmlkZW8gdGhhdCBkb2Vzbid0IGhhdmUgdGhlIHBvc3RlciBhdHRyaWJ1dGUuCisKKyAg
ICAgICAgVG8gcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIsIHRoZSBhcHBsaWNhdGlvbiBtdXN0
IHNldAorICAgICAgICBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZyBhbmQgcmV0dXJuIHRo
ZSBpbWFnZSBpbiB0aGUgcmVzcG9uc2Ugb2YKKyAgICAgICAgdGhhdCBVUkwuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQ6OmF0dGFjaCk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKwogMjAxMy0wMi0xOSAg
RW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0VW5pdDo6
ZXBzaWxvbiBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IHRvIHBsYWNlIGZsb2F0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggN2NlMjg1Y2I1ODRhNzc3ODZlNDg1
MWI4ODIzMDk0MDFhNDdiNmUxNC4uYmYwNDQ3YWYwZGQyYjJiZmMzZWZlYmMwM2NiYjEwMDcyMGI3
ZGFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRl
by5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgxLDcgKzgyLDEyIEBAIHZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBhZG9wdFB0
cihuZXcgSFRNTEltYWdlTG9hZGVyKHRoaXMpKTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBk
YXRlRnJvbUVsZW1lbnQoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgICAgICB0
b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdl
KG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKKyAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVu
ZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+
aW1hZ2UoKSk7CisgICAgfQorICAgIGlmICghaGFzQXR0cmlidXRlKHBvc3RlckF0dHIpICYmIGRv
Y3VtZW50KCktPnNldHRpbmdzKCkpIHsKKyAgICAgICAgS1VSTCBkZWZhdWx0VmlkZW9Qb3N0ZXJV
UkwgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoKTsKKyAg
ICAgICAgaWYgKCFkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuaXNFbXB0eSgpKQorICAgICAgICAgICAg
c2V0QXR0cmlidXRlKHBvc3RlckF0dHIsIGRlZmF1bHRWaWRlb1Bvc3RlclVSTC5zdHJpbmcoKSk7
CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCBkMjkwNGQwZjgy
Zjk4OGVhYzM2ZDQyMTljYjFlN2Y4YWE1ZGIwNjA2Li41YjkzZTdiZDJkYjU5MzFiMmNkOGIzOWQ4
MzJlMjgwMWM1ZTdkZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTE3OCwzICsxNzgs
NiBAQCB0b3VjaERyYWdEcm9wRW5hYmxlZCBpbml0aWFsPWZhbHNlCiB1bmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkIGluaXRpYWw9ZGVmYXVsdFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQKIAogbG9n
c1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQgaW5pdGlhbD1mYWxzZQorCisjIFNv
bWUgYXBwcyBjb3VsZCBoYXZlIGEgZGVmYXVsdCB2aWRlbyBwb3N0ZXIgaWYgaXQgaXMgbm90IHNl
dC4KK2RlZmF1bHRWaWRlb1Bvc3RlclVSTCB0eXBlPUtVUkwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189357</attachid>
            <date>2013-02-20 12:25:11 -0800</date>
            <delta_ts>2013-02-20 13:48:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130220122133.patch</filename>
            <type>text/plain</type>
            <size>10446</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E5ZWM1NDAyZjI5YTZl
NjViYmI4MmUxNDc3NmEzYjJhOTgyZjU4Yi4uZjVkNDk4Mzc1MTJkNjk4OWMzN2ZkMzk3YjJiNjNi
ZDY1M2ZjZDlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAyLTIwICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEFuZHJvaWQgd2ViIHZp
ZXcgYXBwbGljYXRpb24gY291bGQgcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIgZm9yCisgICAg
ICAgIGEgdmlkZW8gdGhhdCBkb2Vzbid0IGhhdmUgdGhlIHBvc3RlciBhdHRyaWJ1dGUuCisKKyAg
ICAgICAgVG8gcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIsIHRoZSBhcHBsaWNhdGlvbiBtdXN0
IHNldAorICAgICAgICBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZyBhbmQgcmV0dXJuIHRo
ZSBpbWFnZSBpbiB0aGUgcmVzcG9uc2Ugb2YKKyAgICAgICAgdGhhdCBVUkwuCisKKyAgICAgICAg
VGVzdHM6IG1lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1l
ZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRh
Y2gpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaW46CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJh
Y2t1cDo6QmFja3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1
cDo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldERl
ZmF1bHRWaWRlb1Bvc3RlclVSTCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKEJhY2t1cCk6CisgICAgICAgIChJbnRl
cm5hbFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOgor
CiAyMDEzLTAyLTIwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIGlPUyBkb2VzIG5vdCB1c2UgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggN2NlMjg1Y2I1ODRhNzc3ODZl
NDg1MWI4ODIzMDk0MDFhNDdiNmUxNC4uMzUzZDQyMDgwMTFmYjRkNzhiMGVkZjQ0NDU0ZDEyZTdk
YzVlMTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC00
MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWRlby5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5n
cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgzLDYgKzg0LDExIEBAIHZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAg
ICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hl
ZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKICAgICB9CisgICAgaWYgKCFoYXNBdHRy
aWJ1dGUocG9zdGVyQXR0cikgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkgeworICAgICAgICBL
VVJMIGRlZmF1bHRWaWRlb1Bvc3RlclVSTCA9IGRvY3VtZW50KCktPnNldHRpbmdzKCktPmRlZmF1
bHRWaWRlb1Bvc3RlclVSTCgpOworICAgICAgICBpZiAoIWRlZmF1bHRWaWRlb1Bvc3RlclVSTC5p
c0VtcHR5KCkpCisgICAgICAgICAgICBzZXRBdHRyaWJ1dGUocG9zdGVyQXR0ciwgZGVmYXVsdFZp
ZGVvUG9zdGVyVVJMLnN0cmluZygpKTsKKyAgICB9CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaW4KaW5kZXggNmU3MTVhMjZlOGM2YWQ1OGY3NzQ2YmIyNGIwZmVmODIwNjgyZWY4YS4u
NDI3ZmQ3OTY4NThkNjc2ZWI4NGQ1MmQwMTFmYzllYWVlMmVmYTBiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmluCkBAIC0xODEsMyArMTgxLDYgQEAgdG91Y2hEcmFnRHJvcEVuYWJsZWQgaW5pdGlh
bD1mYWxzZQogdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCBpbml0aWFsPWRlZmF1bHRVbmlmaWVk
VGV4dENoZWNrZXJFbmFibGVkCiAKIGxvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFi
bGVkIGluaXRpYWw9ZmFsc2UKKworIyBTb21lIGFwcHMgY291bGQgaGF2ZSBhIGRlZmF1bHQgdmlk
ZW8gcG9zdGVyIGlmIGl0IGlzIG5vdCBzZXQuCitkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgdHlwZT1L
VVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCAx
MjYyYWVmNWYwM2Y2OGI4ZWM2YjRiNmZlMDE2ZTM1MWJjNTVlZjUwLi5hZWEyOTdkN2M2Y2U3NjQy
MzlhMmE3NDljZTkyMzM4ZjIxNmU4YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTk0LDYgKzk0LDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFj
a3VwOjpCYWNrdXAoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9zaG91bGREaXNwbGF5Q2Fw
dGlvbnMoc2V0dGluZ3MtPnNob3VsZERpc3BsYXlDYXB0aW9ucygpKQogICAgICwgbV9zaG91bGRE
aXNwbGF5VGV4dERlc2NyaXB0aW9ucyhzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlw
dGlvbnMoKSkKICNlbmRpZgorICAgICwgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoc2V0dGluZ3Mt
PmRlZmF1bHRWaWRlb1Bvc3RlclVSTCgpKQogewogfQogCkBAIC0xMjksNiArMTMwLDcgQEAgdm9p
ZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyogc2V0dGluZ3Mp
CiAgICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhtX3Nob3VsZERpc3BsYXlD
YXB0aW9ucyk7CiAgICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25z
KG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMpOwogI2VuZGlmCisgICAgc2V0dGluZ3Mt
PnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9kZWZhdWx0
VmlkZW9Qb3N0ZXJVUkwpKTsKIH0KIAogLy8gV2UgY2FuJ3QgdXNlIFJlZkNvdW50ZWRTdXBwbGVt
ZW50IGJlY2F1c2UgdGhhdCB3b3VsZCB0cnkgdG8gbWFrZSBJbnRlcm5hbFNldHRpbmdzIFJlZkNv
dW50ZWQKQEAgLTQ4Nyw0ICs0ODksMTAgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMsIEV4Y2VwdGkKICAgICBz
ZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVydmFsSW5TZWNvbmRzKTsKIH0K
IAordm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoY29uc3Qg
U3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEludGVybmFsU2V0dGluZ3NH
dWFyZEZvclNldHRpbmdzKCk7CisgICAgc2V0dGluZ3MoKS0+c2V0RGVmYXVsdFZpZGVvUG9zdGVy
VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCBkNjcyNGRhNjliZmM4ZDAxZWFkZDBjNTk5
MWFmOTc3ZGMxMTE4ODI4Li5jMTE4MmIzNjNkM2EyZWZmNzViODFhYmUwNjNkMDBiYTk1YjI4YmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtODIsNiAr
ODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnM7CiAg
ICAgICAgIGJvb2wgbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uczsKICNlbmRpZgorICAg
ICAgICBTdHJpbmcgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkw7CiAgICAgfTsKIAogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEludGVybmFsU2V0dGluZ3M+IGNyZWF0ZShQYWdlKiBwYWdlKQpAQCAtMTI2
LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1D
b250cm9sVUlFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sIGVu
YWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFs
KGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0
RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxTZXR0aW5ncyhQYWdlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAppbmRleCA1ZGRiMGFlNzNh
ZTM0MTgwNDYxZmQwMTZhYjc1ZmFlZWMzMzEzYzE0Li5hZTlmMzZkMzU0YzM4YTRiYjM5MzY4MDU3
OTk5ZmI2ZmJlM2EwNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5pZGwKQEAgLTU5LDQgKzU5LDUgQEAKICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeShpbiBET01TdHJpbmcgcG9saWN5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lk
IHNldEltYWdlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGluIGRvdWJsZSBpbnRlcnZhbElu
U2Vjb25kcykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Q
b3N0ZXJVUkwoaW4gRE9NU3RyaW5nIHBvc3RlcikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDRiNjgxMjNkMDdlZTdhOTM0MmY5ZWY2MmY1NzYxYmVlMzBmNTJjNDYuLjc3YTlmNDY3
OTRmYjU3OTNmZjY2MWZkYjdlYWRlMjgwYWM0MjQyODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMy0wMi0yMCAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IEFkZCB0aGUgZGVmYXVsdCB2aWRlbyBwb3N0ZXIgaWYgaXQgZG9lc24ndCBleGlzdCBpbiB2aWRl
byB0YWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MDI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
bWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRp
YS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTE5
ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbTmV3IE11bHRpY29s
dW1uXSBNYWtlIGxheWVycyBwYWludCBwcm9wZXJseSBpbiBjb2x1bW5zLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY3ZjBmYTVjOGE1N2IwNTUzNmU0ZWVjOWVhNjUwNTgxNzE0NWViZDAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzIEBACitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1kZWZhdWx0LXBvc3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMjM5MGE2MGUxNmQ5MjMyZTc5ODQ3
ZjlmYjhjZGVhNDY0NjBhNzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB2YXIgZGVmYXVsdF9w
b3N0ZXIgPSAiYWJvdXQ6YmxhbmsiOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGRlZmF1bHRfcG9zdGVyKTsKKyAgICBhZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcG9zdGVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInZpZGVvLW5vLXBvc3RlciIpLmdldEF0dHJpYnV0ZU5vZGUoInBvc3RlciIp
OworICAgICAgaWYgKHBvc3RlcikgeworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0KKyAgICAgICAgICAgICAgcG9zdGVyLnZh
bHVlID09IGRlZmF1bHRfcG9zdGVyID8gIlBBU1MiIDogIkZBSUwiOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlu
bmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgYXR0cmlidXRlIGlzIG51bGwiOworICAgICAgfQorICAg
ICAgcG9zdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLWhhcy1wb3N0ZXIiKS5n
ZXRBdHRyaWJ1dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQg
PQorICAgICAgICAgICAgICBwb3N0ZXIudmFsdWUgPT0gImNvbnRlbnQvYWJlLnBuZyIgPyAiUEFT
UyIgOiAiRkFJTDogcG9zdGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0
ID0gIkZBSUw6IHBvc3RlciBhdHRyaWJ1dGUgaXMgbnVsbCI7CisgICAgICB9CisKKyAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIGZhbHNlKTsKKyAgfQorCis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0icmVzdWx0LW5vLXBvc3RlciI+PC9wcmU+Cis8cHJl
IGlkPSJyZXN1bHQtaGFzLXBvc3RlciI+PC9wcmU+Cis8dmlkZW8gaWQ9InZpZGVvLW5vLXBvc3Rl
ciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwcmVsb2FkPSJub25lIiAvPgorPHZpZGVvIGlkPSJ2
aWRlby1oYXMtcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHBvc3Rlcj0iY29udGVudC9h
YmUucG5nIiBwcmVsb2FkPSJub25lIiAvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY3ZjBmYTVjOGE1N2IwNTUzNmU0ZWVjOWVhNjUwNTgxNzE0NWViZDAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwgYi9MYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5MWFhOTVj
YTAxMGQyMWQ4MmIyMDg1OWM1YTc0MTA2MjU0MzEzZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5odG1sCkBAIC0wLDAgKzEsMzQg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcG9z
dGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLW5vLXBvc3RlciIpLmdldEF0dHJp
YnV0ZU5vZGUoInBvc3RlciIpOworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPQorICAgICAgICAgIHBvc3RlciA/ICJGQUlMIDogcG9z
dGVyIHdhcyBhZGRlZC4iIDogIlBBU1MiOworICAgICAgcG9zdGVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInZpZGVvLWhhcy1wb3N0ZXIiKS5nZXRBdHRyaWJ1dGVOb2RlKCJwb3N0ZXIiKTsK
KyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPQorICAgICAgICAgICAgICBwb3N0ZXIudmFs
dWUgPT0gImNvbnRlbnQvYWJlLnBuZyIgPyAiUEFTUyIgOiAiRkFJTDogcG9zdGVyIHdhcyBjaGFu
Z2VkIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IHBvc3RlciBhdHRyaWJ1dGUg
aXMgbnVsbCI7CisgICAgICB9CisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9
LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9InJl
c3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1wb3N0ZXIiPjwvcHJl
PgorPHZpZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcHJl
bG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBvc3RlciIgc3JjPSJjb250ZW50
L3Rlc3QubXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJlbG9hZD0ibm9uZSIgLz4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189368</attachid>
            <date>2013-02-20 13:48:34 -0800</date>
            <delta_ts>2013-02-21 11:19:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130220134456.patch</filename>
            <type>text/plain</type>
            <size>10633</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E5ZWM1NDAyZjI5YTZl
NjViYmI4MmUxNDc3NmEzYjJhOTgyZjU4Yi4uZjVkNDk4Mzc1MTJkNjk4OWMzN2ZkMzk3YjJiNjNi
ZDY1M2ZjZDlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAyLTIwICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEFuZHJvaWQgd2ViIHZp
ZXcgYXBwbGljYXRpb24gY291bGQgcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIgZm9yCisgICAg
ICAgIGEgdmlkZW8gdGhhdCBkb2Vzbid0IGhhdmUgdGhlIHBvc3RlciBhdHRyaWJ1dGUuCisKKyAg
ICAgICAgVG8gcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIsIHRoZSBhcHBsaWNhdGlvbiBtdXN0
IHNldAorICAgICAgICBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZyBhbmQgcmV0dXJuIHRo
ZSBpbWFnZSBpbiB0aGUgcmVzcG9uc2Ugb2YKKyAgICAgICAgdGhhdCBVUkwuCisKKyAgICAgICAg
VGVzdHM6IG1lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1l
ZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRh
Y2gpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaW46CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJh
Y2t1cDo6QmFja3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1
cDo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldERl
ZmF1bHRWaWRlb1Bvc3RlclVSTCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKEJhY2t1cCk6CisgICAgICAgIChJbnRl
cm5hbFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOgor
CiAyMDEzLTAyLTIwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIGlPUyBkb2VzIG5vdCB1c2UgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggN2NlMjg1Y2I1ODRhNzc3ODZl
NDg1MWI4ODIzMDk0MDFhNDdiNmUxNC4uMzUzZDQyMDgwMTFmYjRkNzhiMGVkZjQ0NDU0ZDEyZTdk
YzVlMTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC00
MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWRlby5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5n
cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgzLDYgKzg0LDExIEBAIHZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAg
ICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hl
ZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKICAgICB9CisgICAgaWYgKCFoYXNBdHRy
aWJ1dGUocG9zdGVyQXR0cikgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkgeworICAgICAgICBL
VVJMIGRlZmF1bHRWaWRlb1Bvc3RlclVSTCA9IGRvY3VtZW50KCktPnNldHRpbmdzKCktPmRlZmF1
bHRWaWRlb1Bvc3RlclVSTCgpOworICAgICAgICBpZiAoIWRlZmF1bHRWaWRlb1Bvc3RlclVSTC5p
c0VtcHR5KCkpCisgICAgICAgICAgICBzZXRBdHRyaWJ1dGUocG9zdGVyQXR0ciwgZGVmYXVsdFZp
ZGVvUG9zdGVyVVJMLnN0cmluZygpKTsKKyAgICB9CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaW4KaW5kZXggNmU3MTVhMjZlOGM2YWQ1OGY3NzQ2YmIyNGIwZmVmODIwNjgyZWY4YS4u
NDI3ZmQ3OTY4NThkNjc2ZWI4NGQ1MmQwMTFmYzllYWVlMmVmYTBiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmluCkBAIC0xODEsMyArMTgxLDYgQEAgdG91Y2hEcmFnRHJvcEVuYWJsZWQgaW5pdGlh
bD1mYWxzZQogdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCBpbml0aWFsPWRlZmF1bHRVbmlmaWVk
VGV4dENoZWNrZXJFbmFibGVkCiAKIGxvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFi
bGVkIGluaXRpYWw9ZmFsc2UKKworIyBTb21lIGFwcHMgY291bGQgaGF2ZSBhIGRlZmF1bHQgdmlk
ZW8gcG9zdGVyIGlmIGl0IGlzIG5vdCBzZXQuCitkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgdHlwZT1L
VVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCAx
MjYyYWVmNWYwM2Y2OGI4ZWM2YjRiNmZlMDE2ZTM1MWJjNTVlZjUwLi4yNDhkNmRiMmE4MzRhMDc5
M2M2ZmFlYWFkMDYwNGRhZWI3MTg4YjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJMb2NhbGVUb1Nj
cmlwdE1hcHBpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC05NCw2ICs5NSw3IEBAIEludGVy
bmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAsIG1f
c2hvdWxkRGlzcGxheUNhcHRpb25zKHNldHRpbmdzLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKSkK
ICAgICAsIG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoc2V0dGluZ3MtPnNob3VsZERp
c3BsYXlUZXh0RGVzY3JpcHRpb25zKCkpCiAjZW5kaWYKKyAgICAsIG1fZGVmYXVsdFZpZGVvUG9z
dGVyVVJMKHNldHRpbmdzLT5kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoKSkKIHsKIH0KIApAQCAtMTI5
LDYgKzEzMSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0
dGluZ3MqIHNldHRpbmdzKQogICAgIHNldHRpbmdzLT5zZXRTaG91bGREaXNwbGF5Q2FwdGlvbnMo
bV9zaG91bGREaXNwbGF5Q2FwdGlvbnMpOwogICAgIHNldHRpbmdzLT5zZXRTaG91bGREaXNwbGF5
VGV4dERlc2NyaXB0aW9ucyhtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKTsKICNlbmRp
ZgorICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsIG1fZGVmYXVsdFZpZGVvUG9zdGVyVVJMKSk7CiB9CiAKIC8vIFdlIGNhbid0IHVzZSBS
ZWZDb3VudGVkU3VwcGxlbWVudCBiZWNhdXNlIHRoYXQgd291bGQgdHJ5IHRvIG1ha2UgSW50ZXJu
YWxTZXR0aW5ncyBSZWZDb3VudGVkCkBAIC00ODcsNCArNDkwLDEwIEBAIHZvaWQgSW50ZXJuYWxT
ZXR0aW5nczo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsSW5TZWNvbmRz
LCBFeGNlcHRpCiAgICAgc2V0dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZh
bEluU2Vjb25kcyk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0RGVmYXVsdFZpZGVv
UG9zdGVyVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJ
bnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOworICAgIHNldHRpbmdzKCktPnNldERl
ZmF1bHRWaWRlb1Bvc3RlclVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5kZXggZDY3MjRkYTY5
YmZjOGQwMWVhZGQwYzU5OTFhZjk3N2RjMTExODgyOC4uYzExODJiMzYzZDNhMmVmZjc1YjgxYWJl
MDYzZDAwYmE5NWIyOGJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgICAgICBib29sIG1fc2hvdWxkRGlz
cGxheUNhcHRpb25zOwogICAgICAgICBib29sIG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlv
bnM7CiAjZW5kaWYKKyAgICAgICAgU3RyaW5nIG1fZGVmYXVsdFZpZGVvUG9zdGVyVVJMOwogICAg
IH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnRlcm5hbFNldHRpbmdzPiBjcmVhdGUoUGFn
ZSogcGFnZSkKQEAgLTEyNiw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYW5nQXR0
cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChib29sKTsKICAgICB2b2lkIHNldEltYWdl
c0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChjb25zdCBTdHJpbmcmIHVybCwg
RXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGlu
Z3MoUGFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwK
aW5kZXggNWRkYjBhZTczYWUzNDE4MDQ2MWZkMDE2YWI3NWZhZWVjMzMxM2MxNC4uYWU5ZjM2ZDM1
NGMzOGE0YmIzOTM2ODA1Nzk5OWZiNmZiZTNhMDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC01OSw0ICs1OSw1IEBACiAgICAgdm9pZCBzZXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3koaW4gRE9NU3RyaW5nIHBvbGljeSkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChpbiBk
b3VibGUgaW50ZXJ2YWxJblNlY29uZHMpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIHZvaWQg
c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGluIERPTVN0cmluZyBwb3N0ZXIpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YjY4MTIzZDA3ZWU3YTkzNDJmOWVmNjJmNTc2MWJlZTMw
ZjUyYzQ2Li43N2E5ZjQ2Nzk0ZmI1NzkzZmY2NjFmZGI3ZWFkZTI4MGFjNDI0Mjg5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTMtMDItMjAgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBBZGQgdGhlIGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGRvZXNu
J3QgZXhpc3QgaW4gdmlkZW8gdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTAyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIG1lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRtbDogQWRkZWQu
CisgICAgICAgICogbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5odG1sOiBBZGRl
ZC4KKwogMjAxMy0wMi0xOSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW05ldyBNdWx0aWNvbHVtbl0gTWFrZSBsYXllcnMgcGFpbnQgcHJvcGVybHkgaW4gY29sdW1u
cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mN2YwZmE1YzhhNTdiMDU1MzZlNGVlYzllYTY1MDU4MTcxNDVl
YmQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1w
b3N0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorUEFTUworUEFTUworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzIzOTBh
NjBlMTZkOTIzMmU3OTg0N2Y5ZmI4Y2RlYTQ2NDYwYTczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRtbApAQCAtMCwwICsxLDQxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgfQorCisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgdmFyIGRlZmF1bHRfcG9zdGVyID0gImFib3V0OmJsYW5rIjsKKyAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChkZWZhdWx0X3Bvc3Rlcik7Cisg
ICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHBvc3Rl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1uby1wb3N0ZXIiKS5nZXRBdHRyaWJ1
dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9CisgICAgICAg
ICAgICAgIHBvc3Rlci52YWx1ZSA9PSBkZWZhdWx0X3Bvc3RlciA/ICJQQVNTIiA6ICJGQUlMIjsK
KyAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIGF0dHJpYnV0ZSBpcyBudWxs
IjsKKyAgICAgIH0KKyAgICAgIHBvc3RlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRl
by1oYXMtcG9zdGVyIikuZ2V0QXR0cmlidXRlTm9kZSgicG9zdGVyIik7CisgICAgICBpZiAocG9z
dGVyKSB7CisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9z
dGVyIikuaW5uZXJUZXh0ID0KKyAgICAgICAgICAgICAgcG9zdGVyLnZhbHVlID09ICJjb250ZW50
L2FiZS5wbmciID8gIlBBU1MiIDogIkZBSUw6IHBvc3RlciB3YXMgY2hhbmdlZCI7CisgICAgICB9
IGVsc2UgeworICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBv
c3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgYXR0cmlidXRlIGlzIG51bGwiOworICAg
ICAgfQorCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCBmYWxzZSk7Cisg
IH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9InJlc3VsdC1uby1wb3N0
ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1wb3N0ZXIiPjwvcHJlPgorPHZpZGVvIGlk
PSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcHJlbG9hZD0ibm9uZSIg
Lz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBw
b3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJlbG9hZD0ibm9uZSIgLz4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVy
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2YwZmE1YzhhNTdiMDU1MzZlNGVlYzllYTY1MDU4
MTcxNDVlYmQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8t
ZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorUEFTUworUEFTUwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5o
dG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45OTFhYTk1Y2EwMTBkMjFkODJiMjA4NTljNWE3NDEwNjI1NDMxM2RhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRt
bApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgorICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgfQorCisgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7CisgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkg
eworICAgICAgdmFyIHBvc3RlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1uby1w
b3N0ZXIiKS5nZXRBdHRyaWJ1dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0KKyAgICAgICAgICBwb3N0
ZXIgPyAiRkFJTCA6IHBvc3RlciB3YXMgYWRkZWQuIiA6ICJQQVNTIjsKKyAgICAgIHBvc3RlciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1oYXMtcG9zdGVyIikuZ2V0QXR0cmlidXRl
Tm9kZSgicG9zdGVyIik7CisgICAgICBpZiAocG9zdGVyKSB7CisgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0KKyAgICAgICAg
ICAgICAgcG9zdGVyLnZhbHVlID09ICJjb250ZW50L2FiZS5wbmciID8gIlBBU1MiIDogIkZBSUw6
IHBvc3RlciB3YXMgY2hhbmdlZCI7CisgICAgICB9IGVsc2UgeworICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBw
b3N0ZXIgYXR0cmlidXRlIGlzIG51bGwiOworICAgICAgfQorICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgfSwgZmFsc2UpOworICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cHJlIGlkPSJyZXN1bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUgaWQ9InJlc3VsdC1o
YXMtcG9zdGVyIj48L3ByZT4KKzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVyIiBzcmM9ImNvbnRl
bnQvdGVzdC5tcDQiIHByZWxvYWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZpZGVvLWhhcy1wb3N0
ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2FiZS5wbmciIHByZWxv
YWQ9Im5vbmUiIC8+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189562</attachid>
            <date>2013-02-21 11:19:08 -0800</date>
            <delta_ts>2013-02-21 14:05:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130221111529.patch</filename>
            <type>text/plain</type>
            <size>11719</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E5ZWM1NDAyZjI5YTZl
NjViYmI4MmUxNDc3NmEzYjJhOTgyZjU4Yi4uZmJiNzg4Y2E0NjBlOGFkMTA2YjRhYzAzNTQyNjAz
NTlmNTYyMjNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTIxICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRhY2gpOgorICAgICAgICAqIHBh
Z2UvU2V0dGluZ3MuaW46CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaDoKKyAgICAgICAgKEJhY2t1cCk6CisgICAgICAgIChJbnRlcm5hbFNldHRpbmdzKToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOgorCiAyMDEzLTAyLTIwICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIGlPUyBkb2VzIG5v
dCB1c2UgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKaW5kZXggN2NlMjg1Y2I1ODRhNzc3ODZlNDg1MWI4ODIzMDk0MDFhNDdi
NmUxNC4uMzUzZDQyMDgwMTFmYjRkNzhiMGVkZjQ0NDU0ZDEyZTdkYzVlMTRhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTgzLDYgKzg0LDExIEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6YXR0
YWNoKCkKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgICAgICB0b1JlbmRlckltYWdl
KHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2Fk
ZXItPmltYWdlKCkpOyAKICAgICB9CisgICAgaWYgKCFoYXNBdHRyaWJ1dGUocG9zdGVyQXR0cikg
JiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkgeworICAgICAgICBLVVJMIGRlZmF1bHRWaWRlb1Bv
c3RlclVSTCA9IGRvY3VtZW50KCktPnNldHRpbmdzKCktPmRlZmF1bHRWaWRlb1Bvc3RlclVSTCgp
OworICAgICAgICBpZiAoIWRlZmF1bHRWaWRlb1Bvc3RlclVSTC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBzZXRBdHRyaWJ1dGUocG9zdGVyQXR0ciwgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLnN0cmlu
ZygpKTsKKyAgICB9CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggNmU3
MTVhMjZlOGM2YWQ1OGY3NzQ2YmIyNGIwZmVmODIwNjgyZWY4YS4uNDI3ZmQ3OTY4NThkNjc2ZWI4
NGQ1MmQwMTFmYzllYWVlMmVmYTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCkBAIC0xODEs
MyArMTgxLDYgQEAgdG91Y2hEcmFnRHJvcEVuYWJsZWQgaW5pdGlhbD1mYWxzZQogdW5pZmllZFRl
eHRDaGVja2VyRW5hYmxlZCBpbml0aWFsPWRlZmF1bHRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVk
CiAKIGxvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkIGluaXRpYWw9ZmFsc2UK
KworIyBTb21lIGFwcHMgY291bGQgaGF2ZSBhIGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGlz
IG5vdCBzZXQuCitkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgdHlwZT1LVVJMCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCAxMjYyYWVmNWYwM2Y2OGI4ZWM2
YjRiNmZlMDE2ZTM1MWJjNTVlZjUwLi5hZWEyOTdkN2M2Y2U3NjQyMzlhMmE3NDljZTkyMzM4ZjIx
NmU4YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAK
QEAgLTk0LDYgKzk0LDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGlu
Z3MqIHNldHRpbmdzKQogICAgICwgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMoc2V0dGluZ3MtPnNo
b3VsZERpc3BsYXlDYXB0aW9ucygpKQogICAgICwgbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0
aW9ucyhzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoKSkKICNlbmRpZgor
ICAgICwgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoc2V0dGluZ3MtPmRlZmF1bHRWaWRlb1Bvc3Rl
clVSTCgpKQogewogfQogCkBAIC0xMjksNiArMTMwLDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdz
OjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgc2V0dGluZ3MtPnNl
dFNob3VsZERpc3BsYXlDYXB0aW9ucyhtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyk7CiAgICAgc2V0
dGluZ3MtPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKG1fc2hvdWxkRGlzcGxheVRl
eHREZXNjcmlwdGlvbnMpOwogI2VuZGlmCisgICAgc2V0dGluZ3MtPnNldERlZmF1bHRWaWRlb1Bv
c3RlclVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwpKTsK
IH0KIAogLy8gV2UgY2FuJ3QgdXNlIFJlZkNvdW50ZWRTdXBwbGVtZW50IGJlY2F1c2UgdGhhdCB3
b3VsZCB0cnkgdG8gbWFrZSBJbnRlcm5hbFNldHRpbmdzIFJlZkNvdW50ZWQKQEAgLTQ4Nyw0ICs0
ODksMTAgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWxJblNlY29uZHMsIEV4Y2VwdGkKICAgICBzZXR0aW5ncygpLT5zZXRNaW5E
T01UaW1lckludGVydmFsKGludGVydmFsSW5TZWNvbmRzKTsKIH0KIAordm9pZCBJbnRlcm5hbFNl
dHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7
CisgICAgc2V0dGluZ3MoKS0+c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaAppbmRleCBkNjcyNGRhNjliZmM4ZDAxZWFkZDBjNTk5MWFmOTc3ZGMxMTE4ODI4Li5j
MTE4MmIzNjNkM2EyZWZmNzViODFhYmUwNjNkMDBiYTk1YjI4YmVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGJvb2wgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9zaG91
bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uczsKICNlbmRpZgorICAgICAgICBTdHJpbmcgbV9kZWZh
dWx0VmlkZW9Qb3N0ZXJVUkw7CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludGVy
bmFsU2V0dGluZ3M+IGNyZWF0ZShQYWdlKiBwYWdlKQpAQCAtMTI2LDYgKzEyNyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJv
b2wpOwogICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZhbElu
U2Vjb25kcywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0RGVmYXVsdFZpZGVvUG9zdGVy
VVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgSW50ZXJuYWxTZXR0aW5ncyhQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmlkbAppbmRleCA1ZGRiMGFlNzNhZTM0MTgwNDYxZmQwMTZhYjc1
ZmFlZWMzMzEzYzE0Li5hZTlmMzZkMzU0YzM4YTRiYjM5MzY4MDU3OTk5ZmI2ZmJlM2EwNTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTU5LDQg
KzU5LDUgQEAKICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShpbiBET01TdHJpbmcg
cG9saWN5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQo
aW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldE1p
bmltdW1UaW1lckludGVydmFsKGluIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcykgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoaW4gRE9NU3Ry
aW5nIHBvc3RlcikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKaW5kZXggMWVhN2UwZDcxZDY1NmE4MTNhNGMzMWE3YmRhOWIxNzQ5NmQ0YmI2Mi4uMGQ1Mjc0
OGViNDQxNzJlNjQzNDQ4NTA5OWMyY2FjNTA3ZjU4MjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCkBAIC0yNjIsNiArMjYyLDcgQEAgX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50c0Qx
RXY7CiBfWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjEyYWRkVXNlclNo
ZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRzRUVFOwogX1pON1dl
YkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xNGFkZEF1dGhvclNoZWV0RU4zV1RG
MTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRzRUVFOwogX1pON1dlYkNvcmU0S1VS
TDEwaW52YWxpZGF0ZUV2OworX1pON1dlYkNvcmU0S1VSTEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5n
VGFnRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjZXZWJLaXQyMldlYkd0a0V4dGVuc2lvbk1hbmFnZXIx
MGluaXRpYWxpemVFUEsxNE9wYXF1ZVdLQnVuZGxlUEt2OwogX1pONldlYktpdDIyV2ViR3RrRXh0
ZW5zaW9uTWFuYWdlcjZzaGFyZWRFdjsKIF9aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsMTFpc1VuZGVyVGVzdEV2OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRiNjgxMjNkMDdlZTdhOTM0MmY5ZWY2
MmY1NzYxYmVlMzBmNTJjNDYuLjE2MzIyZDIwYWUzZDI0MjY5OTlmNDJiYTE3MGNlNGQ4YmMwNDI3
NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMi0yMSAgVGFvIEJhaSAgPG1pY2hhZWxi
YWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB0aGUgZGVmYXVsdCB2aWRlbyBwb3N0ZXIg
aWYgaXQgZG9lc24ndCBleGlzdCBpbiB2aWRlbyB0YWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVy
Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTE5ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNv
bT4KIAogICAgICAgICBbTmV3IE11bHRpY29sdW1uXSBNYWtlIGxheWVycyBwYWludCBwcm9wZXJs
eSBpbiBjb2x1bW5zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVs
dC1wb3N0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1w
b3N0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZjBmYTVjOGE1N2IwNTUzNmU0ZWVjOWVh
NjUwNTgxNzE0NWViZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitQQVNTCitQQVNT
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk3ZmQzYjVhOTA0MjA5MzI5MThkZDVkOTI1ZDdkZDkxNGM4MmYzMDUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCkBAIC0w
LDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Cisg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICB2YXIgZGVmYXVsdF9wb3N0ZXIgPSAiYWJvdXQ6YmxhbmsiOworICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGRlZmF1bHRf
cG9zdGVyKTsKKyAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAg
ICB2YXIgcG9zdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLW5vLXBvc3RlciIp
LmdldEF0dHJpYnV0ZU5vZGUoInBvc3RlciIpOworICAgICAgaWYgKHBvc3RlcikgeworICAgICAg
ICBpZiAocG9zdGVyLnZhbHVlKQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIlBBU1MiOworICAgICAgICBlbHNlCisgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRl
eHQgPSAiRkFJTCI7CisgICAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIGF0dHJpYnV0
ZSBpcyBudWxsIjsKKworICAgICAgcG9zdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZp
ZGVvLWhhcy1wb3N0ZXIiKS5nZXRBdHRyaWJ1dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlmIChw
b3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3Rlci52YWx1ZSA9PSAiY29udGVudC9hYmUucG5nIikK
KyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5p
bm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVy
IHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIGF0dHJp
YnV0ZSBpcyBudWxsIjsKKworICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwg
ZmFsc2UpOworICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJyZXN1
bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUgaWQ9InJlc3VsdC1oYXMtcG9zdGVyIj48L3ByZT4K
Kzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHByZWxv
YWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZpZGVvLWhhcy1wb3N0ZXIiIHNyYz0iY29udGVudC90
ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2FiZS5wbmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZh
dWx0LXBvc3Rlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZh
dWx0LXBvc3Rlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRl
ZWM5ZWE2NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlh
L3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BB
U1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVs
dC1wb3N0ZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDY5ZGU4Zjc1Y2RjZjRkMGUyMTA0NGQ4MmM0NThjZTQyYmUwMGEw
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQt
cG9zdGVyLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgIH0KKwor
ICBpZiAod2luZG93LmludGVybmFscykgeworICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBm
dW5jdGlvbigpIHsKKyAgICAgIHZhciBwb3N0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dmlkZW8tbm8tcG9zdGVyIikuZ2V0QXR0cmlidXRlTm9kZSgicG9zdGVyIik7CisgICAgICBpZiAo
cG9zdGVyKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3Rl
ciIpLmlubmVyVGV4dCA9ICJGQUlMIDogcG9zdGVyIHdhcyBhZGRlZC4iOworICAgICAgZWxzZQor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVy
VGV4dCA9ICJQQVNTIjsKKworICAgICAgcG9zdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InZpZGVvLWhhcy1wb3N0ZXIiKS5nZXRBdHRyaWJ1dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlm
IChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3Rlci52YWx1ZSA9PSAiY29udGVudC9hYmUucG5n
IikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIi
KS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9z
dGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIGF0
dHJpYnV0ZSBpcyBudWxsIjsKKworICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
fSwgZmFsc2UpOworICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJy
ZXN1bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUgaWQ9InJlc3VsdC1oYXMtcG9zdGVyIj48L3By
ZT4KKzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHBy
ZWxvYWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZpZGVvLWhhcy1wb3N0ZXIiIHNyYz0iY29udGVu
dC90ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2FiZS5wbmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
MGJjZDA2OGFkNDcwZTRmZTlhMmM4MjIzODg2Mjc2MmExNzg2NThmZC4uMzU0ZGYyNmIzYWE1NDA5
OTg0MzM2M2E3ZDBiZjBhOWMxZDZhMWY3OCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAyLTIxICBUYW8gQmFpICA8bWljaGFlbGJh
aUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0IHZpZGVvIHBvc3RlciBp
ZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
OgorCiAyMDEzLTAyLTE5ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189596</attachid>
            <date>2013-02-21 14:02:03 -0800</date>
            <delta_ts>2013-02-22 14:29:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130221135823.patch</filename>
            <type>text/plain</type>
            <size>12096</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E5ZWM1NDAyZjI5YTZl
NjViYmI4MmUxNDc3NmEzYjJhOTgyZjU4Yi4uZjRjYmNiNTE1OTM3YThiMTc5MzdlMjI2MTI4NzQ1
OWJkMjVhOWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTIxICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRhY2gpOiBBZGQgcG9zdGVyIGlm
IGl0IGRpZG4ndCBleGlzdCBhbmQgdGhlIGRlZmF1bHQgcG9zdGVyIHByb3ZpZGVkLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuaW46IEFkZCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZy4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOiBzdXBwb3J0IGJhY2t1cCBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpC
YWNrdXA6OnJlc3RvcmVUbyk6IHN1cHBvcnQgcmVzdG9yZSBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwu
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0
ZXJVUkwpOiBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChCYWNrdXApOiBz
dXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChJbnRlcm5hbFNl
dHRpbmdzKTogQWRkIHNldERlZmF1bHRWaWRvZVBvc3RlclVSTCBtZXRob2QuCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDogQWRkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TCBmb3IgdGVzdCBwdXJwb3NlLgorCiAyMDEzLTAyLTIwICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIGlPUyBkb2VzIG5vdCB1c2UgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5k
ZXggN2NlMjg1Y2I1ODRhNzc3ODZlNDg1MWI4ODIzMDk0MDFhNDdiNmUxNC4uMzUzZDQyMDgwMTFm
YjRkNzhiMGVkZjQ0NDU0ZDEyZTdkYzVlMTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgz
LDYgKzg0LDExIEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgaWYg
KHJlbmRlcmVyKCkpCiAgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFn
ZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKICAg
ICB9CisgICAgaWYgKCFoYXNBdHRyaWJ1dGUocG9zdGVyQXR0cikgJiYgZG9jdW1lbnQoKS0+c2V0
dGluZ3MoKSkgeworICAgICAgICBLVVJMIGRlZmF1bHRWaWRlb1Bvc3RlclVSTCA9IGRvY3VtZW50
KCktPnNldHRpbmdzKCktPmRlZmF1bHRWaWRlb1Bvc3RlclVSTCgpOworICAgICAgICBpZiAoIWRl
ZmF1bHRWaWRlb1Bvc3RlclVSTC5pc0VtcHR5KCkpCisgICAgICAgICAgICBzZXRBdHRyaWJ1dGUo
cG9zdGVyQXR0ciwgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLnN0cmluZygpKTsKKyAgICB9CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbiBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggNmU3MTVhMjZlOGM2YWQ1OGY3NzQ2
YmIyNGIwZmVmODIwNjgyZWY4YS4uNDI3ZmQ3OTY4NThkNjc2ZWI4NGQ1MmQwMTFmYzllYWVlMmVm
YTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCkBAIC0xODEsMyArMTgxLDYgQEAgdG91Y2hE
cmFnRHJvcEVuYWJsZWQgaW5pdGlhbD1mYWxzZQogdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCBp
bml0aWFsPWRlZmF1bHRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkCiAKIGxvZ3NQYWdlTWVzc2Fn
ZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkIGluaXRpYWw9ZmFsc2UKKworIyBTb21lIGFwcHMgY291
bGQgaGF2ZSBhIGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGlzIG5vdCBzZXQuCitkZWZhdWx0
VmlkZW9Qb3N0ZXJVUkwgdHlwZT1LVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAppbmRleCAxMjYyYWVmNWYwM2Y2OGI4ZWM2YjRiNmZlMDE2ZTM1MWJjNTVl
ZjUwLi5hZWEyOTdkN2M2Y2U3NjQyMzlhMmE3NDljZTkyMzM4ZjIxNmU4YzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTk0LDYgKzk0LDcgQEAg
SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGluZ3MqIHNldHRpbmdzKQogICAg
ICwgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMoc2V0dGluZ3MtPnNob3VsZERpc3BsYXlDYXB0aW9u
cygpKQogICAgICwgbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhzZXR0aW5ncy0+c2hv
dWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoKSkKICNlbmRpZgorICAgICwgbV9kZWZhdWx0Vmlk
ZW9Qb3N0ZXJVUkwoc2V0dGluZ3MtPmRlZmF1bHRWaWRlb1Bvc3RlclVSTCgpKQogewogfQogCkBA
IC0xMjksNiArMTMwLDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVU
byhTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlDYXB0
aW9ucyhtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyk7CiAgICAgc2V0dGluZ3MtPnNldFNob3VsZERp
c3BsYXlUZXh0RGVzY3JpcHRpb25zKG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMpOwog
I2VuZGlmCisgICAgc2V0dGluZ3MtPnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChLVVJMKFBhcnNl
ZFVSTFN0cmluZywgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwpKTsKIH0KIAogLy8gV2UgY2FuJ3Qg
dXNlIFJlZkNvdW50ZWRTdXBwbGVtZW50IGJlY2F1c2UgdGhhdCB3b3VsZCB0cnkgdG8gbWFrZSBJ
bnRlcm5hbFNldHRpbmdzIFJlZkNvdW50ZWQKQEAgLTQ4Nyw0ICs0ODksMTAgQEAgdm9pZCBJbnRl
cm5hbFNldHRpbmdzOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWxJblNl
Y29uZHMsIEV4Y2VwdGkKICAgICBzZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGlu
dGVydmFsSW5TZWNvbmRzKTsKIH0KIAordm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0
VmlkZW9Qb3N0ZXJVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CisgICAgc2V0dGluZ3MoKS0+
c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCBkNjcy
NGRhNjliZmM4ZDAxZWFkZDBjNTk5MWFmOTc3ZGMxMTE4ODI4Li5jMTE4MmIzNjNkM2EyZWZmNzVi
ODFhYmUwNjNkMDBiYTk1YjI4YmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9zaG91
bGREaXNwbGF5Q2FwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNwbGF5VGV4dERlc2Ny
aXB0aW9uczsKICNlbmRpZgorICAgICAgICBTdHJpbmcgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkw7
CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludGVybmFsU2V0dGluZ3M+IGNyZWF0
ZShQYWdlKiBwYWdlKQpAQCAtMTI2LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExh
bmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0
SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNl
dE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcywgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgc2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGNvbnN0IFN0cmluZyYg
dXJsLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxT
ZXR0aW5ncyhQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmlkbAppbmRleCA1ZGRiMGFlNzNhZTM0MTgwNDYxZmQwMTZhYjc1ZmFlZWMzMzEzYzE0Li5hZTlm
MzZkMzU0YzM4YTRiYjM5MzY4MDU3OTk5ZmI2ZmJlM2EwNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTU5LDQgKzU5LDUgQEAKICAgICB2b2lk
IHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShpbiBET01TdHJpbmcgcG9saWN5KSByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVk
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFs
KGluIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAg
dm9pZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoaW4gRE9NU3RyaW5nIHBvc3RlcikgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggMWVhN2UwZDcx
ZDY1NmE4MTNhNGMzMWE3YmRhOWIxNzQ5NmQ0YmI2Mi4uMGQ1Mjc0OGViNDQxNzJlNjQzNDQ4NTA5
OWMyY2FjNTA3ZjU4MjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0yNjIsNiArMjYy
LDcgQEAgX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50c0QxRXY7CiBfWk43V2ViQ29yZTI4
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjEyYWRkVXNlclNoZWV0RU4zV1RGMTBQYXNzUmVm
UHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRzRUVFOwogX1pON1dlYkNvcmUyOERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24xNGFkZEF1dGhvclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4
U3R5bGVTaGVldENvbnRlbnRzRUVFOwogX1pON1dlYkNvcmU0S1VSTDEwaW52YWxpZGF0ZUV2Owor
X1pON1dlYkNvcmU0S1VSTEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5nVGFnRVJLTjNXVEY2U3RyaW5n
RTsKIF9aTjZXZWJLaXQyMldlYkd0a0V4dGVuc2lvbk1hbmFnZXIxMGluaXRpYWxpemVFUEsxNE9w
YXF1ZVdLQnVuZGxlUEt2OwogX1pONldlYktpdDIyV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjZzaGFy
ZWRFdjsKIF9aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTFpc1VuZGVy
VGVzdEV2OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDRiNjgxMjNkMDdlZTdhOTM0MmY5ZWY2MmY1NzYxYmVlMzBmNTJjNDYu
LjE2MzIyZDIwYWUzZDI0MjY5OTlmNDJiYTE3MGNlNGQ4YmMwNDI3NzggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMy0wMi0yMSAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEFkZCB0aGUgZGVmYXVsdCB2aWRlbyBwb3N0ZXIgaWYgaXQgZG9lc24ndCBleGlz
dCBpbiB2aWRlbyB0YWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBtZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWw6IEFkZGVkLgorCiAy
MDEzLTAyLTE5ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbTmV3
IE11bHRpY29sdW1uXSBNYWtlIGxheWVycyBwYWludCBwcm9wZXJseSBpbiBjb2x1bW5zLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY3ZjBmYTVjOGE1N2IwNTUzNmU0ZWVjOWVhNjUwNTgxNzE0NWViZDAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmNDNmN2VmMTVhYzFl
OWRiZTM1MTY5ZWM2MWI0MTlkN2YzM2FmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICB2YXIg
ZGVmYXVsdF9wb3N0ZXIgPSAiYWJvdXQ6YmxhbmsiOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
dGluZ3Muc2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGRlZmF1bHRfcG9zdGVyKTsKKyAgICBhZGRF
dmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcG9zdGVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLW5vLXBvc3RlciIpLmdldEF0dHJpYnV0ZU5vZGUo
InBvc3RlciIpOworICAgICAgaWYgKHBvc3RlcikgeworICAgICAgICBpZiAocG9zdGVyLnZhbHVl
ID09IGRlZmF1bHRfcG9zdGVyKQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIlBBU1MiOworICAgICAgICBlbHNlCisgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRl
eHQgPSAiRkFJTCI7CisgICAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIGF0dHJpYnV0
ZSBpcyBudWxsIjsKKworICAgICAgcG9zdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZp
ZGVvLWhhcy1wb3N0ZXIiKS5nZXRBdHRyaWJ1dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlmIChw
b3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3Rlci52YWx1ZSA9PSAiY29udGVudC9hYmUucG5nIikK
KyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5p
bm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVy
IHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIGF0dHJp
YnV0ZSBpcyBudWxsIjsKKworICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwg
ZmFsc2UpOworICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJyZXN1
bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUgaWQ9InJlc3VsdC1oYXMtcG9zdGVyIj48L3ByZT4K
Kzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHByZWxv
YWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZpZGVvLWhhcy1wb3N0ZXIiIHNyYz0iY29udGVudC90
ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2FiZS5wbmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZh
dWx0LXBvc3Rlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZh
dWx0LXBvc3Rlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRl
ZWM5ZWE2NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlh
L3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BB
U1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVs
dC1wb3N0ZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDY5ZGU4Zjc1Y2RjZjRkMGUyMTA0NGQ4MmM0NThjZTQyYmUwMGEw
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQt
cG9zdGVyLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgIH0KKwor
ICBpZiAod2luZG93LmludGVybmFscykgeworICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBm
dW5jdGlvbigpIHsKKyAgICAgIHZhciBwb3N0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dmlkZW8tbm8tcG9zdGVyIikuZ2V0QXR0cmlidXRlTm9kZSgicG9zdGVyIik7CisgICAgICBpZiAo
cG9zdGVyKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3Rl
ciIpLmlubmVyVGV4dCA9ICJGQUlMIDogcG9zdGVyIHdhcyBhZGRlZC4iOworICAgICAgZWxzZQor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVy
VGV4dCA9ICJQQVNTIjsKKworICAgICAgcG9zdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InZpZGVvLWhhcy1wb3N0ZXIiKS5nZXRBdHRyaWJ1dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlm
IChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3Rlci52YWx1ZSA9PSAiY29udGVudC9hYmUucG5n
IikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIi
KS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9z
dGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIGF0
dHJpYnV0ZSBpcyBudWxsIjsKKworICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
fSwgZmFsc2UpOworICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJy
ZXN1bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUgaWQ9InJlc3VsdC1oYXMtcG9zdGVyIj48L3By
ZT4KKzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHBy
ZWxvYWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZpZGVvLWhhcy1wb3N0ZXIiIHNyYz0iY29udGVu
dC90ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2FiZS5wbmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
MGJjZDA2OGFkNDcwZTRmZTlhMmM4MjIzODg2Mjc2MmExNzg2NThmZC4uMmIyNTFlZDRjNjVlOGJh
NmMwMzIwNzJiMDYxZjg2MDMyNTQ3YzA4OCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAyLTIxICBUYW8gQmFpICA8bWljaGFlbGJh
aUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0IHZpZGVvIHBvc3RlciBp
ZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
OiBBZGRlZCB0aGUgS1VSTCBjb25zdHJ1Y3RvciBzeW1ib2wuCisKIDIwMTMtMDItMTkgIENsYXVk
aW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IGJ1aWxkIGZpeC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189829</attachid>
            <date>2013-02-22 14:29:54 -0800</date>
            <delta_ts>2013-02-22 14:57:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130222142613.patch</filename>
            <type>text/plain</type>
            <size>13430</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E5ZWM1NDAyZjI5YTZl
NjViYmI4MmUxNDc3NmEzYjJhOTgyZjU4Yi4uZjRjYmNiNTE1OTM3YThiMTc5MzdlMjI2MTI4NzQ1
OWJkMjVhOWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTIxICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRhY2gpOiBBZGQgcG9zdGVyIGlm
IGl0IGRpZG4ndCBleGlzdCBhbmQgdGhlIGRlZmF1bHQgcG9zdGVyIHByb3ZpZGVkLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuaW46IEFkZCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZy4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOiBzdXBwb3J0IGJhY2t1cCBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpC
YWNrdXA6OnJlc3RvcmVUbyk6IHN1cHBvcnQgcmVzdG9yZSBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwu
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0
ZXJVUkwpOiBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChCYWNrdXApOiBz
dXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChJbnRlcm5hbFNl
dHRpbmdzKTogQWRkIHNldERlZmF1bHRWaWRvZVBvc3RlclVSTCBtZXRob2QuCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDogQWRkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TCBmb3IgdGVzdCBwdXJwb3NlLgorCiAyMDEzLTAyLTIwICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIGlPUyBkb2VzIG5vdCB1c2UgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDY5OWExM2I3YWVkNzc1M2IwYWNmMmNh
NGIzNDU2MDZkMjZiNWVkMmYuLmQ0ZGVjYjRkNzAyNjMzZTI2OTljZGFlNGExOWEzYmFjNzI0YjBj
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMi0yMiAgVGFvIEJh
aSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB0aGUgZGVmYXVsdCB2
aWRlbyBwb3N0ZXIgaWYgaXQgZG9lc24ndCBleGlzdCBpbiB2aWRlbyB0YWcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDI2MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJL
aXRFeHBvcnRzLmRlZi5pbjogZXhwb3J0IEtVUkwgY29uc3RydWN0b3IuCisKIDIwMTMtMDItMTkg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDMzMzguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAppbmRleCA3Y2UyODVjYjU4NGE3Nzc4NmU0ODUxYjg4MjMwOTQwMWE0N2I2
ZTE0Li4zNTNkNDIwODAxMWZiNGQ3OGIwZWRmNDQ0NTRkMTJlN2RjNWUxNGFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAi
U2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtODMsNiArODQsMTEgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphdHRh
Y2goKQogICAgICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRl
ci0+aW1hZ2UoKSk7IAogICAgIH0KKyAgICBpZiAoIWhhc0F0dHJpYnV0ZShwb3N0ZXJBdHRyKSAm
JiBkb2N1bWVudCgpLT5zZXR0aW5ncygpKSB7CisgICAgICAgIEtVUkwgZGVmYXVsdFZpZGVvUG9z
dGVyVVJMID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+ZGVmYXVsdFZpZGVvUG9zdGVyVVJMKCk7
CisgICAgICAgIGlmICghZGVmYXVsdFZpZGVvUG9zdGVyVVJMLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHNldEF0dHJpYnV0ZShwb3N0ZXJBdHRyLCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuc3RyaW5n
KCkpOworICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCA2ZTcx
NWEyNmU4YzZhZDU4Zjc3NDZiYjI0YjBmZWY4MjA2ODJlZjhhLi40MjdmZDc5Njg1OGQ2NzZlYjg0
ZDUyZDAxMWZjOWVhZWUyZWZhMGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTE4MSwz
ICsxODEsNiBAQCB0b3VjaERyYWdEcm9wRW5hYmxlZCBpbml0aWFsPWZhbHNlCiB1bmlmaWVkVGV4
dENoZWNrZXJFbmFibGVkIGluaXRpYWw9ZGVmYXVsdFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQK
IAogbG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQgaW5pdGlhbD1mYWxzZQor
CisjIFNvbWUgYXBwcyBjb3VsZCBoYXZlIGEgZGVmYXVsdCB2aWRlbyBwb3N0ZXIgaWYgaXQgaXMg
bm90IHNldC4KK2RlZmF1bHRWaWRlb1Bvc3RlclVSTCB0eXBlPUtVUkwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IDEyNjJhZWY1ZjAzZjY4YjhlYzZi
NGI2ZmUwMTZlMzUxYmM1NWVmNTAuLmFlYTI5N2Q3YzZjZTc2NDIzOWEyYTc0OWNlOTIzMzhmMjE2
ZThjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApA
QCAtOTQsNiArOTQsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cChTZXR0aW5n
cyogc2V0dGluZ3MpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyhzZXR0aW5ncy0+c2hv
dWxkRGlzcGxheUNhcHRpb25zKCkpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRp
b25zKHNldHRpbmdzLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpKQogI2VuZGlmCisg
ICAgLCBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTChzZXR0aW5ncy0+ZGVmYXVsdFZpZGVvUG9zdGVy
VVJMKCkpCiB7CiB9CiAKQEAgLTEyOSw2ICsxMzAsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6
OkJhY2t1cDo6cmVzdG9yZVRvKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBzZXR0aW5ncy0+c2V0
U2hvdWxkRGlzcGxheUNhcHRpb25zKG1fc2hvdWxkRGlzcGxheUNhcHRpb25zKTsKICAgICBzZXR0
aW5ncy0+c2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMobV9zaG91bGREaXNwbGF5VGV4
dERlc2NyaXB0aW9ucyk7CiAjZW5kaWYKKyAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdFZpZGVvUG9z
dGVyVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTCkpOwog
fQogCiAvLyBXZSBjYW4ndCB1c2UgUmVmQ291bnRlZFN1cHBsZW1lbnQgYmVjYXVzZSB0aGF0IHdv
dWxkIHRyeSB0byBtYWtlIEludGVybmFsU2V0dGluZ3MgUmVmQ291bnRlZApAQCAtNDg3LDQgKzQ4
OSwxMCBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldE1pbmltdW1UaW1lckludGVydmFsKGRv
dWJsZSBpbnRlcnZhbEluU2Vjb25kcywgRXhjZXB0aQogICAgIHNldHRpbmdzKCktPnNldE1pbkRP
TVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWxJblNlY29uZHMpOwogfQogCit2b2lkIEludGVybmFsU2V0
dGluZ3M6OnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0
aW9uQ29kZSYgZWMpCit7CisgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsK
KyAgICBzZXR0aW5ncygpLT5zZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5oCmluZGV4IGQ2NzI0ZGE2OWJmYzhkMDFlYWRkMGM1OTkxYWY5NzdkYzExMTg4MjguLmMx
MTgyYjM2M2QzYTJlZmY3NWI4MWFiZTA2M2QwMGJhOTViMjhiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlDYXB0aW9uczsKICAgICAgICAgYm9vbCBtX3Nob3Vs
ZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOwogI2VuZGlmCisgICAgICAgIFN0cmluZyBtX2RlZmF1
bHRWaWRlb1Bvc3RlclVSTDsKICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW50ZXJu
YWxTZXR0aW5ncz4gY3JlYXRlKFBhZ2UqIHBhZ2UpCkBAIC0xMjYsNiArMTI3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoYm9v
bCk7CiAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsSW5T
ZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJV
UkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzKFBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IDVkZGIwYWU3M2FlMzQxODA0NjFmZDAxNmFiNzVm
YWVlYzMzMTNjMTQuLmFlOWYzNmQzNTRjMzhhNGJiMzkzNjgwNTc5OTlmYjZmYmUzYTA1MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAtNTksNCAr
NTksNSBAQAogICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGluIERPTVN0cmluZyBw
b2xpY3kpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChp
biBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIHZvaWQgc2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwoaW4gZG91YmxlIGludGVydmFsSW5TZWNvbmRzKSByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKKyAgICB2b2lkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChpbiBET01TdHJp
bmcgcG9zdGVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dl
YktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCAyMGE3Y2Ey
ODA4N2E0NThmNjg5NzRmMWYwOTQ0N2QzNDU1ZDI2OTFmLi41MDk3YWMzODMwNDU3NTIyY2NiZjNj
ODhjN2Y3OTlhYzVlZjViN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktp
dC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTM5OCw2ICszOTgsNyBAQCBFWFBPUlRT
CiAgICAgICAgID9zZXRNaW5ET01UaW1lckludGVydmFsQFNldHRpbmdzQFdlYkNvcmVAQFFBRVhO
QFoKICAgICAgICAgP3NldEFwcGxpY2F0aW9uQ2hyb21lTW9kZUBTZXR0aW5nc0BXZWJDb3JlQEBR
QUVYX05AWgogICAgICAgICA/c2V0RE9NUGFzdGVBbGxvd2VkQFNldHRpbmdzQFdlYkNvcmVAQFFB
RVhfTkBaCisgICAgICAgID8/MEtVUkxAV2ViQ29yZUBAUUFFQFc0UGFyc2VkVVJMU3RyaW5nVGFn
QDFAQUJWU3RyaW5nQFdURkBAQFoKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgICAgICA/d29y
a2VyVGhyZWFkQ291bnRAV29ya2VyVGhyZWFkQFdlYkNvcmVAQFNBSVhaCmRpZmYgLS1naXQgYS9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcgppbmRleCAxZWE3ZTBkNzFkNjU2YTgxM2E0YzMxYTdiZGE5YjE3NDk2ZDRiYjYyLi4w
ZDUyNzQ4ZWI0NDE3MmU2NDM0NDg1MDk5YzJjYWM1MDdmNTgyN2U4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKQEAgLTI2Miw2ICsyNjIsNyBAQCBfWk43V2ViQ29yZTE4U3R5bGVTaGVldENvbnRl
bnRzRDFFdjsKIF9aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRV
c2VyU2hlZXRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUU7CiBf
Wk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjE0YWRkQXV0aG9yU2hlZXRF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUU7CiBfWk43V2ViQ29y
ZTRLVVJMMTBpbnZhbGlkYXRlRXY7CitfWk43V2ViQ29yZTRLVVJMQzFFTlNfMThQYXJzZWRVUkxT
dHJpbmdUYWdFUktOM1dURjZTdHJpbmdFOwogX1pONldlYktpdDIyV2ViR3RrRXh0ZW5zaW9uTWFu
YWdlcjEwaW5pdGlhbGl6ZUVQSzE0T3BhcXVlV0tCdW5kbGVQS3Y7CiBfWk42V2ViS2l0MjJXZWJH
dGtFeHRlbnNpb25NYW5hZ2VyNnNoYXJlZEV2OwogX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwxMWlzVW5kZXJUZXN0RXY7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGI2ODEyM2QwN2VlN2E5MzQy
ZjllZjYyZjU3NjFiZWUzMGY1MmM0Ni4uMTYzMjJkMjBhZTNkMjQyNjk5OWY0MmJhMTcwY2U0ZDhi
YzA0Mjc3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAyLTIxICBUYW8gQmFpICA8bWlj
aGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0IHZpZGVvIHBv
c3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWRlZmF1bHQtcG9z
dGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1w
b3N0ZXIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMTkgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtOZXcgTXVsdGljb2x1bW5dIE1ha2UgbGF5ZXJzIHBhaW50IHBy
b3Blcmx5IGluIGNvbHVtbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1k
ZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZh
dWx0LXBvc3Rlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRl
ZWM5ZWE2NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BBU1MK
K1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0
ZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGY0M2Y3ZWYxNWFjMWU5ZGJlMzUxNjllYzYxYjQxOWQ3ZjMzYWY4YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwK
QEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgIH0KKworICBpZiAod2luZG93
LmludGVybmFscykgeworICAgIHZhciBkZWZhdWx0X3Bvc3RlciA9ICJhYm91dDpibGFuayI7Cisg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoZGVm
YXVsdF9wb3N0ZXIpOworICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsK
KyAgICAgIHZhciBwb3N0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8tbm8tcG9z
dGVyIikuZ2V0QXR0cmlidXRlTm9kZSgicG9zdGVyIik7CisgICAgICBpZiAocG9zdGVyKSB7Cisg
ICAgICAgIGlmIChwb3N0ZXIudmFsdWUgPT0gZGVmYXVsdF9wb3N0ZXIpCisgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFT
UyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMIjsKKyAgICAgIH0gZWxzZQorICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9
ICJGQUlMOiBwb3N0ZXIgYXR0cmlidXRlIGlzIG51bGwiOworCisgICAgICBwb3N0ZXIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8taGFzLXBvc3RlciIpLmdldEF0dHJpYnV0ZU5vZGUo
InBvc3RlciIpOworICAgICAgaWYgKHBvc3RlcikgeworICAgICAgICBpZiAocG9zdGVyLnZhbHVl
ID09ICJjb250ZW50L2FiZS5wbmciKQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlu
bmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgd2FzIGNoYW5nZWQiOworICAgICAgfSBlbHNlCisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4
dCA9ICJGQUlMOiBwb3N0ZXIgYXR0cmlidXRlIGlzIG51bGwiOworCisgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwcmUgaWQ9InJlc3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVz
dWx0LWhhcy1wb3N0ZXIiPjwvcHJlPgorPHZpZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0i
Y29udGVudC90ZXN0Lm1wNCIgcHJlbG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFz
LXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIg
cHJlbG9hZD0ibm9uZSIgLz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mN2YwZmE1YzhhNTdiMDU1MzZlNGVlYzllYTY1MDU4MTcxNDVlYmQwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjlkZThmNzVjZGNmNGQw
ZTIxMDQ0ZDgyYzQ1OGNlNDJiZTAwYTAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgfQorCisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHBvc3RlciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1uby1wb3N0ZXIiKS5nZXRBdHRyaWJ1dGVOb2Rl
KCJwb3N0ZXIiKTsKKyAgICAgIGlmIChwb3N0ZXIpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUwgOiBwb3N0ZXIgd2Fz
IGFkZGVkLiI7CisgICAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIlBBU1MiOworCisgICAgICBwb3N0ZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8taGFzLXBvc3RlciIpLmdldEF0dHJpYnV0ZU5v
ZGUoInBvc3RlciIpOworICAgICAgaWYgKHBvc3RlcikgeworICAgICAgICBpZiAocG9zdGVyLnZh
bHVlID09ICJjb250ZW50L2FiZS5wbmciKQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIp
LmlubmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgd2FzIGNoYW5nZWQiOworICAgICAgfSBlbHNlCisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVy
VGV4dCA9ICJGQUlMOiBwb3N0ZXIgYXR0cmlidXRlIGlzIG51bGwiOworCisgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwcmUgaWQ9InJlc3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0i
cmVzdWx0LWhhcy1wb3N0ZXIiPjwvcHJlPgorPHZpZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNy
Yz0iY29udGVudC90ZXN0Lm1wNCIgcHJlbG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8t
aGFzLXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBu
ZyIgcHJlbG9hZD0ibm9uZSIgLz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwYmNkMDY4YWQ0NzBlNGZlOWEyYzgyMjM4ODYyNzYyYTE3
ODY1OGZkLi4yYjI1MWVkNGM2NWU4YmE2YzAzMjA3MmIwNjFmODYwMzI1NDdjMDg4IDEwMDY0NAot
LS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDIt
MjEgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgdGhl
IGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGRvZXNuJ3QgZXhpc3QgaW4gdmlkZW8gdGFnCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAyNjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IEFkZGVkIHRoZSBLVVJMIGNvbnN0cnVjdG9yIHN5bWJv
bC4KKwogMjAxMy0wMi0xOSAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189839</attachid>
            <date>2013-02-22 14:57:06 -0800</date>
            <delta_ts>2013-02-25 10:04:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130222145325.patch</filename>
            <type>text/plain</type>
            <size>13532</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThjN2E2Y2U0MzFhODhm
ZmU3OWE2ZTg5Zjg3MmQyNjJhMGRlY2I1Zi4uYzBmYTUxMTllNTY2MTAxOTRmNjE0OTQzOTk1ZmU5
NTVhYTQyZmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTIxICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRhY2gpOiBBZGQgcG9zdGVyIGlm
IGl0IGRpZG4ndCBleGlzdCBhbmQgdGhlIGRlZmF1bHQgcG9zdGVyIHByb3ZpZGVkLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuaW46IEFkZCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZy4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOiBzdXBwb3J0IGJhY2t1cCBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpC
YWNrdXA6OnJlc3RvcmVUbyk6IHN1cHBvcnQgcmVzdG9yZSBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwu
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0
ZXJVUkwpOiBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChCYWNrdXApOiBz
dXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChJbnRlcm5hbFNl
dHRpbmdzKTogQWRkIHNldERlZmF1bHRWaWRvZVBvc3RlclVSTCBtZXRob2QuCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDogQWRkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TCBmb3IgdGVzdCBwdXJwb3NlLgorCiAyMDEzLTAyLTIyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVGhyZWFkZWQgSFRNTCBwYXJzZXIgc2hvdWxkIHBhc3MgZmFz
dC9wYXJzZXIvaWZyYW1lLXNldHMtcGFyZW50LXRvLWphdmFzY3JpcHQtdXJsLmh0bWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCBiOTRhNGM2YjgzYTY1YmUyYTc1OTEzMGNiMjI4ODExZmNhYWVjYTI4Li5j
NThiYzAxYTU0MWI4ZGVkMGU5OWRmMTM2ZDhlYTdmMDNiYWQwNjM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMjIgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgdGhlIGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGRv
ZXNuJ3QgZXhpc3QgaW4gdmlkZW8gdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTAyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW46IGV4
cG9ydCBLVVJMIGNvbnN0cnVjdG9yLgorCiAyMDEzLTAyLTIxICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTQzNTM2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXgg
N2NlMjg1Y2I1ODRhNzc3ODZlNDg1MWI4ODIzMDk0MDFhNDdiNmUxNC4uMzUzZDQyMDgwMTFmYjRk
NzhiMGVkZjQ0NDU0ZDEyZTdkYzVlMTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIK
ICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgzLDYg
Kzg0LDExIEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgaWYgKHJl
bmRlcmVyKCkpCiAgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJl
c291cmNlKCktPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOyAKICAgICB9
CisgICAgaWYgKCFoYXNBdHRyaWJ1dGUocG9zdGVyQXR0cikgJiYgZG9jdW1lbnQoKS0+c2V0dGlu
Z3MoKSkgeworICAgICAgICBLVVJMIGRlZmF1bHRWaWRlb1Bvc3RlclVSTCA9IGRvY3VtZW50KCkt
PnNldHRpbmdzKCktPmRlZmF1bHRWaWRlb1Bvc3RlclVSTCgpOworICAgICAgICBpZiAoIWRlZmF1
bHRWaWRlb1Bvc3RlclVSTC5pc0VtcHR5KCkpCisgICAgICAgICAgICBzZXRBdHRyaWJ1dGUocG9z
dGVyQXR0ciwgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLnN0cmluZygpKTsKKyAgICB9CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggOTdmNmY5Mzk3NjNiN2JkN2M0ZDkzYjY2
ZDRiZjUxMDkwN2I2ZjQ1ZS4uMDk5ZGU5MGEyMDZiYjc1NDlhYzVhODY0ZTcwZmU5MTYyZmQ1Nzk2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCkBAIC0xOTMsMyArMTkzLDYgQEAgdG91Y2hEcmFn
RHJvcEVuYWJsZWQgaW5pdGlhbD1mYWxzZQogdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCBpbml0
aWFsPWRlZmF1bHRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkCiAKIGxvZ3NQYWdlTWVzc2FnZXNU
b1N5c3RlbUNvbnNvbGVFbmFibGVkIGluaXRpYWw9ZmFsc2UKKworIyBTb21lIGFwcHMgY291bGQg
aGF2ZSBhIGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGlzIG5vdCBzZXQuCitkZWZhdWx0Vmlk
ZW9Qb3N0ZXJVUkwgdHlwZT1LVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmNwcAppbmRleCAxMjYyYWVmNWYwM2Y2OGI4ZWM2YjRiNmZlMDE2ZTM1MWJjNTVlZjUw
Li5hZWEyOTdkN2M2Y2U3NjQyMzlhMmE3NDljZTkyMzM4ZjIxNmU4YzYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTk0LDYgKzk0LDcgQEAgSW50
ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwg
bV9zaG91bGREaXNwbGF5Q2FwdGlvbnMoc2V0dGluZ3MtPnNob3VsZERpc3BsYXlDYXB0aW9ucygp
KQogICAgICwgbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhzZXR0aW5ncy0+c2hvdWxk
RGlzcGxheVRleHREZXNjcmlwdGlvbnMoKSkKICNlbmRpZgorICAgICwgbV9kZWZhdWx0VmlkZW9Q
b3N0ZXJVUkwoc2V0dGluZ3MtPmRlZmF1bHRWaWRlb1Bvc3RlclVSTCgpKQogewogfQogCkBAIC0x
MjksNiArMTMwLDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhT
ZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlDYXB0aW9u
cyhtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyk7CiAgICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3Bs
YXlUZXh0RGVzY3JpcHRpb25zKG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMpOwogI2Vu
ZGlmCisgICAgc2V0dGluZ3MtPnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChLVVJMKFBhcnNlZFVS
TFN0cmluZywgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwpKTsKIH0KIAogLy8gV2UgY2FuJ3QgdXNl
IFJlZkNvdW50ZWRTdXBwbGVtZW50IGJlY2F1c2UgdGhhdCB3b3VsZCB0cnkgdG8gbWFrZSBJbnRl
cm5hbFNldHRpbmdzIFJlZkNvdW50ZWQKQEAgLTQ4Nyw0ICs0ODksMTAgQEAgdm9pZCBJbnRlcm5h
bFNldHRpbmdzOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWxJblNlY29u
ZHMsIEV4Y2VwdGkKICAgICBzZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVy
dmFsSW5TZWNvbmRzKTsKIH0KIAordm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0Vmlk
ZW9Qb3N0ZXJVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CisgICAgc2V0dGluZ3MoKS0+c2V0
RGVmYXVsdFZpZGVvUG9zdGVyVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCBkNjcyNGRh
NjliZmM4ZDAxZWFkZDBjNTk5MWFmOTc3ZGMxMTE4ODI4Li5jMTE4MmIzNjNkM2EyZWZmNzViODFh
YmUwNjNkMDBiYTk1YjI4YmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9zaG91bGRE
aXNwbGF5Q2FwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0
aW9uczsKICNlbmRpZgorICAgICAgICBTdHJpbmcgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkw7CiAg
ICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludGVybmFsU2V0dGluZ3M+IGNyZWF0ZShQ
YWdlKiBwYWdlKQpAQCAtMTI2LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhbmdB
dHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0SW1h
Z2VzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldE1p
bmltdW1UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcywgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGNvbnN0IFN0cmluZyYgdXJs
LCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxTZXR0
aW5ncyhQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bAppbmRleCA1ZGRiMGFlNzNhZTM0MTgwNDYxZmQwMTZhYjc1ZmFlZWMzMzEzYzE0Li5hZTlmMzZk
MzU0YzM4YTRiYjM5MzY4MDU3OTk5ZmI2ZmJlM2EwNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTU5LDQgKzU5LDUgQEAKICAgICB2b2lkIHNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeShpbiBET01TdHJpbmcgcG9saWN5KSByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGlu
IGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgdm9p
ZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoaW4gRE9NU3RyaW5nIHBvc3RlcikgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3By
b2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggMjFmYTBjYjc2ZDczMjE1MDA1OTcyMWQ3ZjMz
YmRlNTQ3ZWJmNGQzMS4uMTA1NGM3Yjk2MGY2OWI4OTBmNWVkN2MyMjJmNDY2OGYwODRmZGFlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRz
LmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9y
dHMuZGVmLmluCkBAIC00MDgsNiArNDA4LDcgQEAgRVhQT1JUUwogICAgICAgICA/c2V0RGVmYXVs
dEZpeGVkRm9udFNpemVAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEhAWgogICAgICAgICA/c2V0QXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAg
ICAgP3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVAQFFB
RVhfTkBaCisgICAgICAgID8/MEtVUkxAV2ViQ29yZUBAUUFFQFc0UGFyc2VkVVJMU3RyaW5nVGFn
QDFAQUJWU3RyaW5nQFdURkBAQFoKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgICAgICA/d29y
a2VyVGhyZWFkQ291bnRAV29ya2VyVGhyZWFkQFdlYkNvcmVAQFNBSVhaCmRpZmYgLS1naXQgYS9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcgppbmRleCA0OWY0YjZlNzIxYWYyYmQxNWNlZmVmYjljZDlkYWUwOTg4YTEyNjk0Li4z
ZmVjNGFjYWMxMjZlNWY0N2ZiNzZlYTQwMTk0ZTFmNmIwMzYwOGQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKQEAgLTI3Miw2ICsyNzIsNyBAQCBfWk43V2ViQ29yZTE4U3R5bGVTaGVldENvbnRl
bnRzRDFFdjsKIF9aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRV
c2VyU2hlZXRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUU7CiBf
Wk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjE0YWRkQXV0aG9yU2hlZXRF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUU7CiBfWk43V2ViQ29y
ZTRLVVJMMTBpbnZhbGlkYXRlRXY7CitfWk43V2ViQ29yZTRLVVJMQzFFTlNfMThQYXJzZWRVUkxT
dHJpbmdUYWdFUktOM1dURjZTdHJpbmdFOwogX1pONldlYktpdDIyV2ViR3RrRXh0ZW5zaW9uTWFu
YWdlcjEwaW5pdGlhbGl6ZUVQSzE0T3BhcXVlV0tCdW5kbGVQS3Y7CiBfWk42V2ViS2l0MjJXZWJH
dGtFeHRlbnNpb25NYW5hZ2VyNnNoYXJlZEV2OwogX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwxMWlzVW5kZXJUZXN0RXY7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmY5NjFkZjdlYjQ0ZjViNTBl
MmQ1MGZjMjlkODdhYTgzYzEwYTAyZC4uMDcwOWMyOWQ5MTE0MmY2MGNhYWY4ZmU2MGE2NGUxNTZm
YzYyNDI4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAyLTIxICBUYW8gQmFpICA8bWlj
aGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0IHZpZGVvIHBv
c3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWRlZmF1bHQtcG9z
dGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1w
b3N0ZXIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMjIgIElhbiBWb2xsaWNrICA8dm9sbGlja0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVcGRhdGUgdGVzdCBleHBlY3RhdGlv
bnMgZm9yIFhQIGFmdGVyIDE0MzU1NApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
ZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZjBmYTVjOGE1N2IwNTUz
NmU0ZWVjOWVhNjUwNTgxNzE0NWViZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitQ
QVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQt
cG9zdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhmNDNmN2VmMTVhYzFlOWRiZTM1MTY5ZWM2MWI0MTlkN2YzM2FmOGMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5o
dG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICB9CisKKyAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKKyAgICB2YXIgZGVmYXVsdF9wb3N0ZXIgPSAiYWJvdXQ6Ymxhbmsi
OworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJM
KGRlZmF1bHRfcG9zdGVyKTsKKyAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24o
KSB7CisgICAgICB2YXIgcG9zdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLW5v
LXBvc3RlciIpLmdldEF0dHJpYnV0ZU5vZGUoInBvc3RlciIpOworICAgICAgaWYgKHBvc3Rlcikg
eworICAgICAgICBpZiAocG9zdGVyLnZhbHVlID09IGRlZmF1bHRfcG9zdGVyKQorICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0g
IlBBU1MiOworICAgICAgICBlbHNlCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTCI7CisgICAgICB9IGVsc2UKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRl
eHQgPSAiRkFJTDogcG9zdGVyIGF0dHJpYnV0ZSBpcyBudWxsIjsKKworICAgICAgcG9zdGVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLWhhcy1wb3N0ZXIiKS5nZXRBdHRyaWJ1dGVO
b2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3Rlci52
YWx1ZSA9PSAiY29udGVudC9hYmUucG5nIikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIi
KS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxzZQor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5l
clRleHQgPSAiRkFJTDogcG9zdGVyIGF0dHJpYnV0ZSBpcyBudWxsIjsKKworICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgZmFsc2UpOworICB9CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJyZXN1bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUgaWQ9
InJlc3VsdC1oYXMtcG9zdGVyIj48L3ByZT4KKzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVyIiBz
cmM9ImNvbnRlbnQvdGVzdC5tcDQiIHByZWxvYWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZpZGVv
LWhhcy1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2FiZS5w
bmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRlZWM5ZWE2NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY5ZGU4Zjc1Y2Rj
ZjRkMGUyMTA0NGQ4MmM0NThjZTQyYmUwMGEwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgIH0KKworICBpZiAod2luZG93LmludGVybmFscykgeworICAg
IGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBwb3N0ZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8tbm8tcG9zdGVyIikuZ2V0QXR0cmlidXRl
Tm9kZSgicG9zdGVyIik7CisgICAgICBpZiAocG9zdGVyKQorICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMIDogcG9zdGVy
IHdhcyBhZGRlZC4iOworICAgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKworICAgICAgcG9zdGVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLWhhcy1wb3N0ZXIiKS5nZXRBdHRyaWJ1
dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3Rl
ci52YWx1ZSA9PSAiY29udGVudC9hYmUucG5nIikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0
ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxz
ZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5p
bm5lclRleHQgPSAiRkFJTDogcG9zdGVyIGF0dHJpYnV0ZSBpcyBudWxsIjsKKworICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgZmFsc2UpOworICB9CisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJyZXN1bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUg
aWQ9InJlc3VsdC1oYXMtcG9zdGVyIj48L3ByZT4KKzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVy
IiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHByZWxvYWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZp
ZGVvLWhhcy1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2Fi
ZS5wbmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMjRlN2U5Y2Q1OTQ0ODgwYjYyOTczYjNhNDJjNTY1
OWYzZGM0YWU1ZS4uNzE5OGJlMGI4YWMxZjk2NGI0ODdlZDBmZTk1MmJhY2Q0YzViNWQ4MyAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEz
LTAyLTIxICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRk
IHRoZSBkZWZhdWx0IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRh
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOiBBZGRlZCB0aGUgS1VSTCBjb25zdHJ1Y3RvciBz
eW1ib2wuCisKIDIwMTMtMDItMjEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBBdXRvZ2VuZXJhdGUgU2V0dGluZ3MgdGhhdCBjYWxsIHNldE5lZWRzUmVjYWxjU3R5
bGVJbkFsbEZyYW1lcyB3aGVuIHNldAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190080</attachid>
            <date>2013-02-25 10:05:03 -0800</date>
            <delta_ts>2013-02-26 12:00:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130225100119.patch</filename>
            <type>text/plain</type>
            <size>13563</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzOTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmMWVhYzljNjQ3ODVl
MDYxYWNhMjg1NjY0NjY2OWM3YjdhYTFiZC4uNDgyYjRmZjJhMTA5MGYxNDg5NWJkN2I3YWNlMGU3
OGM4Y2VhZjg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTIxICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRhY2gpOiBBZGQgcG9zdGVyIGlm
IGl0IGRpZG4ndCBleGlzdCBhbmQgdGhlIGRlZmF1bHQgcG9zdGVyIHByb3ZpZGVkLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuaW46IEFkZCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZy4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOiBzdXBwb3J0IGJhY2t1cCBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpC
YWNrdXA6OnJlc3RvcmVUbyk6IHN1cHBvcnQgcmVzdG9yZSBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwu
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0
ZXJVUkwpOiBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChCYWNrdXApOiBz
dXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChJbnRlcm5hbFNl
dHRpbmdzKTogQWRkIHNldERlZmF1bHRWaWRvZVBvc3RlclVSTCBtZXRob2QuCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDogQWRkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TCBmb3IgdGVzdCBwdXJwb3NlLgorCiAyMDEzLTAyLTI1ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2
aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYkluc3BlY3RvcjogRG8gbm90IGtlZXAgdHJh
Y2sgb2YgcmVzb3VyY2VzIHVubGVzcyB0aGV5IGhhdmUgYSB2YWxpZCBsb2FkZXIgaWRlbnRpZmll
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCAzNDYyN2Y0YzBhNmY5NTBkYjc1ZGI5ZDQ0YWJkMjMzMWI4
ZjA4MTkzLi41YzI5N2FhZWY5ZTVmN2RiM2Y1MGVlMzRlNjg2ZjRhNWE5ZWY3MmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMjIgIFRhbyBCYWkgIDxtaWNoYWVs
YmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgdGhlIGRlZmF1bHQgdmlkZW8gcG9zdGVy
IGlmIGl0IGRvZXNuJ3QgZXhpc3QgaW4gdmlkZW8gdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5k
ZWYuaW46IGV4cG9ydCBLVVJMIGNvbnN0cnVjdG9yLgorCiAyMDEzLTAyLTI0ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIENsYXJpZnkgbWVhbmluZyBvZiBk
ZWZhdWx0IGRlZmF1bHQgZW5jb2RpbmcgbG9jYWxpemFibGUgc3RyaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjZmU5NTcxM2ZmOWRmOGQ3MzU3NWI4MDJl
ZTU4MWYwOGRlNjc4NDFkLi5hNDQ3ODg2ZDU5NTFkZDg2ZGZhODM3OWJmNDFlM2FjYTk4NGZjM2Yz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODMsNiArODQsMTEgQEAgdm9pZCBIVE1MVmlkZW9F
bGVtZW50OjphdHRhY2goKQogICAgICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgICAgIHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7IAogICAgIH0KKyAgICBpZiAoIWhhc0F0dHJpYnV0ZShw
b3N0ZXJBdHRyKSAmJiBkb2N1bWVudCgpLT5zZXR0aW5ncygpKSB7CisgICAgICAgIEtVUkwgZGVm
YXVsdFZpZGVvUG9zdGVyVVJMID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+ZGVmYXVsdFZpZGVv
UG9zdGVyVVJMKCk7CisgICAgICAgIGlmICghZGVmYXVsdFZpZGVvUG9zdGVyVVJMLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHNldEF0dHJpYnV0ZShwb3N0ZXJBdHRyLCBkZWZhdWx0VmlkZW9Qb3N0
ZXJVUkwuc3RyaW5nKCkpOworICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
bgppbmRleCBiOTZiYmQ1OWJlYWIzNTRmNzIxMmRjYzM0MTVmNjdhNTQ2ZjZkMjcxLi44ZDIwNzU3
NzY4YTc3YWYwMzkxYTdjMzlmNmI4ODFkZmJlNjIyNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aW4KQEAgLTE5NCwzICsxOTQsNiBAQCB0b3VjaERyYWdEcm9wRW5hYmxlZCBpbml0aWFsPWZhbHNl
CiB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkIGluaXRpYWw9ZGVmYXVsdFVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQKIAogbG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQgaW5p
dGlhbD1mYWxzZQorCisjIFNvbWUgYXBwcyBjb3VsZCBoYXZlIGEgZGVmYXVsdCB2aWRlbyBwb3N0
ZXIgaWYgaXQgaXMgbm90IHNldC4KK2RlZmF1bHRWaWRlb1Bvc3RlclVSTCB0eXBlPUtVUkwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IDEyNjJhZWY1
ZjAzZjY4YjhlYzZiNGI2ZmUwMTZlMzUxYmM1NWVmNTAuLmFlYTI5N2Q3YzZjZTc2NDIzOWEyYTc0
OWNlOTIzMzhmMjE2ZThjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmNwcApAQCAtOTQsNiArOTQsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJh
Y2t1cChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyhz
ZXR0aW5ncy0+c2hvdWxkRGlzcGxheUNhcHRpb25zKCkpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlU
ZXh0RGVzY3JpcHRpb25zKHNldHRpbmdzLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygp
KQogI2VuZGlmCisgICAgLCBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTChzZXR0aW5ncy0+ZGVmYXVs
dFZpZGVvUG9zdGVyVVJMKCkpCiB7CiB9CiAKQEAgLTEyOSw2ICsxMzAsNyBAQCB2b2lkIEludGVy
bmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBz
ZXR0aW5ncy0+c2V0U2hvdWxkRGlzcGxheUNhcHRpb25zKG1fc2hvdWxkRGlzcGxheUNhcHRpb25z
KTsKICAgICBzZXR0aW5ncy0+c2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMobV9zaG91
bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyk7CiAjZW5kaWYKKyAgICBzZXR0aW5ncy0+c2V0RGVm
YXVsdFZpZGVvUG9zdGVyVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2RlZmF1bHRWaWRlb1Bv
c3RlclVSTCkpOwogfQogCiAvLyBXZSBjYW4ndCB1c2UgUmVmQ291bnRlZFN1cHBsZW1lbnQgYmVj
YXVzZSB0aGF0IHdvdWxkIHRyeSB0byBtYWtlIEludGVybmFsU2V0dGluZ3MgUmVmQ291bnRlZApA
QCAtNDg3LDQgKzQ4OSwxMCBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldE1pbmltdW1UaW1l
ckludGVydmFsKGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcywgRXhjZXB0aQogICAgIHNldHRpbmdz
KCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWxJblNlY29uZHMpOwogfQogCit2b2lk
IEludGVybmFsU2V0dGluZ3M6OnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChjb25zdCBTdHJpbmcm
IHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9y
U2V0dGluZ3MoKTsKKyAgICBzZXR0aW5ncygpLT5zZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4IGQ2NzI0ZGE2OWJmYzhkMDFlYWRkMGM1OTkxYWY5Nzdk
YzExMTg4MjguLmMxMTgyYjM2M2QzYTJlZmY3NWI4MWFiZTA2M2QwMGJhOTViMjhiZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC04Miw2ICs4Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlDYXB0aW9uczsKICAgICAgICAg
Ym9vbCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOwogI2VuZGlmCisgICAgICAgIFN0
cmluZyBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTDsKICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW50ZXJuYWxTZXR0aW5ncz4gY3JlYXRlKFBhZ2UqIHBhZ2UpCkBAIC0xMjYsNiArMTI3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xV
SUVuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsSW5TZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXREZWZhdWx0
VmlkZW9Qb3N0ZXJVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzKFBhZ2UqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IDVkZGIwYWU3M2FlMzQxODA0
NjFmZDAxNmFiNzVmYWVlYzMzMTNjMTQuLmFlOWYzNmQzNTRjMzhhNGJiMzkzNjgwNTc5OTlmYjZm
YmUzYTA1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bApAQCAtNTksNCArNTksNSBAQAogICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGlu
IERPTVN0cmluZyBwb2xpY3kpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIHZvaWQgc2V0SW1h
Z2VzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
IHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoaW4gZG91YmxlIGludGVydmFsSW5TZWNvbmRz
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB2b2lkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TChpbiBET01TdHJpbmcgcG9zdGVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmlu
IGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgpp
bmRleCBmZmE1MjcxMmEwY2QyYWEyNzYzNTc3ODdjNzI3NGM0MjU2NTQ3MmM4Li5kNjAwZTlmZGEw
NjgzNGQwMTczMjYyOTY3YzgxOWY2MWUzYmMyNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTQwOSw2ICs0MDks
NyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZEBTZXR0
aW5nc0BXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldEF1dG9maWxs
ZWRASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQUVYX05AWgorICAgICAgICA/PzBLVVJMQFdl
YkNvcmVAQFFBRUBXNFBhcnNlZFVSTFN0cmluZ1RhZ0AxQEFCVlN0cmluZ0BXVEZAQEBaCiAKICNp
ZiBFTkFCTEUoV09SS0VSUykKICAgICAgICAgP3dvcmtlclRocmVhZENvdW50QFdvcmtlclRocmVh
ZEBXZWJDb3JlQEBTQUlYWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggOWUxY2Y2NTdhYjNi
MGU2MDJjZDljZDVhZjkzODRmZTQwMWRhYTllMS4uNjU2OWEzZjcwMTJiOGFlMWFjZDk2NDIwNGQz
ZmU3ZTk4ZjY1N2VhMSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
cgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0yNzMsNiArMjczLDcg
QEAgX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50c0QxRXY7CiBfWk43V2ViQ29yZTI4RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjEyYWRkVXNlclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRy
SU5TXzE4U3R5bGVTaGVldENvbnRlbnRzRUVFOwogX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVT
aGVldENvbGxlY3Rpb24xNGFkZEF1dGhvclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5
bGVTaGVldENvbnRlbnRzRUVFOwogX1pON1dlYkNvcmU0S1VSTDEwaW52YWxpZGF0ZUV2OworX1pO
N1dlYkNvcmU0S1VSTEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5nVGFnRVJLTjNXVEY2U3RyaW5nRTsK
IF9aTjZXZWJLaXQyMldlYkd0a0V4dGVuc2lvbk1hbmFnZXIxMGluaXRpYWxpemVFUEsxNE9wYXF1
ZVdLQnVuZGxlUEt2OwogX1pONldlYktpdDIyV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjZzaGFyZWRF
djsKIF9aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTFpc1VuZGVyVGVz
dEV2OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGJjYzg5YTZiYWE1ZTVmODVlOWIzOWZjMTQwMGQ1ZmE0MzkwNGI0N2EuLjhl
NWRkOTMyYWNiZGQ1ZjVkNTU3NmM2MTZkZGU3NzE1NjVkMGNkODMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMy0wMi0yMSAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEFkZCB0aGUgZGVmYXVsdCB2aWRlbyBwb3N0ZXIgaWYgaXQgZG9lc24ndCBleGlzdCBp
biB2aWRlbyB0YWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMDI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWw6IEFkZGVkLgorCiAyMDEz
LTAyLTI1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtzb3VwXSAiVG9vIG1hbnkgcmVkaXJlY3RzIiBlcnJvciBsb2FkaW5nIGNoYXQgaW4gcGx1
cy5nb29nbGUuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0
LXBvc3Rlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBv
c3Rlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRlZWM5ZWE2
NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BBU1MKK1BBU1MK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRt
bCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGY0M2Y3ZWYxNWFjMWU5ZGJlMzUxNjllYzYxYjQxOWQ3ZjMzYWY4YwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwKQEAgLTAs
MCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgIH0KKworICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgIHZhciBkZWZhdWx0X3Bvc3RlciA9ICJhYm91dDpibGFuayI7CisgICAgd2lu
ZG93LmludGVybmFscy5zZXR0aW5ncy5zZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoZGVmYXVsdF9w
b3N0ZXIpOworICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAg
IHZhciBwb3N0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8tbm8tcG9zdGVyIiku
Z2V0QXR0cmlidXRlTm9kZSgicG9zdGVyIik7CisgICAgICBpZiAocG9zdGVyKSB7CisgICAgICAg
IGlmIChwb3N0ZXIudmFsdWUgPT0gZGVmYXVsdF9wb3N0ZXIpCisgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5v
LXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlM
OiBwb3N0ZXIgYXR0cmlidXRlIGlzIG51bGwiOworCisgICAgICBwb3N0ZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmlkZW8taGFzLXBvc3RlciIpLmdldEF0dHJpYnV0ZU5vZGUoInBvc3Rl
ciIpOworICAgICAgaWYgKHBvc3RlcikgeworICAgICAgICBpZiAocG9zdGVyLnZhbHVlID09ICJj
b250ZW50L2FiZS5wbmciKQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4
dCA9ICJGQUlMOiBwb3N0ZXIgd2FzIGNoYW5nZWQiOworICAgICAgfSBlbHNlCisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJG
QUlMOiBwb3N0ZXIgYXR0cmlidXRlIGlzIG51bGwiOworCisgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICB9LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwcmUgaWQ9InJlc3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhh
cy1wb3N0ZXIiPjwvcHJlPgorPHZpZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29udGVu
dC90ZXN0Lm1wNCIgcHJlbG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBvc3Rl
ciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJlbG9h
ZD0ibm9uZSIgLz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2Yw
ZmE1YzhhNTdiMDU1MzZlNGVlYzllYTY1MDU4MTcxNDVlYmQwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
bm8tZGVmYXVsdC1wb3N0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjlkZThmNzVjZGNmNGQwZTIxMDQ0
ZDgyYzQ1OGNlNDJiZTAwYTAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgfQorCisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHBvc3RlciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1uby1wb3N0ZXIiKS5nZXRBdHRyaWJ1dGVOb2RlKCJwb3N0
ZXIiKTsKKyAgICAgIGlmIChwb3N0ZXIpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUwgOiBwb3N0ZXIgd2FzIGFkZGVk
LiI7CisgICAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQt
bm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIlBBU1MiOworCisgICAgICBwb3N0ZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidmlkZW8taGFzLXBvc3RlciIpLmdldEF0dHJpYnV0ZU5vZGUoInBv
c3RlciIpOworICAgICAgaWYgKHBvc3RlcikgeworICAgICAgICBpZiAocG9zdGVyLnZhbHVlID09
ICJjb250ZW50L2FiZS5wbmciKQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVy
VGV4dCA9ICJGQUlMOiBwb3N0ZXIgd2FzIGNoYW5nZWQiOworICAgICAgfSBlbHNlCisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9
ICJGQUlMOiBwb3N0ZXIgYXR0cmlidXRlIGlzIG51bGwiOworCisgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICB9LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwcmUgaWQ9InJlc3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0
LWhhcy1wb3N0ZXIiPjwvcHJlPgorPHZpZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29u
dGVudC90ZXN0Lm1wNCIgcHJlbG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBv
c3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJl
bG9hZD0ibm9uZSIgLz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBi
L0NoYW5nZUxvZwppbmRleCBiZjlmMmI3ZDEyYmYyMmRiZmJlMDUwYTViMmYyODRjZjI3YjgxMDNh
Li5lNTZhNmRlZTQ4ZDllOWI2YjdjNjBiMDNiN2MwYzAyYjNhYjBlNzliIDEwMDY0NAotLS0gYS9D
aGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMjEgIFRh
byBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgdGhlIGRlZmF1
bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGRvZXNuJ3QgZXhpc3QgaW4gdmlkZW8gdGFnCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAyNjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXI6IEFkZGVkIHRoZSBLVVJMIGNvbnN0cnVjdG9yIHN5bWJvbC4KKwog
MjAxMy0wMi0yNCAgTGFzemxvIEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFtFRkxdIFJlbmFtZSBFTkFCTEVfUkVHSU9OUyB0byBFTkFCTEVfQ1NTX1JFR0lPTlMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190338</attachid>
            <date>2013-02-26 12:00:50 -0800</date>
            <delta_ts>2013-02-28 13:25:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130226115705.patch</filename>
            <type>text/plain</type>
            <size>13653</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzOTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmMWVhYzljNjQ3ODVl
MDYxYWNhMjg1NjY0NjY2OWM3YjdhYTFiZC4uNDgyYjRmZjJhMTA5MGYxNDg5NWJkN2I3YWNlMGU3
OGM4Y2VhZjg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTIxICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRhY2gpOiBBZGQgcG9zdGVyIGlm
IGl0IGRpZG4ndCBleGlzdCBhbmQgdGhlIGRlZmF1bHQgcG9zdGVyIHByb3ZpZGVkLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuaW46IEFkZCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZy4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOiBzdXBwb3J0IGJhY2t1cCBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpC
YWNrdXA6OnJlc3RvcmVUbyk6IHN1cHBvcnQgcmVzdG9yZSBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwu
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0
ZXJVUkwpOiBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChCYWNrdXApOiBz
dXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChJbnRlcm5hbFNl
dHRpbmdzKTogQWRkIHNldERlZmF1bHRWaWRvZVBvc3RlclVSTCBtZXRob2QuCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDogQWRkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TCBmb3IgdGVzdCBwdXJwb3NlLgorCiAyMDEzLTAyLTI1ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2
aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYkluc3BlY3RvcjogRG8gbm90IGtlZXAgdHJh
Y2sgb2YgcmVzb3VyY2VzIHVubGVzcyB0aGV5IGhhdmUgYSB2YWxpZCBsb2FkZXIgaWRlbnRpZmll
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCAzNDYyN2Y0YzBhNmY5NTBkYjc1ZGI5ZDQ0YWJkMjMzMWI4
ZjA4MTkzLi41YzI5N2FhZWY5ZTVmN2RiM2Y1MGVlMzRlNjg2ZjRhNWE5ZWY3MmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMjIgIFRhbyBCYWkgIDxtaWNoYWVs
YmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgdGhlIGRlZmF1bHQgdmlkZW8gcG9zdGVy
IGlmIGl0IGRvZXNuJ3QgZXhpc3QgaW4gdmlkZW8gdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5k
ZWYuaW46IGV4cG9ydCBLVVJMIGNvbnN0cnVjdG9yLgorCiAyMDEzLTAyLTI0ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIENsYXJpZnkgbWVhbmluZyBvZiBk
ZWZhdWx0IGRlZmF1bHQgZW5jb2RpbmcgbG9jYWxpemFibGUgc3RyaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjZmU5NTcxM2ZmOWRmOGQ3MzU3NWI4MDJl
ZTU4MWYwOGRlNjc4NDFkLi5hNDQ3ODg2ZDU5NTFkZDg2ZGZhODM3OWJmNDFlM2FjYTk4NGZjM2Yz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODMsNiArODQsMTEgQEAgdm9pZCBIVE1MVmlkZW9F
bGVtZW50OjphdHRhY2goKQogICAgICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgICAgIHRv
UmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7IAogICAgIH0KKyAgICBpZiAoIWhhc0F0dHJpYnV0ZShw
b3N0ZXJBdHRyKSAmJiBkb2N1bWVudCgpLT5zZXR0aW5ncygpKSB7CisgICAgICAgIEtVUkwgZGVm
YXVsdFZpZGVvUG9zdGVyVVJMID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+ZGVmYXVsdFZpZGVv
UG9zdGVyVVJMKCk7CisgICAgICAgIGlmICghZGVmYXVsdFZpZGVvUG9zdGVyVVJMLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHNldEF0dHJpYnV0ZShwb3N0ZXJBdHRyLCBkZWZhdWx0VmlkZW9Qb3N0
ZXJVUkwuc3RyaW5nKCkpOworICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
bgppbmRleCBiOTZiYmQ1OWJlYWIzNTRmNzIxMmRjYzM0MTVmNjdhNTQ2ZjZkMjcxLi44ZDIwNzU3
NzY4YTc3YWYwMzkxYTdjMzlmNmI4ODFkZmJlNjIyNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aW4KQEAgLTE5NCwzICsxOTQsNiBAQCB0b3VjaERyYWdEcm9wRW5hYmxlZCBpbml0aWFsPWZhbHNl
CiB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkIGluaXRpYWw9ZGVmYXVsdFVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQKIAogbG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQgaW5p
dGlhbD1mYWxzZQorCisjIFNvbWUgYXBwcyBjb3VsZCBoYXZlIGEgZGVmYXVsdCB2aWRlbyBwb3N0
ZXIgaWYgaXQgaXMgbm90IHNldC4KK2RlZmF1bHRWaWRlb1Bvc3RlclVSTCB0eXBlPUtVUkwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IDEyNjJhZWY1
ZjAzZjY4YjhlYzZiNGI2ZmUwMTZlMzUxYmM1NWVmNTAuLmFlYTI5N2Q3YzZjZTc2NDIzOWEyYTc0
OWNlOTIzMzhmMjE2ZThjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmNwcApAQCAtOTQsNiArOTQsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJh
Y2t1cChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyhz
ZXR0aW5ncy0+c2hvdWxkRGlzcGxheUNhcHRpb25zKCkpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlU
ZXh0RGVzY3JpcHRpb25zKHNldHRpbmdzLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygp
KQogI2VuZGlmCisgICAgLCBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTChzZXR0aW5ncy0+ZGVmYXVs
dFZpZGVvUG9zdGVyVVJMKCkpCiB7CiB9CiAKQEAgLTEyOSw2ICsxMzAsNyBAQCB2b2lkIEludGVy
bmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBz
ZXR0aW5ncy0+c2V0U2hvdWxkRGlzcGxheUNhcHRpb25zKG1fc2hvdWxkRGlzcGxheUNhcHRpb25z
KTsKICAgICBzZXR0aW5ncy0+c2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMobV9zaG91
bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyk7CiAjZW5kaWYKKyAgICBzZXR0aW5ncy0+c2V0RGVm
YXVsdFZpZGVvUG9zdGVyVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2RlZmF1bHRWaWRlb1Bv
c3RlclVSTCkpOwogfQogCiAvLyBXZSBjYW4ndCB1c2UgUmVmQ291bnRlZFN1cHBsZW1lbnQgYmVj
YXVzZSB0aGF0IHdvdWxkIHRyeSB0byBtYWtlIEludGVybmFsU2V0dGluZ3MgUmVmQ291bnRlZApA
QCAtNDg3LDQgKzQ4OSwxMCBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldE1pbmltdW1UaW1l
ckludGVydmFsKGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcywgRXhjZXB0aQogICAgIHNldHRpbmdz
KCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWxJblNlY29uZHMpOwogfQogCit2b2lk
IEludGVybmFsU2V0dGluZ3M6OnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChjb25zdCBTdHJpbmcm
IHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9y
U2V0dGluZ3MoKTsKKyAgICBzZXR0aW5ncygpLT5zZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4IGQ2NzI0ZGE2OWJmYzhkMDFlYWRkMGM1OTkxYWY5Nzdk
YzExMTg4MjguLmMxMTgyYjM2M2QzYTJlZmY3NWI4MWFiZTA2M2QwMGJhOTViMjhiZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC04Miw2ICs4Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlDYXB0aW9uczsKICAgICAgICAg
Ym9vbCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOwogI2VuZGlmCisgICAgICAgIFN0
cmluZyBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTDsKICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW50ZXJuYWxTZXR0aW5ncz4gY3JlYXRlKFBhZ2UqIHBhZ2UpCkBAIC0xMjYsNiArMTI3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xV
SUVuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsSW5TZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXREZWZhdWx0
VmlkZW9Qb3N0ZXJVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzKFBhZ2UqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IDVkZGIwYWU3M2FlMzQxODA0
NjFmZDAxNmFiNzVmYWVlYzMzMTNjMTQuLmFlOWYzNmQzNTRjMzhhNGJiMzkzNjgwNTc5OTlmYjZm
YmUzYTA1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bApAQCAtNTksNCArNTksNSBAQAogICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGlu
IERPTVN0cmluZyBwb2xpY3kpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIHZvaWQgc2V0SW1h
Z2VzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
IHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoaW4gZG91YmxlIGludGVydmFsSW5TZWNvbmRz
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB2b2lkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TChpbiBET01TdHJpbmcgcG9zdGVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmlu
IGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgpp
bmRleCBmZmE1MjcxMmEwY2QyYWEyNzYzNTc3ODdjNzI3NGM0MjU2NTQ3MmM4Li5kNjAwZTlmZGEw
NjgzNGQwMTczMjYyOTY3YzgxOWY2MWUzYmMyNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTQwOSw2ICs0MDks
NyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZEBTZXR0
aW5nc0BXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldEF1dG9maWxs
ZWRASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQUVYX05AWgorICAgICAgICA/PzBLVVJMQFdl
YkNvcmVAQFFBRUBXNFBhcnNlZFVSTFN0cmluZ1RhZ0AxQEFCVlN0cmluZ0BXVEZAQEBaCiAKICNp
ZiBFTkFCTEUoV09SS0VSUykKICAgICAgICAgP3dvcmtlclRocmVhZENvdW50QFdvcmtlclRocmVh
ZEBXZWJDb3JlQEBTQUlYWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggOWUxY2Y2NTdhYjNi
MGU2MDJjZDljZDVhZjkzODRmZTQwMWRhYTllMS4uNjU2OWEzZjcwMTJiOGFlMWFjZDk2NDIwNGQz
ZmU3ZTk4ZjY1N2VhMSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
cgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0yNzMsNiArMjczLDcg
QEAgX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50c0QxRXY7CiBfWk43V2ViQ29yZTI4RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjEyYWRkVXNlclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRy
SU5TXzE4U3R5bGVTaGVldENvbnRlbnRzRUVFOwogX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVT
aGVldENvbGxlY3Rpb24xNGFkZEF1dGhvclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5
bGVTaGVldENvbnRlbnRzRUVFOwogX1pON1dlYkNvcmU0S1VSTDEwaW52YWxpZGF0ZUV2OworX1pO
N1dlYkNvcmU0S1VSTEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5nVGFnRVJLTjNXVEY2U3RyaW5nRTsK
IF9aTjZXZWJLaXQyMldlYkd0a0V4dGVuc2lvbk1hbmFnZXIxMGluaXRpYWxpemVFUEsxNE9wYXF1
ZVdLQnVuZGxlUEt2OwogX1pONldlYktpdDIyV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjZzaGFyZWRF
djsKIF9aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTFpc1VuZGVyVGVz
dEV2OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGJjYzg5YTZiYWE1ZTVmODVlOWIzOWZjMTQwMGQ1ZmE0MzkwNGI0N2EuLjhl
NWRkOTMyYWNiZGQ1ZjVkNTU3NmM2MTZkZGU3NzE1NjVkMGNkODMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMy0wMi0yMSAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEFkZCB0aGUgZGVmYXVsdCB2aWRlbyBwb3N0ZXIgaWYgaXQgZG9lc24ndCBleGlzdCBp
biB2aWRlbyB0YWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMDI2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWw6IEFkZGVkLgorCiAyMDEz
LTAyLTI1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtzb3VwXSAiVG9vIG1hbnkgcmVkaXJlY3RzIiBlcnJvciBsb2FkaW5nIGNoYXQgaW4gcGx1
cy5nb29nbGUuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0
LXBvc3Rlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBv
c3Rlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRlZWM5ZWE2
NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BBU1MKK1BBU1MK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRt
bCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzkyMDlkMWQ2MGQzMzBhMTkxOTI5N2Y0NjE4NThjZDVhZTY2NWYxOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwKQEAgLTAs
MCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgIH0KKyAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICB2YXIgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CisgICAgdmFyIGRlZmF1
bHRfcG9zdGVyID0gdXJsLnN1YnN0cmluZygwLCB1cmwubGFzdEluZGV4T2YoJy8nKSArIDEpLmNv
bmNhdCgnY29udGVudC9hYmUucG5nJyk7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5z
ZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoZGVmYXVsdF9wb3N0ZXIpOworICAgIGFkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBwb3N0ZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmlkZW8tbm8tcG9zdGVyIikuZ2V0QXR0cmlidXRlTm9kZSgicG9zdGVy
Iik7CisgICAgICBpZiAocG9zdGVyKSB7CisgICAgICAgIGlmIChwb3N0ZXIudmFsdWUgPT0gZGVm
YXVsdF9wb3N0ZXIpCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1u
by1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJG
QUlMIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgYXR0cmlidXRlIGlzIG51
bGwiOworCisgICAgICBwb3N0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8taGFz
LXBvc3RlciIpLmdldEF0dHJpYnV0ZU5vZGUoInBvc3RlciIpOworICAgICAgaWYgKHBvc3Rlcikg
eworICAgICAgICBpZiAocG9zdGVyLnZhbHVlID09ICJjb250ZW50L2FiZS5wbmciKQorICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4
dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgd2FzIGNo
YW5nZWQiOworICAgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgYXR0cmlidXRlIGlz
IG51bGwiOworCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCBmYWxzZSk7
CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9InJlc3VsdC1uby1w
b3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1wb3N0ZXIiPjwvcHJlPgorPHZpZGVv
IGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcHJlbG9hZD0ibm9u
ZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0
IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJlbG9hZD0ibm9uZSIgLz4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9z
dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9z
dGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2YwZmE1YzhhNTdiMDU1MzZlNGVlYzllYTY1
MDU4MTcxNDVlYmQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
bm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorUEFTUworUEFT
UworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rl
ci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNjlkZThmNzVjZGNmNGQwZTIxMDQ0ZDgyYzQ1OGNlNDJiZTAwYTAzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgfQorCisgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9u
KCkgeworICAgICAgdmFyIHBvc3RlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1u
by1wb3N0ZXIiKS5nZXRBdHRyaWJ1dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlmIChwb3N0ZXIp
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5u
ZXJUZXh0ID0gIkZBSUwgOiBwb3N0ZXIgd2FzIGFkZGVkLiI7CisgICAgICBlbHNlCisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0g
IlBBU1MiOworCisgICAgICBwb3N0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8t
aGFzLXBvc3RlciIpLmdldEF0dHJpYnV0ZU5vZGUoInBvc3RlciIpOworICAgICAgaWYgKHBvc3Rl
cikgeworICAgICAgICBpZiAocG9zdGVyLnZhbHVlID09ICJjb250ZW50L2FiZS5wbmciKQorICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVy
VGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgd2Fz
IGNoYW5nZWQiOworICAgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgYXR0cmlidXRl
IGlzIG51bGwiOworCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCBmYWxz
ZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9InJlc3VsdC1u
by1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1wb3N0ZXIiPjwvcHJlPgorPHZp
ZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcHJlbG9hZD0i
bm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3Qu
bXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJlbG9hZD0ibm9uZSIgLz4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBiZjlmMmI3
ZDEyYmYyMmRiZmJlMDUwYTViMmYyODRjZjI3YjgxMDNhLi5lNTZhNmRlZTQ4ZDllOWI2YjdjNjBi
MDNiN2MwYzAyYjNhYjBlNzliIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMjEgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgdGhlIGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGRv
ZXNuJ3QgZXhpc3QgaW4gdmlkZW8gdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTAyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IEFkZGVk
IHRoZSBLVVJMIGNvbnN0cnVjdG9yIHN5bWJvbC4KKwogMjAxMy0wMi0yNCAgTGFzemxvIEdvbWJv
cyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlbmFtZSBFTkFCTEVf
UkVHSU9OUyB0byBFTkFCTEVfQ1NTX1JFR0lPTlMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190796</attachid>
            <date>2013-02-28 13:25:43 -0800</date>
            <delta_ts>2013-03-05 18:10:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130228132155.patch</filename>
            <type>text/plain</type>
            <size>13800</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdlNzM1YmU1ZDZlMTRh
NzVkY2Y1OWI2MDdhMWM0MGU4M2VjZDk2Mi4uMzM4NmUyMzY3NGJkNmJiZGQ4YjE4MzlmNjg3Njdk
YTg3ZjFhYTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAyLTIxICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRhY2gpOiBBZGQgcG9zdGVyIGlm
IGl0IGRpZG4ndCBleGlzdCBhbmQgdGhlIGRlZmF1bHQgcG9zdGVyIHByb3ZpZGVkLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuaW46IEFkZCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZy4K
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOiBzdXBwb3J0IGJhY2t1cCBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpC
YWNrdXA6OnJlc3RvcmVUbyk6IHN1cHBvcnQgcmVzdG9yZSBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwu
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0
ZXJVUkwpOiBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChCYWNrdXApOiBz
dXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChJbnRlcm5hbFNl
dHRpbmdzKTogQWRkIHNldERlZmF1bHRWaWRvZVBvc3RlclVSTCBtZXRob2QuCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDogQWRkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TCBmb3IgdGVzdCBwdXJwb3NlLgorCiAyMDEzLTAyLTI4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OOiBJTlBVVF9NVUxUSVBMRV9GSUVMRFNf
VUk6IENoYW5naW5nIENTUyBkaXNwbGF5IHByb3BlcnR5IG9uIGlucHV0W3R5cGU9ZGF0ZV0gdW5l
eHBlY3RlZGx5IG1ha2VzIGFub3RoZXIgbGluZSBmb3IgOjotd2Via2l0LWNhbGVuZGFyLXBpY2tl
ci1pbmRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2MjRjMzA4MTAyMTZiNGUzY2IxYTFhYmYx
NDA4NDAyYTg5ZDAwMGMxLi5kOGE5MWEzOWU0OWM4OThmZjBkZmQ3NWE5NWM5MzU4Zjc4YmYzZjg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMjIgIFRhbyBCYWkg
IDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgdGhlIGRlZmF1bHQgdmlk
ZW8gcG9zdGVyIGlmIGl0IGRvZXNuJ3QgZXhpc3QgaW4gdmlkZW8gdGFnCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAyNjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0
RXhwb3J0cy5kZWYuaW46IGV4cG9ydCBLVVJMIGNvbnN0cnVjdG9yLgorCiAyMDEzLTAyLTI2ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGFkZCBh
IGJvZHkgdG8gcGxhdGZvcm0gcmVxdWVzdCB1bnRpbCBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGNmZTk1NzEzZmY5ZGY4ZDczNTc1YjgwMmVl
NTgxZjA4ZGU2Nzg0MWQuLmE0NDc4ODZkNTk1MWRkODZkZmE4Mzc5YmY0MWUzYWNhOTg0ZmMzZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtNDAsNiArNDAs
NyBAQAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIK
ICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIEhUTUxWaWRlb0Vs
ZW1lbnQ6OmF0dGFjaCgpCiAgICAgICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICAgICAgdG9S
ZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJbWFnZSht
X2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsgCiAgICAgfQorICAgIGlmICghaGFzQXR0cmlidXRlKHBv
c3RlckF0dHIpICYmIGRvY3VtZW50KCktPnNldHRpbmdzKCkpIHsKKyAgICAgICAgS1VSTCBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwgPSBkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5kZWZhdWx0VmlkZW9Q
b3N0ZXJVUkwoKTsKKyAgICAgICAgaWYgKCFkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuaXNFbXB0eSgp
KQorICAgICAgICAgICAgc2V0QXR0cmlidXRlKHBvc3RlckF0dHIsIGRlZmF1bHRWaWRlb1Bvc3Rl
clVSTC5zdHJpbmcoKSk7CisgICAgfQogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmlu
CmluZGV4IGU3OTkxZWFkY2MxNDAzMDdmYzA5NzY3YmVmZjIxNGE1M2JmN2ViYWQuLmE0MDIxYWI4
MjUyMDNjYmNiZjY0MGFiZjk5MjZlOTQ5YmJiMmQ1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
bgpAQCAtMTk1LDQgKzE5NSw3IEBAIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQgaW5pdGlhbD1k
ZWZhdWx0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZAogCiBsb2dzUGFnZU1lc3NhZ2VzVG9TeXN0
ZW1Db25zb2xlRW5hYmxlZCBpbml0aWFsPWZhbHNlCiAKKyMgU29tZSBhcHBzIGNvdWxkIGhhdmUg
YSBkZWZhdWx0IHZpZGVvIHBvc3RlciBpZiBpdCBpcyBub3Qgc2V0LgorZGVmYXVsdFZpZGVvUG9z
dGVyVVJMIHR5cGU9S1VSTAorCiBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQgaW5pdGlhbD10cnVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCAxMjYy
YWVmNWYwM2Y2OGI4ZWM2YjRiNmZlMDE2ZTM1MWJjNTVlZjUwLi5hZWEyOTdkN2M2Y2U3NjQyMzlh
MmE3NDljZTkyMzM4ZjIxNmU4YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5jcHAKQEAgLTk0LDYgKzk0LDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3Vw
OjpCYWNrdXAoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9zaG91bGREaXNwbGF5Q2FwdGlv
bnMoc2V0dGluZ3MtPnNob3VsZERpc3BsYXlDYXB0aW9ucygpKQogICAgICwgbV9zaG91bGREaXNw
bGF5VGV4dERlc2NyaXB0aW9ucyhzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlv
bnMoKSkKICNlbmRpZgorICAgICwgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoc2V0dGluZ3MtPmRl
ZmF1bHRWaWRlb1Bvc3RlclVSTCgpKQogewogfQogCkBAIC0xMjksNiArMTMwLDcgQEAgdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyogc2V0dGluZ3MpCiAg
ICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhtX3Nob3VsZERpc3BsYXlDYXB0
aW9ucyk7CiAgICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKG1f
c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMpOwogI2VuZGlmCisgICAgc2V0dGluZ3MtPnNl
dERlZmF1bHRWaWRlb1Bvc3RlclVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9kZWZhdWx0Vmlk
ZW9Qb3N0ZXJVUkwpKTsKIH0KIAogLy8gV2UgY2FuJ3QgdXNlIFJlZkNvdW50ZWRTdXBwbGVtZW50
IGJlY2F1c2UgdGhhdCB3b3VsZCB0cnkgdG8gbWFrZSBJbnRlcm5hbFNldHRpbmdzIFJlZkNvdW50
ZWQKQEAgLTQ4Nyw0ICs0ODksMTAgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMsIEV4Y2VwdGkKICAgICBzZXR0
aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVydmFsSW5TZWNvbmRzKTsKIH0KIAor
dm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEludGVybmFsU2V0dGluZ3NHdWFy
ZEZvclNldHRpbmdzKCk7CisgICAgc2V0dGluZ3MoKS0+c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJM
KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCBkNjcyNGRhNjliZmM4ZDAxZWFkZDBjNTk5MWFm
OTc3ZGMxMTE4ODI4Li5jMTE4MmIzNjNkM2EyZWZmNzViODFhYmUwNjNkMDBiYTk1YjI4YmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtODIsNiArODIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnM7CiAgICAg
ICAgIGJvb2wgbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uczsKICNlbmRpZgorICAgICAg
ICBTdHJpbmcgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkw7CiAgICAgfTsKIAogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEludGVybmFsU2V0dGluZ3M+IGNyZWF0ZShQYWdlKiBwYWdlKQpAQCAtMTI2LDYg
KzEyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250
cm9sVUlFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGRv
dWJsZSBpbnRlcnZhbEluU2Vjb25kcywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0RGVm
YXVsdFZpZGVvUG9zdGVyVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxTZXR0aW5ncyhQYWdlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAppbmRleCA1ZGRiMGFlNzNhZTM0
MTgwNDYxZmQwMTZhYjc1ZmFlZWMzMzEzYzE0Li5hZTlmMzZkMzU0YzM4YTRiYjM5MzY4MDU3OTk5
ZmI2ZmJlM2EwNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5pZGwKQEAgLTU5LDQgKzU5LDUgQEAKICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eShpbiBET01TdHJpbmcgcG9saWN5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNl
dEltYWdlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
ICAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGluIGRvdWJsZSBpbnRlcnZhbEluU2Vj
b25kcykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Qb3N0
ZXJVUkwoaW4gRE9NU3RyaW5nIHBvc3RlcikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRl
Zi5pbiBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYu
aW4KaW5kZXggZmZhNTI3MTJhMGNkMmFhMjc2MzU3Nzg3YzcyNzRjNDI1NjU0NzJjOC4uMzFhYjA4
ZDEyMjZhYmZiNDFlOTFlNGVhZjNiM2Y3MjhmNTkwMDJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCkBAIC00MDgsNiAr
NDA4LDcgQEAgRVhQT1JUUwogICAgICAgICA/c2V0RGVmYXVsdEZpeGVkRm9udFNpemVAU2V0dGlu
Z3NAV2ViQ29yZUBAUUFFWEhAWgogICAgICAgICA/c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJs
ZWRAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVAQFFBRVhfTkBaCisgICAgICAgID8/MEtV
UkxAV2ViQ29yZUBAUUFFQFc0UGFyc2VkVVJMU3RyaW5nVGFnQDFAQUJWU3RyaW5nQFdURkBAQFoK
ICAgICAgICAgP3NldEF1dG9maWxsZWRASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQUVYX05A
WgogCiAjaWYgRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA5ZTFj
ZjY1N2FiM2IwZTYwMmNkOWNkNWFmOTM4NGZlNDAxZGFhOWUxLi42NTY5YTNmNzAxMmI4YWUxYWNk
OTY0MjA0ZDNmZTdlOThmNjU3ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTI3Myw2
ICsyNzMsNyBAQCBfWk43V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzRDFFdjsKIF9aTjdXZWJD
b3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEYxMFBh
c3NSZWZQdHJJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUU7CiBfWk43V2ViQ29yZTI4RG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbjE0YWRkQXV0aG9yU2hlZXRFTjNXVEYxMFBhc3NSZWZQdHJJ
TlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUU7CiBfWk43V2ViQ29yZTRLVVJMMTBpbnZhbGlkYXRl
RXY7CitfWk43V2ViQ29yZTRLVVJMQzFFTlNfMThQYXJzZWRVUkxTdHJpbmdUYWdFUktOM1dURjZT
dHJpbmdFOwogX1pONldlYktpdDIyV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjEwaW5pdGlhbGl6ZUVQ
SzE0T3BhcXVlV0tCdW5kbGVQS3Y7CiBfWk42V2ViS2l0MjJXZWJHdGtFeHRlbnNpb25NYW5hZ2Vy
NnNoYXJlZEV2OwogX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxMWlz
VW5kZXJUZXN0RXY7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjc3NGYzOTcyN2NmOGQ0YzFjMjZkZDFjNDVhODBkYjBmZjc4
Njg4ZS4uZTJiYjk2MmRjNTVkM2Y5YjY4NTE2MjZlMDMxZjYyMzE0NWY5MjNiYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEzLTAyLTIxICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0
IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBtZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbDogQWRkZWQu
CisKIDIwMTMtMDItMjggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJFR1JFU1NJT046IElOUFVUX01VTFRJUExFX0ZJRUxEU19VSTogQ2hhbmdpbmcgQ1NTIGRp
c3BsYXkgcHJvcGVydHkgb24gaW5wdXRbdHlwZT1kYXRlXSB1bmV4cGVjdGVkbHkgbWFrZXMgYW5v
dGhlciBsaW5lIGZvciA6Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvcgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY3ZjBmYTVjOGE1N2IwNTUzNmU0ZWVjOWVhNjUwNTgxNzE0NWViZDAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MjA5ZDFkNjBkMzMwYTE5
MTkyOTdmNDYxODU4Y2Q1YWU2NjVmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICB9CisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgdmFyIHVybCA9
IHdpbmRvdy5sb2NhdGlvbi5ocmVmOworICAgIHZhciBkZWZhdWx0X3Bvc3RlciA9IHVybC5zdWJz
dHJpbmcoMCwgdXJsLmxhc3RJbmRleE9mKCcvJykgKyAxKS5jb25jYXQoJ2NvbnRlbnQvYWJlLnBu
ZycpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGVmYXVsdFZpZGVvUG9zdGVy
VVJMKGRlZmF1bHRfcG9zdGVyKTsKKyAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rp
b24oKSB7CisgICAgICB2YXIgcG9zdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVv
LW5vLXBvc3RlciIpLmdldEF0dHJpYnV0ZU5vZGUoInBvc3RlciIpOworICAgICAgaWYgKHBvc3Rl
cikgeworICAgICAgICBpZiAocG9zdGVyLnZhbHVlID09IGRlZmF1bHRfcG9zdGVyKQorICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0
ID0gIlBBU1MiOworICAgICAgICBlbHNlCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTCI7CisgICAgICB9IGVsc2UK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5l
clRleHQgPSAiRkFJTDogcG9zdGVyIGF0dHJpYnV0ZSBpcyBudWxsIjsKKworICAgICAgcG9zdGVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLWhhcy1wb3N0ZXIiKS5nZXRBdHRyaWJ1
dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3Rl
ci52YWx1ZSA9PSAiY29udGVudC9hYmUucG5nIikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0
ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxz
ZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5p
bm5lclRleHQgPSAiRkFJTDogcG9zdGVyIGF0dHJpYnV0ZSBpcyBudWxsIjsKKworICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgZmFsc2UpOworICB9CisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJyZXN1bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUg
aWQ9InJlc3VsdC1oYXMtcG9zdGVyIj48L3ByZT4KKzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVy
IiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHByZWxvYWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZp
ZGVvLWhhcy1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2Fi
ZS5wbmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRlZWM5ZWE2NTA1ODE3MTQ1ZWJkMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY5ZGU4Zjc1
Y2RjZjRkMGUyMTA0NGQ4MmM0NThjZTQyYmUwMGEwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKQEAgLTAsMCArMSwzOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgIH0KKworICBpZiAod2luZG93LmludGVybmFscykgewor
ICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBwb3N0
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8tbm8tcG9zdGVyIikuZ2V0QXR0cmli
dXRlTm9kZSgicG9zdGVyIik7CisgICAgICBpZiAocG9zdGVyKQorICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMIDogcG9z
dGVyIHdhcyBhZGRlZC4iOworICAgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKworICAgICAgcG9z
dGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLWhhcy1wb3N0ZXIiKS5nZXRBdHRy
aWJ1dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBv
c3Rlci52YWx1ZSA9PSAiY29udGVudC9hYmUucG5nIikKKyAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1w
b3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0g
ZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIi
KS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIGF0dHJpYnV0ZSBpcyBudWxsIjsKKworICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgZmFsc2UpOworICB9CisKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJyZXN1bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxw
cmUgaWQ9InJlc3VsdC1oYXMtcG9zdGVyIj48L3ByZT4KKzx2aWRlbyBpZD0idmlkZW8tbm8tcG9z
dGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHByZWxvYWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9
InZpZGVvLWhhcy1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50
L2FiZS5wbmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTAwNGQwNjk4ZDA4NzQ3ZmZmN2Y1MzRkMmQ3
MmJjNmFhYmViNDk2MC4uMzMwNTZkMGQ0ZGU5NGMwMWQzNjZjZjM4ZTExMzkxNGU2ZjRiYmUwOSAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDEzLTAyLTIxICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
QWRkIHRoZSBkZWZhdWx0IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVv
IHRhZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
MjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOiBBZGRlZCB0aGUgS1VSTCBjb25zdHJ1Y3Rv
ciBzeW1ib2wuCisKIDIwMTMtMDItMjcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIERpc2FibGUgTWF0aE1MIHN1cHBvcnQgaW4gcmVsZWFzZSBi
dWlsZHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191627</attachid>
            <date>2013-03-05 18:10:31 -0800</date>
            <delta_ts>2013-03-06 14:15:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130305180637.patch</filename>
            <type>text/plain</type>
            <size>94703</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhjNjI1NjU1ZDU2MWEx
MjhjYzRmYzIwOTk3YzEwZTBhNjViOTllNC4uNzRmOGQ4NDc4MjkzMjk4OWViYzgwNjUxYjMxNjIy
YTQ2ODlmYWY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAxMy0wMy0wNSAgVGFv
IEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB0aGUgZGVmYXVs
dCB2aWRlbyBwb3N0ZXIgaWYgaXQgZG9lc24ndCBleGlzdCBpbiB2aWRlbyB0YWcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDI2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS92aWRl
by1kZWZhdWx0LXBvc3Rlci5odG1sCisgICAgICAgICAgICAgICBtZWRpYS92aWRlby1uby1kZWZh
dWx0LXBvc3Rlci5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsaWVudFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmNsaWVudEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjppbWFn
ZVNvdXJjZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRhY2gpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6cmVjYWxjU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2hl
Y2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZv
Y3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZSk6
CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRXaWRnZXRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1i
ZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJl
ZEVsZW1lbnQ6OmltYWdlU291cmNlVVJMKToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1l
bnQuaDoKKyAgICAgICAgKEhUTUxFbWJlZEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRyYWNrRGlzcGxh
eVVwZGF0ZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxN
ZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZmluaXNo
UGFyc2luZ0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNj
aGVkdWxlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NBcmVSZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bm9uZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFBsYXllZFJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWspOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFdlYmtpdFByZXNlcnZlc1BpdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQ
bGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YmVnaW5TY3J1
YmJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9n
cmVzc1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllckRpZFJlbW92ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRp
ZEFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92
ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRl
eHRUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4
dFNvdXJjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJj
ZVdhc0FkZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdh
c1JlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjplbmRlZFBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnN0b3BwZWREdWVUb0Vycm9ycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Y2FuU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5
UGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlh
UGxheWVyUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVRleHRU
cmFja0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmln
dXJlVGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFHcm91cCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlTWVkaWFGcmFnbWVudFVSSSk6
CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MT2JqZWN0RWxlbWVudDo6SFRNTE9iamVjdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFwRGF0YVBhcmFtVG9TcmMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1l
bnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6c2hvdWxkQWxsb3dRdWlja1RpbWVDbGFzc0lkUXVp
cmspOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6Omhhc1ZhbGlkQ2xhc3NJ
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlckZhbGxiYWNrQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZh
QXBwbGV0KToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6CisgICAgICAgIChI
VE1MT2JqZWN0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OkhUTUxWaWRlb0VsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJs
ZVZpZGVvRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0
RW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBv
c3RlckltYWdlVVJMKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAg
ICAgKEhUTUxWaWRlb0VsZW1lbnQpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVu
dCk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0VVJMRm9ySW1hZ2VOb2RlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnNldFVSTEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6c3BlbGxpbmdUb29sVGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6OnJlcGxhY2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1
bHQ6OmFsdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojp0aXRsZURpc3BsYXlTdHJpbmcp
OgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwpOgorICAgICAgICAqIHN2Zy9TVkdJbWFn
ZUVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0ltYWdlRWxlbWVudCk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGlu
Z3M6OkJhY2t1cDo6QmFja3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6
OkJhY2t1cDo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6
OnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKEJhY2t1cCk6CisgICAgICAg
IChJbnRlcm5hbFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
aWRsOgorCisyMDEzLTAyLTIxICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgQWRkIHRoZSBkZWZhdWx0IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0
IGluIHZpZGVvIHRhZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwMjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAg
ICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKKworICAgICAgICAqIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
OjphdHRhY2gpOiBBZGQgcG9zdGVyIGlmIGl0IGRpZG4ndCBleGlzdCBhbmQgdGhlIGRlZmF1bHQg
cG9zdGVyIHByb3ZpZGVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaW46IEFkZCBkZWZhdWx0
VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNr
dXApOiBzdXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyk6IHN1cHBvcnQgcmVzdG9y
ZSBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRp
bmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwpOiBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJM
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
Lmg6CisgICAgICAgIChCYWNrdXApOiBzdXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJV
UkwuCisgICAgICAgIChJbnRlcm5hbFNldHRpbmdzKTogQWRkIHNldERlZmF1bHRWaWRvZVBvc3Rl
clVSTCBtZXRob2QuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDogQWRk
IHNldERlZmF1bHRWaWRlb1Bvc3RlclVSTCBmb3IgdGVzdCBwdXJwb3NlLgorCiAyMDEzLTAzLTA1
ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYXIgYXNzb2Np
YXRlZCBjYWNoZSBwYXJ0aXRpb25zIHdoZW4gZGVsZXRpbmcgb3JpZ2lucycgY2FjaGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAppbmRleCA5NTMxODU1ZWVlMGZjNWNlODJkMmNmNWEzMzU4NmIzNzE5ZTE3
MzlhLi45YmEwODMwY2ViNGQxMDNiYzYwNzM1NWQzNDEzYjAyMGY2N2MzYWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxlbWVudCogZSkKIHsKICAgICByZXR1cm4gZSAm
JiBlLT5kb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpICYmIGUtPmlzSFRNTEVsZW1lbnQoKTsK
IH0KLSAgICAKKwogY2xhc3MgU3R5bGVSZXNvbHZlclBhcmVudFB1c2hlciB7CiBwdWJsaWM6CiAg
ICAgU3R5bGVSZXNvbHZlclBhcmVudFB1c2hlcihFbGVtZW50KiBwYXJlbnQpCkBAIC00MDAsNyAr
NDAwLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbnVsbEF0b207CiB9CiAKLXZv
aWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblRvVG9wKSAKK3ZvaWQgRWxlbWVu
dDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblRvVG9wKQogewogICAgIGRvY3VtZW50KCktPnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCkBAIC01NzcsNyArNTc3LDcg
QEAgaW50IEVsZW1lbnQ6OmNsaWVudFdpZHRoKCkKICAgICAgICAgICAgICAgICByZXR1cm4gYWRq
dXN0Rm9yQWJzb2x1dGVab29tKHZpZXctPmxheW91dFdpZHRoKCksIHJlbmRlclZpZXcpOwogICAg
ICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKFJlbmRlckJveCogcmVuZGVyZXIgPSByZW5k
ZXJCb3goKSkKICNpZiBFTkFCTEUoU1VCUElYRUxfTEFZT1VUKQogICAgICAgICByZXR1cm4gYWRq
dXN0TGF5b3V0VW5pdEZvckFic29sdXRlWm9vbShyZW5kZXJlci0+cGl4ZWxTbmFwcGVkQ2xpZW50
V2lkdGgoKSwgcmVuZGVyZXIpLnJvdW5kKCk7CkBAIC01OTMsNyArNTkzLDcgQEAgaW50IEVsZW1l
bnQ6OmNsaWVudEhlaWdodCgpCiAKICAgICAvLyBXaGVuIGluIHN0cmljdCBtb2RlLCBjbGllbnRI
ZWlnaHQgZm9yIHRoZSBkb2N1bWVudCBlbGVtZW50IHNob3VsZCByZXR1cm4gdGhlIGhlaWdodCBv
ZiB0aGUgY29udGFpbmluZyBmcmFtZS4KICAgICAvLyBXaGVuIGluIHF1aXJrcyBtb2RlLCBjbGll
bnRIZWlnaHQgZm9yIHRoZSBib2R5IGVsZW1lbnQgc2hvdWxkIHJldHVybiB0aGUgaGVpZ2h0IG9m
IHRoZSBjb250YWluaW5nIGZyYW1lLgotICAgIGJvb2wgaW5RdWlya3NNb2RlID0gZG9jdW1lbnQo
KS0+aW5RdWlya3NNb2RlKCk7ICAgICAKKyAgICBib29sIGluUXVpcmtzTW9kZSA9IGRvY3VtZW50
KCktPmluUXVpcmtzTW9kZSgpOwogCiAgICAgaWYgKCghaW5RdWlya3NNb2RlICYmIGRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpID09IHRoaXMpIHx8CiAgICAgICAgIChpblF1aXJrc01vZGUg
JiYgaXNIVE1MRWxlbWVudCgpICYmIGRvY3VtZW50KCktPmJvZHkoKSA9PSB0aGlzKSkgewpAQCAt
NjAyLDcgKzYwMiw3IEBAIGludCBFbGVtZW50OjpjbGllbnRIZWlnaHQoKQogICAgICAgICAgICAg
ICAgIHJldHVybiBhZGp1c3RGb3JBYnNvbHV0ZVpvb20odmlldy0+bGF5b3V0SGVpZ2h0KCksIHJl
bmRlclZpZXcpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKFJlbmRlckJveCog
cmVuZGVyZXIgPSByZW5kZXJCb3goKSkKICNpZiBFTkFCTEUoU1VCUElYRUxfTEFZT1VUKQogICAg
ICAgICByZXR1cm4gYWRqdXN0TGF5b3V0VW5pdEZvckFic29sdXRlWm9vbShyZW5kZXJlci0+cGl4
ZWxTbmFwcGVkQ2xpZW50SGVpZ2h0KCksIHJlbmRlcmVyKS5yb3VuZCgpOwpAQCAtNzQwLDcgKzc0
MCw3IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCkKICAgICBkb2N1bWVudCgpLT5hZGp1c3RGbG9hdFJlY3RGb3JTY3JvbGxBbmRBYnNvbHV0
ZVpvb21BbmRGcmFtZVNjYWxlKHJlc3VsdCwgcmVuZGVyZXIoKSk7CiAgICAgcmV0dXJuIENsaWVu
dFJlY3Q6OmNyZWF0ZShyZXN1bHQpOwogfQotICAgIAorCiBJbnRSZWN0IEVsZW1lbnQ6OnNjcmVl
blJlY3QoKSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKSkKQEAgLTExMjEsOSArMTEyMSw5
IEBAIEtVUkwgRWxlbWVudDo6YmFzZVVSSSgpIGNvbnN0CiAgICAgcmV0dXJuIEtVUkwocGFyZW50
QmFzZSwgYmFzZUF0dHJpYnV0ZSk7CiB9CiAKLWNvbnN0IFF1YWxpZmllZE5hbWUmIEVsZW1lbnQ6
OmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIEVs
ZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3JjQXR0cjsKKyAg
ICByZXR1cm4gZ2V0QXR0cmlidXRlKHNyY0F0dHIpOwogfQogCiBib29sIEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCkBAIC0xMjcz
LDcgKzEyNzMsNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgpCiAKICAgICB1cGRhdGVQc2V1ZG9F
bGVtZW50KEFGVEVSKTsKIAotICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7ICAgCisgICAgaWYgKGhh
c1JhcmVEYXRhKCkpIHsKICAgICAgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0gZWxlbWVudFJh
cmVEYXRhKCk7CiAgICAgICAgIGlmIChkYXRhLT5uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNv
b25BZnRlckF0dGFjaCgpKSB7CiAgICAgICAgICAgICBpZiAoaXNGb2N1c2FibGUoKSAmJiBkb2N1
bWVudCgpLT5mb2N1c2VkTm9kZSgpID09IHRoaXMpCkBAIC0xNDM2LDggKzE0MzYsOCBAQCB2b2lk
IEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICAgICAgaWYgKG4t
PmlzVGV4dE5vZGUoKSkgewogICAgICAgICAgICAgdG9UZXh0KG4pLT5yZWNhbGNUZXh0U3R5bGUo
Y2hhbmdlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9IAotICAgICAgICBpZiAo
IW4tPmlzRWxlbWVudE5vZGUoKSkgCisgICAgICAgIH0KKyAgICAgICAgaWYgKCFuLT5pc0VsZW1l
bnROb2RlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgRWxlbWVudCogZWxlbWVu
dCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKICAgICAgICAgYm9vbCBjaGlsZFJ1bGVzQ2hh
bmdlZCA9IGVsZW1lbnQtPm5lZWRzU3R5bGVSZWNhbGMoKSAmJiBlbGVtZW50LT5zdHlsZUNoYW5n
ZVR5cGUoKSA9PSBGdWxsU3R5bGVDaGFuZ2U7CkBAIC0xNDU1LDcgKzE0NTUsNyBAQCB2b2lkIEVs
ZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKIAogICAgIGNsZWFyTmVlZHNT
dHlsZVJlY2FsYygpOwogICAgIGNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgCisK
ICAgICBpZiAoaGFzQ3VzdG9tU3R5bGVDYWxsYmFja3MoKSkKICAgICAgICAgZGlkUmVjYWxjU3R5
bGUoY2hhbmdlKTsKIH0KQEAgLTE1NjQsNyArMTU2NCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrRm9y
U2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wg
ZmluCiB7CiAgICAgLy8gOmVtcHR5IHNlbGVjdG9yLgogICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNo
YW5nZShlLCBzdHlsZSk7Ci0gICAgCisKICAgICBpZiAoIXN0eWxlIHx8IChlLT5uZWVkc1N0eWxl
UmVjYWxjKCkgJiYgZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTE1NzUsMTggKzE1NzUsMTggQEAgc3RhdGljIHZvaWQgY2hlY2tG
b3JTaWJsaW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBzdHlsZSwgYm9v
bCBmaW4KICAgICAgICAgLy8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgogICAgICAgICBOb2Rl
KiBuZXdGaXJzdENoaWxkID0gMDsKICAgICAgICAgZm9yIChuZXdGaXJzdENoaWxkID0gZS0+Zmly
c3RDaGlsZCgpOyBuZXdGaXJzdENoaWxkICYmICFuZXdGaXJzdENoaWxkLT5pc0VsZW1lbnROb2Rl
KCk7IG5ld0ZpcnN0Q2hpbGQgPSBuZXdGaXJzdENoaWxkLT5uZXh0U2libGluZygpKSB7fTsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgZWxlbWVudCBub2RlIGZvbGxvd2lu
ZyB8YWZ0ZXJDaGFuZ2V8CiAgICAgICAgIE5vZGUqIGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9u
ID0gMDsKICAgICAgICAgZm9yIChmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiA9IGFmdGVyQ2hh
bmdlOwogICAgICAgICAgICAgIGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uICYmICFmaXJzdEVs
ZW1lbnRBZnRlckluc2VydGlvbi0+aXNFbGVtZW50Tm9kZSgpOwogICAgICAgICAgICAgIGZpcnN0
RWxlbWVudEFmdGVySW5zZXJ0aW9uID0gZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24tPm5leHRT
aWJsaW5nKCkpIHt9OwotICAgICAgICAKKwogICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbnNlcnQv
YXBwZW5kIGNhc2UuCiAgICAgICAgIGlmIChuZXdGaXJzdENoaWxkICE9IGZpcnN0RWxlbWVudEFm
dGVySW5zZXJ0aW9uICYmIGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uICYmIGZpcnN0RWxlbWVu
dEFmdGVySW5zZXJ0aW9uLT5hdHRhY2hlZCgpICYmCiAgICAgICAgICAgICBmaXJzdEVsZW1lbnRB
ZnRlckluc2VydGlvbi0+cmVuZGVyU3R5bGUoKSAmJiBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlv
bi0+cmVuZGVyU3R5bGUoKS0+Zmlyc3RDaGlsZFN0YXRlKCkpCiAgICAgICAgICAgICBmaXJzdEVs
ZW1lbnRBZnRlckluc2VydGlvbi0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgICAgICAgICAg
CisKICAgICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIGhhbmRsZSBub2RlIHJlbW92YWwuCiAgICAg
ICAgIGlmIChjaGlsZENvdW50RGVsdGEgPCAwICYmIG5ld0ZpcnN0Q2hpbGQgPT0gZmlyc3RFbGVt
ZW50QWZ0ZXJJbnNlcnRpb24gJiYgbmV3Rmlyc3RDaGlsZCAmJiAoIW5ld0ZpcnN0Q2hpbGQtPnJl
bmRlclN0eWxlKCkgfHwgIW5ld0ZpcnN0Q2hpbGQtPnJlbmRlclN0eWxlKCktPmZpcnN0Q2hpbGRT
dGF0ZSgpKSkKICAgICAgICAgICAgIG5ld0ZpcnN0Q2hpbGQtPnNldE5lZWRzU3R5bGVSZWNhbGMo
KTsKQEAgLTE1OTgsMTcgKzE1OTgsMTcgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJsaW5nU3R5
bGVDaGFuZ2VzKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBmaW4KICAgICAg
ICAgLy8gRmluZCBvdXIgbmV3IGxhc3QgY2hpbGQuCiAgICAgICAgIE5vZGUqIG5ld0xhc3RDaGls
ZCA9IDA7CiAgICAgICAgIGZvciAobmV3TGFzdENoaWxkID0gZS0+bGFzdENoaWxkKCk7IG5ld0xh
c3RDaGlsZCAmJiAhbmV3TGFzdENoaWxkLT5pc0VsZW1lbnROb2RlKCk7IG5ld0xhc3RDaGlsZCA9
IG5ld0xhc3RDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHt9OwotICAgICAgICAKKwogICAgICAg
ICAvLyBGaW5kIHRoZSBsYXN0IGVsZW1lbnQgbm9kZSBnb2luZyBiYWNrd2FyZHMgZnJvbSB8YmVm
b3JlQ2hhbmdlfAogICAgICAgICBOb2RlKiBsYXN0RWxlbWVudEJlZm9yZUluc2VydGlvbiA9IDA7
CiAgICAgICAgIGZvciAobGFzdEVsZW1lbnRCZWZvcmVJbnNlcnRpb24gPSBiZWZvcmVDaGFuZ2U7
CiAgICAgICAgICAgICAgbGFzdEVsZW1lbnRCZWZvcmVJbnNlcnRpb24gJiYgIWxhc3RFbGVtZW50
QmVmb3JlSW5zZXJ0aW9uLT5pc0VsZW1lbnROb2RlKCk7CiAgICAgICAgICAgICAgbGFzdEVsZW1l
bnRCZWZvcmVJbnNlcnRpb24gPSBsYXN0RWxlbWVudEJlZm9yZUluc2VydGlvbi0+cHJldmlvdXNT
aWJsaW5nKCkpIHt9OwotICAgICAgICAKKwogICAgICAgICBpZiAobmV3TGFzdENoaWxkICE9IGxh
c3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uICYmIGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uICYm
IGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uLT5hdHRhY2hlZCgpICYmCiAgICAgICAgICAgICBs
YXN0RWxlbWVudEJlZm9yZUluc2VydGlvbi0+cmVuZGVyU3R5bGUoKSAmJiBsYXN0RWxlbWVudEJl
Zm9yZUluc2VydGlvbi0+cmVuZGVyU3R5bGUoKS0+bGFzdENoaWxkU3RhdGUoKSkKICAgICAgICAg
ICAgIGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUgcmVt
b3ZhbC4gIFRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSBpcyBzaW1pbGFyIHRvIG5vZGUgcmVtb3Zh
bCBhcyB3ZWxsIGluIHRoYXQgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGxhc3QgY2hpbGQKICAgICAg
ICAgLy8gdG8gbWF0Y2ggbm93LgogICAgICAgICBpZiAoKGNoaWxkQ291bnREZWx0YSA8IDAgfHwg
ZmluaXNoZWRQYXJzaW5nQ2FsbGJhY2spICYmIG5ld0xhc3RDaGlsZCA9PSBsYXN0RWxlbWVudEJl
Zm9yZUluc2VydGlvbiAmJiBuZXdMYXN0Q2hpbGQgJiYgKCFuZXdMYXN0Q2hpbGQtPnJlbmRlclN0
eWxlKCkgfHwgIW5ld0xhc3RDaGlsZC0+cmVuZGVyU3R5bGUoKS0+bGFzdENoaWxkU3RhdGUoKSkp
CkBAIC0xOTAyLDcgKzE5MDIsNyBAQCB2b2lkIEVsZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVBy
ZXZpb3VzU2VsZWN0aW9uLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAKICAgICAvLyBJZiB0
aGUgc3R5bGVzaGVldHMgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkIHdlIGNhbiByZWxpYWJseSBj
aGVjayBpc0ZvY3VzYWJsZS4KICAgICAvLyBJZiBub3QsIHdlIGNvbnRpbnVlIGFuZCBzZXQgdGhl
IGZvY3VzZWQgbm9kZSBvbiB0aGUgZm9jdXMgY29udHJvbGxlciBiZWxvdyBzbwotICAgIC8vIHRo
YXQgaXQgY2FuIGJlIHVwZGF0ZWQgc29vbiBhZnRlciBhdHRhY2guIAorICAgIC8vIHRoYXQgaXQg
Y2FuIGJlIHVwZGF0ZWQgc29vbiBhZnRlciBhdHRhY2guCiAgICAgaWYgKGRvYy0+aGF2ZVN0eWxl
c2hlZXRzTG9hZGVkKCkpIHsKICAgICAgICAgZG9jLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKICAgICAgICAgaWYgKCFpc0ZvY3VzYWJsZSgpKQpAQCAtMTkyOSw3ICsx
OTI5LDcgQEAgdm9pZCBFbGVtZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlv
biwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICAgICBlbnN1cmVFbGVtZW50UmFyZURh
dGEoKS0+c2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2godHJ1ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FuY2VsRm9jdXNBcHBl
YXJhbmNlVXBkYXRlKCk7CiAgICAgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKHJlc3RvcmVQcmV2aW91
c1NlbGVjdGlvbik7CiB9CkBAIC0xOTQwLDE0ICsxOTQwLDE0IEBAIHZvaWQgRWxlbWVudDo6dXBk
YXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgLypyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24qLykKICAg
ICAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICAgICAgLy8gV2hlbiBm
b2N1c2luZyBhbiBlZGl0YWJsZSBlbGVtZW50IGluIGFuIGlmcmFtZSwgZG9uJ3QgcmVzZXQgdGhl
IHNlbGVjdGlvbiBpZiBpdCBhbHJlYWR5IGNvbnRhaW5zIGEgc2VsZWN0aW9uLgogICAgICAgICBp
ZiAodGhpcyA9PSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlc3RvcmUg
dGhlIHByZXZpb3VzIHNlbGVjdGlvbiBpZiB0aGVyZSBpcyBvbmUuCiAgICAgICAgIFZpc2libGVT
ZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihmaXJzdFBvc2l0aW9uSW5P
ckJlZm9yZU5vZGUodGhpcyksIERPV05TVFJFQU0pOwotICAgICAgICAKKwogICAgICAgICBpZiAo
ZnJhbWUtPnNlbGVjdGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkg
ewogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0
aW9uKTsKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+cmV2ZWFsU2VsZWN0aW9uKCk7
CkBAIC0yNDQ3LDcgKzI0NDcsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnRPbkFuY2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGJvbwogICAgIHdoaWxl
ICgoZWxlbWVudCA9IHBhcmVudENyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGVsZW1lbnQpKSkKICAg
ICAgICAgZWxlbWVudC0+c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmbGFnKTsKIH0KLSNl
bmRpZiAgICAKKyNlbmRpZgogCiAjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQogYm9vbCBFbGVt
ZW50Ojppc0luVG9wTGF5ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYzMwNDZmYjc2
NTkzN2EwNWMyMTM0YWFmNWU3YzI5NDIyODljMzRlOS4uN2MxNTBmM2M4NGZlZDU0NDY1ZTM1NTI4
M2M1OTNhNjBkMDExOTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zMTksNyArMzE5LDcgQEAg
cHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gZ2V0Q2xpZW50UmVjdHMo
KTsKICAgICBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwot
ICAgIAorCiAgICAgLy8gUmV0dXJucyB0aGUgYWJzb2x1dGUgYm91bmRpbmcgYm94IHRyYW5zbGF0
ZWQgaW50byBzY3JlZW4gY29vcmRpbmF0ZXM6CiAgICAgSW50UmVjdCBzY3JlZW5SZWN0KCkgY29u
c3Q7CiAKQEAgLTM0NCw3ICszNDQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnUU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWU7IH0KICAgICBTdHJpbmcgdGFn
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVOYW1lKCk7IH0KICAgICBib29sIGhhc1RhZ05hbWUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lLm1h
dGNoZXModGFnTmFtZSk7IH0KLSAgICAKKwogICAgIC8vIEEgZmFzdCBmdW5jdGlvbiBmb3IgY2hl
Y2tpbmcgdGhlIGxvY2FsIG5hbWUgYWdhaW5zdCBhbm90aGVyIGF0b21pYyBzdHJpbmcuCiAgICAg
Ym9vbCBoYXNMb2NhbE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV90YWdOYW1lLmxvY2FsTmFtZSgpID09IG90aGVyOyB9CiAgICAgYm9vbCBoYXNMb2NhbE5h
bWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZS5s
b2NhbE5hbWUoKSA9PSBvdGhlci5sb2NhbE5hbWUoKTsgfQpAQCAtNDUxLDcgKzQ1MSw3IEBAIHB1
YmxpYzoKICAgICBLVVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Q7CiAgICAgS1VSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291cmNl
QXR0cmlidXRlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBp
bWFnZVNvdXJjZVVSTCgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9vbCByZXN0
b3JlUHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlLCBGb2N1c0RpcmVjdGlvbiA9IEZvY3VzRGlyZWN0
aW9uTm9uZSk7CkBAIC00NjAsNyArNDYwLDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGlubmVy
VGV4dCgpOwogICAgIFN0cmluZyBvdXRlclRleHQoKTsKLSAKKwogICAgIHZpcnR1YWwgU3RyaW5n
IHRpdGxlKCkgY29uc3Q7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBzZXVkbygpIGNvbnN0
OwpAQCAtNTU5LDcgKzU1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgQUxMT1dfS0VZQk9BUkRfSU5Q
VVQgPSAxIDw8IDAsCiAgICAgICAgIExFR0FDWV9NT1pJTExBX1JFUVVFU1QgPSAxIDw8IDEsCiAg
ICAgfTsKLSAgICAKKwogICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4odW5zaWduZWQg
c2hvcnQgZmxhZ3MpOwogICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQo
Ym9vbCk7CkBAIC02MTUsNyArNjE1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRSZWdpc3RlckFzTmFtZWRJdGVtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkUmVnaXN0ZXJBc0V4dHJhTmFtZWRJdGVtKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgY2xlYXJUYWJJbmRleEV4cGxpY2l0bHlJZk5lZWRlZCgp
OyAgICAKKyAgICB2b2lkIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQoKTsKICAgICB2
b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShzaG9ydCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzRm9jdXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkg
Y29uc3QgT1ZFUlJJREU7CkBAIC02NzQsNyArNjc0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmlydHVhbExvY2FsTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGxv
Y2FsTmFtZSgpOyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHZpcnR1YWxOYW1l
c3BhY2VVUkkoKSBjb25zdCB7IHJldHVybiBuYW1lc3BhY2VVUkkoKTsgfQogICAgIHZpcnR1YWwg
UmVuZGVyU3R5bGUqIHZpcnR1YWxDb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRT
cGVjaWZpZXIgPSBOT1BTRVVETykgeyByZXR1cm4gY29tcHV0ZWRTdHlsZShwc2V1ZG9FbGVtZW50
U3BlY2lmaWVyKTsgfQotICAgIAorCiAgICAgLy8gY2xvbmVOb2RlIGlzIHByaXZhdGUgc28gdGhh
dCBub24tdmlydHVhbCBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4gYW5kIGNsb25lRWxlbWVudFdp
dGhvdXRDaGlsZHJlbgogICAgIC8vIGFyZSB1c2VkIGluc3RlYWQuCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIE9WRVJSSURFOwpAQCAtNzEzLDcgKzcx
Myw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RWxlbWVudERhdGE+IG1fZWxlbWVudERhdGE7
CiB9OwotICAgIAorCiBpbmxpbmUgRWxlbWVudCogdG9FbGVtZW50KE5vZGUqIG5vZGUpCiB7CiAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwgbm9kZS0+aXNFbGVt
ZW50Tm9kZSgpKTsKQEAgLTczMyw3ICs3MzMsNyBAQCBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdO
YW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzRWxl
bWVudE5vZGUoKSAmJiB0b0VsZW1lbnQodGhpcyktPmhhc1RhZ05hbWUobmFtZSk7CiB9Ci0gICAg
CisKIGlubGluZSBib29sIE5vZGU6Omhhc0xvY2FsTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQodGhp
cyktPmhhc0xvY2FsTmFtZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuY3BwCmluZGV4IGMzM2UyZjhiOWMwZDRkOWIzZmU5OTVkNDA2ODNhNzI5OWUwOTAyZjUuLmFh
MGRjN2ExYzEwOGIyNGNhNTUyYWJhMTVlMjk4YjY1Mjg4NTYwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCBQYXNzUmVmUHRyPEhU
TUxFbWJlZEVsZW1lbnQ+IEhUTUxFbWJlZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEVtYmVkRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVu
ZGVyV2lkZ2V0KiBmaW5kV2lkZ2V0UmVuZGVyZXIoY29uc3QgTm9kZSogbikgCitzdGF0aWMgaW5s
aW5lIFJlbmRlcldpZGdldCogZmluZFdpZGdldFJlbmRlcmVyKGNvbnN0IE5vZGUqIG4pCiB7CiAg
ICAgaWYgKCFuLT5yZW5kZXJlcigpKQogICAgICAgICBkbwpAQCAtMTk1LDcgKzE5NSw3IEBAIGJv
b2wgSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5n
Q29udGV4dCYgY29udGV4dCkKICAgICB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
Ci0gICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY2NDIyMjE+LiAKKyAgICAv
LyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjY0MjIyMT4uCiAgICAgaWYgKFNldHRp
bmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0aW5ncygpKSB7CiAgICAgICAgIGlmIChzZXR0aW5n
cy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMjEwLDkgKzIxMCw5IEBAIGJvb2wgSFRNTEVtYmVkRWxlbWVudDo6
aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0
dXJuIGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3JjQXR0ciB8fCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi1jb25zdCBRdWFsaWZpZWROYW1lJiBI
VE1MRW1iZWRFbGVtZW50OjppbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdAorY29uc3Qg
QXRvbWljU3RyaW5nJiBIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHNyY0F0dHI7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShzcmNBdHRyKTsK
IH0KIAogdm9pZCBIVE1MRW1iZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5oCmluZGV4IGE1OTViYTRkNTlhYzdjMjAyY2YxNzVmOTA5MTZmZTQxYjE4NjBmYmYu
LjQ0MmRjYjlhYjExMGJlOTRlMGU4ZTE0YTA2MmI4MzE3NzlkNGUwZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBj
b25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291
cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBSZW5kZXJX
aWRnZXQqIHJlbmRlcldpZGdldEZvckpTQmluZGluZ3MoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMWU4OWRmYzJlZjA5Yjk4NjRmMjUyNzBl
OGNkNjBiNzMxNjU0ODkzMy4uMTgwNjRiMjM0MjlkMjc1YmExMmQxZjEwZjRjNDFmYjExM2MxYTE1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yMCw3ICsy
MCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTE1
MCw3ICsxNTAsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKICNl
bmRpZgogCiAjaWZuZGVmIExPR19NRURJQV9FVkVOVFMKLS8vIERlZmF1bHQgdG8gbm90IGxvZ2dp
bmcgZXZlbnRzIGJlY2F1c2Ugc28gbWFueSBhcmUgZ2VuZXJhdGVkIHRoZXkgY2FuIG92ZXJ3aGVs
bSB0aGUgcmVzdCBvZiAKKy8vIERlZmF1bHQgdG8gbm90IGxvZ2dpbmcgZXZlbnRzIGJlY2F1c2Ug
c28gbWFueSBhcmUgZ2VuZXJhdGVkIHRoZXkgY2FuIG92ZXJ3aGVsbSB0aGUgcmVzdCBvZgogLy8g
dGhlIGxvZ2dpbmcuCiAjZGVmaW5lIExPR19NRURJQV9FVkVOVFMgMAogI2VuZGlmCkBAIC0yMjMs
NyArMjIzLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAg
ICAgICBtX21lZGlhRWxlbWVudC0+ZW5kSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0
cygpOwogICAgIH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21l
ZGlhRWxlbWVudDsKIH07CkBAIC0zMDEsNyArMzAxLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRN
TE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW0KICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50Iik7
CiAgICAgZG9jdW1lbnQtPnJlZ2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7CiAg
ICAgZG9jdW1lbnQtPnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJh
Y2tzKHRoaXMpOwotICAgIAorCiAgICAgaWYgKGRvY3VtZW50LT5zZXR0aW5ncygpICYmIGRvY3Vt
ZW50LT5zZXR0aW5ncygpLT5tZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpKSB7CiAg
ICAgICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yUmF0ZUNo
YW5nZVJlc3RyaWN0aW9uKTsKICAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJl
VXNlckdlc3R1cmVGb3JMb2FkUmVzdHJpY3Rpb24pOwpAQCAtNDg4LDExICs0ODgsMTEgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogICAgIGRvY3VtZW50
KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBjcmVhdGVNZWRpYVBsYXllclByb3h5KCk7
CiAjZW5kaWYKLSAgICAKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05h
bWUodHJhY2tUYWcpKSB7CiAgICAgICAgICAgICBzY2hlZHVsZUxvYWQoVGV4dFRyYWNrUmVzb3Vy
Y2UpOwpAQCAtNjE3LDcgKzYxNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVM
b2FkKExvYWRUeXBlIGxvYWRUeXBlKQogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVP
KQogICAgICAgICBjcmVhdGVNZWRpYVBsYXllclByb3h5KCk7CiAjZW5kaWYKLSAgICAgICAgCisK
ICAgICAgICAgcHJlcGFyZUZvckxvYWQoKTsKICAgICAgICAgbV9wZW5kaW5nTG9hZEZsYWdzIHw9
IE1lZGlhUmVzb3VyY2U7CiAgICAgfQpAQCAtNjY4LDcgKzY2OCw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogICAgIG1f
cGVuZGluZ0xvYWRGbGFncyA9IDA7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFFcnJvcj4gSFRNTE1l
ZGlhRWxlbWVudDo6ZXJyb3IoKSBjb25zdCAKK1Bhc3NSZWZQdHI8TWVkaWFFcnJvcj4gSFRNTE1l
ZGlhRWxlbWVudDo6ZXJyb3IoKSBjb25zdAogewogICAgIHJldHVybiBtX2Vycm9yOwogfQpAQCAt
NzAxLDcgKzcwMSw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5CiAgICAgICAgICAgICBjYW5Q
bGF5ID0gQVNDSUlMaXRlcmFsKCJwcm9iYWJseSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIAorCiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUo
JXMsICVzLCAlcykgLT4gJXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBrZXlTeXN0ZW0udXRm
OCgpLmRhdGEoKSwgdXJsLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGNhblBsYXkudXRm
OCgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gY2FuUGxheTsKQEAgLTcxMCwxMiArNzEwLDEyIEBA
IFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGtleVN5CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoKQog
ewogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0KHRoaXMpOyAvLyBsb2FkSW50
ZXJuYWwgbWF5IHJlc3VsdCBpbiBhICdiZWZvcmVsb2FkJyBldmVudCwgd2hpY2ggY2FuIG1ha2Ug
YXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCi0gICAgCisKICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50Ojpsb2FkKCkiKTsKLSAgICAKKwogICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVk
Rm9yTG9hZCgpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgbV9sb2FkSW5pdGlhdGVkQnlVc2VyR2VzdHVy
ZSA9IFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogICAgIGlmICht
X2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlKQogICAgICAgICByZW1vdmVCZWhhdmlvcnNSZXN0
cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUoKTsKQEAgLTc0Miw3ICs3NDIsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKCkKICAgICBtX2xvYWRTdGF0ZSA9IFdh
aXRpbmdGb3JTb3VyY2U7CiAgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IDA7CiAKLSAgICAvLyAy
IC0gSWYgdGhlcmUgYXJlIGFueSB0YXNrcyBmcm9tIHRoZSBtZWRpYSBlbGVtZW50J3MgbWVkaWEg
ZWxlbWVudCBldmVudCB0YXNrIHNvdXJjZSBpbiAKKyAgICAvLyAyIC0gSWYgdGhlcmUgYXJlIGFu
eSB0YXNrcyBmcm9tIHRoZSBtZWRpYSBlbGVtZW50J3MgbWVkaWEgZWxlbWVudCBldmVudCB0YXNr
IHNvdXJjZSBpbgogICAgIC8vIG9uZSBvZiB0aGUgdGFzayBxdWV1ZXMsIHRoZW4gcmVtb3ZlIHRo
b3NlIHRhc2tzLgogICAgIGNhbmNlbFBlbmRpbmdFdmVudHNBbmRDYWxsYmFja3MoKTsKIApAQCAt
ODAyLDcgKzgwMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQog
ICAgIG1fbGFzdFNlZWtUaW1lID0gMDsKIAogICAgIC8vIFRoZSBzcGVjIGRvZXNuJ3Qgc2F5IHRv
IGJsb2NrIHRoZSBsb2FkIGV2ZW50IHVudGlsIHdlIGFjdHVhbGx5IHJ1biB0aGUgYXN5bmNocm9u
b3VzIHNlY3Rpb24KLSAgICAvLyBhbGdvcml0aG0sIGJ1dCBkbyBpdCBub3cgYmVjYXVzZSB3ZSB3
b24ndCBzdGFydCB0aGF0IHVudGlsIGFmdGVyIHRoZSB0aW1lciBmaXJlcyBhbmQgdGhlIAorICAg
IC8vIGFsZ29yaXRobSwgYnV0IGRvIGl0IG5vdyBiZWNhdXNlIHdlIHdvbid0IHN0YXJ0IHRoYXQg
dW50aWwgYWZ0ZXIgdGhlIHRpbWVyIGZpcmVzIGFuZCB0aGUKICAgICAvLyBldmVudCBtYXkgaGF2
ZSBhbHJlYWR5IGZpcmVkIGJ5IHRoZW4uCiAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQodHJ1
ZSk7CiAKQEAgLTgyNiw5ICs4MjYsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRl
cm5hbCgpCiAgICAgICAgIG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0ID0gdHJ1ZTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBPbmNlIHRoZSBwYWdlIGhhcyBhbGxv
d2VkIGFuIGVsZW1lbnQgdG8gbG9hZCBtZWRpYSwgaXQgaXMgZnJlZSB0byBsb2FkIGF0IHdpbGwu
IFRoaXMgYWxsb3dzIGEgCi0gICAgLy8gcGxheWxpc3QgdGhhdCBzdGFydHMgaW4gYSBmb3JlZ3Jv
dW5kIHRhYiB0byBjb250aW51ZSBhdXRvbWF0aWNhbGx5IGlmIHRoZSB0YWIgaXMgc3Vic2VxdWVu
dGx5IAorCisgICAgLy8gT25jZSB0aGUgcGFnZSBoYXMgYWxsb3dlZCBhbiBlbGVtZW50IHRvIGxv
YWQgbWVkaWEsIGl0IGlzIGZyZWUgdG8gbG9hZCBhdCB3aWxsLiBUaGlzIGFsbG93cyBhCisgICAg
Ly8gcGxheWxpc3QgdGhhdCBzdGFydHMgaW4gYSBmb3JlZ3JvdW5kIHRhYiB0byBjb250aW51ZSBh
dXRvbWF0aWNhbGx5IGlmIHRoZSB0YWIgaXMgc3Vic2VxdWVudGx5CiAgICAgLy8gcHV0IGluIHRo
ZSB0aGUgYmFja2dyb3VuZC4KICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQ
YWdlQ29uc2VudFRvTG9hZE1lZGlhUmVzdHJpY3Rpb24pOwogCkBAIC04NjUsMTYgKzg2NSwxNiBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB0aGUg
bWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgc3JjIGF0dHJpYnV0ZSBidXQgaGFzIGEgc291
cmNlIAotICAgICAgICAvLyBlbGVtZW50IGNoaWxkLCB0aGVuIGxldCBtb2RlIGJlIGNoaWxkcmVu
IGFuZCBsZXQgY2FuZGlkYXRlIGJlIHRoZSBmaXJzdCBzdWNoIAorICAgICAgICAvLyBPdGhlcndp
c2UsIGlmIHRoZSBtZWRpYSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBzcmMgYXR0cmlidXRlIGJ1
dCBoYXMgYSBzb3VyY2UKKyAgICAgICAgLy8gZWxlbWVudCBjaGlsZCwgdGhlbiBsZXQgbW9kZSBi
ZSBjaGlsZHJlbiBhbmQgbGV0IGNhbmRpZGF0ZSBiZSB0aGUgZmlyc3Qgc3VjaAogICAgICAgICAv
LyBzb3VyY2UgZWxlbWVudCBjaGlsZCBpbiB0cmVlIG9yZGVyLgogICAgICAgICBpZiAobm9kZSkg
ewogICAgICAgICAgICAgbW9kZSA9IGNoaWxkcmVuOwogICAgICAgICAgICAgbV9uZXh0Q2hpbGRO
b2RlVG9Db25zaWRlciA9IG5vZGU7CiAgICAgICAgICAgICBtX2N1cnJlbnRTb3VyY2VOb2RlID0g
MDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE90aGVyd2lzZSB0aGUgbWVkaWEg
ZWxlbWVudCBoYXMgbmVpdGhlciBhIHNyYyBhdHRyaWJ1dGUgbm9yIGEgc291cmNlIGVsZW1lbnQg
Ci0gICAgICAgICAgICAvLyBjaGlsZDogc2V0IHRoZSBuZXR3b3JrU3RhdGUgdG8gTkVUV09SS19F
TVBUWSwgYW5kIGFib3J0IHRoZXNlIHN0ZXBzOyB0aGUgCisgICAgICAgICAgICAvLyBPdGhlcndp
c2UgdGhlIG1lZGlhIGVsZW1lbnQgaGFzIG5laXRoZXIgYSBzcmMgYXR0cmlidXRlIG5vciBhIHNv
dXJjZSBlbGVtZW50CisgICAgICAgICAgICAvLyBjaGlsZDogc2V0IHRoZSBuZXR3b3JrU3RhdGUg
dG8gTkVUV09SS19FTVBUWSwgYW5kIGFib3J0IHRoZXNlIHN0ZXBzOyB0aGUKICAgICAgICAgICAg
IC8vIHN5bmNocm9ub3VzIHNlY3Rpb24gZW5kcy4KICAgICAgICAgICAgIG1fbG9hZFN0YXRlID0g
V2FpdGluZ0ZvclNvdXJjZTsKICAgICAgICAgICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGZh
bHNlKTsKQEAgLTg4NSw3ICs4ODUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1l
ZGlhUmVzb3VyY2UoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gNCAtIFNldCB0aGUgbWVk
aWEgZWxlbWVudCdzIGRlbGF5aW5nLXRoZS1sb2FkLWV2ZW50IGZsYWcgdG8gdHJ1ZSAodGhpcyBk
ZWxheXMgdGhlIGxvYWQgZXZlbnQpLCAKKyAgICAvLyA0IC0gU2V0IHRoZSBtZWRpYSBlbGVtZW50
J3MgZGVsYXlpbmctdGhlLWxvYWQtZXZlbnQgZmxhZyB0byB0cnVlICh0aGlzIGRlbGF5cyB0aGUg
bG9hZCBldmVudCksCiAgICAgLy8gYW5kIHNldCBpdHMgbmV0d29ya1N0YXRlIHRvIE5FVFdPUktf
TE9BRElORy4KICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudCh0cnVlKTsKICAgICBtX25ldHdv
cmtTdGF0ZSA9IE5FVFdPUktfTE9BRElORzsKQEAgLTk4MCw4ICs5ODAsOCBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50
VHlwZSYgY29udGVudAogICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZv
cm1hdEVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICAvLyBUaGUgcmVz
b3VyY2UgZmV0Y2ggYWxnb3JpdGhtIAorCisgICAgLy8gVGhlIHJlc291cmNlIGZldGNoIGFsZ29y
aXRobQogICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19MT0FESU5HOwogCiAjaWYgIVBMQVRG
T1JNKENIUk9NSVVNKQpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojpsb2FkUmVzb3VyY2UoY29uc3QgS1VSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRl
bnQKICAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVG
b3JSYXRlQ2hhbmdlUmVzdHJpY3Rpb24pOwogI2VuZGlmCiAKLSAgICBpZiAobV9zZW5kUHJvZ3Jl
c3NFdmVudHMpIAorICAgIGlmIChtX3NlbmRQcm9ncmVzc0V2ZW50cykKICAgICAgICAgc3RhcnRQ
cm9ncmVzc0V2ZW50VGltZXIoKTsKIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50
KCktPnNldHRpbmdzKCk7CkBAIC0xMzAzLDcgKzEzMDMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoZmxvYXQgbW92aWVUaW1lKQogICAgICAgICAg
ICAgSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50ID0gc3RhdGljX2Nhc3Q8TG9hZGFibGVU
ZXh0VHJhY2sqPihhZmZlY3RlZFRyYWNrc1tpXSktPnRyYWNrRWxlbWVudCgpOwogICAgICAgICAg
ICAgQVNTRVJUKHRyYWNrRWxlbWVudCk7CiAgICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRy
YWNrRWxlbWVudCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVl
dWUtPmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTMyOSw3ICsxMzI5LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzQXJlUmVh
ZHkoKSBjb25zdAogewogICAgIC8vIDQuOC4xMC4xMi4xIFRleHQgdHJhY2sgbW9kZWwKICAgICAv
LyAuLi4KLSAgICAvLyBUaGUgdGV4dCB0cmFja3Mgb2YgYSBtZWRpYSBlbGVtZW50IGFyZSByZWFk
eSBpZiBhbGwgdGhlIHRleHQgdHJhY2tzIHdob3NlIG1vZGUgd2FzIG5vdCAKKyAgICAvLyBUaGUg
dGV4dCB0cmFja3Mgb2YgYSBtZWRpYSBlbGVtZW50IGFyZSByZWFkeSBpZiBhbGwgdGhlIHRleHQg
dHJhY2tzIHdob3NlIG1vZGUgd2FzIG5vdAogICAgIC8vIGluIHRoZSBkaXNhYmxlZCBzdGF0ZSB3
aGVuIHRoZSBlbGVtZW50J3MgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBsYXN0IHN0YXJ0
ZWQgbm93CiAgICAgLy8gaGF2ZSBhIHRleHQgdHJhY2sgcmVhZGluZXNzIHN0YXRlIG9mIGxvYWRl
ZCBvciBmYWlsZWQgdG8gbG9hZC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0
VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4uc2l6ZSgpOyArK2kpIHsKQEAgLTEzNzAs
NyArMTM3MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQo
VGV4dFRyYWNrKiB0cmFjaykKICAgICAgICAgICAgIEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1lbnQqPihub2RlKTsKICAgICAgICAgICAg
IGlmICh0cmFja0VsZW1lbnQtPnRyYWNrKCkgIT0gdHJhY2spCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgLy8gTWFyayB0aGlzIHRyYWNrIGFz
ICJjb25maWd1cmVkIiBzbyBjb25maWd1cmVUZXh0VHJhY2tzIHdvbid0IGNoYW5nZSB0aGUgbW9k
ZSBhZ2Fpbi4KICAgICAgICAgICAgIHRyYWNrLT5zZXRIYXNCZWVuQ29uZmlndXJlZCh0cnVlKTsK
ICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFjazo6ZGlzYWJsZWRLZXl3
b3JkKCkpIHsKQEAgLTE0MDgsMTQgKzE0MDgsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpl
bmRJZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkKICAgICAgICAgdXBkYXRlQWN0
aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3Qq
IGN1ZXMpIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFj
ayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMpCiB7CiAgICAgVHJhY2tEaXNwbGF5VXBk
YXRlU2NvcGUgc2NvcGUodGhpcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjdWVzLT5s
ZW5ndGgoKTsgKytpKQogICAgICAgICB0ZXh0VHJhY2tBZGRDdWUoY3Vlcy0+aXRlbShpKS0+dHJh
Y2soKSwgY3Vlcy0+aXRlbShpKSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KiBjdWVzKSAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0KiBjdWVzKQogewogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNj
b3BlIHNjb3BlKHRoaXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3Vlcy0+bGVuZ3Ro
KCk7ICsraSkKQEAgLTE1MTMsOCArMTUxMyw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bm9u
ZVN1cHBvcnRlZCgpCiAgICAgbV9sb2FkU3RhdGUgPSBXYWl0aW5nRm9yU291cmNlOwogICAgIG1f
Y3VycmVudFNvdXJjZU5vZGUgPSAwOwogCi0gICAgLy8gNC44LjEwLjUgCi0gICAgLy8gNiAtIFJl
YWNoaW5nIHRoaXMgc3RlcCBpbmRpY2F0ZXMgdGhhdCB0aGUgbWVkaWEgcmVzb3VyY2UgZmFpbGVk
IHRvIGxvYWQgb3IgdGhhdCB0aGUgZ2l2ZW4gCisgICAgLy8gNC44LjEwLjUKKyAgICAvLyA2IC0g
UmVhY2hpbmcgdGhpcyBzdGVwIGluZGljYXRlcyB0aGF0IHRoZSBtZWRpYSByZXNvdXJjZSBmYWls
ZWQgdG8gbG9hZCBvciB0aGF0IHRoZSBnaXZlbgogICAgIC8vIFVSTCBjb3VsZCBub3QgYmUgcmVz
b2x2ZWQuIEluIG9uZSBhdG9taWMgb3BlcmF0aW9uLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
IAogICAgIC8vIDYuMSAtIFNldCB0aGUgZXJyb3IgYXR0cmlidXRlIHRvIGEgbmV3IE1lZGlhRXJy
b3Igb2JqZWN0IHdob3NlIGNvZGUgYXR0cmlidXRlIGlzIHNldCB0bwpAQCAtMTUzNiw3ICsxNTM2
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpub25lU3VwcG9ydGVkKCkKICAgICAvLyA4IC0g
U2V0IHRoZSBlbGVtZW50J3MgZGVsYXlpbmctdGhlLWxvYWQtZXZlbnQgZmxhZyB0byBmYWxzZS4g
VGhpcyBzdG9wcyBkZWxheWluZyB0aGUgbG9hZCBldmVudC4KICAgICBzZXRTaG91bGREZWxheUxv
YWRFdmVudChmYWxzZSk7CiAKLSAgICAvLyA5IC0gQWJvcnQgdGhlc2Ugc3RlcHMuIFVudGlsIHRo
ZSBsb2FkKCkgbWV0aG9kIGlzIGludm9rZWQgb3IgdGhlIHNyYyBhdHRyaWJ1dGUgaXMgY2hhbmdl
ZCwgCisgICAgLy8gOSAtIEFib3J0IHRoZXNlIHN0ZXBzLiBVbnRpbCB0aGUgbG9hZCgpIG1ldGhv
ZCBpcyBpbnZva2VkIG9yIHRoZSBzcmMgYXR0cmlidXRlIGlzIGNoYW5nZWQsCiAgICAgLy8gdGhl
IGVsZW1lbnQgd29uJ3QgYXR0ZW1wdCB0byBsb2FkIGFub3RoZXIgcmVzb3VyY2UuCiAKICAgICB1
cGRhdGVEaXNwbGF5U3RhdGUoKTsKQEAgLTE1NTMsNyArMTU1Myw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFFbmdpbmVFcnJvcihQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IGVycikKICAg
ICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKICAgICBtX2xvYWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3Vy
Y2U7CiAKLSAgICAvLyAyIC0gU2V0IHRoZSBlcnJvciBhdHRyaWJ1dGUgdG8gYSBuZXcgTWVkaWFF
cnJvciBvYmplY3Qgd2hvc2UgY29kZSBhdHRyaWJ1dGUgaXMgCisgICAgLy8gMiAtIFNldCB0aGUg
ZXJyb3IgYXR0cmlidXRlIHRvIGEgbmV3IE1lZGlhRXJyb3Igb2JqZWN0IHdob3NlIGNvZGUgYXR0
cmlidXRlIGlzCiAgICAgLy8gc2V0IHRvIE1FRElBX0VSUl9ORVRXT1JLL01FRElBX0VSUl9ERUNP
REUuCiAgICAgbV9lcnJvciA9IGVycjsKIApAQCAtMTU5MCwxMCArMTU5MCwxMCBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdFdmVudHNBbmRDYWxsYmFja3MoKQogRG9jdW1l
bnQqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKQogewogICAg
IERvY3VtZW50KiBkID0gZG9jdW1lbnQoKTsKLSAgICAKKwogICAgIGlmICghZCkKICAgICAgICAg
ZCA9IG93bmVyRG9jdW1lbnQoKTsKLSAgICAKKwogICAgIHJldHVybiBkOwogfQogCkBAIC0xNjQ0
LDE2ICsxNjQ0LDE2IEBAIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9yTmV0d29ya1N0YXRlKE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGUgc3RhdGUpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
TG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yKQogewogICAgIHN0
b3BQZXJpb2RpY1RpbWVycygpOwotICAgIAorCiAgICAgLy8gSWYgd2UgZmFpbGVkIHdoaWxlIHRy
eWluZyB0byBsb2FkIGEgPHNvdXJjZT4gZWxlbWVudCwgdGhlIG1vdmllIHdhcyBuZXZlciBwYXJz
ZWQsIGFuZCB0aGVyZSBhcmUgbW9yZQogICAgIC8vIDxzb3VyY2U+IGNoaWxkcmVuLCBzY2hlZHVs
ZSB0aGUgbmV4dCBvbmUKICAgICBpZiAobV9yZWFkeVN0YXRlIDwgSEFWRV9NRVRBREFUQSAmJiBt
X2xvYWRTdGF0ZSA9PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpIHsKLSAgICAgICAgCisKICAg
ICAgICAgaWYgKG1fY3VycmVudFNvdXJjZU5vZGUpCiAgICAgICAgICAgICBtX2N1cnJlbnRTb3Vy
Y2VOb2RlLT5zY2hlZHVsZUVycm9yRXZlbnQoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlIC0gZXJyb3IgZXZl
bnQgbm90IHNlbnQsIDxzb3VyY2U+IHdhcyByZW1vdmVkIik7Ci0gICAgICAgIAorCiAgICAgICAg
IGlmIChoYXZlUG90ZW50aWFsU291cmNlQ2hpbGQoKSkgewogICAgICAgICAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlIC0gc2NoZWR1bGluZyBuZXh0IDxz
b3VyY2U+Iik7CiAgICAgICAgICAgICBzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpOwpAQCAtMTY2
MSwxNyArMTY2MSwxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxl
ZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yKQogICAgICAgICAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlIC0gbm8gbW9yZSA8c291cmNlPiBl
bGVtZW50cywgd2FpdGluZyIpOwogICAgICAgICAgICAgd2FpdEZvclNvdXJjZUNoYW5nZSgpOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAg
ICBpZiAoZXJyb3IgPT0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtFcnJvciAmJiBtX3JlYWR5U3RhdGUg
Pj0gSEFWRV9NRVRBREFUQSkKICAgICAgICAgbWVkaWFFbmdpbmVFcnJvcihNZWRpYUVycm9yOjpj
cmVhdGUoTWVkaWFFcnJvcjo6TUVESUFfRVJSX05FVFdPUkspKTsKICAgICBlbHNlIGlmIChlcnJv
ciA9PSBNZWRpYVBsYXllcjo6RGVjb2RlRXJyb3IpCiAgICAgICAgIG1lZGlhRW5naW5lRXJyb3Io
TWVkaWFFcnJvcjo6Y3JlYXRlKE1lZGlhRXJyb3I6Ok1FRElBX0VSUl9ERUNPREUpKTsKICAgICBl
bHNlIGlmICgoZXJyb3IgPT0gTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yIHx8IGVycm9yID09IE1l
ZGlhUGxheWVyOjpOZXR3b3JrRXJyb3IpICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU3Jj
QXR0cikKICAgICAgICAgbm9uZVN1cHBvcnRlZCgpOwotICAgIAorCiAgICAgdXBkYXRlRGlzcGxh
eVN0YXRlKCk7CiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkgewogICAgICAgICBtZWRpYUNv
bnRyb2xzKCktPnJlc2V0KCk7CkBAIC0xNzY1LDcgKzE3NjUsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiAgICAg
ICAgIHJldHVybjsKICAgICBib29sIHRyYWNrc0FyZVJlYWR5ID0gdHJ1ZTsKICNlbmRpZgotICAg
IAorCiAgICAgaWYgKHRyYWNrc0FyZVJlYWR5KQogICAgICAgICBtX3JlYWR5U3RhdGUgPSBuZXdT
dGF0ZTsKICAgICBlbHNlIHsKQEAgLTE3NzYsNyArMTc3Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gSEFWRV9DVVJSRU5UX0RBVEE7CiAg
ICAgfQotICAgIAorCiAgICAgaWYgKG9sZFN0YXRlID4gbV9yZWFkeVN0YXRlTWF4aW11bSkKICAg
ICAgICAgbV9yZWFkeVN0YXRlTWF4aW11bSA9IG9sZFN0YXRlOwogCkBAIC0xOTIxLDcgKzE5MjEs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TWVzc2FnZShNZWRpYVBs
YXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdAogICAgIGluaXRpYWxpemVyLmtleVN5c3RlbSA9
IGtleVN5c3RlbTsKICAgICBpbml0aWFsaXplci5zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7CiAgICAg
aW5pdGlhbGl6ZXIubWVzc2FnZSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShtZXNzYWdlLCBtZXNzYWdl
TGVuZ3RoKTsKLSAgICBpbml0aWFsaXplci5kZWZhdWx0VVJMID0gZGVmYXVsdFVSTDsgCisgICAg
aW5pdGlhbGl6ZXIuZGVmYXVsdFVSTCA9IGRlZmF1bHRVUkw7CiAgICAgaW5pdGlhbGl6ZXIuYnVi
YmxlcyA9IGZhbHNlOwogICAgIGluaXRpYWxpemVyLmNhbmNlbGFibGUgPSBmYWxzZTsKIApAQCAt
MjAyOCw3ICsyMDI4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRQbGF5ZWRSYW5nZShm
bG9hdCBzdGFydCwgZmxvYXQgZW5kKQogICAgIGlmICghbV9wbGF5ZWRUaW1lUmFuZ2VzKQogICAg
ICAgICBtX3BsYXllZFRpbWVSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKICAgICBtX3Bs
YXllZFRpbWVSYW5nZXMtPmFkZChzdGFydCwgZW5kKTsKLX0gIAorfQogCiBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OnN1cHBvcnRzU2F2ZSgpIGNvbnN0CiB7CkBAIC0yMDc4LDcgKzIwNzgsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgLy8gVGhlIGZsYWcgd2lsbCBiZSBjbGVhcmVkIHdoZW4gdGhlIGVuZ2luZSB0ZWxscyB1
cyB0aGUgdGltZSBoYXMgYWN0dWFsbHkgY2hhbmdlZC4KICAgICBtX3NlZWtpbmcgPSB0cnVlOwog
Ci0gICAgLy8gNSAtIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbGF0ZXIgdGhhbiB0
aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZSwgdGhlbiBsZXQgaXQgYmUgdGhlIGVuZCAKKyAg
ICAvLyA1IC0gSWYgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBpcyBsYXRlciB0aGFuIHRoZSBl
bmQgb2YgdGhlIG1lZGlhIHJlc291cmNlLCB0aGVuIGxldCBpdCBiZSB0aGUgZW5kCiAgICAgLy8g
b2YgdGhlIG1lZGlhIHJlc291cmNlIGluc3RlYWQuCiAgICAgdGltZSA9IG1pbih0aW1lLCBkdXJh
dGlvbigpKTsKIApAQCAtMjA4OSw3ICsyMDg5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZWVrKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIEFzayB0aGUgbWVkaWEg
ZW5naW5lIGZvciB0aGUgdGltZSB2YWx1ZSBpbiB0aGUgbW92aWUncyB0aW1lIHNjYWxlIGJlZm9y
ZSBjb21wYXJpbmcgd2l0aCBjdXJyZW50IHRpbWUuIFRoaXMKICAgICAvLyBpcyBuZWNlc3Nhcnkg
YmVjYXVzZSBpZiB0aGUgc2VlayB0aW1lIGlzIG5vdCBlcXVhbCB0byBjdXJyZW50VGltZSBidXQg
dGhlIGRlbHRhIGlzIGxlc3MgdGhhbiB0aGUgbW92aWUncwogICAgIC8vIHRpbWUgc2NhbGUsIHdl
IHdpbGwgYXNrIHRoZSBtZWRpYSBlbmdpbmUgdG8gInNlZWsiIHRvIHRoZSBjdXJyZW50IG1vdmll
IHRpbWUsIHdoaWNoIG1heSBiZSBhIG5vb3AgYW5kCi0gICAgLy8gbm90IGdlbmVyYXRlIGEgdGlt
ZWNoYW5nZWQgY2FsbGJhY2suIFRoaXMgbWVhbnMgbV9zZWVraW5nIHdpbGwgbmV2ZXIgYmUgY2xl
YXJlZCBhbmQgd2Ugd2lsbCBuZXZlciAKKyAgICAvLyBub3QgZ2VuZXJhdGUgYSB0aW1lY2hhbmdl
ZCBjYWxsYmFjay4gVGhpcyBtZWFucyBtX3NlZWtpbmcgd2lsbCBuZXZlciBiZSBjbGVhcmVkIGFu
ZCB3ZSB3aWxsIG5ldmVyCiAgICAgLy8gZmlyZSBhICdzZWVrZWQnIGV2ZW50LgogI2lmICFMT0df
RElTQUJMRUQKICAgICBmbG9hdCBtZWRpYVRpbWUgPSBtX3BsYXllci0+bWVkaWFUaW1lRm9yVGlt
ZVZhbHVlKHRpbWUpOwpAQCAtMjA5OCwxNCArMjA5OCwxNCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAjZW5kaWYKICAgICB0aW1l
ID0gbV9wbGF5ZXItPm1lZGlhVGltZUZvclRpbWVWYWx1ZSh0aW1lKTsKIAotICAgIC8vIDcgLSBJ
ZiB0aGUgKHBvc3NpYmx5IG5vdyBjaGFuZ2VkKSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbm90
IGluIG9uZSBvZiB0aGUgcmFuZ2VzIGdpdmVuIGluIHRoZSAKLSAgICAvLyBzZWVrYWJsZSBhdHRy
aWJ1dGUsIHRoZW4gbGV0IGl0IGJlIHRoZSBwb3NpdGlvbiBpbiBvbmUgb2YgdGhlIHJhbmdlcyBn
aXZlbiBpbiB0aGUgc2Vla2FibGUgYXR0cmlidXRlIAorICAgIC8vIDcgLSBJZiB0aGUgKHBvc3Np
Ymx5IG5vdyBjaGFuZ2VkKSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbm90IGluIG9uZSBvZiB0
aGUgcmFuZ2VzIGdpdmVuIGluIHRoZQorICAgIC8vIHNlZWthYmxlIGF0dHJpYnV0ZSwgdGhlbiBs
ZXQgaXQgYmUgdGhlIHBvc2l0aW9uIGluIG9uZSBvZiB0aGUgcmFuZ2VzIGdpdmVuIGluIHRoZSBz
ZWVrYWJsZSBhdHRyaWJ1dGUKICAgICAvLyB0aGF0IGlzIHRoZSBuZWFyZXN0IHRvIHRoZSBuZXcg
cGxheWJhY2sgcG9zaXRpb24uIC4uLiBJZiB0aGVyZSBhcmUgbm8gcmFuZ2VzIGdpdmVuIGluIHRo
ZSBzZWVrYWJsZQogICAgIC8vIGF0dHJpYnV0ZSB0aGVuIHNldCB0aGUgc2Vla2luZyBJREwgYXR0
cmlidXRlIHRvIGZhbHNlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBSZWZQdHI8VGltZVJh
bmdlcz4gc2Vla2FibGVSYW5nZXMgPSBzZWVrYWJsZSgpOwogCiAgICAgLy8gU2hvcnQgY2lyY3Vp
dCBzZWVraW5nIHRvIHRoZSBjdXJyZW50IHRpbWUgYnkganVzdCBmaXJpbmcgdGhlIGV2ZW50cyBp
ZiBubyBzZWVrIGlzIHJlcXVpcmVkLgotICAgIC8vIERvbid0IHNraXAgY2FsbGluZyB0aGUgbWVk
aWEgZW5naW5lIGlmIHdlIGFyZSBpbiBwb3N0ZXIgbW9kZSBiZWNhdXNlIGEgc2VlayBzaG91bGQg
YWx3YXlzIAorICAgIC8vIERvbid0IHNraXAgY2FsbGluZyB0aGUgbWVkaWEgZW5naW5lIGlmIHdl
IGFyZSBpbiBwb3N0ZXIgbW9kZSBiZWNhdXNlIGEgc2VlayBzaG91bGQgYWx3YXlzCiAgICAgLy8g
Y2FuY2VsIHBvc3RlciBkaXNwbGF5LgogICAgIGJvb2wgbm9TZWVrUmVxdWlyZWQgPSAhc2Vla2Fi
bGVSYW5nZXMtPmxlbmd0aCgpIHx8ICh0aW1lID09IG5vdyAmJiBkaXNwbGF5TW9kZSgpICE9IFBv
c3Rlcik7CiAKQEAgLTIzMTYsNyArMjMxNiw3IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBs
YXliYWNrUmF0ZSgpIGNvbnN0CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0
ZShmbG9hdCByYXRlKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFBs
YXliYWNrUmF0ZSglZikiLCByYXRlKTsKLSAgICAKKwogICAgIGlmIChtX3BsYXliYWNrUmF0ZSAh
PSByYXRlKSB7CiAgICAgICAgIG1fcGxheWJhY2tSYXRlID0gcmF0ZTsKICAgICAgICAgaW52YWxp
ZGF0ZUNhY2hlZFRpbWUoKTsKQEAgLTIzNDQsNyArMjM0NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0V2Via2l0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRXZWJraXRQcmVzZXJ2ZXNQaXRjaCglcyki
LCBib29sU3RyaW5nKHByZXNlcnZlc1BpdGNoKSk7CiAKICAgICBtX3dlYmtpdFByZXNlcnZlc1Bp
dGNoID0gcHJlc2VydmVzUGl0Y2g7Ci0gICAgCisKICAgICBpZiAoIW1fcGxheWVyKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTIzNTQsNyArMjM1NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2V0V2Via2l0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6ZW5kZWQoKSBjb25zdAogewogICAgIC8vIDQuOC4xMC44IFBsYXlpbmcgdGhl
IG1lZGlhIHJlc291cmNlCi0gICAgLy8gVGhlIGVuZGVkIGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0
cnVlIGlmIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBlbmRlZCAKKyAgICAvLyBUaGUgZW5kZWQgYXR0
cmlidXRlIG11c3QgcmV0dXJuIHRydWUgaWYgdGhlIG1lZGlhIGVsZW1lbnQgaGFzIGVuZGVkCiAg
ICAgLy8gcGxheWJhY2sgYW5kIHRoZSBkaXJlY3Rpb24gb2YgcGxheWJhY2sgaXMgZm9yd2FyZHMs
IGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgICAgcmV0dXJuIGVuZGVkUGxheWJhY2soKSAmJiBtX3Bs
YXliYWNrUmF0ZSA+IDA7CiB9CkBAIC0yNjM4LDcgKzI2MzgsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFZvbHVtZShmbG9hdCB2b2wsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBl
YyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAg
aWYgKG1fdm9sdW1lICE9IHZvbCkgewogICAgICAgICBtX3ZvbHVtZSA9IHZvbDsKICAgICAgICAg
dXBkYXRlVm9sdW1lKCk7CkBAIC0yNjc4LDcgKzI2NzgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnRvZ2dsZVBsYXlTdGF0ZSgpCiAgICAgaWYgKGNhblBsYXkoKSkgewogICAgICAgICB1cGRh
dGVQbGF5YmFja1JhdGUoKTsKICAgICAgICAgcGxheUludGVybmFsKCk7Ci0gICAgfSBlbHNlIAor
ICAgIH0gZWxzZQogICAgICAgICBwYXVzZUludGVybmFsKCk7CiB9CiAKQEAgLTI2ODgsMTMgKzI2
ODgsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpblNjcnViYmluZygpCiAKICAgICBp
ZiAoIXBhdXNlZCgpKSB7CiAgICAgICAgIGlmIChlbmRlZCgpKSB7Ci0gICAgICAgICAgICAvLyBC
ZWNhdXNlIGEgbWVkaWEgZWxlbWVudCBzdGF5cyBpbiBub24tcGF1c2VkIHN0YXRlIHdoZW4gaXQg
cmVhY2hlcyBlbmQsIHBsYXliYWNrIHJlc3VtZXMgCi0gICAgICAgICAgICAvLyB3aGVuIHRoZSBz
bGlkZXIgaXMgZHJhZ2dlZCBmcm9tIHRoZSBlbmQgdG8gYW5vdGhlciBwb3NpdGlvbiB1bmxlc3Mg
d2UgcGF1c2UgZmlyc3QuIERvIAorICAgICAgICAgICAgLy8gQmVjYXVzZSBhIG1lZGlhIGVsZW1l
bnQgc3RheXMgaW4gbm9uLXBhdXNlZCBzdGF0ZSB3aGVuIGl0IHJlYWNoZXMgZW5kLCBwbGF5YmFj
ayByZXN1bWVzCisgICAgICAgICAgICAvLyB3aGVuIHRoZSBzbGlkZXIgaXMgZHJhZ2dlZCBmcm9t
IHRoZSBlbmQgdG8gYW5vdGhlciBwb3NpdGlvbiB1bmxlc3Mgd2UgcGF1c2UgZmlyc3QuIERvCiAg
ICAgICAgICAgICAvLyBhICJoYXJkIHBhdXNlIiBzbyBhbiBldmVudCBpcyBnZW5lcmF0ZWQsIHNp
bmNlIHdlIHdhbnQgdG8gc3RheSBwYXVzZWQgYWZ0ZXIgc2NydWJiaW5nIGZpbmlzaGVzLgogICAg
ICAgICAgICAgcGF1c2UoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE5vdCBh
dCB0aGUgZW5kIGJ1dCB3ZSBzdGlsbCB3YW50IHRvIHBhdXNlIHBsYXliYWNrIHNvIHRoZSBtZWRp
YSBlbmdpbmUgZG9lc24ndCB0cnkgdG8KLSAgICAgICAgICAgIC8vIGNvbnRpbnVlIHBsYXlpbmcg
ZHVyaW5nIHNjcnViYmluZy4gUGF1c2Ugd2l0aG91dCBnZW5lcmF0aW5nIGFuIGV2ZW50IGFzIHdl
IHdpbGwgCisgICAgICAgICAgICAvLyBjb250aW51ZSBwbGF5aW5nIGR1cmluZyBzY3J1YmJpbmcu
IFBhdXNlIHdpdGhvdXQgZ2VuZXJhdGluZyBhbiBldmVudCBhcyB3ZSB3aWxsCiAgICAgICAgICAg
ICAvLyB1bnBhdXNlIGFmdGVyIHNjcnViYmluZyBmaW5pc2hlcy4KICAgICAgICAgICAgIHNldFBh
dXNlZEludGVybmFsKHRydWUpOwogICAgICAgICB9CkBAIC0yNzMzLDcgKzI3MzMsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKFRpbWVyPEhUTUxN
ZWRpYUVsZW1lbnQ+KikKICAgICAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICAKKwogICAgIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KHRydWUpOwogCiAgICAg
aWYgKCFtX3BsYXliYWNrUmF0ZSkKQEAgLTI3NDEsNyArMjc0MSw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVu
dD4qKQogCiAgICAgaWYgKCFtX3BhdXNlZCAmJiBoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAg
IG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tQcm9ncmVzc2VkKCk7Ci0gICAgCisKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZp
ZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3Vy
cmVudFRpbWUoKSk7CkBAIC0yNzk3LDExICsyNzk3LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJEaWRBZGRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGU+CiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyA0LjguMTAuMTIuMiBT
b3VyY2luZyBpbi1iYW5kIHRleHQgdHJhY2tzCiAgICAgLy8gMS4gQXNzb2NpYXRlIHRoZSByZWxl
dmFudCBkYXRhIHdpdGggYSBuZXcgdGV4dCB0cmFjayBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgbmV3
IFRleHRUcmFjayBvYmplY3QuCiAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFjaz4gdGV4dFRyYWNr
ID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIHRoaXMsIHBycFRyYWNrKTsKLSAgICAKKwogICAgIC8vIDIuIFNldCB0aGUg
bmV3IHRleHQgdHJhY2sncyBraW5kLCBsYWJlbCwgYW5kIGxhbmd1YWdlIGJhc2VkIG9uIHRoZSBz
ZW1hbnRpY3Mgb2YgdGhlIHJlbGV2YW50IGRhdGEsCiAgICAgLy8gYXMgZGVmaW5lZCBieSB0aGUg
cmVsZXZhbnQgc3BlY2lmaWNhdGlvbi4gSWYgdGhlcmUgaXMgbm8gbGFiZWwgaW4gdGhhdCBkYXRh
LCB0aGVuIHRoZSBsYWJlbCBtdXN0CiAgICAgLy8gYmUgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcu
CkBAIC0yODEyLDE1ICsyODEyLDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJEaWRBZGRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+CiAgICAgLy8g
NS4gUG9wdWxhdGUgdGhlIG5ldyB0ZXh0IHRyYWNrJ3MgbGlzdCBvZiBjdWVzIHdpdGggdGhlIGN1
ZXMgcGFyc2VkIHNvIGZhciwgZm9sbGxvd2luZyB0aGUgZ3VpZGVsaW5lcyBmb3IgZXhwb3NpbmcK
ICAgICAvLyBjdWVzLCBhbmQgYmVnaW4gdXBkYXRpbmcgaXQgZHluYW1pY2FsbHkgYXMgbmVjZXNz
YXJ5LgogICAgIC8vICAgLSBUaGVzcyBhcmUgYWxsIGRvbmUgYnkgdGhlIG1lZGlhIGVuZ2luZS4K
LSAgICAKKwogICAgIC8vIDYuIFNldCB0aGUgbmV3IHRleHQgdHJhY2sncyByZWFkaW5lc3Mgc3Rh
dGUgdG8gbG9hZGVkLgogICAgIHRleHRUcmFjay0+c2V0UmVhZGluZXNzU3RhdGUoVGV4dFRyYWNr
OjpMb2FkZWQpOwotICAgIAorCiAgICAgLy8gNy4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydzIG1v
ZGUgdG8gdGhlIG1vZGUgY29uc2lzdGVudCB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMgYW5k
IHRoZSByZXF1aXJlbWVudHMgb2YKICAgICAvLyB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbiBm
b3IgdGhlIGRhdGEuCiAgICAgLy8gIC0gVGhpcyB3aWxsIGhhcHBlbiBpbiBjb25maWd1cmVUZXh0
VHJhY2tzKCkKICAgICBzY2hlZHVsZUxvYWQoVGV4dFRyYWNrUmVzb3VyY2UpOwotICAgIAorCiAg
ICAgLy8gOC4gQWRkIHRoZSBuZXcgdGV4dCB0cmFjayB0byB0aGUgbWVkaWEgZWxlbWVudCdzIGxp
c3Qgb2YgdGV4dCB0cmFja3MuCiAgICAgLy8gOS4gRmlyZSBhbiBldmVudCB3aXRoIHRoZSBuYW1l
IGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFibGUsIGFu
ZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQKICAgICAvLyBpbnRlcmZhY2UsIHdpdGggdGhlIHRy
YWNrIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0aGUgdGV4dCB0cmFjaydzIFRleHRUcmFjayBv
YmplY3QsIGF0IHRoZSBtZWRpYSBlbGVtZW50J3MKQEAgLTI4MzIsNyArMjgzMiw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVUcmFjayhQYXNzUmVmUHRyPElu
YmFuZFRleHRUcmFja1ByaXZhCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBp
ZiAoIW1fdGV4dFRyYWNrcykKICAgICAgICAgcmV0dXJuOwogCkBAIC0yODg2LDcgKzI4ODYsNyBA
QCBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNv
bnN0IFN0cmluZyYga2luZCwgY29uc3QgUwogICAgIC8vIDMuIElmIHRoZSBsYW5ndWFnZSBhcmd1
bWVudCB3YXMgb21pdHRlZCwgbGV0IGxhbmd1YWdlIGJlIHRoZSBlbXB0eSBzdHJpbmcuCiAgICAg
Ly8gNC4gQ3JlYXRlIGEgbmV3IFRleHRUcmFjayBvYmplY3QuCiAKLSAgICAvLyA1LiBDcmVhdGUg
YSBuZXcgdGV4dCB0cmFjayBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXcgb2JqZWN0LCBhbmQgc2V0
IGl0cyB0ZXh0IHRyYWNrIGtpbmQgdG8ga2luZCwgaXRzIHRleHQgCisgICAgLy8gNS4gQ3JlYXRl
IGEgbmV3IHRleHQgdHJhY2sgY29ycmVzcG9uZGluZyB0byB0aGUgbmV3IG9iamVjdCwgYW5kIHNl
dCBpdHMgdGV4dCB0cmFjayBraW5kIHRvIGtpbmQsIGl0cyB0ZXh0CiAgICAgLy8gdHJhY2sgbGFi
ZWwgdG8gbGFiZWwsIGl0cyB0ZXh0IHRyYWNrIGxhbmd1YWdlIHRvIGxhbmd1YWdlLi4uCiAgICAg
UmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gVGV4dFRyYWNrOjpjcmVhdGUoQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIGtpbmQsIGxhYmVsLCBsYW5n
dWFnZSk7CiAKQEAgLTI5MDgsNyArMjkwOCw3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1M
TWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTCiAg
ICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CiAKLVRleHRUcmFja0xpc3QqIEhUTUxN
ZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MoKSAKK1RleHRUcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1l
bnQ6OnRleHRUcmFja3MoKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Vi
a2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yOTI3LDE1ICsy
OTI3LDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVHJhY2soSFRNTFRyYWNrRWxl
bWVudCogdHJhY2tFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyA0LjguMTAuMTIu
MyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcwotICAgIC8vIFdoZW4gYSB0cmFjayBl
bGVtZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdlcyBhbmQgdGhlIG5ldyBwYXJlbnQgaXMgYSBt
ZWRpYSBlbGVtZW50LCAKLSAgICAvLyB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgYWRkIHRoZSB0
cmFjayBlbGVtZW50J3MgY29ycmVzcG9uZGluZyB0ZXh0IHRyYWNrIHRvIHRoZSAKKyAgICAvLyBX
aGVuIGEgdHJhY2sgZWxlbWVudCdzIHBhcmVudCBlbGVtZW50IGNoYW5nZXMgYW5kIHRoZSBuZXcg
cGFyZW50IGlzIGEgbWVkaWEgZWxlbWVudCwKKyAgICAvLyB0aGVuIHRoZSB1c2VyIGFnZW50IG11
c3QgYWRkIHRoZSB0cmFjayBlbGVtZW50J3MgY29ycmVzcG9uZGluZyB0ZXh0IHRyYWNrIHRvIHRo
ZQogICAgIC8vIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIC4uLiBbY29udGlu
dWVzIGluIFRleHRUcmFja0xpc3Q6OmFwcGVuZF0KICAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0
VHJhY2sgPSB0cmFja0VsZW1lbnQtPnRyYWNrKCk7CiAgICAgaWYgKCF0ZXh0VHJhY2spCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIHRleHRUcmFja3MoKS0+YXBwZW5kKHRleHRUcmFjayk7
Ci0gICAgCisKICAgICAvLyBEbyBub3Qgc2NoZWR1bGUgdGhlIHRyYWNrIGxvYWRpbmcgdW50aWwg
cGFyc2luZyBmaW5pc2hlcyBzbyB3ZSBkb24ndCBzdGFydCBiZWZvcmUgYWxsIHRyYWNrcwogICAg
IC8vIGluIHRoZSBtYXJrdXAgaGF2ZSBiZWVuIGFkZGVkLgogICAgIGlmICghbV9wYXJzaW5nSW5Q
cm9ncmVzcykKQEAgLTI5NjIsMTUgKzI5NjIsMTUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRSZW1vdmVUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiAgICAgUmVmUHRy
PFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJhY2tFbGVtZW50LT50cmFjaygpOwogICAgIGlmICgh
dGV4dFRyYWNrKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICB0ZXh0VHJhY2stPnNldEhh
c0JlZW5Db25maWd1cmVkKGZhbHNlKTsKIAogICAgIGlmICghbV90ZXh0VHJhY2tzKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFu
ZCB0ZXh0IHRyYWNrcwotICAgIC8vIFdoZW4gYSB0cmFjayBlbGVtZW50J3MgcGFyZW50IGVsZW1l
bnQgY2hhbmdlcyBhbmQgdGhlIG9sZCBwYXJlbnQgd2FzIGEgbWVkaWEgZWxlbWVudCwgCi0gICAg
Ly8gdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92ZSB0aGUgdHJhY2sgZWxlbWVudCdzIGNv
cnJlc3BvbmRpbmcgdGV4dCB0cmFjayBmcm9tIHRoZSAKKyAgICAvLyBXaGVuIGEgdHJhY2sgZWxl
bWVudCdzIHBhcmVudCBlbGVtZW50IGNoYW5nZXMgYW5kIHRoZSBvbGQgcGFyZW50IHdhcyBhIG1l
ZGlhIGVsZW1lbnQsCisgICAgLy8gdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJlbW92ZSB0aGUg
dHJhY2sgZWxlbWVudCdzIGNvcnJlc3BvbmRpbmcgdGV4dCB0cmFjayBmcm9tIHRoZQogICAgIC8v
IG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzLgogICAgIHJlbW92ZVRyYWNrKHRl
eHRUcmFjay5nZXQoKSk7CiAKQEAgLTMxNDgsMTkgKzMxNDgsMTkgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKCkKICAgICAgICAgICAgIGN1cnJlbnRHcm91cC0+
ZGVmYXVsdFRyYWNrID0gdGV4dFRyYWNrOwogCiAgICAgICAgIC8vIERvIG5vdCBhZGQgdGhpcyB0
cmFjayB0byB0aGUgZ3JvdXAgaWYgaXQgaGFzIGFscmVhZHkgYmVlbiBhdXRvbWF0aWNhbGx5IGNv
bmZpZ3VyZWQKLSAgICAgICAgLy8gYXMgd2Ugb25seSB3YW50IHRvIGNhbGwgY29uZmlndXJlVGV4
dFRyYWNrIG9uY2UgcGVyIHRyYWNrIHNvIHRoYXQgYWRkaW5nIGFub3RoZXIgCi0gICAgICAgIC8v
IHRyYWNrIGFmdGVyIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gZG9lc24ndCByZWNvbmZpZ3Vy
ZSBldmVyeSB0cmFjayAtIG9ubHkgdGhvc2UgCi0gICAgICAgIC8vIHRoYXQgc2hvdWxkIGJlIGNo
YW5nZWQgYnkgdGhlIG5ldyBhZGRpdGlvbi4gRm9yIGV4YW1wbGUgYWxsIG1ldGFkYXRhIHRyYWNr
cyBhcmUgCi0gICAgICAgIC8vIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGFuZCB3ZSBkb24ndCB3YW50
IGEgdHJhY2sgdGhhdCBoYXMgYmVlbiBlbmFibGVkIGJ5IHNjcmlwdCAKKyAgICAgICAgLy8gYXMg
d2Ugb25seSB3YW50IHRvIGNhbGwgY29uZmlndXJlVGV4dFRyYWNrIG9uY2UgcGVyIHRyYWNrIHNv
IHRoYXQgYWRkaW5nIGFub3RoZXIKKyAgICAgICAgLy8gdHJhY2sgYWZ0ZXIgdGhlIGluaXRpYWwg
Y29uZmlndXJhdGlvbiBkb2Vzbid0IHJlY29uZmlndXJlIGV2ZXJ5IHRyYWNrIC0gb25seSB0aG9z
ZQorICAgICAgICAvLyB0aGF0IHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHRoZSBuZXcgYWRkaXRpb24u
IEZvciBleGFtcGxlIGFsbCBtZXRhZGF0YSB0cmFja3MgYXJlCisgICAgICAgIC8vIGRpc2FibGVk
IGJ5IGRlZmF1bHQsIGFuZCB3ZSBkb24ndCB3YW50IGEgdHJhY2sgdGhhdCBoYXMgYmVlbiBlbmFi
bGVkIGJ5IHNjcmlwdAogICAgICAgICAvLyB0byBiZSBkaXNhYmxlZCBhdXRvbWF0aWNhbGx5IHdo
ZW4gYSBuZXcgbWV0YWRhdGEgdHJhY2sgaXMgYWRkZWQgbGF0ZXIuCiAgICAgICAgIGlmICh0ZXh0
VHJhY2stPmhhc0JlZW5Db25maWd1cmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgCisKICAgICAgICAgaWYgKHRleHRUcmFjay0+bGFuZ3VhZ2UoKS5sZW5ndGgoKSkKICAgICAg
ICAgICAgIGN1cnJlbnRHcm91cC0+aGFzU3JjTGFuZyA9IHRydWU7CiAgICAgICAgIGN1cnJlbnRH
cm91cC0+dHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2spOwogICAgIH0KLSAgICAKKwogICAgIGlmIChj
YXB0aW9uQW5kU3VidGl0bGVUcmFja3MudHJhY2tzLnNpemUoKSkKICAgICAgICAgY29uZmlndXJl
VGV4dFRyYWNrR3JvdXAoY2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzKTsKICAgICBpZiAoZGVzY3Jp
cHRpb25UcmFja3MudHJhY2tzLnNpemUoKSkKQEAgLTMyNDIsNyArMzI0Miw3IEBAIEtVUkwgSFRN
TE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50
VHlwZSwgU3RyaW5nKiBrCiAjZW5kaWYKICAgICAgICAgaWYgKG1lZGlhVVJMLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIGdvdG8gY2hlY2tfYWdhaW47Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChz
b3VyY2UtPmZhc3RIYXNBdHRyaWJ1dGUobWVkaWFBdHRyKSkgewogICAgICAgICAgICAgTWVkaWFR
dWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCBkb2N1bWVudCgpLT5mcmFtZSgpLCBy
ZW5kZXJlcigpID8gcmVuZGVyZXIoKS0+c3R5bGUoKSA6IDApOwogICAgICAgICAgICAgUmVmUHRy
PE1lZGlhUXVlcnlTZXQ+IG1lZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlQWxsb3dpbmdEZXNj
cmlwdGlvblN5bnRheChzb3VyY2UtPm1lZGlhKCkpOwpAQCAtMzI1MCw3ICszMjUwLDcgQEAgS1VS
TCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqIGNv
bnRlbnRUeXBlLCBTdHJpbmcqIGsKICAgICAgICAgICAgIGlmIChzaG91bGRMb2cpCiAgICAgICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNo
aWxkIC0gJ21lZGlhJyBpcyAlcyIsIHNvdXJjZS0+bWVkaWEoKS51dGY4KCkuZGF0YSgpKTsKICNl
bmRpZgotICAgICAgICAgICAgaWYgKCFzY3JlZW5FdmFsLmV2YWwobWVkaWEuZ2V0KCkpKSAKKyAg
ICAgICAgICAgIGlmICghc2NyZWVuRXZhbC5ldmFsKG1lZGlhLmdldCgpKSkKICAgICAgICAgICAg
ICAgICBnb3RvIGNoZWNrX2FnYWluOwogICAgICAgICB9CiAKQEAgLTMzMTcsMTMgKzMzMTcsMTMg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZChIVE1MU291cmNlRWxlbWVu
dCogc291cmNlKQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VX
YXNBZGRlZCAtICdzcmMnIGlzICVzIiwgdXJsRm9yTG9nZ2luZ01lZGlhKHVybCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgfQogI2VuZGlmCi0gICAgCisKICAgICAvLyBXZSBzaG91bGQgb25seSBjb25z
aWRlciBhIDxzb3VyY2U+IGVsZW1lbnQgd2hlbiB0aGVyZSBpcyBub3Qgc3JjIGF0dHJpYnV0ZSBh
dCBhbGwuCiAgICAgaWYgKGZhc3RIYXNBdHRyaWJ1dGUoc3JjQXR0cikpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIC8vIDQuOC44IC0gSWYgYSBzb3VyY2UgZWxlbWVudCBpcyBpbnNlcnRlZCBhcyBh
IGNoaWxkIG9mIGEgbWVkaWEgZWxlbWVudCB0aGF0IGhhcyBubyBzcmMgCi0gICAgLy8gYXR0cmli
dXRlIGFuZCB3aG9zZSBuZXR3b3JrU3RhdGUgaGFzIHRoZSB2YWx1ZSBORVRXT1JLX0VNUFRZLCB0
aGUgdXNlciBhZ2VudCBtdXN0IGludm9rZSAKKyAgICAvLyA0LjguOCAtIElmIGEgc291cmNlIGVs
ZW1lbnQgaXMgaW5zZXJ0ZWQgYXMgYSBjaGlsZCBvZiBhIG1lZGlhIGVsZW1lbnQgdGhhdCBoYXMg
bm8gc3JjCisgICAgLy8gYXR0cmlidXRlIGFuZCB3aG9zZSBuZXR3b3JrU3RhdGUgaGFzIHRoZSB2
YWx1ZSBORVRXT1JLX0VNUFRZLCB0aGUgdXNlciBhZ2VudCBtdXN0IGludm9rZQogICAgIC8vIHRo
ZSBtZWRpYSBlbGVtZW50J3MgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobS4KICAgICBpZiAo
bmV0d29ya1N0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6TkVUV09SS19FTVBUWSkgewogICAg
ICAgICBzY2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJjZSk7CkBAIC0zMzM5LDE3ICszMzM5LDE3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQoSFRNTFNvdXJjZUVsZW1lbnQq
IHNvdXJjZSkKIAogICAgIGlmIChtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCisKICAgICAvLyA0LjguOS41LCByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3Jp
dGhtLCBzb3VyY2UgZWxlbWVudHMgc2VjdGlvbjoKICAgICAvLyAyMS4gV2FpdCB1bnRpbCB0aGUg
bm9kZSBhZnRlciBwb2ludGVyIGlzIGEgbm9kZSBvdGhlciB0aGFuIHRoZSBlbmQgb2YgdGhlIGxp
c3QuIChUaGlzIHN0ZXAgbWlnaHQgd2FpdCBmb3JldmVyLikKICAgICAvLyAyMi4gQXN5bmNocm9u
b3VzbHkgYXdhaXQgYSBzdGFibGUgc3RhdGUuLi4KLSAgICAvLyAyMy4gU2V0IHRoZSBlbGVtZW50
J3MgZGVsYXlpbmctdGhlLWxvYWQtZXZlbnQgZmxhZyBiYWNrIHRvIHRydWUgKHRoaXMgZGVsYXlz
IHRoZSBsb2FkIGV2ZW50IGFnYWluLCBpbiBjYXNlIAorICAgIC8vIDIzLiBTZXQgdGhlIGVsZW1l
bnQncyBkZWxheWluZy10aGUtbG9hZC1ldmVudCBmbGFnIGJhY2sgdG8gdHJ1ZSAodGhpcyBkZWxh
eXMgdGhlIGxvYWQgZXZlbnQgYWdhaW4sIGluIGNhc2UKICAgICAvLyBpdCBoYXNuJ3QgYmVlbiBm
aXJlZCB5ZXQpLgogICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KHRydWUpOwogCiAgICAgLy8g
MjQuIFNldCB0aGUgbmV0d29ya1N0YXRlIGJhY2sgdG8gTkVUV09SS19MT0FESU5HLgogICAgIG1f
bmV0d29ya1N0YXRlID0gTkVUV09SS19MT0FESU5HOwotICAgIAorCiAgICAgLy8gMjUuIEp1bXAg
YmFjayB0byB0aGUgZmluZCBuZXh0IGNhbmRpZGF0ZSBzdGVwIGFib3ZlLgogICAgIG1fbmV4dENo
aWxkTm9kZVRvQ29uc2lkZXIgPSBzb3VyY2U7CiAgICAgc2NoZWR1bGVOZXh0U291cmNlQ2hpbGQo
KTsKQEAgLTMzNzUsNyArMzM3NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2Fz
UmVtb3ZlZChIVE1MU291cmNlRWxlbWVudCogc291cmNlKQogICAgICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VSZW1vdmVkIC0gbV9uZXh0Q2hpbGROb2RlVG9Db25zaWRl
ciBzZXQgdG8gJXAiLCBtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyLmdldCgpKTsKICAgICB9IGVs
c2UgaWYgKHNvdXJjZSA9PSBtX2N1cnJlbnRTb3VyY2VOb2RlKSB7CiAgICAgICAgIC8vIENsZWFy
IHRoZSBjdXJyZW50IHNvdXJjZSBub2RlIHBvaW50ZXIsIGJ1dCBkb24ndCBjaGFuZ2UgdGhlIG1v
dmllIGFzIHRoZSBzcGVjIHNheXM6Ci0gICAgICAgIC8vIDQuOC44IC0gRHluYW1pY2FsbHkgbW9k
aWZ5aW5nIGEgc291cmNlIGVsZW1lbnQgYW5kIGl0cyBhdHRyaWJ1dGUgd2hlbiB0aGUgZWxlbWVu
dCBpcyBhbHJlYWR5IAorICAgICAgICAvLyA0LjguOCAtIER5bmFtaWNhbGx5IG1vZGlmeWluZyBh
IHNvdXJjZSBlbGVtZW50IGFuZCBpdHMgYXR0cmlidXRlIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWxy
ZWFkeQogICAgICAgICAvLyBpbnNlcnRlZCBpbiBhIHZpZGVvIG9yIGF1ZGlvIGVsZW1lbnQgd2ls
bCBoYXZlIG5vIGVmZmVjdC4KICAgICAgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IDA7CiAgICAg
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVJlbW92ZWQgLSBtX2N1cnJl
bnRTb3VyY2VOb2RlIHNldCB0byAwIik7CkBAIC0zMzk4LDE1ICszMzk4LDE1IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAg
Ly8gNC44LjEwLjkgc3RlcCAxNCAmIDE1LiAgTmVlZGVkIGlmIG5vIFJlYWR5U3RhdGUgY2hhbmdl
IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2Vlay4KICAgICBpZiAobV9zZWVraW5nICYmIG1fcmVh
ZHlTdGF0ZSA+PSBIQVZFX0NVUlJFTlRfREFUQSAmJiAhbV9wbGF5ZXItPnNlZWtpbmcoKSkKICAg
ICAgICAgZmluaXNoU2VlaygpOwotICAgIAotICAgIC8vIEFsd2F5cyBjYWxsIHNjaGVkdWxlVGlt
ZXVwZGF0ZUV2ZW50IHdoZW4gdGhlIG1lZGlhIGVuZ2luZSByZXBvcnRzIGEgdGltZSBkaXNjb250
aW51aXR5LCAKKworICAgIC8vIEFsd2F5cyBjYWxsIHNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50IHdo
ZW4gdGhlIG1lZGlhIGVuZ2luZSByZXBvcnRzIGEgdGltZSBkaXNjb250aW51aXR5LAogICAgIC8v
IGl0IHdpbGwgb25seSBxdWV1ZSBhICd0aW1ldXBkYXRlJyBldmVudCBpZiB3ZSBoYXZlbid0IGFs
cmVhZHkgcG9zdGVkIG9uZSBhdCB0aGUgY3VycmVudAogICAgIC8vIG1vdmllIHRpbWUuCiAgICAg
c2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQoZmFsc2UpOwogCiAgICAgZmxvYXQgbm93ID0gY3VycmVu
dFRpbWUoKTsKICAgICBmbG9hdCBkdXIgPSBkdXJhdGlvbigpOwotICAgIAorCiAgICAgLy8gV2hl
biB0aGUgY3VycmVudCBwbGF5YmFjayBwb3NpdGlvbiByZWFjaGVzIHRoZSBlbmQgb2YgdGhlIG1l
ZGlhIHJlc291cmNlIHdoZW4gdGhlIGRpcmVjdGlvbiBvZgogICAgIC8vIHBsYXliYWNrIGlzIGZv
cndhcmRzLCB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgZm9sbG93IHRoZXNlIHN0ZXBzOgogICAg
IGlmICghc3RkOjppc25hbihkdXIpICYmIGR1ciAmJiBub3cgPj0gZHVyICYmIG1fcGxheWJhY2tS
YXRlID4gMCkgewpAQCAtMzYxMyw3ICszNjEzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShNZWRpYVBsYXllciopCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1lZGlhUGxh
eWVyKikKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNo
YXJhY3RlcmlzdGljQ2hhbmdlZCIpOwotICAgIAorCiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQ
bGF5ZXJDYWxsYmFjaygpOwogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIG1l
ZGlhQ29udHJvbHMoKS0+cmVzZXQoKTsKQEAgLTM2NzAsOCArMzY3MCw4IEBAIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6ZW5kZWRQbGF5YmFjaygpIGNvbnN0CiAKICAgICAvLyA0LjguMTAuOCBQbGF5
aW5nIHRoZSBtZWRpYSByZXNvdXJjZQogCi0gICAgLy8gQSBtZWRpYSBlbGVtZW50IGlzIHNhaWQg
dG8gaGF2ZSBlbmRlZCBwbGF5YmFjayB3aGVuIHRoZSBlbGVtZW50J3MgCi0gICAgLy8gcmVhZHlT
dGF0ZSBhdHRyaWJ1dGUgaXMgSEFWRV9NRVRBREFUQSBvciBncmVhdGVyLCAKKyAgICAvLyBBIG1l
ZGlhIGVsZW1lbnQgaXMgc2FpZCB0byBoYXZlIGVuZGVkIHBsYXliYWNrIHdoZW4gdGhlIGVsZW1l
bnQncworICAgIC8vIHJlYWR5U3RhdGUgYXR0cmlidXRlIGlzIEhBVkVfTUVUQURBVEEgb3IgZ3Jl
YXRlciwKICAgICBpZiAobV9yZWFkeVN0YXRlIDwgSEFWRV9NRVRBREFUQSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0zNjgyLDcgKzM2ODIsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmVuZGVkUGxheWJhY2soKSBjb25zdAogICAgIGlmIChtX3BsYXliYWNrUmF0ZSA+IDApCiAgICAg
ICAgIHJldHVybiBkdXIgPiAwICYmIG5vdyA+PSBkdXIgJiYgKCFsb29wKCkgfHwgbV9tZWRpYUNv
bnRyb2xsZXIpOwogCi0gICAgLy8gb3IgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gaXMg
dGhlIGVhcmxpZXN0IHBvc3NpYmxlIHBvc2l0aW9uIGFuZCB0aGUgZGlyZWN0aW9uIAorICAgIC8v
IG9yIHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGlzIHRoZSBlYXJsaWVzdCBwb3NzaWJs
ZSBwb3NpdGlvbiBhbmQgdGhlIGRpcmVjdGlvbgogICAgIC8vIG9mIHBsYXliYWNrIGlzIGJhY2t3
YXJkcwogICAgIGlmIChtX3BsYXliYWNrUmF0ZSA8IDApCiAgICAgICAgIHJldHVybiBub3cgPD0g
MDsKQEAgLTM2OTcsNyArMzY5Nyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6c3RvcHBlZER1
ZVRvRXJyb3JzKCkgY29uc3QKICAgICAgICAgaWYgKCFzZWVrYWJsZVJhbmdlcy0+Y29udGFpbihj
dXJyZW50VGltZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKKwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMzcxNiw3ICszNzE2LDcgQEAgZmxvYXQgSFRNTE1l
ZGlhRWxlbWVudDo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbGF5
ZXIgPyBtX3BsYXllci0+bWF4VGltZVNlZWthYmxlKCkgOiAwOwogfQotICAgIAorCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiB7CiAgICAgaWYgKCFtX3BsYXllcikKQEAg
LTM3NTUsMTEgKzM3NTUsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3Rh
dGUoKQogICAgICAgICAgICAgbWVkaWFDb250cm9scygpLT5wbGF5YmFja1N0b3BwZWQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgc2hvdWxkQmVQbGF5aW5nID0g
cG90ZW50aWFsbHlQbGF5aW5nKCk7CiAgICAgYm9vbCBwbGF5ZXJQYXVzZWQgPSBtX3BsYXllci0+
cGF1c2VkKCk7CiAKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5
U3RhdGUgLSBzaG91bGRCZVBsYXlpbmcgPSAlcywgcGxheWVyUGF1c2VkID0gJXMiLCAKKyAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUgLSBzaG91bGRCZVBs
YXlpbmcgPSAlcywgcGxheWVyUGF1c2VkID0gJXMiLAogICAgICAgICBib29sU3RyaW5nKHNob3Vs
ZEJlUGxheWluZyksIGJvb2xTdHJpbmcocGxheWVyUGF1c2VkKSk7CiAKICAgICBpZiAoc2hvdWxk
QmVQbGF5aW5nKSB7CkBAIC0zODQxLDkgKzM4NDEsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnVzZXJDYW5jZWxsZWRMb2FkKCkKICAgICBzZXRTb3VyY2VTdGF0ZShNZWRpYVNvdXJjZTo6Y2xv
c2VkS2V5d29yZCgpKTsKICNlbmRpZgogCi0gICAgLy8gNCAtIElmIHRoZSBtZWRpYSBlbGVtZW50
J3MgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaGFzIGEgdmFsdWUgZXF1YWwgdG8gSEFWRV9OT1RISU5H
LCBzZXQgdGhlIAotICAgIC8vIGVsZW1lbnQncyBuZXR3b3JrU3RhdGUgYXR0cmlidXRlIHRvIHRo
ZSBORVRXT1JLX0VNUFRZIHZhbHVlIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIAotICAgIC8v
IHNpbXBsZSBldmVudCBuYW1lZCBlbXB0aWVkIGF0IHRoZSBlbGVtZW50LiBPdGhlcndpc2UsIHNl
dCB0aGUgZWxlbWVudCdzIG5ldHdvcmtTdGF0ZSAKKyAgICAvLyA0IC0gSWYgdGhlIG1lZGlhIGVs
ZW1lbnQncyByZWFkeVN0YXRlIGF0dHJpYnV0ZSBoYXMgYSB2YWx1ZSBlcXVhbCB0byBIQVZFX05P
VEhJTkcsIHNldCB0aGUKKyAgICAvLyBlbGVtZW50J3MgbmV0d29ya1N0YXRlIGF0dHJpYnV0ZSB0
byB0aGUgTkVUV09SS19FTVBUWSB2YWx1ZSBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYQorICAg
IC8vIHNpbXBsZSBldmVudCBuYW1lZCBlbXB0aWVkIGF0IHRoZSBlbGVtZW50LiBPdGhlcndpc2Us
IHNldCB0aGUgZWxlbWVudCdzIG5ldHdvcmtTdGF0ZQogICAgIC8vIGF0dHJpYnV0ZSB0byB0aGUg
TkVUV09SS19JRExFIHZhbHVlLgogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gSEFWRV9OT1RISU5H
KSB7CiAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19FTVBUWTsKQEAgLTM4OTUsNyAr
Mzg5NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYVBsYXllcihpbnQgZmxh
Z3MpCiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y2FuU3VzcGVuZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHRydWU7IAorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnN0b3AoKQpAQCAtMzkwMywxNyArMzkwMywxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnN0b3AoKQogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnN0b3AiKTsKICAgICBp
ZiAobV9pc0Z1bGxzY3JlZW4pCiAgICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgCisKICAg
ICBtX2luQWN0aXZlRG9jdW1lbnQgPSBmYWxzZTsKICAgICB1c2VyQ2FuY2VsbGVkTG9hZCgpOwot
ICAgIAorCiAgICAgLy8gU3RvcCB0aGUgcGxheWJhY2sgd2l0aG91dCBnZW5lcmF0aW5nIGV2ZW50
cwogICAgIG1fcGxheWluZyA9IGZhbHNlOwogICAgIHNldFBhdXNlZEludGVybmFsKHRydWUpOwot
ICAgIAorCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZy
b21FbGVtZW50KCk7Ci0gICAgCisKICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKICAgICBjYW5j
ZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKCk7CiB9CkBAIC00MDM1LDcgKzQwMzUsOCBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKEtVUkwmIHVybCwgVmVj
dG9yPFN0cmluZz4mIG5hbWVzLCBWZQogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZy
YW1lKCk7CiAKICAgICBpZiAoaXNWaWRlbygpKSB7Ci0gICAgICAgIEtVUkwgcG9zdGVyVVJMID0g
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUocG9zdGVyQXR0cik7CisgICAgICAgIEhUTUxWaWRlb0Vs
ZW1lbnQqIHZpZGVvID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHRoaXMpOworICAg
ICAgICBLVVJMIHBvc3RlclVSTCA9IHZpZGVvLT5pbWFnZVNvdXJjZVVSTCgpOwogICAgICAgICBp
ZiAoIXBvc3RlclVSTC5pc0VtcHR5KCkgJiYgZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLT53aWxs
TG9hZE1lZGlhRWxlbWVudFVSTChwb3N0ZXJVUkwpKSB7CiAgICAgICAgICAgICBuYW1lcy5hcHBl
bmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxlbWVudF9wb3N0ZXJfIikpOwogICAgICAgICAgICAg
dmFsdWVzLmFwcGVuZChwb3N0ZXJVUkwuc3RyaW5nKCkpOwpAQCAtNDA3Niw3ICs0MDc3LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllclByb3h5KCkKICAgICBWZWN0
b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKIAogICAgIGdldFBsdWdpblByb3h5UGFyYW1zKHVybCwg
cGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwotICAgIAorCiAgICAgLy8gSGFuZyBvbnRvIHRoZSBw
cm94eSB3aWRnZXQgc28gaXQgd29uJ3QgYmUgZGVzdHJveWVkIGlmIHRoZSBwbHVnLWluIGlzIHNl
dCB0bwogICAgIC8vIGRpc3BsYXk6bm9uZQogICAgIG1fcHJveHlXaWRnZXQgPSBmcmFtZS0+bG9h
ZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKHRoaXMs
IHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwpAQCAtNDEwNSwxMiArNDEwNiwxMiBAQCBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzRnVsbHNjcmVlbigpIGNvbnN0CiB7CiAgICAgaWYgKG1f
aXNGdWxsc2NyZWVuKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKKwogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKICAgICBpZiAoZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkg
JiYgZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gdGhpcykK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApAQCAtNDIxMCw3ICs0MjExLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVU
ZXh0VHJhY2tEaXNwbGF5KCkKIHsKICAgICBpZiAoIWhhc01lZGlhQ29udHJvbHMoKSAmJiAhY3Jl
YXRlTWVkaWFDb250cm9scygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBtZWRpYUNv
bnRyb2xzKCktPnVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKIH0KICNlbmRpZgpAQCAtNDI5OCw3
ICs0Mjk5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYWRFdmVu
dChib29sIHNob3VsZERlbGF5KQogICAgIGVsc2UKICAgICAgICAgZG9jdW1lbnQoKS0+ZGVjcmVt
ZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogfQotICAgIAorCiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mIHNpdGVzKQogewpAQCAt
NDQxNSw3ICs0NDE2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJh
Y2tEaXNwbGF5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbWVkaWFDb250cm9scygpLT5jaGFu
Z2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCk7Ci0gICAgCisKICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgdXBkYXRl
VGV4dFRyYWNrRGlzcGxheSgpOwogfQpAQCAtNDQ0Myw3ICs0NDQ0LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQoKQog
ICAgIC8vIGNhcHRpb25zIGFuZCBub24tZGVmYXVsdCB0cmFja3Mgc2hvdWxkIGJlIGRpc3BsYXll
ZCBiYXNlZCBvbiBsYW5ndWFnZQogICAgIC8vIHByZWZlcmVuY2VzIGlmIHRoZSB1c2VyIGhhcyB0
dXJuZWQgY2FwdGlvbnMgb24pLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRU
cmFja3MtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgCisKICAgICAgICAgUmVmUHRyPFRleHRU
cmFjaz4gdGV4dFRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOwogICAgICAgICBTdHJpbmcg
a2luZCA9IHRleHRUcmFjay0+a2luZCgpOwogCkBAIC00NTI5LDcgKzQ1MzAsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cCkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fbWVkaWFHcm91cCA9IGdyb3VwOwogCi0gICAgLy8gV2hlbiBhIG1l
ZGlhIGVsZW1lbnQgaXMgY3JlYXRlZCB3aXRoIGEgbWVkaWFncm91cCBhdHRyaWJ1dGUsIGFuZCB3
aGVuIGEgbWVkaWEgZWxlbWVudCdzIG1lZGlhZ3JvdXAgCisgICAgLy8gV2hlbiBhIG1lZGlhIGVs
ZW1lbnQgaXMgY3JlYXRlZCB3aXRoIGEgbWVkaWFncm91cCBhdHRyaWJ1dGUsIGFuZCB3aGVuIGEg
bWVkaWEgZWxlbWVudCdzIG1lZGlhZ3JvdXAKICAgICAvLyBhdHRyaWJ1dGUgaXMgc2V0LCBjaGFu
Z2VkLCBvciByZW1vdmVkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgogICAgIC8vIDEuIExldCBtIFt0aGlzXSBiZSB0aGUgbWVkaWEgZWxlbWVudCBpbiBxdWVz
dGlvbi4KICAgICAvLyAyLiBMZXQgbSBoYXZlIG5vIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlciwg
aWYgaXQgY3VycmVudGx5IGhhcyBvbmUuCkBAIC00NTQwLDE0ICs0NTQxLDE0IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0TWVkaWFHcm91cChjb25zdCBTdHJpbmcmIGdyb3VwKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyA0LiBJZiB0aGVyZSBpcyBhbm90aGVyIG1lZGlhIGVsZW1lbnQg
d2hvc2UgRG9jdW1lbnQgaXMgdGhlIHNhbWUgYXMgbSdzIERvY3VtZW50IChldmVuIGlmIG9uZSBv
ciBib3RoCi0gICAgLy8gb2YgdGhlc2UgZWxlbWVudHMgYXJlIG5vdCBhY3R1YWxseSBpbiB0aGUg
RG9jdW1lbnQpLCAKKyAgICAvLyBvZiB0aGVzZSBlbGVtZW50cyBhcmUgbm90IGFjdHVhbGx5IGlu
IHRoZSBEb2N1bWVudCksCiAgICAgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4gZWxlbWVudHMg
PSBkb2N1bWVudFRvRWxlbWVudFNldE1hcCgpLmdldChkb2N1bWVudCgpKTsKICAgICBmb3IgKEhh
c2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+OjppdGVyYXRvciBpID0gZWxlbWVudHMuYmVnaW4oKTsg
aSAhPSBlbGVtZW50cy5lbmQoKTsgKytpKSB7CiAgICAgICAgIGlmICgqaSA9PSB0aGlzKQogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gYW5kIHdoaWNoIGFsc28gaGFzIGEgbWVk
aWFncm91cCBhdHRyaWJ1dGUsIGFuZCB3aG9zZSBtZWRpYWdyb3VwIGF0dHJpYnV0ZSBoYXMgdGhl
IHNhbWUgdmFsdWUgYXMKLSAgICAgICAgLy8gdGhlIG5ldyB2YWx1ZSBvZiBtJ3MgbWVkaWFncm91
cCBhdHRyaWJ1dGUsICAgICAgICAKKyAgICAgICAgLy8gdGhlIG5ldyB2YWx1ZSBvZiBtJ3MgbWVk
aWFncm91cCBhdHRyaWJ1dGUsCiAgICAgICAgIGlmICgoKmkpLT5tZWRpYUdyb3VwKCkgPT0gZ3Jv
dXApIHsKICAgICAgICAgICAgIC8vICB0aGVuIGxldCBjb250cm9sbGVyIGJlIHRoYXQgbWVkaWEg
ZWxlbWVudCdzIGN1cnJlbnQgbWVkaWEgY29udHJvbGxlci4KICAgICAgICAgICAgIHNldENvbnRy
b2xsZXIoKCppKS0+Y29udHJvbGxlcigpKTsKQEAgLTQ2MTgsMTMgKzQ2MTksMTMgQEAgYm9vbCBI
VE1MTWVkaWFFbGVtZW50Ojppc0Jsb2NrZWRPbk1lZGlhQ29udHJvbGxlcigpIGNvbnN0CiAgICAg
aWYgKCFtX21lZGlhQ29udHJvbGxlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8g
QSBtZWRpYSBlbGVtZW50IGlzIGJsb2NrZWQgb24gaXRzIG1lZGlhIGNvbnRyb2xsZXIgaWYgdGhl
IE1lZGlhQ29udHJvbGxlciBpcyBhIGJsb2NrZWQgCisgICAgLy8gQSBtZWRpYSBlbGVtZW50IGlz
IGJsb2NrZWQgb24gaXRzIG1lZGlhIGNvbnRyb2xsZXIgaWYgdGhlIE1lZGlhQ29udHJvbGxlciBp
cyBhIGJsb2NrZWQKICAgICAvLyBtZWRpYSBjb250cm9sbGVyLAogICAgIGlmIChtX21lZGlhQ29u
dHJvbGxlci0+aXNCbG9ja2VkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8gb3Ig
aWYgaXRzIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRpb24gaXMgZWl0aGVyIGJlZm9yZSB0aGUgbWVk
aWEgcmVzb3VyY2UncyBlYXJsaWVzdCBwb3NzaWJsZSAKLSAgICAvLyBwb3NpdGlvbiByZWxhdGl2
ZSB0byB0aGUgTWVkaWFDb250cm9sbGVyJ3MgdGltZWxpbmUgb3IgYWZ0ZXIgdGhlIGVuZCBvZiB0
aGUgbWVkaWEgcmVzb3VyY2UgCisgICAgLy8gb3IgaWYgaXRzIG1lZGlhIGNvbnRyb2xsZXIgcG9z
aXRpb24gaXMgZWl0aGVyIGJlZm9yZSB0aGUgbWVkaWEgcmVzb3VyY2UncyBlYXJsaWVzdCBwb3Nz
aWJsZQorICAgIC8vIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0
aW1lbGluZSBvciBhZnRlciB0aGUgZW5kIG9mIHRoZSBtZWRpYSByZXNvdXJjZQogICAgIC8vIHJl
bGF0aXZlIHRvIHRoZSBNZWRpYUNvbnRyb2xsZXIncyB0aW1lbGluZS4KICAgICBmbG9hdCBtZWRp
YUNvbnRyb2xsZXJQb3NpdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOwog
ICAgIGlmIChtZWRpYUNvbnRyb2xsZXJQb3NpdGlvbiA8IHN0YXJ0VGltZSgpIHx8IG1lZGlhQ29u
dHJvbGxlclBvc2l0aW9uID4gc3RhcnRUaW1lKCkgKyBkdXJhdGlvbigpKQpAQCAtNDYzNyw3ICs0
NjM4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlTWVkaWFGcmFnbWVudFVSSSgp
CiB7CiAgICAgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmcmFnbWVudFBhcnNlcihtX2N1cnJlbnRT
cmMpOwogICAgIGZsb2F0IGR1ciA9IGR1cmF0aW9uKCk7Ci0gICAgCisKICAgICBkb3VibGUgc3Rh
cnQgPSBmcmFnbWVudFBhcnNlci5zdGFydFRpbWUoKTsKICAgICBpZiAoc3RhcnQgIT0gTWVkaWFG
cmFnbWVudFVSSVBhcnNlcjo6aW52YWxpZFRpbWVWYWx1ZSgpICYmIHN0YXJ0ID4gMCkgewogICAg
ICAgICBtX2ZyYWdtZW50U3RhcnRUaW1lID0gc3RhcnQ7CkBAIC00NjQ1LDcgKzQ2NDYsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVNZWRpYUZyYWdtZW50VVJJKCkKICAgICAgICAg
ICAgIG1fZnJhZ21lbnRTdGFydFRpbWUgPSBkdXI7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fZnJh
Z21lbnRTdGFydFRpbWUgPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsKLSAgICAKKwogICAg
IGRvdWJsZSBlbmQgPSBmcmFnbWVudFBhcnNlci5lbmRUaW1lKCk7CiAgICAgaWYgKGVuZCAhPSBN
ZWRpYUZyYWdtZW50VVJJUGFyc2VyOjppbnZhbGlkVGltZVZhbHVlKCkgJiYgZW5kID4gMCAmJiBl
bmQgPiBtX2ZyYWdtZW50U3RhcnRUaW1lKSB7CiAgICAgICAgIG1fZnJhZ21lbnRFbmRUaW1lID0g
ZW5kOwpAQCAtNDY1Myw3ICs0NjU0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJl
TWVkaWFGcmFnbWVudFVSSSgpCiAgICAgICAgICAgICBtX2ZyYWdtZW50RW5kVGltZSA9IGR1cjsK
ICAgICB9IGVsc2UKICAgICAgICAgbV9mcmFnbWVudEVuZFRpbWUgPSBNZWRpYVBsYXllcjo6aW52
YWxpZFRpbWUoKTsKLSAgICAKKwogICAgIGlmIChtX2ZyYWdtZW50U3RhcnRUaW1lICE9IE1lZGlh
UGxheWVyOjppbnZhbGlkVGltZSgpICYmIG1fcmVhZHlTdGF0ZSA8IEhBVkVfRlVUVVJFX0RBVEEp
CiAgICAgICAgIHByZXBhcmVUb1BsYXkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAKaW5kZXggZjRkNjc1ODJkNDllYWNkNTRhMzM3MjIzOTRjYzhlNzVlMjYz
N2MwMy4uM2MwMGRkZGI0NmI4ZGQwMmQzYzhiYWRkODJlN2I4ZTNkZDI2MDA4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1pbmxpbmUg
SFRNTE9iamVjdEVsZW1lbnQ6OkhUTUxPYmplY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBib29s
IGNyZWF0ZWRCeVBhcnNlcikgCitpbmxpbmUgSFRNTE9iamVjdEVsZW1lbnQ6OkhUTUxPYmplY3RF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwg
SFRNTEZvcm1FbGVtZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlciwgU2hv
dWxkTm90UHJlZmVyUGx1Z0luc0ZvckltYWdlcykKICAgICAsIG1fZG9jTmFtZWRJdGVtKHRydWUp
CiAgICAgLCBtX3VzZUZhbGxiYWNrQ29udGVudChmYWxzZSkKQEAgLTE0MCw3ICsxNDAsNyBAQCBz
dGF0aWMgdm9pZCBtYXBEYXRhUGFyYW1Ub1NyYyhWZWN0b3I8U3RyaW5nPiogcGFyYW1OYW1lcywg
VmVjdG9yPFN0cmluZz4qIHBhcmFtVgogICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZSgoKnBhcmFtTmFtZXMpW2ldLCAiZGF0YSIpKQogICAgICAgICAgICAgZGF0YUluZGV4ID0gaTsK
ICAgICB9Ci0gICAgCisKICAgICBpZiAoc3JjSW5kZXggPT0gLTEgJiYgZGF0YUluZGV4ICE9IC0x
KSB7CiAgICAgICAgIHBhcmFtTmFtZXMtPmFwcGVuZCgic3JjIik7CiAgICAgICAgIHBhcmFtVmFs
dWVzLT5hcHBlbmQoKCpwYXJhbVZhbHVlcylbZGF0YUluZGV4XSk7CkBAIC0xNTIsNyArMTUyLDcg
QEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFMKIHsKICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqLCBD
YXNlRm9sZGluZ0hhc2g+IHVuaXF1ZVBhcmFtTmFtZXM7CiAgICAgU3RyaW5nIHVybFBhcmFtZXRl
cjsKLSAgICAKKwogICAgIC8vIFNjYW4gdGhlIFBBUkFNIGNoaWxkcmVuIGFuZCBzdG9yZSB0aGVp
ciBuYW1lL3ZhbHVlIHBhaXJzLgogICAgIC8vIEdldCB0aGUgVVJMIGFuZCB0eXBlIGZyb20gdGhl
IHBhcmFtcyBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgdGhlbS4KICAgICBmb3IgKE5vZGUqIGNo
aWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkg
ewpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNG
b3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTCiAgICAgICAgICAg
ICAgICAgc2VydmljZVR5cGUgPSBzZXJ2aWNlVHlwZS5sZWZ0KHBvcyk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCisKICAgICAvLyBXaGVuIE9CSkVDVCBpcyB1c2VkIGZvciBhbiBhcHBsZXQgdmlh
IFN1bidzIEphdmEgcGx1Z2luLCB0aGUgQ09ERUJBU0UgYXR0cmlidXRlIGluIHRoZSB0YWcKICAg
ICAvLyBwb2ludHMgdG8gdGhlIEphdmEgcGx1Z2luIGl0c2VsZiAoYW4gQWN0aXZlWCBjb21wb25l
bnQpIHdoaWxlIHRoZSBhY3R1YWwgYXBwbGV0IENPREVCQVNFIGlzCiAgICAgLy8gaW4gYSBQQVJB
TSB0YWcuIFNlZSA8aHR0cDovL2phdmEuc3VuLmNvbS9wcm9kdWN0cy9wbHVnaW4vMS4yL2RvY3Mv
dGFncy5odG1sPi4gVGhpcyBtZWFucwpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMs
IFZlY3RvcjxTCiAgICAgICAgIGNvZGViYXNlID0gImNvZGViYXNlIjsKICAgICAgICAgdW5pcXVl
UGFyYW1OYW1lcy5hZGQoY29kZWJhc2UuaW1wbCgpKTsgLy8gcHJldGVuZCB3ZSBmb3VuZCBpdCBp
biBhIFBBUkFNIGFscmVhZHkKICAgICB9Ci0gICAgCisKICAgICAvLyBUdXJuIHRoZSBhdHRyaWJ1
dGVzIG9mIHRoZSA8b2JqZWN0PiBlbGVtZW50IGludG8gYXJyYXlzLCBidXQgZG9uJ3Qgb3ZlcnJp
ZGUgPHBhcmFtPiB2YWx1ZXMuCiAgICAgaWYgKGhhc0F0dHJpYnV0ZXMoKSkgewogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQoKTsgKytpKSB7CkBAIC0yMDIs
OSArMjAyLDkgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbihW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgVmVjdG9yPFMKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KLSAgICAKKwogICAgIG1hcERhdGFQYXJhbVRvU3JjKCZwYXJhbU5hbWVzLCAm
cGFyYW1WYWx1ZXMpOwotICAgIAorCiAgICAgLy8gSFRNTDUgc2F5cyB0aGF0IGFuIG9iamVjdCBy
ZXNvdXJjZSdzIFVSTCBpcyBzcGVjaWZpZWQgYnkgdGhlIG9iamVjdCdzIGRhdGEKICAgICAvLyBh
dHRyaWJ1dGUsIG5vdCBieSBhIHBhcmFtIGVsZW1lbnQuIEhvd2V2ZXIsIGZvciBjb21wYXRpYmls
aXR5LCBhbGxvdyB0aGUKICAgICAvLyByZXNvdXJjZSdzIFVSTCB0byBiZSBnaXZlbiBieSBhIHBh
cmFtIG5hbWVkICJzcmMiLCAibW92aWUiLCAiY29kZSIgb3IgInVybCIKQEAgLTIxNiw3ICsyMTYs
NyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8UwogICAgIH0KIH0KIAotICAgIAorCiBib29sIEhU
TUxPYmplY3RFbGVtZW50OjpoYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdAogewogICAgIGZvciAo
Tm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7CkBAIC0yMjksNyArMjI5LDcgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6aGFz
RmFsbGJhY2tDb250ZW50KCkgY29uc3QKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQotICAg
IAorCiBib29sIEhUTUxPYmplY3RFbGVtZW50OjpzaG91bGRBbGxvd1F1aWNrVGltZUNsYXNzSWRR
dWlyaygpCiB7CiAgICAgLy8gVGhpcyBzaXRlLXNwZWNpZmljIGhhY2sgbWFpbnRhaW5zIGNvbXBh
dGliaWxpdHkgd2l0aCBNYWMgT1MgWCBXaWtpIFNlcnZlciwKQEAgLTI1MiwxMCArMjUyLDEwIEBA
IGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OnNob3VsZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJr
KCkKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1ldGFFbGVtZW50LT5uYW1lKCksICJn
ZW5lcmF0b3IiKSAmJiBtZXRhRWxlbWVudC0+Y29udGVudCgpLnN0YXJ0c1dpdGgoIk1hYyBPUyBY
IFNlcnZlciBXZWIgU2VydmljZXMgU2VydmVyIiwgZmFsc2UpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQotICAgIAorCiBib29s
IEhUTUxPYmplY3RFbGVtZW50OjpoYXNWYWxpZENsYXNzSWQoKQogewogI2lmIFBMQVRGT1JNKFFU
KQpAQCAtMjY1LDcgKzI2NSw3IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6Omhhc1ZhbGlkQ2xh
c3NJZCgpCiAKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUo
c2VydmljZVR5cGUoKSkgJiYgY2xhc3NJZCgpLnN0YXJ0c1dpdGgoImphdmE6IiwgZmFsc2UpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKKwogICAgIGlmIChzaG91bGRBbGxvd1F1aWNrVGlt
ZUNsYXNzSWRRdWlyaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMzY0LDE2ICszNjQs
MTYgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkgPT0gZGF0
YUF0dHIgfHwgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gdXNlbWFwQXR0ciAmJiBhdHRyaWJ1dGUudmFs
dWUoKS5zdHJpbmcoKVswXSAhPSAnIycpIHx8IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzVVJM
QXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKLWNvbnN0IFF1YWxpZmllZE5hbWUmIEhUTUxPYmpl
Y3RFbGVtZW50OjppbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdAorY29uc3QgQXRvbWlj
U3RyaW5nJiBIVE1MT2JqZWN0RWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAg
IHJldHVybiBkYXRhQXR0cjsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGRhdGFBdHRyKTsKIH0K
IAogdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIHsKICAg
ICBpZiAodXNlRmFsbGJhY2tDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAg
IGlmICghaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ1OCw3ICs0NTgsNyBA
QCBib29sIEhUTUxPYmplY3RFbGVtZW50Ojpjb250YWluc0phdmFBcHBsZXQoKSBjb25zdAogewog
ICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShnZXRBdHRyaWJ1
dGUodHlwZUF0dHIpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAorCiAgICAgZm9y
IChFbGVtZW50KiBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHRoaXMpOyBj
aGlsZDsgY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihjaGls
ZCwgdGhpcykpIHsKICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHBhcmFtVGFnKQogICAg
ICAgICAgICAgICAgICYmIGVxdWFsSWdub3JpbmdDYXNlKGNoaWxkLT5nZXROYW1lQXR0cmlidXRl
KCksICJ0eXBlIikKQEAgLTQ3MCw3ICs0NzAsNyBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50Ojpj
b250YWluc0phdmFBcHBsZXQoKSBjb25zdAogICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUo
YXBwbGV0VGFnKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKKwogICAg
IHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5o
CmluZGV4IDViN2U3MjBiOTc0NDYwZmNhMTFkMjE1MzU3YmY4OWZkOTYxNzUyYzMuLmQ2ZGU1N2Iz
NDMzZmU1NDdkNGUwZTk1ZWVlNzkxMjdhZWNkYTc4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUq
IGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnRE
ZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpIGNvbnN0OwogCkBAIC04
OSwxMSArODksMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZURvY05hbWVkSXRlbSgpOwog
CiAgICAgYm9vbCBoYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdDsKLSAgICAKKwogICAgIC8vIEZJ
WE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZGVhbCB3aXRoIHVybCBvciBzZXJ2aWNlVHlw
ZQogICAgIC8vIHNvIHRoYXQgd2UgY2FuIGJldHRlciBzaGFyZSBjb2RlIGJldHdlZW4gPG9iamVj
dD4gYW5kIDxlbWJlZD4uCiAgICAgdm9pZCBwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJp
bmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIFN0cmluZyYgdXJs
LCBTdHJpbmcmIHNlcnZpY2VUeXBlKTsKLSAgICAKKwogICAgIGJvb2wgc2hvdWxkQWxsb3dRdWlj
a1RpbWVDbGFzc0lkUXVpcmsoKTsKICAgICBib29sIGhhc1ZhbGlkQ2xhc3NJZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjZmU5NTcxM2ZmOWRmOGQ3
MzU3NWI4MDJlZTU4MWYwOGRlNjc4NDFkLi5hMTcyMDZlYTcxMzM3YmNhODg2Zjk0ZTVhNmU4OTI0
ZTMzY2U5YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAg
LTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OSw2ICs1MCw4IEBAIGlu
bGluZSBIVE1MVmlkZW9FbGVtZW50OjpIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50CiAgICAgOiBIVE1MTWVkaWFFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodmlkZW9U
YWcpKTsKKyAgICBpZiAoZG9jdW1lbnQtPnNldHRpbmdzKCkpCisgICAgICAgIG1fZGVmYXVsdFBv
c3RlclVSTCA9IGRvY3VtZW50LT5zZXR0aW5ncygpLT5kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoKTsK
IH0KIAogUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29s
IGNyZWF0ZWRCeVBhcnNlcikKQEAgLTU4LDkgKzYxLDkgQEAgUGFzc1JlZlB0cjxIVE1MVmlkZW9F
bGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmEKICAgICByZXR1cm4gdmlkZW9FbGVtZW50LnJlbGVhc2UoKTsKIH0KIAotYm9vbCBIVE1MVmlk
ZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBj
b250ZXh0KSAKK2Jvb2wgSFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7IAorICAgIHJldHVybiBIVE1MRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIH0KIAogI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykKQEAgLTgxLDcgKzg0LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphdHRhY2go
KQogICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2Fk
ZXIodGhpcykpOwogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwog
ICAgICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVy
ZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1h
Z2UoKSk7IAorICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNv
dXJjZSgpLT5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKICAgICB9CiAj
ZW5kaWYKIH0KQEAgLTExNiw3ICsxMTksNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgogICAg
ICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3Vz
RXJyb3IoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQot
ICAgICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2Uo
KS0+c2V0Q2FjaGVkSW1hZ2UoMCk7IAorICAgICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVu
ZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UoMCk7CiAgICAgICAgIH0K
ICNlbmRpZgogICAgIH0gZWxzZQpAQCAtMTI2LDcgKzEyOSw3IEBAIHZvaWQgSFRNTFZpZGVvRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0
CiB7CiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5wYWdlKCkgOiAw
OwotICAgIGlmICghcGFnZSkgCisgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoIXBsYXllcigpIHx8ICFwbGF5ZXIoKS0+c3VwcG9ydHNGdWxsc2NyZWVuKCkp
CkBAIC0xNjUsMjggKzE2OCwzMiBAQCB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp3aWR0aCgp
IGNvbnN0CiAgICAgdW5zaWduZWQgdyA9IGdldEF0dHJpYnV0ZSh3aWR0aEF0dHIpLnN0cmluZygp
LnRvVUludCgmb2spOwogICAgIHJldHVybiBvayA/IHcgOiAwOwogfQotICAgIAorCiB1bnNpZ25l
ZCBIVE1MVmlkZW9FbGVtZW50OjpoZWlnaHQoKSBjb25zdAogewogICAgIGJvb2wgb2s7CiAgICAg
dW5zaWduZWQgaCA9IGdldEF0dHJpYnV0ZShoZWlnaHRBdHRyKS5zdHJpbmcoKS50b1VJbnQoJm9r
KTsKICAgICByZXR1cm4gb2sgPyBoIDogMDsKIH0KLSAgICAKKwogYm9vbCBIVE1MVmlkZW9FbGVt
ZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKIHsK
ICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUoKSA9PSBwb3N0ZXJBdHRyIHx8IEhUTUxNZWRpYUVs
ZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKLWNvbnN0IFF1YWxpZmllZE5h
bWUmIEhUTUxWaWRlb0VsZW1lbnQ6OmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0Citj
b25zdCBBdG9taWNTdHJpbmcmIEhUTUxWaWRlb0VsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gcG9zdGVyQXR0cjsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHVy
bCA9IGdldEF0dHJpYnV0ZShwb3N0ZXJBdHRyKTsKKyAgICBpZiAoIXVybC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB1cmw7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gbV9kZWZhdWx0UG9z
dGVyVVJMOwogfQogCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldERpc3BsYXlNb2RlKERpc3Bs
YXlNb2RlIG1vZGUpCiB7CiAgICAgRGlzcGxheU1vZGUgb2xkTW9kZSA9IGRpc3BsYXlNb2RlKCk7
Ci0gICAgS1VSTCBwb3N0ZXIgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShwb3N0ZXJBdHRyKTsK
KyAgICBLVVJMIHBvc3RlciA9IHBvc3RlckltYWdlVVJMKCk7CiAKICAgICBpZiAoIXBvc3Rlci5p
c0VtcHR5KCkpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIHBvc3RlciBwYXRoLCBidXQgb25seSBz
aG93IGl0IHVudGlsIHRoZSB1c2VyIHRyaWdnZXJzIGRpc3BsYXkgYnkgcGxheWluZyBvciBzZWVr
aW5nIGFuZCB0aGUKQEAgLTIyMSw3ICsyMjgsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNl
dERpc3BsYXlNb2RlKERpc3BsYXlNb2RlIG1vZGUpCiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
dXBkYXRlRGlzcGxheVN0YXRlKCkKIHsKLSAgICBpZiAoZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUo
cG9zdGVyQXR0cikuaXNFbXB0eSgpKQorICAgIGlmIChwb3N0ZXJJbWFnZVVSTCgpLmlzRW1wdHko
KSkKICAgICAgICAgc2V0RGlzcGxheU1vZGUoVmlkZW8pOwogICAgIGVsc2UgaWYgKGRpc3BsYXlN
b2RlKCkgPCBQb3N0ZXIpCiAgICAgICAgIHNldERpc3BsYXlNb2RlKFBvc3Rlcik7CkBAIC0yMzIs
NyArMjM5LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICBNZWRpYVBsYXllciogcGxh
eWVyID0gSFRNTE1lZGlhRWxlbWVudDo6cGxheWVyKCk7CiAgICAgaWYgKCFwbGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIHBsYXllci0+c2V0VmlzaWJsZSh0cnVlKTsgLy8gTWFr
ZSBwbGF5ZXIgdmlzaWJsZSBvciBpdCB3b24ndCBkcmF3LgogICAgIHBsYXllci0+cGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgZGVzdFJlY3QpOwogfQpAQCAtMjQxLDcgKzI0OCw3
IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFwbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAg
ICAgcmV0dXJuIHBsYXllcigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNBdmFpbGFibGVW
aWRlb0ZyYW1lKCk7CiB9CiAKQEAgLTI1MCw3ICsyNTcsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1l
bnQ6OndlYmtpdEVudGVyRnVsbHNjcmVlbihFeGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAoaXNG
dWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEdlbmVyYXRlIGFuIGV4Y2Vw
dGlvbiBpZiB0aGlzIGlzbid0IGNhbGxlZCBpbiByZXNwb25zZSB0byBhIHVzZXIgZ2VzdHVyZSwg
b3IgaWYgdGhlIAorICAgIC8vIEdlbmVyYXRlIGFuIGV4Y2VwdGlvbiBpZiB0aGlzIGlzbid0IGNh
bGxlZCBpbiByZXNwb25zZSB0byBhIHVzZXIgZ2VzdHVyZSwgb3IgaWYgdGhlCiAgICAgLy8gZWxl
bWVudCBkb2VzIG5vdCBzdXBwb3J0IGZ1bGxzY3JlZW4uCiAgICAgaWYgKCh1c2VyR2VzdHVyZVJl
cXVpcmVkRm9yRnVsbHNjcmVlbigpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNl
ckdlc3R1cmUoKSkgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbigpKSB7CiAgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CkBAIC0zMDEsNiArMzA4LDEzIEBAIHVuc2lnbmVkIEhUTUxWaWRlb0Vs
ZW1lbnQ6OndlYmtpdERyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKIH0KICNlbmRpZgogCitLVVJM
IEhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKCkgeworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdXJsID0gaW1hZ2VTb3VyY2VVUkwoKTsKKyAgICBpZiAodXJsLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
dXJsKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgKaW5kZXggY2Y0ZmVhY2ZjYjcxYjIyZTM2OTEzYThkOTc4NGNhZWY0MTg1NDlhYi4uYzQxYTBj
ZGRiNzY3YWZhNTRkMmVlYmU3ZDIwODUyZDRkN2QyOWI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAogI2lmbmRlZiBIVE1MVmlkZW9FbGVtZW50X2gKQEAgLTM5LDEwICszOSwxMCBAQCBwdWJsaWM6
CiAKICAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGhlaWdodCgpIGNv
bnN0OwotICAgIAorCiAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCgpIGNvbnN0OwogICAgIHVuc2ln
bmVkIHZpZGVvSGVpZ2h0KCkgY29uc3Q7Ci0gICAgCisKICAgICAvLyBGdWxsc2NyZWVuCiAgICAg
dm9pZCB3ZWJraXRFbnRlckZ1bGxzY3JlZW4oRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgd2Vi
a2l0RXhpdEZ1bGxzY3JlZW4oKTsKQEAgLTY1LDYgKzY1LDggQEAgcHVibGljOgogCiAgICAgYm9v
bCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBkaXNwbGF5TW9kZSgp
ID09IFBvc3RlciB8fCBkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JWaWRlbzsgfQog
CisgICAgS1VSTCBwb3N0ZXJJbWFnZVVSTCgpOworCiBwcml2YXRlOgogICAgIEhUTUxWaWRlb0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCk7CiAKQEAgLTgwLDcg
KzgyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdCB7IHJl
dHVybiBwbGF5ZXIoKSAmJiBwbGF5ZXIoKS0+aGFzVmlkZW8oKTsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25z
dCBRdWFsaWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwpAQCAtODksNiArOTEsNyBAQCBw
cml2YXRlOgogCiAgICAgT3duUHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsKIAor
ICAgIEF0b21pY1N0cmluZyBtX2RlZmF1bHRQb3N0ZXJVUkw7CiB9OwogCiB9IC8vbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCA4MWExMjlkMjBiMDljMDQx
OWQ4MzNlODhhZmRmZTk3ZmZhMjg4YTA2Li40MzJiYjEyOWUxNTkyYmVlMzNkMjlhZGFkMGE4MzZi
MGYyYjA0ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTE3MCw3
ICsxNzAsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgaWYg
KCFkb2N1bWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQXRvbWljU3Ry
aW5nIGF0dHIgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShtX2VsZW1lbnQtPmltYWdlU291cmNl
QXR0cmlidXRlTmFtZSgpKTsKKyAgICBBdG9taWNTdHJpbmcgYXR0ciA9IG1fZWxlbWVudC0+aW1h
Z2VTb3VyY2VVUkwoKTsKIAogICAgIGlmIChhdHRyID09IG1fZmFpbGVkTG9hZFVSTCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZy
b21FbGVtZW50KCkKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBmaXJlIHRoaXMgZXZlbnQg
YXN5bmNocm9ub3Vsc3kgdmlhIGVycm9yRXZlbnRTZW5kZXIoKT8KICAgICAgICAgbV9lbGVtZW50
LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOwogICAgIH0KLSAgICAKKwogICAgIENhY2hlZEltYWdlKiBvbGRJbWFnZSA9
IG1faW1hZ2UuZ2V0KCk7CiAgICAgaWYgKG5ld0ltYWdlICE9IG9sZEltYWdlKSB7CiAgICAgICAg
IGlmIChtX2hhc1BlbmRpbmdCZWZvcmVMb2FkRXZlbnQpIHsKQEAgLTQwNCw3ICs0MDQsNyBAQCB2
b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKQogCiAgICAg
bG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7CiAgICAgbV9oYXNQZW5kaW5nTG9h
ZEV2ZW50ID0gZmFsc2U7Ci0gICAgCisKICAgICBpZiAobV9lbGVtZW50LT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6b2JqZWN0VGFnKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1l
bnQqPihtX2VsZW1lbnQpLT5yZW5kZXJGYWxsYmFja0NvbnRlbnQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaW4KaW5kZXggZTc5OTFlYWRjYzE0MDMwN2ZjMDk3NjdiZWZmMjE0YTUzYmY3ZWJhZC4u
Mjg2NjM2Y2MxNWM0N2ZlNDY0ZjVhMDNlZmE3ZDVjOTJmZDA4ZjY3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmluCkBAIC0xOTUsNCArMTk1LDcgQEAgdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCBp
bml0aWFsPWRlZmF1bHRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkCiAKIGxvZ3NQYWdlTWVzc2Fn
ZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkIGluaXRpYWw9ZmFsc2UKIAorIyBTb21lIGFwcHMgY291
bGQgaGF2ZSBhIGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGlzIG5vdCBzZXQuCitkZWZhdWx0
VmlkZW9Qb3N0ZXJVUkwgdHlwZT1TdHJpbmcKKwogc21hcnRJbnNlcnREZWxldGVFbmFibGVkIGlu
aXRpYWw9dHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGFzdGVib2FyZENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggNzYwOTY2M2VkZThlYTBiY2FiOGVhNGRlMjc2
NTMzMTg5Nzg4ODhjNi4uMzE1NWVkZWI4ZjcyN2I2ODNiYzRjZDc5MTEwYjg4YzNjOTQ0ZTYxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJv
YXJkQ2hyb21pdW0uY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogI2Vu
ZGlmCiAgICAgZWxzZSBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmVtYmVkVGFnKSB8
fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKSkgewogICAgICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwotICAgICAgICB1cmxT
dHJpbmcgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoZWxlbWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1
dGVOYW1lKCkpOworICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgp
OwogICAgIH0KICAgICBLVVJMIHVybCA9IHVybFN0cmluZy5pc0VtcHR5KCkgPyBLVVJMKCkgOiBu
b2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXModXJsU3RyaW5nKSk7CiAgICAgV2ViS2l0OjpXZWJJbWFnZSB3ZWJJbWFnZSA9IGJpdG1h
cC0+Yml0bWFwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0
ay5jcHAKaW5kZXggZDZkODY3ZTkxN2FjYTcwN2Q0ZWE4YjM3Zjc3YzFmMDE2YTI1YmMzMy4uODFk
ZWE4MDY0MmNkZGU4ODI3YWI3OTk4MTk0NmI5ZDM4ZjA0NDc1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0
YXRpYyBLVVJMIGdldFVSTEZvckltYWdlTm9kZShOb2RlKiBub2RlKQogI2VuZGlmCiAgICAgZWxz
ZSBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmVtYmVkVGFnKSB8fCBub2RlLT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwotICAgICAgICB1cmxTdHJpbmcgPSBlbGVt
ZW50LT5nZXRBdHRyaWJ1dGUoZWxlbWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOwor
ICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwogICAgIH0KICAg
ICByZXR1cm4gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBm
MWEzNDZlNzg4ZTRjNjQyZTljZjUzNzQ1ZGVmYzkyMzlmYWNiZGQwLi4zZmY1NTAxOGE3YTc5NGJj
OWY2YTU3Y2M3MWJmZDhkNDhjMzJhZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBIaXRUZXN0UmVzdWx0Ojpz
ZXRJbm5lck5vZGUoTm9kZSogbikKICAgICAgICAgbiA9IG4tPnBhcmVudE9yU2hhZG93SG9zdE5v
ZGUoKTsKICAgICBtX2lubmVyTm9kZSA9IG47CiB9Ci0gICAgCisKIHZvaWQgSGl0VGVzdFJlc3Vs
dDo6c2V0SW5uZXJOb25TaGFyZWROb2RlKE5vZGUqIG4pCiB7CiAgICAgaWYgKG4gJiYgbi0+aXNQ
c2V1ZG9FbGVtZW50KCkpCkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBIaXRUZXN0UmVzdWx0Ojpz
ZXRJbm5lck5vblNoYXJlZE5vZGUoTm9kZSogbikKICAgICBtX2lubmVyTm9uU2hhcmVkTm9kZSA9
IG47CiB9CiAKLXZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0VVJMRWxlbWVudChFbGVtZW50KiBuKSAK
LXsgCi0gICAgbV9pbm5lclVSTEVsZW1lbnQgPSBuOyAKK3ZvaWQgSGl0VGVzdFJlc3VsdDo6c2V0
VVJMRWxlbWVudChFbGVtZW50KiBuKQoreworICAgIG1faW5uZXJVUkxFbGVtZW50ID0gbjsKIH0K
IAogdm9pZCBIaXRUZXN0UmVzdWx0OjpzZXRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzKQpAQCAtMTg3
LDcgKzE4Nyw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0OjpzcGVsbGluZ1Rvb2xUaXAoVGV4dERp
cmVjdGlvbiYgZGlyKSBjb25zdAogICAgIC8vIGN1cnJlbnRseSBzdXBwbHkgc3RyaW5ncywgYnV0
IG1heWJlIHNvbWVkYXkgbWFya2VycyBhc3NvY2lhdGVkIHdpdGggbWlzc3BlbGxlZCB3b3JkcyB3
aWxsIGFsc28uCiAgICAgaWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIAorCiAgICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlciA9IG1faW5uZXJO
b25TaGFyZWROb2RlLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPm1hcmtlckNvbnRhaW5pbmdQb2lu
dChtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgpLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAg
ICAgaWYgKCFtYXJrZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE5OSwxOCArMTk5
LDE4IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0OjpzcGVsbGluZ1Rvb2xUaXAoVGV4dERpcmVjdGlv
biYgZGlyKSBjb25zdAogCiBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6cmVwbGFjZWRTdHJpbmcoKSBj
b25zdAogewotICAgIC8vIFJldHVybiB0aGUgcmVwbGFjZWQgc3RyaW5nIGFzc29jaWF0ZWQgd2l0
aCB0aGlzIHBvaW50LCBpZiBhbnkuIFRoaXMgbWFya2VyIGlzIGNyZWF0ZWQgd2hlbiBhIHN0cmlu
ZyBpcyBhdXRvY29ycmVjdGVkLCAKKyAgICAvLyBSZXR1cm4gdGhlIHJlcGxhY2VkIHN0cmluZyBh
c3NvY2lhdGVkIHdpdGggdGhpcyBwb2ludCwgaWYgYW55LiBUaGlzIG1hcmtlciBpcyBjcmVhdGVk
IHdoZW4gYSBzdHJpbmcgaXMgYXV0b2NvcnJlY3RlZCwKICAgICAvLyBhbmQgaXMgdXNlZCBmb3Ig
Z2VuZXJhdGluZyBhIGNvbnRleHR1YWwgbWVudSBpdGVtIHRoYXQgYWxsb3dzIGl0IHRvIGVhc2ls
eSBiZSBjaGFuZ2VkIGJhY2sgaWYgZGVzaXJlZC4KICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWRO
b2RlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgCisKICAgICBEb2N1bWVudE1hcmtl
ciogbWFya2VyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+
bWFya2VyQ29udGFpbmluZ1BvaW50KG1faGl0VGVzdExvY2F0aW9uLnBvaW50KCksIERvY3VtZW50
TWFya2VyOjpSZXBsYWNlbWVudCk7CiAgICAgaWYgKCFtYXJrZXIpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICAKKwogICAgIHJldHVybiBtYXJrZXItPmRlc2NyaXB0aW9uKCk7Ci19ICAg
IAotICAgIAorfQorCiBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6dGl0bGUoVGV4dERpcmVjdGlvbiYg
ZGlyKSBjb25zdAogewogICAgIGRpciA9IExUUjsKQEAgLTI2NiwxMiArMjY2LDEyIEBAIFN0cmlu
ZyBIaXRUZXN0UmVzdWx0OjphbHREaXNwbGF5U3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
aW5uZXJOb25TaGFyZWROb2RlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgCisKICAg
ICBpZiAobV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUoaW1nVGFnKSkgewogICAgICAg
ICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQq
PihtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7CiAgICAgICAgIHJldHVybiBkaXNwbGF5U3Ry
aW5nKGltYWdlLT5nZXRBdHRyaWJ1dGUoYWx0QXR0ciksIG1faW5uZXJOb25TaGFyZWROb2RlLmdl
dCgpKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAobV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsK
ICAgICAgICAgcmV0dXJuIGRpc3BsYXlTdHJpbmcoaW5wdXQtPmFsdCgpLCBtX2lubmVyTm9uU2hh
cmVkTm9kZS5nZXQoKSk7CkBAIC0yODQsNyArMjg0LDcgQEAgSW1hZ2UqIEhpdFRlc3RSZXN1bHQ6
OmltYWdlKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICAKKwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2lubmVy
Tm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXIt
PmlzSW1hZ2UoKSkgewogICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKQEAgLTMxNCwxMyArMzE0LDEzIEBAIEtV
UkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVSTCgpIGNvbnN0CiAgICAgaWYgKG1faW5u
ZXJOb25TaGFyZWROb2RlLT5oYXNUYWdOYW1lKGVtYmVkVGFnKQogICAgICAgICB8fCBtX2lubmVy
Tm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShpbWdUYWcpCiAgICAgICAgIHx8IG1faW5uZXJOb25T
aGFyZWROb2RlLT5oYXNUYWdOYW1lKGlucHV0VGFnKQotICAgICAgICB8fCBtX2lubmVyTm9uU2hh
cmVkTm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcpICAgIAorICAgICAgICB8fCBtX2lubmVyTm9u
U2hhcmVkTm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcpCiAjaWYgRU5BQkxFKFNWRykKICAgICAg
ICAgfHwgbV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmltYWdlVGFn
KQogI2VuZGlmCiAgICAgICAgKSB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpOwotICAgICAgICB1cmxT
dHJpbmcgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoZWxlbWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1
dGVOYW1lKCkpOworICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgp
OwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gS1VSTCgpOwogCkBAIC01MTYsNyArNTE2LDcg
QEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnRpdGxlRGlzcGxheVN0cmluZygpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2lubmVyVVJMRWxlbWVudCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IAorCiAgICAgcmV0dXJuIGRpc3BsYXlTdHJpbmcobV9pbm5lclVSTEVsZW1lbnQtPnRpdGxlKCks
IG1faW5uZXJVUkxFbGVtZW50LmdldCgpKTsKIH0KIApAQCAtNTI5LDggKzUyOSw4IEBAIFN0cmlu
ZyBIaXRUZXN0UmVzdWx0Ojp0ZXh0Q29udGVudCgpIGNvbnN0CiAKIC8vIEZJWE1FOiBUaGlzIGZ1
bmN0aW9uIG5lZWRzIGEgYmV0dGVyIG5hbWUgYW5kIG1heSBiZWxvbmcgaW4gYSBkaWZmZXJlbnQg
Y2xhc3MuIEl0J3Mgbm90CiAvLyByZWFsbHkgaXNDb250ZW50RWRpdGFibGUoKTsgaXQncyBtb3Jl
IGxpa2UgbmVlZHNFZGl0aW5nQ29udGV4dE1lbnUoKS4gSW4gbWFueSB3YXlzLCB0aGlzCi0vLyBm
dW5jdGlvbiB3b3VsZCBtYWtlIG1vcmUgc2Vuc2UgaW4gdGhlIENvbnRleHRNZW51IGNsYXNzLCBl
eGNlcHQgdGhhdCBXZWJFbGVtZW50RGljdGlvbmFyeSAKLS8vIGhvb2tzIGludG8gaXQuIEFueXdh
eSwgd2Ugc2hvdWxkIGFyY2hpdGVjdCB0aGlzIGJldHRlci4gCisvLyBmdW5jdGlvbiB3b3VsZCBt
YWtlIG1vcmUgc2Vuc2UgaW4gdGhlIENvbnRleHRNZW51IGNsYXNzLCBleGNlcHQgdGhhdCBXZWJF
bGVtZW50RGljdGlvbmFyeQorLy8gaG9va3MgaW50byBpdC4gQW55d2F5LCB3ZSBzaG91bGQgYXJj
aGl0ZWN0IHRoaXMgYmV0dGVyLgogYm9vbCBIaXRUZXN0UmVzdWx0Ojppc0NvbnRlbnRFZGl0YWJs
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggYWZiNGRkY2JjNmRmNzBjZmZhNDc0ZGZhNzFj
YTZlZTFiODA2MDRlZS4uNDkwYzgzMDU5MjNjNDQxZmVlN2JmMTllYmY1MTU4ODkyODNiZTU0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBA
QCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKICAgICB9CiAKICAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFs
aWRhdGlvbkd1YXJkIGludmFsaWRhdGlvbkd1YXJkKHRoaXMpOwotICAgIAorCiAgICAgYm9vbCBp
c0xlbmd0aEF0dHJpYnV0ZSA9IGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cgogICAgICAgICAg
ICAgICAgICAgICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cgpAQCAt
MjIyLDkgKzIyMiw5IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHSW1h
Z2VFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSoKICAgICByZXR1cm4gSW5zZXJ0
aW9uRG9uZTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgU1ZHSW1hZ2VFbGVtZW50OjppbWFn
ZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBTVkdJbWFn
ZUVsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKIHsKLSAgICByZXR1cm4gWExpbmtOYW1l
czo6aHJlZkF0dHI7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0
cik7CiB9CiAKIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmgKaW5kZXggY2EwYjYyZTU3MmU4YzU3ZjA2NTQyMDM3YjE2OGM4NmIyZDEyZTY0OC4u
ODBhYTM3OTc3MDg5ZmI3YzljNWE1NTBiMGUwNzU5MTg3NWZhYmE0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgU1ZHSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwot
ICAgIAorCiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0
czo6aXNWYWxpZCgpOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKQEAgLTU4LDggKzU4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUq
KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gCi0gICAgdmlydHVhbCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdDsgICAgICAgCisKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PEtVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVk
UmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cAppbmRleCAxMjYyYWVmNWYwM2Y2OGI4ZWM2YjRiNmZlMDE2ZTM1MWJjNTVlZjUwLi5iOTgyZDg3
ZmQyYzY3YTA4ZTg4NjYyMWJmYjE3NjJiNzIyMTU4YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTk0LDYgKzk0LDcgQEAgSW50ZXJuYWxTZXR0
aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9zaG91bGRE
aXNwbGF5Q2FwdGlvbnMoc2V0dGluZ3MtPnNob3VsZERpc3BsYXlDYXB0aW9ucygpKQogICAgICwg
bV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVRl
eHREZXNjcmlwdGlvbnMoKSkKICNlbmRpZgorICAgICwgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwo
c2V0dGluZ3MtPmRlZmF1bHRWaWRlb1Bvc3RlclVSTCgpKQogewogfQogCkBAIC0xMjksNiArMTMw
LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyog
c2V0dGluZ3MpCiAgICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhtX3Nob3Vs
ZERpc3BsYXlDYXB0aW9ucyk7CiAgICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlUZXh0RGVz
Y3JpcHRpb25zKG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMpOwogI2VuZGlmCisgICAg
c2V0dGluZ3MtPnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChtX2RlZmF1bHRWaWRlb1Bvc3RlclVS
TCk7CiB9CiAKIC8vIFdlIGNhbid0IHVzZSBSZWZDb3VudGVkU3VwcGxlbWVudCBiZWNhdXNlIHRo
YXQgd291bGQgdHJ5IHRvIG1ha2UgSW50ZXJuYWxTZXR0aW5ncyBSZWZDb3VudGVkCkBAIC00ODcs
NCArNDg5LDEwIEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0TWluaW11bVRpbWVySW50ZXJ2
YWwoZG91YmxlIGludGVydmFsSW5TZWNvbmRzLCBFeGNlcHRpCiAgICAgc2V0dGluZ3MoKS0+c2V0
TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbEluU2Vjb25kcyk7CiB9CiAKK3ZvaWQgSW50ZXJu
YWxTZXR0aW5nczo6c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5n
cygpOworICAgIHNldHRpbmdzKCktPnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChLVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmgKaW5kZXggZDY3MjRkYTY5YmZjOGQwMWVhZGQwYzU5OTFhZjk3N2RjMTExODgy
OC4uYzExODJiMzYzZDNhMmVmZjc1YjgxYWJlMDYzZDAwYmE5NWIyOGJlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGlj
OgogICAgICAgICBib29sIG1fc2hvdWxkRGlzcGxheUNhcHRpb25zOwogICAgICAgICBib29sIG1f
c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnM7CiAjZW5kaWYKKyAgICAgICAgU3RyaW5nIG1f
ZGVmYXVsdFZpZGVvUG9zdGVyVVJMOwogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnRlcm5hbFNldHRpbmdzPiBjcmVhdGUoUGFnZSogcGFnZSkKQEAgLTEyNiw2ICsxMjcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxl
ZChib29sKTsKICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2
YWxJblNlY29uZHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldERlZmF1bHRWaWRlb1Bv
c3RlclVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGluZ3MoUGFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggNWRkYjBhZTczYWUzNDE4MDQ2MWZkMDE2
YWI3NWZhZWVjMzMxM2MxNC4uYWU5ZjM2ZDM1NGMzOGE0YmIzOTM2ODA1Nzk5OWZiNmZiZTNhMDUz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC01
OSw0ICs1OSw1IEBACiAgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koaW4gRE9NU3Ry
aW5nIHBvbGljeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgdm9pZCBzZXRJbWFnZXNFbmFi
bGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgdm9pZCBz
ZXRNaW5pbXVtVGltZXJJbnRlcnZhbChpbiBkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMpIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgIHZvaWQgc2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGluIERP
TVN0cmluZyBwb3N0ZXIpIHJhaXNlcyhET01FeGNlcHRpb24pOwogfTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZWIxODAz
ZTIzM2QxYmM5M2ZhMjkyZDEzODZmMDVmMmI0ZTczYjczLi5hNGFhMGViNWE2ZTgwZWMwMWVhZGM1
OWRjNzAwZDc1YTZjYjgyMDE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDItMjEgIFRh
byBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgdGhlIGRlZmF1
bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGRvZXNuJ3QgZXhpc3QgaW4gdmlkZW8gdGFnCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAyNjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL3ZpZGVvLWRl
ZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8t
ZGVmYXVsdC1wb3N0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tbm8tZGVm
YXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1u
by1kZWZhdWx0LXBvc3Rlci5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0wNSAgQWxvayBQcml5YWRh
cnNoaSAgPGFsb2twQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWJhc2VsaW5lIHRleHQgb3V0
cHV0IGZvciBvcGFxdWUgR3JhcGhpY3NMYXllcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2YwZmE1Yzhh
NTdiMDU1MzZlNGVlYzllYTY1MDU4MTcxNDVlYmQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1k
ZWZhdWx0LXBvc3Rlci5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOTIwOWQxZDYwZDMzMGExOTE5Mjk3ZjQ2MTg1OGNkNWFlNjY1
ZjE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1w
b3N0ZXIuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgorICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgfQorICBp
ZiAod2luZG93LmludGVybmFscykgeworICAgIHZhciB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJl
ZjsKKyAgICB2YXIgZGVmYXVsdF9wb3N0ZXIgPSB1cmwuc3Vic3RyaW5nKDAsIHVybC5sYXN0SW5k
ZXhPZignLycpICsgMSkuY29uY2F0KCdjb250ZW50L2FiZS5wbmcnKTsKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChkZWZhdWx0X3Bvc3Rlcik7
CisgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHBv
c3RlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1uby1wb3N0ZXIiKS5nZXRBdHRy
aWJ1dGVOb2RlKCJwb3N0ZXIiKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBv
c3Rlci52YWx1ZSA9PSBkZWZhdWx0X3Bvc3RlcikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVy
IikuaW5uZXJUZXh0ID0gIkZBSUwiOworICAgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IHBvc3Rl
ciBhdHRyaWJ1dGUgaXMgbnVsbCI7CisKKyAgICAgIHBvc3RlciA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ2aWRlby1oYXMtcG9zdGVyIikuZ2V0QXR0cmlidXRlTm9kZSgicG9zdGVyIik7Cisg
ICAgICBpZiAocG9zdGVyKSB7CisgICAgICAgIGlmIChwb3N0ZXIudmFsdWUgPT0gImNvbnRlbnQv
YWJlLnBuZyIpCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMt
cG9zdGVyIikuaW5uZXJUZXh0ID0gIlBBU1MiOworICAgICAgICBlbHNlCisgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZB
SUw6IHBvc3RlciB3YXMgY2hhbmdlZCI7CisgICAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IHBv
c3RlciBhdHRyaWJ1dGUgaXMgbnVsbCI7CisKKyAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgIH0sIGZhbHNlKTsKKyAgfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHBy
ZSBpZD0icmVzdWx0LW5vLXBvc3RlciI+PC9wcmU+Cis8cHJlIGlkPSJyZXN1bHQtaGFzLXBvc3Rl
ciI+PC9wcmU+Cis8dmlkZW8gaWQ9InZpZGVvLW5vLXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3Qu
bXA0IiBwcmVsb2FkPSJub25lIiAvPgorPHZpZGVvIGlkPSJ2aWRlby1oYXMtcG9zdGVyIiBzcmM9
ImNvbnRlbnQvdGVzdC5tcDQiIHBvc3Rlcj0iY29udGVudC9hYmUucG5nIiBwcmVsb2FkPSJub25l
IiAvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZjBmYTVjOGE1
N2IwNTUzNmU0ZWVjOWVhNjUwNTgxNzE0NWViZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzIEBACitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVv
LW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZh
dWx0LXBvc3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2OWRlOGY3NWNkY2Y0ZDBlMjEwNDRkODJjNDU4
Y2U0MmJlMDBhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1u
by1kZWZhdWx0LXBvc3Rlci5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICB9CisKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBhZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcG9zdGVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInZpZGVvLW5vLXBvc3RlciIpLmdldEF0dHJpYnV0ZU5vZGUoInBvc3RlciIpOwor
ICAgICAgaWYgKHBvc3RlcikKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTCA6IHBvc3RlciB3YXMgYWRkZWQuIjsKKyAg
ICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1uby1wb3N0
ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisKKyAgICAgIHBvc3RlciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ2aWRlby1oYXMtcG9zdGVyIikuZ2V0QXR0cmlidXRlTm9kZSgicG9zdGVyIik7
CisgICAgICBpZiAocG9zdGVyKSB7CisgICAgICAgIGlmIChwb3N0ZXIudmFsdWUgPT0gImNvbnRl
bnQvYWJlLnBuZyIpCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1o
YXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIlBBU1MiOworICAgICAgICBlbHNlCisgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0g
IkZBSUw6IHBvc3RlciB3YXMgY2hhbmdlZCI7CisgICAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6
IHBvc3RlciBhdHRyaWJ1dGUgaXMgbnVsbCI7CisKKyAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgIH0sIGZhbHNlKTsKKyAgfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHByZSBpZD0icmVzdWx0LW5vLXBvc3RlciI+PC9wcmU+Cis8cHJlIGlkPSJyZXN1bHQtaGFzLXBv
c3RlciI+PC9wcmU+Cis8dmlkZW8gaWQ9InZpZGVvLW5vLXBvc3RlciIgc3JjPSJjb250ZW50L3Rl
c3QubXA0IiBwcmVsb2FkPSJub25lIiAvPgorPHZpZGVvIGlkPSJ2aWRlby1oYXMtcG9zdGVyIiBz
cmM9ImNvbnRlbnQvdGVzdC5tcDQiIHBvc3Rlcj0iY29udGVudC9hYmUucG5nIiBwcmVsb2FkPSJu
b25lIiAvPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191830</attachid>
            <date>2013-03-06 14:15:32 -0800</date>
            <delta_ts>2013-03-06 15:51:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130306141137.patch</filename>
            <type>text/plain</type>
            <size>30063</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhjNjI1NjU1ZDU2MWEx
MjhjYzRmYzIwOTk3YzEwZTBhNjViOTllNC4uNTVlMTZhZDdlYTI2ZTAwODVkYjgyMTc5M2MyMmI3
YTMwYWM0NWIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEzLTAzLTA2ICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICBUaGUgQW5kcm9pZCB3ZWIgdmlldyBhcHBsaWNhdGlv
biBjb3VsZCBwcm92aWRlIHRoZSBkZWZhdWx0IHBvc3RlcgorICAgICAgICBmb3IgYSB2aWRlbyB0
aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgcG9zdGVyIGF0dHJpYnV0ZS4KKworICAgICAgICBUbyBwcm92
aWRlIHRoZSBkZWZhdWx0IHBvc3RlciwgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc2V0IGRlZmF1bHRW
aWRlb1Bvc3RlclVSTAorICAgICAgICBzZXR0aW5nIGFuZCByZXR1cm4gdGhlIGltYWdlIGluIHRo
ZSByZXNwb25zZSBvZiB0aGF0IFVSTC4KKworICAgICAgICAqIFdlYkNvcmUub3JkZXI6IFJlcGxh
Y2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAg
ICAgICogZG9tL0VsZW1lbnQuY3BwOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgp
IHdpdGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW1hZ2VT
b3VyY2VVUkwpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VB
dHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgIChFbGVtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOiBSZXBsYWNlIGltYWdlU291cmNl
QXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEVt
YmVkRWxlbWVudC5oOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1h
Z2VTb3VyY2VVUkwoKQorICAgICAgICAoSFRNTEVtYmVkRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKTogQ2hhbmdlIHRvIHVzZSBwb3N0ZXJJbWFnZVVSTAor
ICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE9iamVjdEVsZW1lbnQ6OmltYWdlU291cmNlVVJMKTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0
dHJpYnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIHdpdGggaW1h
Z2VTb3VyY2VVUkwKKyAgICAgICAgKEhUTUxPYmplY3RFbGVtZW50KToKKyAgICAgICAgKiBodG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVu
dDo6SFRNTFZpZGVvRWxlbWVudCk6IHNldCBtX2RlZmF1bHRQb3N0ZXJVUkwgaWYgdGhlcmUgaXMg
c3VjaCBzZXR0aW5ncworICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VT
b3VyY2VVUkwpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VT
b3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxh
eU1vZGUpOiBVc2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKTogVXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKTogUmV0dXJuIGlt
YWdlIHNvdXJjZSdzIEtVUkwgCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxWaWRlb0VsZW1lbnQpOgorICAgICAgICAq
IGxvYWRlci9JbWFnZUxvYWRlci5jcHA6IFVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MuaW46IEFkZCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6IHVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0VVJMRm9ySW1hZ2VOb2RlKTogdXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiByZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
OjphYnNvbHV0ZUltYWdlVVJMKTogdXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBzdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6
aW1hZ2VTb3VyY2VVUkwpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGgg
aW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAg
ICAgKFNWR0ltYWdlRWxlbWVudCk6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkg
d2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3Vw
KTogc3VwcG9ydCBiYWNrdXAgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOiBzdXBwb3J0IHJlc3RvcmUg
ZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5n
czo6c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKTogc2V0IGRlZmF1bHRWaWRlb1Bvc3RlclVSTC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5o
OgorICAgICAgICAoQmFja3VwKTogc3VwcG9ydCBiYWNrdXAgZGVmYXVsdFZpZGVvUG9zdGVyVVJM
LgorICAgICAgICAoSW50ZXJuYWxTZXR0aW5ncyk6IEFkZCBzZXREZWZhdWx0Vmlkb2VQb3N0ZXJV
UkwgbWV0aG9kLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGw6IEFkZCBz
ZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgZm9yIHRlc3QgcHVycG9zZS4KKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmdldEltYWdl
U291cmNlVVJMKTogQWRkIGdldEltYWdlU291cmNlVVJMIG1ldGhvZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6IEFkZCBnZXRJbWFnZVNvdXJjZVVS
TCBtZXRob2QuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBBZGQgZ2V0SW1hZ2VT
b3VyY2VVUkwgbWV0aG9kLgorCiAyMDEzLTAzLTA1ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ2xlYXIgYXNzb2NpYXRlZCBjYWNoZSBwYXJ0aXRpb25zIHdoZW4g
ZGVsZXRpbmcgb3JpZ2lucycgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDNiMDZlNWI0YTEz
YTVhZTNhZGFhMDk1ZmRiNDE0ODM4OTE5ZTMyMGIuLmIzNGVkOTk3OGU0NzQwMWNjY2Y0OWMwYWY2
OWRiN2EwYmE4NWU2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtNTQxNCw3ICs1NDE0LDYgQEAg
X19aTks3V2ViQ29yZTE2SFRNTEltYWdlRWxlbWVudDEwbWFwVG9FbnRyeUVSS05TXzEzUXVhbGlm
aWVkTmFtZUVSTlNfMjBNYXBwZWRBdHQKIF9fWk43V2ViQ29yZTE2SFRNTEltYWdlRWxlbWVudDIw
cGFyc2VNYXBwZWRBdHRyaWJ1dGVFUE5TXzlBdHRyaWJ1dGVFCiBfX1pON1dlYkNvcmUxMUltYWdl
TG9hZGVyMzh1cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvckV2CiBfX1pON1dl
YkNvcmUxMUltYWdlTG9hZGVyMTd1cGRhdGVGcm9tRWxlbWVudEV2Ci1fX1pOSzdXZWJDb3JlN0Vs
ZW1lbnQyNGltYWdlU291cmNlQXR0cmlidXRlTmFtZUV2CiBfX1pOSzdXZWJDb3JlMTVIVE1MSW1h
Z2VMb2FkZXI5c291cmNlVVJJRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZTIw
Q2FjaGVkUmVzb3VyY2VMb2FkZXIxMnJlcXVlc3RJbWFnZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZUwxMWFwcGVuZEFTQ0lJRVJLTjNXVEY2U3RyaW5nRVBLY21STlMwXzZWZWN0b3JJY0xt
NTEyRUVFCkBAIC0xMDQ4MSw3ICsxMDQ4MCw2IEBAIF9fWk43V2ViQ29yZTIzTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXREMEV2CiBfX1pON1dlYkNvcmUyM01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0MjJ0
ZWFyRG93blZpZGVvUmVuZGVyaW5nRXYKIC1bV2ViQ29yZU1vdmllT2JzZXJ2ZXIgZGlzY29ubmVj
dF0KIF9fWk43V2ViQ29yZTI3c2V0SlNIVE1MVmlkZW9FbGVtZW50UG9zdGVyRVBOM0pTQzlFeGVj
U3RhdGVFUE5TMF84SlNPYmplY3RFTlMwXzdKU1ZhbHVlRQotX19aTks3V2ViQ29yZTE2SFRNTFZp
ZGVvRWxlbWVudDI0aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lRXYKIF9fWk43V2ViQ29yZTExUmVu
ZGVyVmlkZW8xMmltYWdlQ2hhbmdlZEVQdlBLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUyMldl
YkdMQ29udGV4dEF0dHJpYnV0ZXM2Y3JlYXRlRXYKIF9fWk43V2ViQ29yZTIzQ2FudmFzQ29udGV4
dEF0dHJpYnV0ZXNDMkV2CkBAIC0xMTE0OSw3ICsxMTE0Nyw2IEBAIF9fWk5LN1dlYkNvcmUxMVJl
bmRlclN0eWxlMTBwYWRkaW5nVG9wRXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTJwYWRk
aW5nUmlnaHRFdgogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUxM3BhZGRpbmdCb3R0b21Fdgog
X19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUxMXBhZGRpbmdMZWZ0RXYKLV9fWk5LN1dlYkNvcmUx
N0hUTUxPYmplY3RFbGVtZW50MjRpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWVFdgogX19aTjdXZWJD
b3JlMTdIVE1MUGx1Z0luRWxlbWVudDE5ZGVmYXVsdEV2ZW50SGFuZGxlckVQTlNfNUV2ZW50RQog
X19aTks3V2ViQ29yZTE2SFRNTEVsZW1lbnRTdGFjazEzaW5CdXR0b25TY29wZUVSS05TXzEzUXVh
bGlmaWVkTmFtZUUKIF9fWk43V2ViQ29yZUwyMmRlY29kZU5vbkFTQ0lJU2VxdWVuY2VFUEtoagpA
QCAtMTEyNTEsNyArMTEyNDgsNiBAQCBfX1pON1dlYkNvcmUxNVNWR1VSSVJlZmVyZW5jZTE2aXNL
bm93bkF0dHJpYnV0ZUVSS05TXzEzUXVhbGlmaWVkTmFtZUUKIF9fWk5LN1dlYkNvcmUxNVNWR0lt
YWdlRWxlbWVudDIyc2VsZkhhc1JlbGF0aXZlTGVuZ3Roc0V2CiBfX1pOSzNXVEYxMlN0cmluZ0Fw
cGVuZElOU182U3RyaW5nRVMxX0Vjdk5TXzEyQXRvbWljU3RyaW5nRUV2CiBfX1pUaG4zNjBfTjdX
ZWJDb3JlMTVTVkdJbWFnZUVsZW1lbnQxNnNldEhyZWZCYXNlVmFsdWVFUktOM1dURjZTdHJpbmdF
Ci1fX1pOSzdXZWJDb3JlMTVTVkdJbWFnZUVsZW1lbnQyNGltYWdlU291cmNlQXR0cmlidXRlTmFt
ZUV2CiBfX1pOSzdXZWJDb3JlMTRTVkdJbWFnZUxvYWRlcjlzb3VyY2VVUklFUktOM1dURjEyQXRv
bWljU3RyaW5nRQogX19aTks3V2ViQ29yZTdFbGVtZW50N2Jhc2VVUklFdgogX19aTjdXZWJDb3Jl
MTVTVkdJbWFnZUVsZW1lbnQyMGluc2VydGVkSW50b0RvY3VtZW50RXYKQEAgLTI1ODM0LDcgKzI1
ODMwLDYgQEAgX19aTks3V2ViQ29yZTE2UERGRG9jdW1lbnRJbWFnZTE3ZmlsZW5hbWVFeHRlbnNp
b25FdgogX19aTjdXZWJDb3JlNUltYWdlMTBnZXROU0ltYWdlRXYKIF9fWk43V2ViQ29yZTMzY3Jl
YXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRVBOU18xMUNhY2hlZEltYWdlRQogX19aTks3
V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxN3N1Z2dlc3RlZEZpbGVuYW1lRXYKLV9fWk5L
N1dlYkNvcmUxNkhUTUxFbWJlZEVsZW1lbnQyNGltYWdlU291cmNlQXR0cmlidXRlTmFtZUV2CiBf
X1pOSzdXZWJDb3JlMThEb2N1bWVudE9yZGVyZWRNYXAxOWdldEVsZW1lbnRCeU1hcE5hbWVFUE4z
V1RGMTZBdG9taWNTdHJpbmdJbXBsRVBLTlNfOVRyZWVTY29wZUUKIF9fWk5LN1dlYkNvcmUxOERv
Y3VtZW50T3JkZXJlZE1hcDNnZXRJWGFkTF9aTlNfMTdrZXlNYXRjaGVzTWFwTmFtZUVQTjNXVEYx
NkF0b21pY1N0cmluZ0ltcGxFUE5TXzdFbGVtZW50RUVFRUVTNl9TNF9QS05TXzlUcmVlU2NvcGVF
CiBfX1pON1dlYkNvcmUxNEltYWdlSW5wdXRUeXBlMjZ3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTUzMTg1NWVlZTBmYzVjZTgyZDJjZjVhMzM1
ODZiMzcxOWUxNzM5YS4uNDQ2MTYwNjk0N2ZmNmRhY2FjMGVmOTg1NmMwZDg3OTM3YTBkYzM3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTEyMSw5ICsxMTIxLDkgQEAgS1VSTCBFbGVtZW50
OjpiYXNlVVJJKCkgY29uc3QKICAgICByZXR1cm4gS1VSTChwYXJlbnRCYXNlLCBiYXNlQXR0cmli
dXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwoKSBjb25zdAogewotICAgIHJldHVybiBzcmNBdHRyOworICAgIHJldHVybiBnZXRBdHRy
aWJ1dGUoc3JjQXR0cik7CiB9CiAKIGJvb2wgRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGMz
MDQ2ZmI3NjU5MzdhMDVjMjEzNGFhZjVlN2MyOTQyMjg5YzM0ZTkuLjljZjkwNTYxMjMzZTM2YzI3
ZDIyYzI4MGNjNTdlY2YzMDVkMjU5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDUxLDcgKzQ1
MSw3IEBAIHB1YmxpYzoKICAgICBLVVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Q7CiAgICAgS1VSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGlt
YWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdl
dCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMo
Ym9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlLCBGb2N1c0RpcmVjdGlvbiA9IEZv
Y3VzRGlyZWN0aW9uTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cAppbmRleCBjMzNlMmY4YjljMGQ0ZDliM2ZlOTk1ZDQwNjgzYTcyOTllMDkwMmY1Li5kZjJjMTZi
Y2FiYzA2ZTg4YjIyMGZmODYxOTQ5ZmVjOTY0ODljZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTIxMCw5ICsyMTAsOSBAQCBib29sIEhUTUxFbWJlZEVs
ZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAog
ICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSgpID09IHNyY0F0dHIgfHwgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVk
TmFtZSYgSFRNTEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QK
K2NvbnN0IEF0b21pY1N0cmluZyYgSFRNTEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBj
b25zdAogewotICAgIHJldHVybiBzcmNBdHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3Jj
QXR0cik7CiB9CiAKIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuaAppbmRleCBhNTk1YmE0ZDU5YWM3YzIwMmNmMTc1ZjkwOTE2ZmU0MWIx
ODYwZmJmLi40NDJkY2I5YWIxMTBiZTk0ZTBlOGUxNGEwNjJiODMxNzc5ZDRlMGQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBp
bWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
UmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDFlODlkZmMyZWYwOWI5ODY0
ZjI1MjcwZThjZDYwYjczMTY1NDg5MzMuLmI1YjEyNWExZWU1OTAwMTJlOTlhYWRlOWJkYTQwYTA0
YTU3Zjg5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
NDAzNSw3ICs0MDM1LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpnZXRQbHVnaW5Qcm94eVBh
cmFtcyhLVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmUKICAgICBGcmFtZSogZnJh
bWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwogCiAgICAgaWYgKGlzVmlkZW8oKSkgewotICAgICAg
ICBLVVJMIHBvc3RlclVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpOwor
ICAgICAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlbyA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0Vs
ZW1lbnQqPih0aGlzKTsKKyAgICAgICAgS1VSTCBwb3N0ZXJVUkwgPSB2aWRlby0+cG9zdGVySW1h
Z2VVUkwoKTsKICAgICAgICAgaWYgKCFwb3N0ZXJVUkwuaXNFbXB0eSgpICYmIGZyYW1lICYmIGZy
YW1lLT5sb2FkZXIoKS0+d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwocG9zdGVyVVJMKSkgewogICAg
ICAgICAgICAgbmFtZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiX21lZGlhX2VsZW1lbnRfcG9zdGVy
XyIpKTsKICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQocG9zdGVyVVJMLnN0cmluZygpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZjRkNjc1ODJkNDll
YWNkNTRhMzM3MjIzOTRjYzhlNzVlMjYzN2MwMy4uZWY0MmQwYjg0OTM4MjU5M2MwMTZlYmFlNTc0
NTU2NDlhMzc2MGQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAKQEAgLTM2NCw5ICszNjQsOSBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50Ojppc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKICAgICByZXR1cm4gYXR0cmli
dXRlLm5hbWUoKSA9PSBkYXRhQXR0ciB8fCAoYXR0cmlidXRlLm5hbWUoKSA9PSB1c2VtYXBBdHRy
ICYmIGF0dHJpYnV0ZS52YWx1ZSgpLnN0cmluZygpWzBdICE9ICcjJykgfHwgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlm
aWVkTmFtZSYgSFRNTE9iamVjdEVsZW1lbnQ6OmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNv
bnN0Citjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxPYmplY3RFbGVtZW50OjppbWFnZVNvdXJjZVVS
TCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRhdGFBdHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1
dGUoZGF0YUF0dHIpOwogfQogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJGYWxsYmFj
a0NvbnRlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDVi
N2U3MjBiOTc0NDYwZmNhMTFkMjE1MzU3YmY4OWZkOTYxNzUyYzMuLmJmNzE3ZGE1NTUxYTM1Yzdi
ZjE4NzdkODMzMjc2Y2E3N2E5ZTYxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNo
YW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDAp
OwogCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3Vy
Y2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGltYWdlU291cmNlVVJMKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlcldp
ZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjZmU5NTcxM2ZmOWRmOGQ3MzU3NWI4MDJl
ZTU4MWYwOGRlNjc4NDFkLi42YmMwNTJhNmIwZjkyNjRlY2E4NzFlZWYwMDc5NjhlYzgyYTY0YjUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDksNiArNTAsOCBAQCBpbmxpbmUgSFRNTFZpZGVv
RWxlbWVudDo6SFRNTFZpZGVvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudAogICAgIDogSFRNTE1lZGlhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRl
ZEJ5UGFyc2VyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHZpZGVvVGFnKSk7CisgICAgaWYg
KGRvY3VtZW50LT5zZXR0aW5ncygpKQorICAgICAgICBtX2RlZmF1bHRQb3N0ZXJVUkwgPSBkb2N1
bWVudC0+c2V0dGluZ3MoKS0+ZGVmYXVsdFZpZGVvUG9zdGVyVVJMKCk7CiB9CiAKIFBhc3NSZWZQ
dHI8SFRNTFZpZGVvRWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpCkBAIC0xNzgsMTUgKzE4MSwxOCBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmlzVVJMQXR0
cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBhdHRy
aWJ1dGUubmFtZSgpID09IHBvc3RlckF0dHIgfHwgSFRNTE1lZGlhRWxlbWVudDo6aXNVUkxBdHRy
aWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTFZpZGVvRWxl
bWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVy
biBwb3N0ZXJBdHRyOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdXJsID0gZ2V0QXR0cmlidXRl
KHBvc3RlckF0dHIpOworICAgIGlmICghdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHVy
bDsKKyAgICByZXR1cm4gbV9kZWZhdWx0UG9zdGVyVVJMOwogfQogCiB2b2lkIEhUTUxWaWRlb0Vs
ZW1lbnQ6OnNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlIG1vZGUpCiB7CiAgICAgRGlzcGxheU1v
ZGUgb2xkTW9kZSA9IGRpc3BsYXlNb2RlKCk7Ci0gICAgS1VSTCBwb3N0ZXIgPSBnZXROb25FbXB0
eVVSTEF0dHJpYnV0ZShwb3N0ZXJBdHRyKTsKKyAgICBLVVJMIHBvc3RlciA9IHBvc3RlckltYWdl
VVJMKCk7CiAKICAgICBpZiAoIXBvc3Rlci5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gV2UgaGF2
ZSBhIHBvc3RlciBwYXRoLCBidXQgb25seSBzaG93IGl0IHVudGlsIHRoZSB1c2VyIHRyaWdnZXJz
IGRpc3BsYXkgYnkgcGxheWluZyBvciBzZWVraW5nIGFuZCB0aGUKQEAgLTIyMSw3ICsyMjcsNyBA
QCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlIG1vZGUp
CiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKCkKIHsKLSAgICBp
ZiAoZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUocG9zdGVyQXR0cikuaXNFbXB0eSgpKQorICAgIGlm
IChwb3N0ZXJJbWFnZVVSTCgpLmlzRW1wdHkoKSkKICAgICAgICAgc2V0RGlzcGxheU1vZGUoVmlk
ZW8pOwogICAgIGVsc2UgaWYgKGRpc3BsYXlNb2RlKCkgPCBQb3N0ZXIpCiAgICAgICAgIHNldERp
c3BsYXlNb2RlKFBvc3Rlcik7CkBAIC0zMDEsNiArMzA3LDE0IEBAIHVuc2lnbmVkIEhUTUxWaWRl
b0VsZW1lbnQ6OndlYmtpdERyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKIH0KICNlbmRpZgogCitL
VVJMIEhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKCkKK3sKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHVybCA9IGltYWdlU291cmNlVVJMKCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgcmV0dXJuIGRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKHVybCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5oCmluZGV4IGNmNGZlYWNmY2I3MWIyMmUzNjkxM2E4ZDk3ODRjYWVmNDE4NTQ5YWIuLmZh
NDQzZmUwZGFjYTg4MDMyMmNlYWZmOThjNDMwYTZkZWFlODI0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheU1vZGUo
KSA9PSBQb3N0ZXIgfHwgZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXJXYWl0aW5nRm9yVmlkZW87IH0K
IAorICAgIEtVUkwgcG9zdGVySW1hZ2VVUkwoKTsKKwogcHJpdmF0ZToKICAgICBIVE1MVmlkZW9F
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wpOwogCkBAIC04MCw3
ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3QgeyBy
ZXR1cm4gcGxheWVyKCkgJiYgcGxheWVyKCktPmhhc1ZpZGVvKCk7IH0KICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0
cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKQEAgLTg5LDYgKzkxLDcgQEAg
cHJpdmF0ZToKIAogICAgIE93blB0cjxIVE1MSW1hZ2VMb2FkZXI+IG1faW1hZ2VMb2FkZXI7CiAK
KyAgICBBdG9taWNTdHJpbmcgbV9kZWZhdWx0UG9zdGVyVVJMOwogfTsKIAogfSAvL25hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggODFhMTI5ZDIwYjA5YzA0
MTlkODMzZTg4YWZkZmU5N2ZmYTI4OGEwNi4uODhjNTg4OGU1Yzc5MGNlZDI4OTlhYWY3YWU1YmNj
ZjAyODljOGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0xNzAs
NyArMTcwLDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIGlm
ICghZG9jdW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEF0b21pY1N0
cmluZyBhdHRyID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUobV9lbGVtZW50LT5pbWFnZVNvdXJj
ZUF0dHJpYnV0ZU5hbWUoKSk7CisgICAgQXRvbWljU3RyaW5nIGF0dHIgPSBtX2VsZW1lbnQtPmlt
YWdlU291cmNlVVJMKCk7CiAKICAgICBpZiAoYXR0ciA9PSBtX2ZhaWxlZExvYWRVUkwpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCmluZGV4IGU3OTkxZWFkY2MxNDAzMDdm
YzA5NzY3YmVmZjIxNGE1M2JmN2ViYWQuLjI4NjYzNmNjMTVjNDdmZTQ2NGY1YTAzZWZhN2Q1Yzky
ZmQwOGY2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgpAQCAtMTk1LDQgKzE5NSw3IEBAIHVu
aWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQgaW5pdGlhbD1kZWZhdWx0VW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZAogCiBsb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCBpbml0aWFs
PWZhbHNlCiAKKyMgU29tZSBhcHBzIGNvdWxkIGhhdmUgYSBkZWZhdWx0IHZpZGVvIHBvc3RlciBp
ZiBpdCBpcyBub3Qgc2V0LgorZGVmYXVsdFZpZGVvUG9zdGVyVVJMIHR5cGU9U3RyaW5nCisKIHNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCBpbml0aWFsPXRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDc2
MDk2NjNlZGU4ZWEwYmNhYjhlYTRkZTI3NjUzMzE4OTc4ODg4YzYuLjMxNTVlZGViOGY3MjdiNjgz
YmM0Y2Q3OTExMGI4OGMzYzk0NGU2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcApAQCAtMTUzLDcgKzE1Myw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKICNlbmRpZgogICAgIGVsc2UgaWYgKG5vZGUtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjplbWJlZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9i
amVjdFRhZykpIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihub2RlKTsKLSAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGVs
ZW1lbnQtPmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpKTsKKyAgICAgICAgdXJsU3RyaW5nID0g
ZWxlbWVudC0+aW1hZ2VTb3VyY2VVUkwoKTsKICAgICB9CiAgICAgS1VSTCB1cmwgPSB1cmxTdHJp
bmcuaXNFbXB0eSgpID8gS1VSTCgpIDogbm9kZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykpOwogICAgIFdlYktpdDo6
V2ViSW1hZ2Ugd2ViSW1hZ2UgPSBiaXRtYXAtPmJpdG1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IGQ2ZDg2N2U5MTdhY2E3MDdkNGVh
OGIzN2Y3N2MxZjAxNmEyNWJjMzMuLjgxZGVhODA2NDJjZGRlODgyN2FiNzk5ODE5NDZiOWQzOGYw
NDQ3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgS1VSTCBnZXRVUkxGb3JJbWFnZU5vZGUoTm9k
ZSogbm9kZSkKICNlbmRpZgogICAgIGVsc2UgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjplbWJlZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRhZykpIHsK
ICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsK
LSAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGVsZW1lbnQtPmltYWdl
U291cmNlQXR0cmlidXRlTmFtZSgpKTsKKyAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+aW1h
Z2VTb3VyY2VVUkwoKTsKICAgICB9CiAgICAgcmV0dXJuIHVybFN0cmluZy5pc0VtcHR5KCkgPyBL
VVJMKCkgOiBub2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXModXJsU3RyaW5nKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggZjFhMzQ2ZTc4OGU0YzY0MmU5Y2Y1Mzc0NWRlZmM5MjM5
ZmFjYmRkMC4uZjJkNjVmMGE1MTYwMmZjOTE3Yjc5ZTVhNmU4MDdlOGQ2ODM5NWQ3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMzIwLDcgKzMyMCw3
IEBAIEtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVSTCgpIGNvbnN0CiAjZW5kaWYK
ICAgICAgICApIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7Ci0gICAgICAgIHVybFN0cmluZyA9IGVs
ZW1lbnQtPmdldEF0dHJpYnV0ZShlbGVtZW50LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7
CisgICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmltYWdlU291cmNlVVJMKCk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHJldHVybiBLVVJMKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHAKaW5kZXggYWZiNGRkY2JjNmRmNzBjZmZhNDc0ZGZhNzFjYTZlZTFiODA2MDRlZS4u
MGQyM2JlM2IyNWIzMGQ5MzVmMzYwNDdkMDMyYzJlNDFhOGZlOTIwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTIyMiw5ICsyMjIsOSBAQCBOb2RlOjpJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR0ltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUqCiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKLWNvbnN0IFF1YWxpZmll
ZE5hbWUmIFNWR0ltYWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QK
K2NvbnN0IEF0b21pY1N0cmluZyYgU1ZHSW1hZ2VFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFhMaW5rTmFtZXM6OmhyZWZBdHRyOworICAgIHJldHVybiBnZXRB
dHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpOwogfQogCiB2b2lkIFNWR0ltYWdlRWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCmluZGV4IGNhMGI2MmU1NzJlOGM1
N2YwNjU0MjAzN2IxNjhjODZiMmQxMmU2NDguLmRlN2E2NGFhMWNiODVlZjg2N2U2NmUxMDAwMmNj
M2FmNDI1MTZlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKQEAgLTU4LDgg
KzU4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
Ci0gCi0gICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0
ZU5hbWUoKSBjb25zdDsgICAgICAgCisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCAxMjYyYWVmNWYwM2Y2OGI4ZWM2
YjRiNmZlMDE2ZTM1MWJjNTVlZjUwLi5jMzQ0ZGNlYjkwM2ViOTEwMTI2MjE0OWM5YWIzMzAyYjZm
ZDVlMWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAK
QEAgLTk0LDYgKzk0LDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGlu
Z3MqIHNldHRpbmdzKQogICAgICwgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMoc2V0dGluZ3MtPnNo
b3VsZERpc3BsYXlDYXB0aW9ucygpKQogICAgICwgbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0
aW9ucyhzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoKSkKICNlbmRpZgor
ICAgICwgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoc2V0dGluZ3MtPmRlZmF1bHRWaWRlb1Bvc3Rl
clVSTCgpKQogewogfQogCkBAIC0xMjksNiArMTMwLDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdz
OjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgc2V0dGluZ3MtPnNl
dFNob3VsZERpc3BsYXlDYXB0aW9ucyhtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyk7CiAgICAgc2V0
dGluZ3MtPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKG1fc2hvdWxkRGlzcGxheVRl
eHREZXNjcmlwdGlvbnMpOwogI2VuZGlmCisgICAgc2V0dGluZ3MtPnNldERlZmF1bHRWaWRlb1Bv
c3RlclVSTChtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTCk7CiB9CiAKIC8vIFdlIGNhbid0IHVzZSBS
ZWZDb3VudGVkU3VwcGxlbWVudCBiZWNhdXNlIHRoYXQgd291bGQgdHJ5IHRvIG1ha2UgSW50ZXJu
YWxTZXR0aW5ncyBSZWZDb3VudGVkCkBAIC00ODcsNCArNDg5LDEwIEBAIHZvaWQgSW50ZXJuYWxT
ZXR0aW5nczo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsSW5TZWNvbmRz
LCBFeGNlcHRpCiAgICAgc2V0dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZh
bEluU2Vjb25kcyk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0RGVmYXVsdFZpZGVv
UG9zdGVyVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJ
bnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOworICAgIHNldHRpbmdzKCktPnNldERl
ZmF1bHRWaWRlb1Bvc3RlclVSTCh1cmwpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4IGQ2NzI0ZGE2OWJmYzhkMDFlYWRkMGM1OTkxYWY5Nzdk
YzExMTg4MjguLmMxMTgyYjM2M2QzYTJlZmY3NWI4MWFiZTA2M2QwMGJhOTViMjhiZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC04Miw2ICs4Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlDYXB0aW9uczsKICAgICAgICAg
Ym9vbCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOwogI2VuZGlmCisgICAgICAgIFN0
cmluZyBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTDsKICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW50ZXJuYWxTZXR0aW5ncz4gY3JlYXRlKFBhZ2UqIHBhZ2UpCkBAIC0xMjYsNiArMTI3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xV
SUVuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsSW5TZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXREZWZhdWx0
VmlkZW9Qb3N0ZXJVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzKFBhZ2UqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IDVkZGIwYWU3M2FlMzQxODA0
NjFmZDAxNmFiNzVmYWVlYzMzMTNjMTQuLmFlOWYzNmQzNTRjMzhhNGJiMzkzNjgwNTc5OTlmYjZm
YmUzYTA1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bApAQCAtNTksNCArNTksNSBAQAogICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGlu
IERPTVN0cmluZyBwb2xpY3kpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIHZvaWQgc2V0SW1h
Z2VzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
IHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoaW4gZG91YmxlIGludGVydmFsSW5TZWNvbmRz
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB2b2lkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TChpbiBET01TdHJpbmcgcG9zdGVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDFhN2U5OTM5YTc5YjM2NjkzODA2NGI5NDQ3
MjA2ODY3NTcwYzE1ZS4uZTVmYTA2NGZlZjE0YjE0Mzk2NmNkOWNjMTVkNmJhNWQ5NzViOTRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjA0MSw0ICsyMDQxLDE0IEBA
IFN0cmluZyBJbnRlcm5hbHM6Om1hcmtlclRleHRGb3JMaXN0SXRlbShFbGVtZW50KiBlbGVtZW50
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gV2ViQ29yZTo6bWFya2VyVGV4dEZvckxp
c3RJdGVtKGVsZW1lbnQpOwogfQogCitTdHJpbmcgSW50ZXJuYWxzOjpnZXRJbWFnZVNvdXJjZVVS
TChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWVsZW1l
bnQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGVsZW1lbnQtPmltYWdlU291cmNlVVJM
KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGVlYzM4M2E1ZDAz
ODY5OTIwNGE0NWE5ZmRkNDIzOGFlYzYyNWU3MDYuLmY5ZTA5Mjk5MjJlNWVhODgwZTU0ZTNkNGZl
OGU1ODU5MjI2ODQ3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjk0LDYg
KzI5NCw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKICAgICB2b2lk
IGVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcigpOwogI2VuZGlmCisKKyAgICBTdHJpbmcgZ2V0
SW1hZ2VTb3VyY2VVUkwoRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgICAgICAg
ICAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDM3MmIwOTg2MmE2MjA2OWFmNjRmNTIw
NjQ2ZTA1OGQzODZmZjllZDUuLmQzNzJlMTBkNTE3OWExMTA3OGE3MTlhYmE3ZDY5M2ZlM2YwM2Fi
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI1OCw0ICsyNTgsNiBA
QAogICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjJdIHZvaWQgaW5pdGlhbGl6ZU1v
Y2tDRE0oKTsKIAogICAgIFtDb25kaXRpb25hbD1TUEVFQ0hfU1lOVEhFU0lTXSB2b2lkIGVuYWJs
ZU1vY2tTcGVlY2hTeW50aGVzaXplcigpOworCisgICAgRE9NU3RyaW5nIGdldEltYWdlU291cmNl
VVJMKGluIEVsZW1lbnQgZWxlbWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDVlYjE4MDNlMjMzZDFiYzkzZmEyOTJkMTM4NmYwNWYyYjRlNzNiNzMuLjUzNGJhNWYzY2YzYzJj
YWE0OTUyZjgyZTNlMGEyMDI2YWQ5ODFhMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0w
My0wNiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB0
aGUgZGVmYXVsdCB2aWRlbyBwb3N0ZXIgaWYgaXQgZG9lc24ndCBleGlzdCBpbiB2aWRlbyB0YWcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDI2Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBBbmRy
b2lkIHdlYiB2aWV3IGFwcGxpY2F0aW9uIGNvdWxkIHByb3ZpZGUgdGhlIGRlZmF1bHQgcG9zdGVy
CisgICAgICAgIGZvciBhIHZpZGVvIHRoYXQgZG9lc24ndCBoYXZlIHRoZSBwb3N0ZXIgYXR0cmli
dXRlLgorCisgICAgICAgIFRvIHByb3ZpZGUgdGhlIGRlZmF1bHQgcG9zdGVyLCB0aGUgYXBwbGlj
YXRpb24gbXVzdCBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMCisgICAgICAgIHNldHRpbmcgYW5k
IHJldHVybiB0aGUgaW1hZ2UgaW4gdGhlIHJlc3BvbnNlIG9mIHRoYXQgVVJMLgorCisgICAgICAg
ICogbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBtZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAz
LTA1ICBBbG9rIFByaXlhZGFyc2hpICA8YWxva3BAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
YmFzZWxpbmUgdGV4dCBvdXRwdXQgZm9yIG9wYXF1ZSBHcmFwaGljc0xheWVycwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3ZjBmYTVjOGE1N2IwNTUzNmU0ZWVjOWVhNjUwNTgxNzE0NWViZDAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzIEBACitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MjllM2E5MjQ4YTVjZTI3YmM2
NzZjMmNkMDc3ZjZlNzZkNGM1NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICB9CisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgdmFyIGRlZmF1bHRf
cG9zdGVyID0gJ2NvbnRlbnQvZ3JlZW5ib3gucG5nJzsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChkZWZhdWx0X3Bvc3Rlcik7CisgICAgYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHBvc3RlciA9IHdp
bmRvdy5pbnRlcm5hbHMuZ2V0SW1hZ2VTb3VyY2VVUkwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InZpZGVvLW5vLXBvc3RlciIpKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBv
c3RlciA9PSBkZWZhdWx0X3Bvc3RlcikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5u
ZXJUZXh0ID0gIkZBSUwiOworICAgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IGltYWdlIHNvdXJj
ZSBpcyBudWxsIjsKKworICAgICAgcG9zdGVyID0gIHdpbmRvdy5pbnRlcm5hbHMuZ2V0SW1hZ2VT
b3VyY2VVUkwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLWhhcy1wb3N0ZXIiKSk7Cisg
ICAgICBpZiAocG9zdGVyKSB7CisgICAgICAgIGlmIChwb3N0ZXIgPT0gImNvbnRlbnQvYWJlLnBu
ZyIpCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVy
IikuaW5uZXJUZXh0ID0gIlBBU1MiOworICAgICAgICBlbHNlCisgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IHBv
c3RlciB3YXMgY2hhbmdlZCI7CisgICAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IGltYWdlIHNv
dXJjZSBpcyBudWxsIjsKKworICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwg
ZmFsc2UpOworICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJyZXN1
bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUgaWQ9InJlc3VsdC1oYXMtcG9zdGVyIj48L3ByZT4K
Kzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHByZWxv
YWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZpZGVvLWhhcy1wb3N0ZXIiIHNyYz0iY29udGVudC90
ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2FiZS5wbmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZh
dWx0LXBvc3Rlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZh
dWx0LXBvc3Rlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRl
ZWM5ZWE2NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlh
L3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BB
U1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVs
dC1wb3N0ZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzY4YmEwNjJjMGQ3Y2EzZjQ2ZDVkZjNlZTlmYTNiNTlhNDMzZGQx
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQt
cG9zdGVyLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgIH0KKwor
ICBpZiAod2luZG93LmludGVybmFscykgeworICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBm
dW5jdGlvbigpIHsKKyAgICAgIHZhciBwb3N0ZXIgPSB3aW5kb3cuaW50ZXJuYWxzLmdldEltYWdl
U291cmNlVVJMKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1uby1wb3N0ZXIiKSk7Cisg
ICAgICBpZiAocG9zdGVyKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMIDogcG9zdGVyIHdhcyBhZGRlZC4iOworICAg
ICAgZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3Rl
ciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKworICAgICAgcG9zdGVyID0gd2luZG93LmludGVybmFs
cy5nZXRJbWFnZVNvdXJjZVVSTChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8taGFzLXBv
c3RlciIpKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3RlciA9PSAiY29u
dGVudC9hYmUucG5nIikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQg
PSAiRkFJTDogcG9zdGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJ
TDogSW1hZ2Ugc291cmNlIGlzIG51bGwiOworCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICB9LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
cmUgaWQ9InJlc3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1wb3N0
ZXIiPjwvcHJlPgorPHZpZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0
Lm1wNCIgcHJlbG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBvc3RlciIgc3Jj
PSJjb250ZW50L3Rlc3QubXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJlbG9hZD0ibm9u
ZSIgLz4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191856</attachid>
            <date>2013-03-06 15:51:19 -0800</date>
            <delta_ts>2013-03-08 00:18:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130306154724.patch</filename>
            <type>text/plain</type>
            <size>31995</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhjNjI1NjU1ZDU2MWEx
MjhjYzRmYzIwOTk3YzEwZTBhNjViOTllNC4uMDlkMTVkYjBiZTE5ODNlYzAyZDdiYjEzMmQ1MTYx
NGZhOGUwYmVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTA2ICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICBUaGUgQW5kcm9pZCB3ZWIgdmlldyBhcHBsaWNhdGlv
biBjb3VsZCBwcm92aWRlIHRoZSBkZWZhdWx0IHBvc3RlcgorICAgICAgICBmb3IgYSB2aWRlbyB0
aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgcG9zdGVyIGF0dHJpYnV0ZS4KKworICAgICAgICBUbyBwcm92
aWRlIHRoZSBkZWZhdWx0IHBvc3RlciwgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc2V0IGRlZmF1bHRW
aWRlb1Bvc3RlclVSTAorICAgICAgICBzZXR0aW5nIGFuZCByZXR1cm4gdGhlIGltYWdlIGluIHRo
ZSByZXNwb25zZSBvZiB0aGF0IFVSTC4KKworICAgICAgICBUaGUgd2F5IHRvIGRvIHRoaXMgd291
bGQgYmU6CisKKyAgICAgICAgQSkgUmVwbGFjZSB0aGUgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lIGZ1bmN0aW9uIHdpdGggYW4KKyAgICAgICAgICAgRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBpbWFnZVNvdXJjZVVSTCBhcyBhCisgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYuIFRoZSBib2R5IHdpbGwgYmUgdGhlIHNhbWUgYXMg
YmVmb3JlLCBpdCB3aWxsIGp1c3QgYWxzbworICAgICAgICAgICBpbmNsdWRlIGEgY2FsbCB0byBn
ZXRBdHRyaWJ1dGUuIEFsc28gd2lsbCBuZWVkIHRvIHJldmlzZSB0aGUgZm91ciBjbGFzc2VzCisg
ICAgICAgICAgIHRoYXQgb3ZlcnJpZGUgdGhhdCBmdW5jdGlvbi4KKworICAgICAgICBCKSBBZGQg
YSBuZXcgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwgZnVuY3Rpb24gdGhhdCBpbXBs
ZW1lbnRzIHRoZQorICAgICAgICAgICBkZWZhdWx0IHBvc3RlciBVUkwgbG9naWMuCisKKyAgICAg
ICAgQykgVXBkYXRlIHRoZSBmb3VyIGZ1bmN0aW9ucyB0aGF0IGdldCB0aGUgcG9zdGVyIGF0dHJp
YnV0ZSB0byBoYW5kbGUgcG9zdGVyCisgICAgICAgICAgIGxvYWRpbmcgYW5kIGRpc3BsYXkgdG8g
Y2FsbCBwb3N0ZXJJbWFnZVVSTC4KKworICAgICAgICAgICAxKSBIVE1MVmlkZW9FbGVtZW50Ojpp
bWFnZVNvdXJjZVVSTC4KKyAgICAgICAgICAgMikgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxh
eU1vZGUuCisgICAgICAgICAgIDMpIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURpc3BsYXlTdGF0
ZS4KKyAgICAgICAgICAgNCkgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMu
IFdpbGwgbmVlZCB0byBjYXN0IHRvCisgICAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgYWZ0
ZXIgY2hlY2tpbmcgaXNWaWRlby4KKworICAgICAgICAqIFdlYkNvcmUub3JkZXI6IFJlcGxhY2Ug
aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdp
dGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgIChFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOiBSZXBsYWNlIGltYWdlU291cmNlQXR0
cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVk
RWxlbWVudC5oOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VT
b3VyY2VVUkwoKQorICAgICAgICAoSFRNTEVtYmVkRWxlbWVudCk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmdldFBsdWdpblByb3h5UGFyYW1zKTogQ2hhbmdlIHRvIHVzZSBwb3N0ZXJJbWFnZVVSTAorICAg
ICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9iamVjdEVsZW1lbnQ6OmltYWdlU291cmNlVVJMKTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJp
YnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBodG1sL0hUTUxPYmpl
Y3RFbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIHdpdGggaW1hZ2VT
b3VyY2VVUkwKKyAgICAgICAgKEhUTUxPYmplY3RFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
SFRNTFZpZGVvRWxlbWVudCk6IHNldCBtX2RlZmF1bHRQb3N0ZXJVUkwgaWYgdGhlcmUgaXMgc3Vj
aCBzZXR0aW5ncworICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3Vy
Y2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1v
ZGUpOiBVc2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKTogVXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKTogUmV0dXJuIGltYWdl
IHNvdXJjZSdzIEtVUkwgCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxW
aWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxWaWRlb0VsZW1lbnQpOgorICAgICAgICAqIGxv
YWRlci9JbWFnZUxvYWRlci5jcHA6IFVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvU2V0
dGluZ3MuaW46IEFkZCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgc2V0dGluZy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6IHVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
VVJMRm9ySW1hZ2VOb2RlKTogdXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiByZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojph
YnNvbHV0ZUltYWdlVVJMKTogdXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBzdmcvU1ZH
SW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6aW1h
Z2VTb3VyY2VVUkwpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1h
Z2VTb3VyY2VVUkwoKQorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAg
KFNWR0ltYWdlRWxlbWVudCk6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0
aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKTog
c3VwcG9ydCBiYWNrdXAgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOiBzdXBwb3J0IHJlc3RvcmUgZGVm
YXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6
c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKTogc2V0IGRlZmF1bHRWaWRlb1Bvc3RlclVSTC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oOgor
ICAgICAgICAoQmFja3VwKTogc3VwcG9ydCBiYWNrdXAgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgor
ICAgICAgICAoSW50ZXJuYWxTZXR0aW5ncyk6IEFkZCBzZXREZWZhdWx0Vmlkb2VQb3N0ZXJVUkwg
bWV0aG9kLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGw6IEFkZCBzZXRE
ZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgZm9yIHRlc3QgcHVycG9zZS4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmdldEltYWdlU291
cmNlVVJMKTogQWRkIGdldEltYWdlU291cmNlVVJMIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6IEFkZCBnZXRJbWFnZVNvdXJjZVVSTCBt
ZXRob2QuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBBZGQgZ2V0SW1hZ2VTb3Vy
Y2VVUkwgbWV0aG9kLgorCiAyMDEzLTAzLTA1ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ2xlYXIgYXNzb2NpYXRlZCBjYWNoZSBwYXJ0aXRpb25zIHdoZW4gZGVs
ZXRpbmcgb3JpZ2lucycgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDNiMDZlNWI0YTEzYTVh
ZTNhZGFhMDk1ZmRiNDE0ODM4OTE5ZTMyMGIuLmIzNGVkOTk3OGU0NzQwMWNjY2Y0OWMwYWY2OWRi
N2EwYmE4NWU2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtNTQxNCw3ICs1NDE0LDYgQEAgX19a
Tks3V2ViQ29yZTE2SFRNTEltYWdlRWxlbWVudDEwbWFwVG9FbnRyeUVSS05TXzEzUXVhbGlmaWVk
TmFtZUVSTlNfMjBNYXBwZWRBdHQKIF9fWk43V2ViQ29yZTE2SFRNTEltYWdlRWxlbWVudDIwcGFy
c2VNYXBwZWRBdHRyaWJ1dGVFUE5TXzlBdHRyaWJ1dGVFCiBfX1pON1dlYkNvcmUxMUltYWdlTG9h
ZGVyMzh1cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvckV2CiBfX1pON1dlYkNv
cmUxMUltYWdlTG9hZGVyMTd1cGRhdGVGcm9tRWxlbWVudEV2Ci1fX1pOSzdXZWJDb3JlN0VsZW1l
bnQyNGltYWdlU291cmNlQXR0cmlidXRlTmFtZUV2CiBfX1pOSzdXZWJDb3JlMTVIVE1MSW1hZ2VM
b2FkZXI5c291cmNlVVJJRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZTIwQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIxMnJlcXVlc3RJbWFnZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZUwxMWFwcGVuZEFTQ0lJRVJLTjNXVEY2U3RyaW5nRVBLY21STlMwXzZWZWN0b3JJY0xtNTEy
RUVFCkBAIC0xMDQ4MSw3ICsxMDQ4MCw2IEBAIF9fWk43V2ViQ29yZTIzTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXREMEV2CiBfX1pON1dlYkNvcmUyM01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0MjJ0ZWFy
RG93blZpZGVvUmVuZGVyaW5nRXYKIC1bV2ViQ29yZU1vdmllT2JzZXJ2ZXIgZGlzY29ubmVjdF0K
IF9fWk43V2ViQ29yZTI3c2V0SlNIVE1MVmlkZW9FbGVtZW50UG9zdGVyRVBOM0pTQzlFeGVjU3Rh
dGVFUE5TMF84SlNPYmplY3RFTlMwXzdKU1ZhbHVlRQotX19aTks3V2ViQ29yZTE2SFRNTFZpZGVv
RWxlbWVudDI0aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lRXYKIF9fWk43V2ViQ29yZTExUmVuZGVy
VmlkZW8xMmltYWdlQ2hhbmdlZEVQdlBLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUyMldlYkdM
Q29udGV4dEF0dHJpYnV0ZXM2Y3JlYXRlRXYKIF9fWk43V2ViQ29yZTIzQ2FudmFzQ29udGV4dEF0
dHJpYnV0ZXNDMkV2CkBAIC0xMTE0OSw3ICsxMTE0Nyw2IEBAIF9fWk5LN1dlYkNvcmUxMVJlbmRl
clN0eWxlMTBwYWRkaW5nVG9wRXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTJwYWRkaW5n
UmlnaHRFdgogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUxM3BhZGRpbmdCb3R0b21FdgogX19a
Tks3V2ViQ29yZTExUmVuZGVyU3R5bGUxMXBhZGRpbmdMZWZ0RXYKLV9fWk5LN1dlYkNvcmUxN0hU
TUxPYmplY3RFbGVtZW50MjRpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWVFdgogX19aTjdXZWJDb3Jl
MTdIVE1MUGx1Z0luRWxlbWVudDE5ZGVmYXVsdEV2ZW50SGFuZGxlckVQTlNfNUV2ZW50RQogX19a
Tks3V2ViQ29yZTE2SFRNTEVsZW1lbnRTdGFjazEzaW5CdXR0b25TY29wZUVSS05TXzEzUXVhbGlm
aWVkTmFtZUUKIF9fWk43V2ViQ29yZUwyMmRlY29kZU5vbkFTQ0lJU2VxdWVuY2VFUEtoagpAQCAt
MTEyNTEsNyArMTEyNDgsNiBAQCBfX1pON1dlYkNvcmUxNVNWR1VSSVJlZmVyZW5jZTE2aXNLbm93
bkF0dHJpYnV0ZUVSS05TXzEzUXVhbGlmaWVkTmFtZUUKIF9fWk5LN1dlYkNvcmUxNVNWR0ltYWdl
RWxlbWVudDIyc2VsZkhhc1JlbGF0aXZlTGVuZ3Roc0V2CiBfX1pOSzNXVEYxMlN0cmluZ0FwcGVu
ZElOU182U3RyaW5nRVMxX0Vjdk5TXzEyQXRvbWljU3RyaW5nRUV2CiBfX1pUaG4zNjBfTjdXZWJD
b3JlMTVTVkdJbWFnZUVsZW1lbnQxNnNldEhyZWZCYXNlVmFsdWVFUktOM1dURjZTdHJpbmdFCi1f
X1pOSzdXZWJDb3JlMTVTVkdJbWFnZUVsZW1lbnQyNGltYWdlU291cmNlQXR0cmlidXRlTmFtZUV2
CiBfX1pOSzdXZWJDb3JlMTRTVkdJbWFnZUxvYWRlcjlzb3VyY2VVUklFUktOM1dURjEyQXRvbWlj
U3RyaW5nRQogX19aTks3V2ViQ29yZTdFbGVtZW50N2Jhc2VVUklFdgogX19aTjdXZWJDb3JlMTVT
VkdJbWFnZUVsZW1lbnQyMGluc2VydGVkSW50b0RvY3VtZW50RXYKQEAgLTI1ODM0LDcgKzI1ODMw
LDYgQEAgX19aTks3V2ViQ29yZTE2UERGRG9jdW1lbnRJbWFnZTE3ZmlsZW5hbWVFeHRlbnNpb25F
dgogX19aTjdXZWJDb3JlNUltYWdlMTBnZXROU0ltYWdlRXYKIF9fWk43V2ViQ29yZTMzY3JlYXRl
RHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRVBOU18xMUNhY2hlZEltYWdlRQogX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxN3N1Z2dlc3RlZEZpbGVuYW1lRXYKLV9fWk5LN1dl
YkNvcmUxNkhUTUxFbWJlZEVsZW1lbnQyNGltYWdlU291cmNlQXR0cmlidXRlTmFtZUV2CiBfX1pO
SzdXZWJDb3JlMThEb2N1bWVudE9yZGVyZWRNYXAxOWdldEVsZW1lbnRCeU1hcE5hbWVFUE4zV1RG
MTZBdG9taWNTdHJpbmdJbXBsRVBLTlNfOVRyZWVTY29wZUUKIF9fWk5LN1dlYkNvcmUxOERvY3Vt
ZW50T3JkZXJlZE1hcDNnZXRJWGFkTF9aTlNfMTdrZXlNYXRjaGVzTWFwTmFtZUVQTjNXVEYxNkF0
b21pY1N0cmluZ0ltcGxFUE5TXzdFbGVtZW50RUVFRUVTNl9TNF9QS05TXzlUcmVlU2NvcGVFCiBf
X1pON1dlYkNvcmUxNEltYWdlSW5wdXRUeXBlMjZ3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudEV2
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTUzMTg1NWVlZTBmYzVjZTgyZDJjZjVhMzM1ODZi
MzcxOWUxNzM5YS4uNDQ2MTYwNjk0N2ZmNmRhY2FjMGVmOTg1NmMwZDg3OTM3YTBkYzM3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTEyMSw5ICsxMTIxLDkgQEAgS1VSTCBFbGVtZW50Ojpi
YXNlVVJJKCkgY29uc3QKICAgICByZXR1cm4gS1VSTChwYXJlbnRCYXNlLCBiYXNlQXR0cmlidXRl
KTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1
dGVOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aW1hZ2VTb3VyY2VV
UkwoKSBjb25zdAogewotICAgIHJldHVybiBzcmNBdHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1
dGUoc3JjQXR0cik7CiB9CiAKIGJvb2wgRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGMzMDQ2
ZmI3NjU5MzdhMDVjMjEzNGFhZjVlN2MyOTQyMjg5YzM0ZTkuLjljZjkwNTYxMjMzZTM2YzI3ZDIy
YzI4MGNjNTdlY2YzMDVkMjU5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDUxLDcgKzQ1MSw3
IEBAIHB1YmxpYzoKICAgICBLVVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7CiAgICAgS1VSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdl
U291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9v
bCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlLCBGb2N1c0RpcmVjdGlvbiA9IEZvY3Vz
RGlyZWN0aW9uTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApp
bmRleCBjMzNlMmY4YjljMGQ0ZDliM2ZlOTk1ZDQwNjgzYTcyOTllMDkwMmY1Li5kZjJjMTZiY2Fi
YzA2ZTg4YjIyMGZmODYxOTQ5ZmVjOTY0ODljZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVtYmVkRWxlbWVudC5jcHAKQEAgLTIxMCw5ICsyMTAsOSBAQCBib29sIEhUTUxFbWJlZEVsZW1l
bnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAg
IHJldHVybiBhdHRyaWJ1dGUubmFtZSgpID09IHNyY0F0dHIgfHwgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFt
ZSYgSFRNTEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2Nv
bnN0IEF0b21pY1N0cmluZyYgSFRNTEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25z
dAogewotICAgIHJldHVybiBzcmNBdHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3JjQXR0
cik7CiB9CiAKIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bWJlZEVsZW1lbnQuaAppbmRleCBhNTk1YmE0ZDU5YWM3YzIwMmNmMTc1ZjkwOTE2ZmU0MWIxODYw
ZmJmLi40NDJkY2I5YWIxMTBiZTk0ZTBlOGUxNGEwNjJiODMxNzc5ZDRlMGQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250
ZXh0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBpbWFn
ZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgUmVu
ZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDFlODlkZmMyZWYwOWI5ODY0ZjI1
MjcwZThjZDYwYjczMTY1NDg5MzMuLmI1YjEyNWExZWU1OTAwMTJlOTlhYWRlOWJkYTQwYTA0YTU3
Zjg5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDAz
NSw3ICs0MDM1LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpnZXRQbHVnaW5Qcm94eVBhcmFt
cyhLVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmUKICAgICBGcmFtZSogZnJhbWUg
PSBkb2N1bWVudCgpLT5mcmFtZSgpOwogCiAgICAgaWYgKGlzVmlkZW8oKSkgewotICAgICAgICBL
VVJMIHBvc3RlclVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpOworICAg
ICAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlbyA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1l
bnQqPih0aGlzKTsKKyAgICAgICAgS1VSTCBwb3N0ZXJVUkwgPSB2aWRlby0+cG9zdGVySW1hZ2VV
UkwoKTsKICAgICAgICAgaWYgKCFwb3N0ZXJVUkwuaXNFbXB0eSgpICYmIGZyYW1lICYmIGZyYW1l
LT5sb2FkZXIoKS0+d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwocG9zdGVyVVJMKSkgewogICAgICAg
ICAgICAgbmFtZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiX21lZGlhX2VsZW1lbnRfcG9zdGVyXyIp
KTsKICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQocG9zdGVyVVJMLnN0cmluZygpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZjRkNjc1ODJkNDllYWNk
NTRhMzM3MjIzOTRjYzhlNzVlMjYzN2MwMy4uZWY0MmQwYjg0OTM4MjU5M2MwMTZlYmFlNTc0NTU2
NDlhMzc2MGQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAK
QEAgLTM2NCw5ICszNjQsOSBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50Ojppc1VSTEF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKICAgICByZXR1cm4gYXR0cmlidXRl
Lm5hbWUoKSA9PSBkYXRhQXR0ciB8fCAoYXR0cmlidXRlLm5hbWUoKSA9PSB1c2VtYXBBdHRyICYm
IGF0dHJpYnV0ZS52YWx1ZSgpLnN0cmluZygpWzBdICE9ICcjJykgfHwgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVk
TmFtZSYgSFRNTE9iamVjdEVsZW1lbnQ6OmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0
Citjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxPYmplY3RFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRhdGFBdHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUo
ZGF0YUF0dHIpOwogfQogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJGYWxsYmFja0Nv
bnRlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDViN2U3
MjBiOTc0NDYwZmNhMTFkMjE1MzU3YmY4OWZkOTYxNzUyYzMuLmJmNzE3ZGE1NTUxYTM1YzdiZjE4
NzdkODMzMjc2Y2E3N2E5ZTYxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5n
ZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwog
CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VB
dHRyaWJ1dGVOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGlt
YWdlU291cmNlVVJMKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlcldpZGdl
dCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjZmU5NTcxM2ZmOWRmOGQ3MzU3NWI4MDJlZTU4
MWYwOGRlNjc4NDFkLi42YmMwNTJhNmIwZjkyNjRlY2E4NzFlZWYwMDc5NjhlYzgyYTY0YjUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDksNiArNTAsOCBAQCBpbmxpbmUgSFRNTFZpZGVvRWxl
bWVudDo6SFRNTFZpZGVvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudAogICAgIDogSFRNTE1lZGlhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5
UGFyc2VyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHZpZGVvVGFnKSk7CisgICAgaWYgKGRv
Y3VtZW50LT5zZXR0aW5ncygpKQorICAgICAgICBtX2RlZmF1bHRQb3N0ZXJVUkwgPSBkb2N1bWVu
dC0+c2V0dGluZ3MoKS0+ZGVmYXVsdFZpZGVvUG9zdGVyVVJMKCk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTFZpZGVvRWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIp
CkBAIC0xNzgsMTUgKzE4MSwxOCBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmlzVVJMQXR0cmli
dXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1
dGUubmFtZSgpID09IHBvc3RlckF0dHIgfHwgSFRNTE1lZGlhRWxlbWVudDo6aXNVUkxBdHRyaWJ1
dGUoYXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTFZpZGVvRWxlbWVu
dDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYg
SFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVybiBw
b3N0ZXJBdHRyOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdXJsID0gZ2V0QXR0cmlidXRlKHBv
c3RlckF0dHIpOworICAgIGlmICghdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHVybDsK
KyAgICByZXR1cm4gbV9kZWZhdWx0UG9zdGVyVVJMOwogfQogCiB2b2lkIEhUTUxWaWRlb0VsZW1l
bnQ6OnNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlIG1vZGUpCiB7CiAgICAgRGlzcGxheU1vZGUg
b2xkTW9kZSA9IGRpc3BsYXlNb2RlKCk7Ci0gICAgS1VSTCBwb3N0ZXIgPSBnZXROb25FbXB0eVVS
TEF0dHJpYnV0ZShwb3N0ZXJBdHRyKTsKKyAgICBLVVJMIHBvc3RlciA9IHBvc3RlckltYWdlVVJM
KCk7CiAKICAgICBpZiAoIXBvc3Rlci5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBh
IHBvc3RlciBwYXRoLCBidXQgb25seSBzaG93IGl0IHVudGlsIHRoZSB1c2VyIHRyaWdnZXJzIGRp
c3BsYXkgYnkgcGxheWluZyBvciBzZWVraW5nIGFuZCB0aGUKQEAgLTIyMSw3ICsyMjcsNyBAQCB2
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlIG1vZGUpCiAK
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKCkKIHsKLSAgICBpZiAo
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUocG9zdGVyQXR0cikuaXNFbXB0eSgpKQorICAgIGlmIChw
b3N0ZXJJbWFnZVVSTCgpLmlzRW1wdHkoKSkKICAgICAgICAgc2V0RGlzcGxheU1vZGUoVmlkZW8p
OwogICAgIGVsc2UgaWYgKGRpc3BsYXlNb2RlKCkgPCBQb3N0ZXIpCiAgICAgICAgIHNldERpc3Bs
YXlNb2RlKFBvc3Rlcik7CkBAIC0zMDEsNiArMzA3LDE0IEBAIHVuc2lnbmVkIEhUTUxWaWRlb0Vs
ZW1lbnQ6OndlYmtpdERyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKIH0KICNlbmRpZgogCitLVVJM
IEhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKCkKK3sKKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHVybCA9IGltYWdlU291cmNlVVJMKCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgcmV0dXJuIGRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KHVybCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oCmluZGV4IGNmNGZlYWNmY2I3MWIyMmUzNjkxM2E4ZDk3ODRjYWVmNDE4NTQ5YWIuLmZhNDQz
ZmUwZGFjYTg4MDMyMmNlYWZmOThjNDMwYTZkZWFlODI0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5oCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheU1vZGUoKSA9
PSBQb3N0ZXIgfHwgZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXJXYWl0aW5nRm9yVmlkZW87IH0KIAor
ICAgIEtVUkwgcG9zdGVySW1hZ2VVUkwoKTsKKwogcHJpdmF0ZToKICAgICBIVE1MVmlkZW9FbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wpOwogCkBAIC04MCw3ICs4
Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3QgeyByZXR1
cm4gcGxheWVyKCkgJiYgcGxheWVyKCktPmhhc1ZpZGVvKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmli
dXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3QgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKQEAgLTg5LDYgKzkxLDcgQEAgcHJp
dmF0ZToKIAogICAgIE93blB0cjxIVE1MSW1hZ2VMb2FkZXI+IG1faW1hZ2VMb2FkZXI7CiAKKyAg
ICBBdG9taWNTdHJpbmcgbV9kZWZhdWx0UG9zdGVyVVJMOwogfTsKIAogfSAvL25hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggODFhMTI5ZDIwYjA5YzA0MTlk
ODMzZTg4YWZkZmU5N2ZmYTI4OGEwNi4uODhjNTg4OGU1Yzc5MGNlZDI4OTlhYWY3YWU1YmNjZjAy
ODljOGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0xNzAsNyAr
MTcwLDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIGlmICgh
ZG9jdW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEF0b21pY1N0cmlu
ZyBhdHRyID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUobV9lbGVtZW50LT5pbWFnZVNvdXJjZUF0
dHJpYnV0ZU5hbWUoKSk7CisgICAgQXRvbWljU3RyaW5nIGF0dHIgPSBtX2VsZW1lbnQtPmltYWdl
U291cmNlVVJMKCk7CiAKICAgICBpZiAoYXR0ciA9PSBtX2ZhaWxlZExvYWRVUkwpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCmluZGV4IGU3OTkxZWFkY2MxNDAzMDdmYzA5
NzY3YmVmZjIxNGE1M2JmN2ViYWQuLjI4NjYzNmNjMTVjNDdmZTQ2NGY1YTAzZWZhN2Q1YzkyZmQw
OGY2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgpAQCAtMTk1LDQgKzE5NSw3IEBAIHVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQgaW5pdGlhbD1kZWZhdWx0VW5pZmllZFRleHRDaGVja2VyRW5h
YmxlZAogCiBsb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCBpbml0aWFsPWZh
bHNlCiAKKyMgU29tZSBhcHBzIGNvdWxkIGhhdmUgYSBkZWZhdWx0IHZpZGVvIHBvc3RlciBpZiBp
dCBpcyBub3Qgc2V0LgorZGVmYXVsdFZpZGVvUG9zdGVyVVJMIHR5cGU9U3RyaW5nCisKIHNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZCBpbml0aWFsPXRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDc2MDk2
NjNlZGU4ZWEwYmNhYjhlYTRkZTI3NjUzMzE4OTc4ODg4YzYuLjMxNTVlZGViOGY3MjdiNjgzYmM0
Y2Q3OTExMGI4OGMzYzk0NGU2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKICNlbmRpZgogICAgIGVsc2UgaWYgKG5vZGUtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjplbWJlZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVj
dFRhZykpIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKTsKLSAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGVsZW1l
bnQtPmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpKTsKKyAgICAgICAgdXJsU3RyaW5nID0gZWxl
bWVudC0+aW1hZ2VTb3VyY2VVUkwoKTsKICAgICB9CiAgICAgS1VSTCB1cmwgPSB1cmxTdHJpbmcu
aXNFbXB0eSgpID8gS1VSTCgpIDogbm9kZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykpOwogICAgIFdlYktpdDo6V2Vi
SW1hZ2Ugd2ViSW1hZ2UgPSBiaXRtYXAtPmJpdG1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IGQ2ZDg2N2U5MTdhY2E3MDdkNGVhOGIz
N2Y3N2MxZjAxNmEyNWJjMzMuLjgxZGVhODA2NDJjZGRlODgyN2FiNzk5ODE5NDZiOWQzOGYwNDQ3
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAK
QEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgS1VSTCBnZXRVUkxGb3JJbWFnZU5vZGUoTm9kZSog
bm9kZSkKICNlbmRpZgogICAgIGVsc2UgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpl
bWJlZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRhZykpIHsKICAg
ICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAg
ICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGVsZW1lbnQtPmltYWdlU291
cmNlQXR0cmlidXRlTmFtZSgpKTsKKyAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+aW1hZ2VT
b3VyY2VVUkwoKTsKICAgICB9CiAgICAgcmV0dXJuIHVybFN0cmluZy5pc0VtcHR5KCkgPyBLVVJM
KCkgOiBub2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXModXJsU3RyaW5nKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAKaW5kZXggZjFhMzQ2ZTc4OGU0YzY0MmU5Y2Y1Mzc0NWRlZmM5MjM5ZmFj
YmRkMC4uZjJkNjVmMGE1MTYwMmZjOTE3Yjc5ZTVhNmU4MDdlOGQ2ODM5NWQ3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMzIwLDcgKzMyMCw3IEBA
IEtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVSTCgpIGNvbnN0CiAjZW5kaWYKICAg
ICAgICApIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7Ci0gICAgICAgIHVybFN0cmluZyA9IGVsZW1l
bnQtPmdldEF0dHJpYnV0ZShlbGVtZW50LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7Cisg
ICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmltYWdlU291cmNlVVJMKCk7CiAgICAgfSBlbHNl
CiAgICAgICAgIHJldHVybiBLVVJMKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5jcHAKaW5kZXggYWZiNGRkY2JjNmRmNzBjZmZhNDc0ZGZhNzFjYTZlZTFiODA2MDRlZS4uMGQy
M2JlM2IyNWIzMGQ5MzVmMzYwNDdkMDMyYzJlNDFhOGZlOTIwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTIyMiw5ICsyMjIsOSBAQCBOb2RlOjpJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IFNWR0ltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUqCiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKLWNvbnN0IFF1YWxpZmllZE5h
bWUmIFNWR0ltYWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2Nv
bnN0IEF0b21pY1N0cmluZyYgU1ZHSW1hZ2VFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFhMaW5rTmFtZXM6OmhyZWZBdHRyOworICAgIHJldHVybiBnZXRBdHRy
aWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpOwogfQogCiB2b2lkIFNWR0ltYWdlRWxlbWVudDo6
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCmluZGV4IGNhMGI2MmU1NzJlOGM1N2Yw
NjU0MjAzN2IxNjhjODZiMmQxMmU2NDguLmRlN2E2NGFhMWNiODVlZjg2N2U2NmUxMDAwMmNjM2Fm
NDI1MTZlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKQEAgLTU4LDggKzU4
LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3Qg
aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0g
Ci0gICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5h
bWUoKSBjb25zdDsgICAgICAgCisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1h
Z2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCAxMjYyYWVmNWYwM2Y2OGI4ZWM2YjRi
NmZlMDE2ZTM1MWJjNTVlZjUwLi5jMzQ0ZGNlYjkwM2ViOTEwMTI2MjE0OWM5YWIzMzAyYjZmZDVl
MWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAg
LTk0LDYgKzk0LDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGluZ3Mq
IHNldHRpbmdzKQogICAgICwgbV9zaG91bGREaXNwbGF5Q2FwdGlvbnMoc2V0dGluZ3MtPnNob3Vs
ZERpc3BsYXlDYXB0aW9ucygpKQogICAgICwgbV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9u
cyhzZXR0aW5ncy0+c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoKSkKICNlbmRpZgorICAg
ICwgbV9kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoc2V0dGluZ3MtPmRlZmF1bHRWaWRlb1Bvc3RlclVS
TCgpKQogewogfQogCkBAIC0xMjksNiArMTMwLDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpC
YWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgc2V0dGluZ3MtPnNldFNo
b3VsZERpc3BsYXlDYXB0aW9ucyhtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyk7CiAgICAgc2V0dGlu
Z3MtPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKG1fc2hvdWxkRGlzcGxheVRleHRE
ZXNjcmlwdGlvbnMpOwogI2VuZGlmCisgICAgc2V0dGluZ3MtPnNldERlZmF1bHRWaWRlb1Bvc3Rl
clVSTChtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTCk7CiB9CiAKIC8vIFdlIGNhbid0IHVzZSBSZWZD
b3VudGVkU3VwcGxlbWVudCBiZWNhdXNlIHRoYXQgd291bGQgdHJ5IHRvIG1ha2UgSW50ZXJuYWxT
ZXR0aW5ncyBSZWZDb3VudGVkCkBAIC00ODcsNCArNDg5LDEwIEBAIHZvaWQgSW50ZXJuYWxTZXR0
aW5nczo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsSW5TZWNvbmRzLCBF
eGNlcHRpCiAgICAgc2V0dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbElu
U2Vjb25kcyk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0RGVmYXVsdFZpZGVvUG9z
dGVyVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJbnRl
cm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOworICAgIHNldHRpbmdzKCktPnNldERlZmF1
bHRWaWRlb1Bvc3RlclVSTCh1cmwpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5oCmluZGV4IGQ2NzI0ZGE2OWJmYzhkMDFlYWRkMGM1OTkxYWY5NzdkYzEx
MTg4MjguLmMxMTgyYjM2M2QzYTJlZmY3NWI4MWFiZTA2M2QwMGJhOTViMjhiZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC04Miw2ICs4Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlDYXB0aW9uczsKICAgICAgICAgYm9v
bCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOwogI2VuZGlmCisgICAgICAgIFN0cmlu
ZyBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTDsKICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW50ZXJuYWxTZXR0aW5ncz4gY3JlYXRlKFBhZ2UqIHBhZ2UpCkBAIC0xMjYsNiArMTI3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVu
YWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIGlu
dGVydmFsSW5TZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXREZWZhdWx0Vmlk
ZW9Qb3N0ZXJVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzKFBhZ2UqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IDVkZGIwYWU3M2FlMzQxODA0NjFm
ZDAxNmFiNzVmYWVlYzMzMTNjMTQuLmFlOWYzNmQzNTRjMzhhNGJiMzkzNjgwNTc5OTlmYjZmYmUz
YTA1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApA
QCAtNTksNCArNTksNSBAQAogICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGluIERP
TVN0cmluZyBwb2xpY3kpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIHZvaWQgc2V0SW1hZ2Vz
RW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIHZv
aWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoaW4gZG91YmxlIGludGVydmFsSW5TZWNvbmRzKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB2b2lkIHNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChp
biBET01TdHJpbmcgcG9zdGVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDFhN2U5OTM5YTc5YjM2NjkzODA2NGI5NDQ3MjA2
ODY3NTcwYzE1ZS4uZTVmYTA2NGZlZjE0YjE0Mzk2NmNkOWNjMTVkNmJhNWQ5NzViOTRlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjA0MSw0ICsyMDQxLDE0IEBAIFN0
cmluZyBJbnRlcm5hbHM6Om1hcmtlclRleHRGb3JMaXN0SXRlbShFbGVtZW50KiBlbGVtZW50LCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gV2ViQ29yZTo6bWFya2VyVGV4dEZvckxpc3RJ
dGVtKGVsZW1lbnQpOwogfQogCitTdHJpbmcgSW50ZXJuYWxzOjpnZXRJbWFnZVNvdXJjZVVSTChF
bGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWVsZW1lbnQp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGVsZW1lbnQtPmltYWdlU291cmNlVVJMKCk7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGVlYzM4M2E1ZDAzODY5
OTIwNGE0NWE5ZmRkNDIzOGFlYzYyNWU3MDYuLmY5ZTA5Mjk5MjJlNWVhODgwZTU0ZTNkNGZlOGU1
ODU5MjI2ODQ3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjk0LDYgKzI5
NCw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKICAgICB2b2lkIGVu
YWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcigpOwogI2VuZGlmCisKKyAgICBTdHJpbmcgZ2V0SW1h
Z2VTb3VyY2VVUkwoRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgICAgICAgICAg
ICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDM3MmIwOTg2MmE2MjA2OWFmNjRmNTIwNjQ2
ZTA1OGQzODZmZjllZDUuLmQzNzJlMTBkNTE3OWExMTA3OGE3MTlhYmE3ZDY5M2ZlM2YwM2FiY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI1OCw0ICsyNTgsNiBAQAog
ICAgIFtDb25kaXRpb25hbD1FTkNSWVBURURfTUVESUFfVjJdIHZvaWQgaW5pdGlhbGl6ZU1vY2tD
RE0oKTsKIAogICAgIFtDb25kaXRpb25hbD1TUEVFQ0hfU1lOVEhFU0lTXSB2b2lkIGVuYWJsZU1v
Y2tTcGVlY2hTeW50aGVzaXplcigpOworCisgICAgRE9NU3RyaW5nIGdldEltYWdlU291cmNlVVJM
KGluIEVsZW1lbnQgZWxlbWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVl
YjE4MDNlMjMzZDFiYzkzZmEyOTJkMTM4NmYwNWYyYjRlNzNiNzMuLmM4NGExNzgwYjg3OGY0ZDc4
Mjg2OTIwNTJhNDEwNzYxNDM2ZTdlOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0w
NiAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCB0aGUg
ZGVmYXVsdCB2aWRlbyBwb3N0ZXIgaWYgaXQgZG9lc24ndCBleGlzdCBpbiB2aWRlbyB0YWcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDI2MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBBbmRyb2lk
IHdlYiB2aWV3IGFwcGxpY2F0aW9uIGNvdWxkIHByb3ZpZGUgdGhlIGRlZmF1bHQgcG9zdGVyCisg
ICAgICAgIGZvciBhIHZpZGVvIHRoYXQgZG9lc24ndCBoYXZlIHRoZSBwb3N0ZXIgYXR0cmlidXRl
LgorCisgICAgICAgIFRvIHByb3ZpZGUgdGhlIGRlZmF1bHQgcG9zdGVyLCB0aGUgYXBwbGljYXRp
b24gbXVzdCBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMCisgICAgICAgIHNldHRpbmcgYW5kIHJl
dHVybiB0aGUgaW1hZ2UgaW4gdGhlIHJlc3BvbnNlIG9mIHRoYXQgVVJMLgorCisgICAgICAgIFRo
ZSB3YXkgdG8gZG8gdGhpcyB3b3VsZCBiZToKKworICAgICAgICBBKSBSZXBsYWNlIHRoZSBFbGVt
ZW50OjppbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUgZnVuY3Rpb24gd2l0aCBhbgorICAgICAgICAg
ICBFbGVtZW50OjppbWFnZVNvdXJjZVVSTCBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGltYWdl
U291cmNlVVJMIGFzIGEKKyAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJi4gVGhlIGJvZHkg
d2lsbCBiZSB0aGUgc2FtZSBhcyBiZWZvcmUsIGl0IHdpbGwganVzdCBhbHNvCisgICAgICAgICAg
IGluY2x1ZGUgYSBjYWxsIHRvIGdldEF0dHJpYnV0ZS4gQWxzbyB3aWxsIG5lZWQgdG8gcmV2aXNl
IHRoZSBmb3VyIGNsYXNzZXMKKyAgICAgICAgICAgdGhhdCBvdmVycmlkZSB0aGF0IGZ1bmN0aW9u
LgorCisgICAgICAgIEIpIEFkZCBhIG5ldyBIVE1MVmlkZW9FbGVtZW50Ojpwb3N0ZXJJbWFnZVVS
TCBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgdGhlCisgICAgICAgICAgIGRlZmF1bHQgcG9zdGVy
IFVSTCBsb2dpYy4KKworICAgICAgICBDKSBVcGRhdGUgdGhlIGZvdXIgZnVuY3Rpb25zIHRoYXQg
Z2V0IHRoZSBwb3N0ZXIgYXR0cmlidXRlIHRvIGhhbmRsZSBwb3N0ZXIKKyAgICAgICAgICAgbG9h
ZGluZyBhbmQgZGlzcGxheSB0byBjYWxsIHBvc3RlckltYWdlVVJMLgorCisgICAgICAgICAgIDEp
IEhUTUxWaWRlb0VsZW1lbnQ6OmltYWdlU291cmNlVVJMLgorICAgICAgICAgICAyKSBIVE1MVmlk
ZW9FbGVtZW50OjpzZXREaXNwbGF5TW9kZS4KKyAgICAgICAgICAgMykgSFRNTFZpZGVvRWxlbWVu
dDo6dXBkYXRlRGlzcGxheVN0YXRlLgorICAgICAgICAgICA0KSBIVE1MTWVkaWFFbGVtZW50Ojpn
ZXRQbHVnaW5Qcm94eVBhcmFtcy4gV2lsbCBuZWVkIHRvIGNhc3QgdG8KKyAgICAgICAgICAgICAg
SFRNTFZpZGVvRWxlbWVudCBhZnRlciBjaGVja2luZyBpc1ZpZGVvLgorCisgICAgICAgICogbWVk
aWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92
aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTA1ICBB
bG9rIFByaXlhZGFyc2hpICA8YWxva3BAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlYmFzZWxp
bmUgdGV4dCBvdXRwdXQgZm9yIG9wYXF1ZSBHcmFwaGljc0xheWVycwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY3ZjBmYTVjOGE1N2IwNTUzNmU0ZWVjOWVhNjUwNTgxNzE0NWViZDAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzIEBACitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1k
ZWZhdWx0LXBvc3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MjllM2E5MjQ4YTVjZTI3YmM2NzZjMmNk
MDc3ZjZlNzZkNGM1NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1kZWZhdWx0LXBvc3Rlci5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICB9CisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgdmFyIGRlZmF1bHRfcG9zdGVy
ID0gJ2NvbnRlbnQvZ3JlZW5ib3gucG5nJzsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdz
LnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChkZWZhdWx0X3Bvc3Rlcik7CisgICAgYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHBvc3RlciA9IHdpbmRvdy5p
bnRlcm5hbHMuZ2V0SW1hZ2VTb3VyY2VVUkwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVv
LW5vLXBvc3RlciIpKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3RlciA9
PSBkZWZhdWx0X3Bvc3RlcikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0
ID0gIkZBSUwiOworICAgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IGltYWdlIHNvdXJjZSBpcyBu
dWxsIjsKKworICAgICAgcG9zdGVyID0gIHdpbmRvdy5pbnRlcm5hbHMuZ2V0SW1hZ2VTb3VyY2VV
UkwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLWhhcy1wb3N0ZXIiKSk7CisgICAgICBp
ZiAocG9zdGVyKSB7CisgICAgICAgIGlmIChwb3N0ZXIgPT0gImNvbnRlbnQvYWJlLnBuZyIpCisg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5u
ZXJUZXh0ID0gIlBBU1MiOworICAgICAgICBlbHNlCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IHBvc3RlciB3
YXMgY2hhbmdlZCI7CisgICAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IGltYWdlIHNvdXJjZSBp
cyBudWxsIjsKKworICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgZmFsc2Up
OworICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJyZXN1bHQtbm8t
cG9zdGVyIj48L3ByZT4KKzxwcmUgaWQ9InJlc3VsdC1oYXMtcG9zdGVyIj48L3ByZT4KKzx2aWRl
byBpZD0idmlkZW8tbm8tcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHByZWxvYWQ9Im5v
bmUiIC8+Cis8dmlkZW8gaWQ9InZpZGVvLWhhcy1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1w
NCIgcG9zdGVyPSJjb250ZW50L2FiZS5wbmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBv
c3Rlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBv
c3Rlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRlZWM5ZWE2
NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVv
LW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BBU1MKK1BB
U1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0
ZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzY4YmEwNjJjMGQ3Y2EzZjQ2ZDVkZjNlZTlmYTNiNTlhNDMzZGQxOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVy
Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgIH0KKworICBpZiAo
d2luZG93LmludGVybmFscykgeworICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlv
bigpIHsKKyAgICAgIHZhciBwb3N0ZXIgPSB3aW5kb3cuaW50ZXJuYWxzLmdldEltYWdlU291cmNl
VVJMKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1uby1wb3N0ZXIiKSk7CisgICAgICBp
ZiAocG9zdGVyKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBv
c3RlciIpLmlubmVyVGV4dCA9ICJGQUlMIDogcG9zdGVyIHdhcyBhZGRlZC4iOworICAgICAgZWxz
ZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlu
bmVyVGV4dCA9ICJQQVNTIjsKKworICAgICAgcG9zdGVyID0gd2luZG93LmludGVybmFscy5nZXRJ
bWFnZVNvdXJjZVVSTChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8taGFzLXBvc3RlciIp
KTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3RlciA9PSAiY29udGVudC9h
YmUucG5nIikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1w
b3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJ
TDogcG9zdGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogSW1h
Z2Ugc291cmNlIGlzIG51bGwiOworCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICB9LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9
InJlc3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1wb3N0ZXIiPjwv
cHJlPgorPHZpZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIg
cHJlbG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBvc3RlciIgc3JjPSJjb250
ZW50L3Rlc3QubXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJlbG9hZD0ibm9uZSIgLz4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192167</attachid>
            <date>2013-03-08 00:19:00 -0800</date>
            <delta_ts>2013-03-08 18:06:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130308001503.patch</filename>
            <type>text/plain</type>
            <size>32640</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFiMzlhZDJkN2JiN2Ex
ODA0ODVlOWVmY2YzNmE2MDM5NmYyMDVmZC4uOTQ0NzFkNjFhN2UwNzFkZDRhMzU3N2UxMmVhZWY2
MDgwZjBmNTFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTA2ICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICBUaGUgQW5kcm9pZCB3ZWIgdmlldyBhcHBsaWNhdGlv
biBjb3VsZCBwcm92aWRlIHRoZSBkZWZhdWx0IHBvc3RlcgorICAgICAgICBmb3IgYSB2aWRlbyB0
aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgcG9zdGVyIGF0dHJpYnV0ZS4KKworICAgICAgICBUbyBwcm92
aWRlIHRoZSBkZWZhdWx0IHBvc3RlciwgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc2V0IGRlZmF1bHRW
aWRlb1Bvc3RlclVSTAorICAgICAgICBzZXR0aW5nIGFuZCByZXR1cm4gdGhlIGltYWdlIGluIHRo
ZSByZXNwb25zZSBvZiB0aGF0IFVSTC4KKworICAgICAgICBUaGUgd2F5IHRvIGRvIHRoaXMgd291
bGQgYmU6CisKKyAgICAgICAgQSkgUmVwbGFjZSB0aGUgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lIGZ1bmN0aW9uIHdpdGggYW4KKyAgICAgICAgICAgRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBpbWFnZVNvdXJjZVVSTCBhcyBhCisgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYuIFRoZSBib2R5IHdpbGwgYmUgdGhlIHNhbWUgYXMg
YmVmb3JlLCBpdCB3aWxsIGp1c3QgYWxzbworICAgICAgICAgICBpbmNsdWRlIGEgY2FsbCB0byBn
ZXRBdHRyaWJ1dGUuIEFsc28gd2lsbCBuZWVkIHRvIHJldmlzZSB0aGUgZm91ciBjbGFzc2VzCisg
ICAgICAgICAgIHRoYXQgb3ZlcnJpZGUgdGhhdCBmdW5jdGlvbi4KKworICAgICAgICBCKSBBZGQg
YSBuZXcgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwgZnVuY3Rpb24gdGhhdCBpbXBs
ZW1lbnRzIHRoZQorICAgICAgICAgICBkZWZhdWx0IHBvc3RlciBVUkwgbG9naWMuCisKKyAgICAg
ICAgQykgVXBkYXRlIHRoZSBmb3VyIGZ1bmN0aW9ucyB0aGF0IGdldCB0aGUgcG9zdGVyIGF0dHJp
YnV0ZSB0byBoYW5kbGUgcG9zdGVyCisgICAgICAgICAgIGxvYWRpbmcgYW5kIGRpc3BsYXkgdG8g
Y2FsbCBwb3N0ZXJJbWFnZVVSTC4KKworICAgICAgICAgICAxKSBIVE1MVmlkZW9FbGVtZW50Ojpp
bWFnZVNvdXJjZVVSTC4KKyAgICAgICAgICAgMikgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxh
eU1vZGUuCisgICAgICAgICAgIDMpIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURpc3BsYXlTdGF0
ZS4KKyAgICAgICAgICAgNCkgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMu
IFdpbGwgbmVlZCB0byBjYXN0IHRvCisgICAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgYWZ0
ZXIgY2hlY2tpbmcgaXNWaWRlby4KKworICAgICAgICAqIFdlYkNvcmUub3JkZXI6IFJlcGxhY2Ug
aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdp
dGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgIChFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOiBSZXBsYWNlIGltYWdlU291cmNlQXR0
cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVk
RWxlbWVudC5oOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VT
b3VyY2VVUkwoKQorICAgICAgICAoSFRNTEVtYmVkRWxlbWVudCk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmdldFBsdWdpblByb3h5UGFyYW1zKTogQ2hhbmdlIHRvIHVzZSBwb3N0ZXJJbWFnZVVSTAorICAg
ICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9iamVjdEVsZW1lbnQ6OmltYWdlU291cmNlVVJMKTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJp
YnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBodG1sL0hUTUxPYmpl
Y3RFbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIHdpdGggaW1hZ2VT
b3VyY2VVUkwKKyAgICAgICAgKEhUTUxPYmplY3RFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
SFRNTFZpZGVvRWxlbWVudCk6IHNldCBtX2RlZmF1bHRQb3N0ZXJVUkwgaWYgdGhlcmUgaXMgc3Vj
aCBzZXR0aW5ncworICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3Vy
Y2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1v
ZGUpOiBVc2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKTogVXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKTogUmV0dXJuIGltYWdl
IHNvdXJjZSdzIEtVUkwKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oOgorICAgICAgICAoSFRNTFZpZGVvRWxlbWVudCk6CisgICAgICAgICogbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcDogVXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5pbjogQWRkIGRlZmF1bHRWaWRlb1Bvc3RlclVSTCBzZXR0aW5nLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKTogdXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRV
UkxGb3JJbWFnZU5vZGUpOiB1c2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIHJlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFi
c29sdXRlSW1hZ2VVUkwpOiB1c2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIHN2Zy9TVkdJ
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjppbWFn
ZVNvdXJjZVVSTCk6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFn
ZVNvdXJjZVVSTCgpCisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAo
U1ZHSW1hZ2VFbGVtZW50KTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRo
IGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOiBz
dXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyk6IHN1cHBvcnQgcmVzdG9yZSBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpz
ZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwpOiBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6Cisg
ICAgICAgIChCYWNrdXApOiBzdXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisg
ICAgICAgIChJbnRlcm5hbFNldHRpbmdzKTogQWRkIHNldERlZmF1bHRWaWRvZVBvc3RlclVSTCBt
ZXRob2QuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDogQWRkIHNldERl
ZmF1bHRWaWRlb1Bvc3RlclVSTCBmb3IgdGVzdCBwdXJwb3NlLgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Z2V0SW1hZ2VTb3Vy
Y2VVUkwpOiBBZGQgZ2V0SW1hZ2VTb3VyY2VVUkwgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDogQWRkIGdldEltYWdlU291cmNlVVJMIG1l
dGhvZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFkZCBnZXRJbWFnZVNvdXJj
ZVVSTCBtZXRob2QuCisKIDIwMTMtMDMtMDcgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21h
aWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSB1bnVzZWQgcmV0dXJuIHZh
bHVlIGFmdGVyIHIxMjI5NjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3Jk
ZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDNiMDZlNWI0YTEzYTVhZTNh
ZGFhMDk1ZmRiNDE0ODM4OTE5ZTMyMGIuLmU0NmY0ZjNlNTUwOTcyM2NhNTg1ZGJkMWQyYTlmOTJl
OGRhNjZmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtNTQxNCw3ICs1NDE0LDcgQEAgX19aTks3
V2ViQ29yZTE2SFRNTEltYWdlRWxlbWVudDEwbWFwVG9FbnRyeUVSS05TXzEzUXVhbGlmaWVkTmFt
ZUVSTlNfMjBNYXBwZWRBdHQKIF9fWk43V2ViQ29yZTE2SFRNTEltYWdlRWxlbWVudDIwcGFyc2VN
YXBwZWRBdHRyaWJ1dGVFUE5TXzlBdHRyaWJ1dGVFCiBfX1pON1dlYkNvcmUxMUltYWdlTG9hZGVy
Mzh1cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvckV2CiBfX1pON1dlYkNvcmUx
MUltYWdlTG9hZGVyMTd1cGRhdGVGcm9tRWxlbWVudEV2Ci1fX1pOSzdXZWJDb3JlN0VsZW1lbnQy
NGltYWdlU291cmNlQXR0cmlidXRlTmFtZUV2CitfX1pOSzdXZWJDb3JlN0VsZW1lbnQxNGltYWdl
U291cmNlVVJMRXYKIF9fWk5LN1dlYkNvcmUxNUhUTUxJbWFnZUxvYWRlcjlzb3VyY2VVUklFUktO
M1dURjEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlMjBDYWNoZWRSZXNvdXJjZUxvYWRlcjEy
cmVxdWVzdEltYWdlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlTDExYXBwZW5kQVNDSUlF
UktOM1dURjZTdHJpbmdFUEtjbVJOUzBfNlZlY3RvckljTG01MTJFRUUKQEAgLTEwNDgxLDcgKzEw
NDgxLDcgQEAgX19aTjdXZWJDb3JlMjNNZWRpYVBsYXllclByaXZhdGVRVEtpdEQwRXYKIF9fWk43
V2ViQ29yZTIzTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQyMnRlYXJEb3duVmlkZW9SZW5kZXJpbmdF
dgogLVtXZWJDb3JlTW92aWVPYnNlcnZlciBkaXNjb25uZWN0XQogX19aTjdXZWJDb3JlMjdzZXRK
U0hUTUxWaWRlb0VsZW1lbnRQb3N0ZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVO
UzBfN0pTVmFsdWVFCi1fX1pOSzdXZWJDb3JlMTZIVE1MVmlkZW9FbGVtZW50MjRpbWFnZVNvdXJj
ZUF0dHJpYnV0ZU5hbWVFdgorX19aTks3V2ViQ29yZTE2SFRNTFZpZGVvRWxlbWVudDE0aW1hZ2VT
b3VyY2VVUkxFdgogX19aTjdXZWJDb3JlMTFSZW5kZXJWaWRlbzEyaW1hZ2VDaGFuZ2VkRVB2UEtO
U183SW50UmVjdEUKIF9fWk43V2ViQ29yZTIyV2ViR0xDb250ZXh0QXR0cmlidXRlczZjcmVhdGVF
dgogX19aTjdXZWJDb3JlMjNDYW52YXNDb250ZXh0QXR0cmlidXRlc0MyRXYKQEAgLTExMTQ5LDcg
KzExMTQ5LDcgQEAgX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUxMHBhZGRpbmdUb3BFdgogX19a
Tks3V2ViQ29yZTExUmVuZGVyU3R5bGUxMnBhZGRpbmdSaWdodEV2CiBfX1pOSzdXZWJDb3JlMTFS
ZW5kZXJTdHlsZTEzcGFkZGluZ0JvdHRvbUV2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTEx
cGFkZGluZ0xlZnRFdgotX19aTks3V2ViQ29yZTE3SFRNTE9iamVjdEVsZW1lbnQyNGltYWdlU291
cmNlQXR0cmlidXRlTmFtZUV2CitfX1pOSzdXZWJDb3JlMTdIVE1MT2JqZWN0RWxlbWVudDE0aW1h
Z2VTb3VyY2VVUkxFdgogX19aTjdXZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDE5ZGVmYXVsdEV2
ZW50SGFuZGxlckVQTlNfNUV2ZW50RQogX19aTks3V2ViQ29yZTE2SFRNTEVsZW1lbnRTdGFjazEz
aW5CdXR0b25TY29wZUVSS05TXzEzUXVhbGlmaWVkTmFtZUUKIF9fWk43V2ViQ29yZUwyMmRlY29k
ZU5vbkFTQ0lJU2VxdWVuY2VFUEtoagpAQCAtMTEyNTEsNyArMTEyNTEsNyBAQCBfX1pON1dlYkNv
cmUxNVNWR1VSSVJlZmVyZW5jZTE2aXNLbm93bkF0dHJpYnV0ZUVSS05TXzEzUXVhbGlmaWVkTmFt
ZUUKIF9fWk5LN1dlYkNvcmUxNVNWR0ltYWdlRWxlbWVudDIyc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
c0V2CiBfX1pOSzNXVEYxMlN0cmluZ0FwcGVuZElOU182U3RyaW5nRVMxX0Vjdk5TXzEyQXRvbWlj
U3RyaW5nRUV2CiBfX1pUaG4zNjBfTjdXZWJDb3JlMTVTVkdJbWFnZUVsZW1lbnQxNnNldEhyZWZC
YXNlVmFsdWVFUktOM1dURjZTdHJpbmdFCi1fX1pOSzdXZWJDb3JlMTVTVkdJbWFnZUVsZW1lbnQy
NGltYWdlU291cmNlQXR0cmlidXRlTmFtZUV2CitfX1pOSzdXZWJDb3JlMTVTVkdJbWFnZUVsZW1l
bnQxNGltYWdlU291cmNlVVJMRXYKIF9fWk5LN1dlYkNvcmUxNFNWR0ltYWdlTG9hZGVyOXNvdXJj
ZVVSSUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlN0VsZW1lbnQ3YmFzZVVS
SUV2CiBfX1pON1dlYkNvcmUxNVNWR0ltYWdlRWxlbWVudDIwaW5zZXJ0ZWRJbnRvRG9jdW1lbnRF
dgpAQCAtMjU4MzQsNyArMjU4MzQsNyBAQCBfX1pOSzdXZWJDb3JlMTZQREZEb2N1bWVudEltYWdl
MTdmaWxlbmFtZUV4dGVuc2lvbkV2CiBfX1pON1dlYkNvcmU1SW1hZ2UxMGdldE5TSW1hZ2VFdgog
X19aTjdXZWJDb3JlMzNjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VFUE5TXzExQ2Fj
aGVkSW1hZ2VFCiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE3c3VnZ2VzdGVk
RmlsZW5hbWVFdgotX19aTks3V2ViQ29yZTE2SFRNTEVtYmVkRWxlbWVudDI0aW1hZ2VTb3VyY2VB
dHRyaWJ1dGVOYW1lRXYKK19fWk5LN1dlYkNvcmUxNkhUTUxFbWJlZEVsZW1lbnQxNGltYWdlU291
cmNlVVJMRXYKIF9fWk5LN1dlYkNvcmUxOERvY3VtZW50T3JkZXJlZE1hcDE5Z2V0RWxlbWVudEJ5
TWFwTmFtZUVQTjNXVEYxNkF0b21pY1N0cmluZ0ltcGxFUEtOU185VHJlZVNjb3BlRQogX19aTks3
V2ViQ29yZTE4RG9jdW1lbnRPcmRlcmVkTWFwM2dldElYYWRMX1pOU18xN2tleU1hdGNoZXNNYXBO
YW1lRVBOM1dURjE2QXRvbWljU3RyaW5nSW1wbEVQTlNfN0VsZW1lbnRFRUVFRVM2X1M0X1BLTlNf
OVRyZWVTY29wZUUKIF9fWk43V2ViQ29yZTE0SW1hZ2VJbnB1dFR5cGUyNndpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5NTMxODU1ZWVlMGZjNWNl
ODJkMmNmNWEzMzU4NmIzNzE5ZTE3MzlhLi40NDYxNjA2OTQ3ZmY2ZGFjYWMwZWY5ODU2YzBkODc5
MzdhMGRjMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMTIxLDkgKzExMjEsOSBAQCBL
VVJMIEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogICAgIHJldHVybiBLVVJMKHBhcmVudEJhc2Us
IGJhc2VBdHRyaWJ1dGUpOwogfQogCi1jb25zdCBRdWFsaWZpZWROYW1lJiBFbGVtZW50OjppbWFn
ZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50
OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNyY0F0dHI7CisgICAgcmV0
dXJuIGdldEF0dHJpYnV0ZShzcmNBdHRyKTsKIH0KIAogYm9vbCBFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKaW5kZXggNDk4OGIxZDc3ZGRkZTRlNDMwZjdiNTUzYzRlNjMyY2RkZDA1ZjNiZS4uNDYyN2I2
OThlYjBkNTZlN2JlMTZkMmMzZWUxODM1MzJlOTllZDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBA
IC00NTEsNyArNDUxLDcgQEAgcHVibGljOgogICAgIEtVUkwgZ2V0VVJMQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBLVVJMIGdldE5vbkVtcHR5VVJMQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAotICAgIHZpcnR1YWwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3Q7CiAgICAgdmlydHVhbCBT
dHJpbmcgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUsIEZvY3VzRGly
ZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwCmluZGV4IGMzM2UyZjhiOWMwZDRkOWIzZmU5OTVkNDA2ODNhNzI5OWUwOTAy
ZjUuLmRmMmMxNmJjYWJjMDZlODhiMjIwZmY4NjE5NDlmZWM5NjQ4OWNlOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMjEwLDkgKzIxMCw5IEBAIGJvb2wg
SFRNTEVtYmVkRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1
dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3JjQXR0ciB8fCBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi1jb25z
dCBRdWFsaWZpZWROYW1lJiBIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNvdXJjZUF0dHJpYnV0ZU5h
bWUoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNv
dXJjZVVSTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNyY0F0dHI7CisgICAgcmV0dXJuIGdldEF0
dHJpYnV0ZShzcmNBdHRyKTsKIH0KIAogdm9pZCBIVE1MRW1iZWRFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCmluZGV4IGE1OTViYTRkNTlhYzdjMjAyY2YxNzVm
OTA5MTZmZTQxYjE4NjBmYmYuLjQ0MmRjYjlhYjExMGJlOTRlMGU4ZTE0YTA2MmI4MzE3NzlkNGUw
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCkBAIC00MSw3ICs0MSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldEZvckpTQmluZGluZ3MoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNjAwYWIz
NTU5MTExY2ZlMzI1ODdjZGZmZTAwMjI5YzMyODk1OWViMy4uNjhkMDI4YjA2MGE1OGQ5OTFlNjRk
ZjczMTRjYjRkMDA0YWNmMjNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC00MDM1LDcgKzQwMzUsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBs
dWdpblByb3h5UGFyYW1zKEtVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4mIG5hbWVzLCBWZQogICAg
IEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CiAKICAgICBpZiAoaXNWaWRlbygp
KSB7Ci0gICAgICAgIEtVUkwgcG9zdGVyVVJMID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUocG9z
dGVyQXR0cik7CisgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvID0gc3RhdGljX2Nhc3Q8
SFRNTFZpZGVvRWxlbWVudCo+KHRoaXMpOworICAgICAgICBLVVJMIHBvc3RlclVSTCA9IHZpZGVv
LT5wb3N0ZXJJbWFnZVVSTCgpOwogICAgICAgICBpZiAoIXBvc3RlclVSTC5pc0VtcHR5KCkgJiYg
ZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLT53aWxsTG9hZE1lZGlhRWxlbWVudFVSTChwb3N0ZXJV
UkwpKSB7CiAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxl
bWVudF9wb3N0ZXJfIikpOwogICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChwb3N0ZXJVUkwuc3Ry
aW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBm
NGQ2NzU4MmQ0OWVhY2Q1NGEzMzcyMjM5NGNjOGU3NWUyNjM3YzAzLi5lZjQyZDBiODQ5MzgyNTkz
YzAxNmViYWU1NzQ1NTY0OWEzNzYwZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcApAQCAtMzY0LDkgKzM2NCw5IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6
OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJl
dHVybiBhdHRyaWJ1dGUubmFtZSgpID09IGRhdGFBdHRyIHx8IChhdHRyaWJ1dGUubmFtZSgpID09
IHVzZW1hcEF0dHIgJiYgYXR0cmlidXRlLnZhbHVlKCkuc3RyaW5nKClbMF0gIT0gJyMnKSB8fCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi1j
b25zdCBRdWFsaWZpZWROYW1lJiBIVE1MT2JqZWN0RWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1
dGVOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9iamVjdEVsZW1lbnQ6Omlt
YWdlU291cmNlVVJMKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGF0YUF0dHI7CisgICAgcmV0dXJu
IGdldEF0dHJpYnV0ZShkYXRhQXR0cik7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnJl
bmRlckZhbGxiYWNrQ29udGVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmgKaW5kZXggNWI3ZTcyMGI5NzQ0NjBmY2ExMWQyMTUzNTdiZjg5ZmQ5NjE3NTJjMy4uYmY3MTdk
YTU1NTFhMzVjN2JmMTg3N2Q4MzMyNzZjYTc3YTllNjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1l
JiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGNmZTk1NzEzZmY5ZGY4
ZDczNTc1YjgwMmVlNTgxZjA4ZGU2Nzg0MWQuLjZiYzA1MmE2YjBmOTI2NGVjYTg3MWVlZjAwNzk2
OGVjODJhNjRiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlkZW8uaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OSw2ICs1MCw4IEBAIGlubGlu
ZSBIVE1MVmlkZW9FbGVtZW50OjpIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50CiAgICAgOiBIVE1MTWVkaWFFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodmlkZW9UYWcp
KTsKKyAgICBpZiAoZG9jdW1lbnQtPnNldHRpbmdzKCkpCisgICAgICAgIG1fZGVmYXVsdFBvc3Rl
clVSTCA9IGRvY3VtZW50LT5zZXR0aW5ncygpLT5kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoKTsKIH0K
IAogUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNy
ZWF0ZWRCeVBhcnNlcikKQEAgLTE3OCwxNSArMTgxLDE4IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVu
dDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAg
cmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkgPT0gcG9zdGVyQXR0ciB8fCBIVE1MTWVkaWFFbGVtZW50
Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi1jb25zdCBRdWFsaWZpZWROYW1lJiBI
VE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdAorY29uc3Qg
QXRvbWljU3RyaW5nJiBIVE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHBvc3RlckF0dHI7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB1cmwgPSBn
ZXRBdHRyaWJ1dGUocG9zdGVyQXR0cik7CisgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gdXJsOworICAgIHJldHVybiBtX2RlZmF1bHRQb3N0ZXJVUkw7CiB9CiAKIHZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUgbW9kZSkKIHsKICAg
ICBEaXNwbGF5TW9kZSBvbGRNb2RlID0gZGlzcGxheU1vZGUoKTsKLSAgICBLVVJMIHBvc3RlciA9
IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpOworICAgIEtVUkwgcG9zdGVyID0g
cG9zdGVySW1hZ2VVUkwoKTsKIAogICAgIGlmICghcG9zdGVyLmlzRW1wdHkoKSkgewogICAgICAg
ICAvLyBXZSBoYXZlIGEgcG9zdGVyIHBhdGgsIGJ1dCBvbmx5IHNob3cgaXQgdW50aWwgdGhlIHVz
ZXIgdHJpZ2dlcnMgZGlzcGxheSBieSBwbGF5aW5nIG9yIHNlZWtpbmcgYW5kIHRoZQpAQCAtMjIx
LDcgKzIyNyw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUoRGlzcGxh
eU1vZGUgbW9kZSkKIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp1cGRhdGVEaXNwbGF5U3RhdGUo
KQogewotICAgIGlmIChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShwb3N0ZXJBdHRyKS5pc0VtcHR5
KCkpCisgICAgaWYgKHBvc3RlckltYWdlVVJMKCkuaXNFbXB0eSgpKQogICAgICAgICBzZXREaXNw
bGF5TW9kZShWaWRlbyk7CiAgICAgZWxzZSBpZiAoZGlzcGxheU1vZGUoKSA8IFBvc3RlcikKICAg
ICAgICAgc2V0RGlzcGxheU1vZGUoUG9zdGVyKTsKQEAgLTMwMSw2ICszMDcsMTQgQEAgdW5zaWdu
ZWQgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RHJvcHBlZEZyYW1lQ291bnQoKSBjb25zdAogfQog
I2VuZGlmCiAKK0tVUkwgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwoKQoreworICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgdXJsID0gaW1hZ2VTb3VyY2VVUkwoKTsKKyAgICBpZiAodXJs
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwodXJsKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmgKaW5kZXggY2Y0ZmVhY2ZjYjcxYjIyZTM2OTEzYThkOTc4NGNhZWY0
MTg1NDlhYi4uZmE0NDNmZTBkYWNhODgwMzIyY2VhZmY5OGM0MzBhNmRlYWU4MjQ1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTY1LDYgKzY1LDggQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBk
aXNwbGF5TW9kZSgpID09IFBvc3RlciB8fCBkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdG
b3JWaWRlbzsgfQogCisgICAgS1VSTCBwb3N0ZXJJbWFnZVVSTCgpOworCiBwcml2YXRlOgogICAg
IEhUTUxWaWRlb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCk7
CiAKQEAgLTgwLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8o
KSBjb25zdCB7IHJldHVybiBwbGF5ZXIoKSAmJiBwbGF5ZXIoKS0+aGFzVmlkZW8oKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBj
b25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1l
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwpAQCAtODks
NiArOTEsNyBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFn
ZUxvYWRlcjsKIAorICAgIEF0b21pY1N0cmluZyBtX2RlZmF1bHRQb3N0ZXJVUkw7CiB9OwogCiB9
IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCA0MmFk
YzdiN2FlNjkwN2I0YTY3YzlkM2QxMjZkM2VmMzU5M2MyYjkxLi40YWM4YzQ3NmQ4OTM1OWNiNzA3
ZjYwZDQyZDYwMjhmNTI1ODMzMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5j
cHAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVu
dCgpCiAgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQXRvbWljU3RyaW5nIGF0dHIgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShtX2VsZW1lbnQt
PmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpKTsKKyAgICBBdG9taWNTdHJpbmcgYXR0ciA9IG1f
ZWxlbWVudC0+aW1hZ2VTb3VyY2VVUkwoKTsKIAogICAgIGlmIChhdHRyID09IG1fZmFpbGVkTG9h
ZFVSTCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggZTc5OTFl
YWRjYzE0MDMwN2ZjMDk3NjdiZWZmMjE0YTUzYmY3ZWJhZC4uMjg2NjM2Y2MxNWM0N2ZlNDY0ZjVh
MDNlZmE3ZDVjOTJmZDA4ZjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCkBAIC0xOTUsNCAr
MTk1LDcgQEAgdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCBpbml0aWFsPWRlZmF1bHRVbmlmaWVk
VGV4dENoZWNrZXJFbmFibGVkCiAKIGxvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFi
bGVkIGluaXRpYWw9ZmFsc2UKIAorIyBTb21lIGFwcHMgY291bGQgaGF2ZSBhIGRlZmF1bHQgdmlk
ZW8gcG9zdGVyIGlmIGl0IGlzIG5vdCBzZXQuCitkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgdHlwZT1T
dHJpbmcKKwogc21hcnRJbnNlcnREZWxldGVFbmFibGVkIGluaXRpYWw9dHJ1ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5j
cHAKaW5kZXggNzYwOTY2M2VkZThlYTBiY2FiOGVhNGRlMjc2NTMzMTg5Nzg4ODhjNi4uMzE1NWVk
ZWI4ZjcyN2I2ODNiYzRjZDc5MTEwYjg4YzNjOTQ0ZTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogI2VuZGlmCiAgICAgZWxzZSBpZiAobm9k
ZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmVtYmVkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6b2JqZWN0VGFnKSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwotICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5nZXRB
dHRyaWJ1dGUoZWxlbWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICB1
cmxTdHJpbmcgPSBlbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwogICAgIH0KICAgICBLVVJMIHVy
bCA9IHVybFN0cmluZy5pc0VtcHR5KCkgPyBLVVJMKCkgOiBub2RlLT5kb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModXJsU3RyaW5nKSk7CiAg
ICAgV2ViS2l0OjpXZWJJbWFnZSB3ZWJJbWFnZSA9IGJpdG1hcC0+Yml0bWFwKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggZDZkODY3ZTkx
N2FjYTcwN2Q0ZWE4YjM3Zjc3YzFmMDE2YTI1YmMzMy4uODFkZWE4MDY0MmNkZGU4ODI3YWI3OTk4
MTk0NmI5ZDM4ZjA0NDc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkR3RrLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBLVVJMIGdldFVSTEZvcklt
YWdlTm9kZShOb2RlKiBub2RlKQogI2VuZGlmCiAgICAgZWxzZSBpZiAobm9kZS0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OmVtYmVkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2Jq
ZWN0VGFnKSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG5vZGUpOwotICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoZWxl
bWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICB1cmxTdHJpbmcgPSBl
bGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwogICAgIH0KICAgICByZXR1cm4gdXJsU3RyaW5nLmlz
RW1wdHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBmMWEzNDZlNzg4ZTRjNjQyZTljZjUz
NzQ1ZGVmYzkyMzlmYWNiZGQwLi5mMmQ2NWYwYTUxNjAyZmM5MTdiNzllNWE2ZTgwN2U4ZDY4Mzk1
ZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0z
MjAsNyArMzIwLDcgQEAgS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29u
c3QKICNlbmRpZgogICAgICAgICkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsKLSAgICAgICAgdXJs
U3RyaW5nID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGVsZW1lbnQtPmltYWdlU291cmNlQXR0cmli
dXRlTmFtZSgpKTsKKyAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+aW1hZ2VTb3VyY2VVUkwo
KTsKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIEtVUkwoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhZmI0ZGRjYmM2ZGY3MGNmZmE0NzRkZmE3MWNhNmVl
MWI4MDYwNGVlLi4wZDIzYmUzYjI1YjMwZDkzNWYzNjA0N2QwMzJjMmU0MWE4ZmU5MjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMjIyLDkgKzIyMiw5IEBAIE5v
ZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHSW1hZ2VFbGVtZW50OjppbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSoKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAotY29u
c3QgUXVhbGlmaWVkTmFtZSYgU1ZHSW1hZ2VFbGVtZW50OjppbWFnZVNvdXJjZUF0dHJpYnV0ZU5h
bWUoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBTVkdJbWFnZUVsZW1lbnQ6OmltYWdlU291
cmNlVVJMKCkgY29uc3QKIHsKLSAgICByZXR1cm4gWExpbmtOYW1lczo6aHJlZkF0dHI7CisgICAg
cmV0dXJuIGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CiB9CiAKIHZvaWQgU1ZH
SW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggY2Ew
YjYyZTU3MmU4YzU3ZjA2NTQyMDM3YjE2OGM4NmIyZDEyZTY0OC4uZGU3YTY0YWExY2I4NWVmODY3
ZTY2ZTEwMDAyY2MzYWY0MjUxNmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
aApAQCAtNTgsOCArNTgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKLSAKLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291
cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0OyAgICAgICAKKworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGMwZjU4Nzdh
NDg3OWIxY2FlZWViYjc3MTU1ZDVjNmZiY2ZlYjQwYjkuLmMzZjkwZDVkMjFmZDAyNGZjMDQyODg1
ZWM2MDE0YTg0OTBmZmUzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmNwcApAQCAtOTQsNiArOTQsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJh
Y2t1cChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyhz
ZXR0aW5ncy0+c2hvdWxkRGlzcGxheUNhcHRpb25zKCkpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlU
ZXh0RGVzY3JpcHRpb25zKHNldHRpbmdzLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygp
KQogI2VuZGlmCisgICAgLCBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTChzZXR0aW5ncy0+ZGVmYXVs
dFZpZGVvUG9zdGVyVVJMKCkpCiAgICAgLCBtX29yaWdpbmFsVGltZVdpdGhvdXRNb3VzZU1vdmVt
ZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoc2V0dGluZ3MtPnRpbWVXaXRob3V0TW91c2VNb3ZlbWVu
dEJlZm9yZUhpZGluZ0NvbnRyb2xzKCkpCiB7CiB9CkBAIC0xMzAsNiArMTMxLDcgQEAgdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyogc2V0dGluZ3MpCiAg
ICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhtX3Nob3VsZERpc3BsYXlDYXB0
aW9ucyk7CiAgICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKG1f
c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMpOwogI2VuZGlmCisgICAgc2V0dGluZ3MtPnNl
dERlZmF1bHRWaWRlb1Bvc3RlclVSTChtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTCk7CiAgICAgc2V0
dGluZ3MtPnNldFRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKG1f
b3JpZ2luYWxUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyk7CiB9
CiAKQEAgLTQ4OSw2ICs0OTEsMTIgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMsIEV4Y2VwdGkKICAgICBzZXR0
aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVydmFsSW5TZWNvbmRzKTsKIH0KIAor
dm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEludGVybmFsU2V0dGluZ3NHdWFy
ZEZvclNldHRpbmdzKCk7CisgICAgc2V0dGluZ3MoKS0+c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJM
KHVybCk7Cit9CisKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0VGltZVdpdGhvdXRNb3VzZU1v
dmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoZG91YmxlIHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4IDI1YzI1ZmUwODg0MDRiNGJiYmZj
NjNhZDYxMmQ5MTIxZjMwZGFiNjYuLjU0OWIwZmE0NWZhNDBiMjZkYzg0OGE1MmEyNWFhNzhhMTcz
YTJjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC04
Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlDYXB0aW9u
czsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOwogI2VuZGlm
CisgICAgICAgIFN0cmluZyBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTDsKICAgICAgICAgYm9vbCBt
X29yaWdpbmFsVGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHM7CiAg
ICAgfTsKIApAQCAtMTI3LDYgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhbmdBdHRy
aWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0SW1hZ2Vz
RW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldE1pbmlt
dW1UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcywgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgc2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZv
cmVIaWRpbmdDb250cm9scyhkb3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggZGQz
NDE2MDE1MmVmYWUyZDdkZTVkNzdjYzQwNDc0YjE3YTNlNjlmNi4uY2RlOGRmNjI1ZjQxOWExYWE5
N2IzNjU3MTRkZGVhNWRjNGFlZmQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaWRsCkBAIC01OSw1ICs1OSw2IEBACiAgICAgdm9pZCBzZXRTdG9yYWdlQmxv
Y2tpbmdQb2xpY3koaW4gRE9NU3RyaW5nIHBvbGljeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAg
ICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChpbiBkb3VibGUgaW50
ZXJ2YWxJblNlY29uZHMpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIHZvaWQgc2V0RGVmYXVs
dFZpZGVvUG9zdGVyVVJMKGluIERPTVN0cmluZyBwb3N0ZXIpIHJhaXNlcyhET01FeGNlcHRpb24p
OwogICAgIHZvaWQgc2V0VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJv
bHMoaW4gZG91YmxlIHRpbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA2Y2IxNDY3NWQ0MWVmNDkwMzI0ZjkzOTNmM2E0YTZm
NmRkOGZkMDMzLi4yZmZiZjE3MTYyNjhkYzA2NThmM2ZlNDU0YWJlNjhmNTYwMDFmOGJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDU3LDQgKzIwNTcsMTMgQEAgU3Ry
aW5nIEludGVybmFsczo6bWFya2VyVGV4dEZvckxpc3RJdGVtKEVsZW1lbnQqIGVsZW1lbnQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBXZWJDb3JlOjptYXJrZXJUZXh0Rm9yTGlzdEl0
ZW0oZWxlbWVudCk7CiB9CiAKK1N0cmluZyBJbnRlcm5hbHM6OmdldEltYWdlU291cmNlVVJMKEVs
ZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZWxlbWVudCkg
eworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworICAgIH0KKyAgICByZXR1cm4gZWxlbWVudC0+aW1hZ2VTb3VyY2VVUkwoKTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYzFhYzJiYjYzMjFkODU1MjRmZTE5
N2E0MjkyY2Q3YTBiNzRlZmNjZi4uOWU5YjRkYTc0NjJmNjRlMTY4YzY0NWE5MWRlYzE4YTI1NmI5
OGI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yOTUsNiArMjk1LDggQEAg
cHVibGljOgogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogICAgIHZvaWQgZW5hYmxlTW9j
a1NwZWVjaFN5bnRoZXNpemVyKCk7CiAjZW5kaWYKKworICAgIFN0cmluZyBnZXRJbWFnZVNvdXJj
ZVVSTChFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICAgICAgICAgICAgICAKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKaW5kZXggOTMwNDhkNzdiNGNjM2YzN2ZlN2M0ZmU1MDljZWNlMDFh
MTk3YWM4MC4uMjdiNzRiYzEyZGJhNGFiYjcxODJhNTA5NWNhMTk2Y2M5NDYzOWJhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMjYwLDQgKzI2MCw2IEBACiAgICAgW0Nv
bmRpdGlvbmFsPUVOQ1JZUFRFRF9NRURJQV9WMl0gdm9pZCBpbml0aWFsaXplTW9ja0NETSgpOwog
CiAgICAgW0NvbmRpdGlvbmFsPVNQRUVDSF9TWU5USEVTSVNdIHZvaWQgZW5hYmxlTW9ja1NwZWVj
aFN5bnRoZXNpemVyKCk7CisKKyAgICBET01TdHJpbmcgZ2V0SW1hZ2VTb3VyY2VVUkwoaW4gRWxl
bWVudCBlbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGY3YmIyM2I4
NTFiZTI1MjE3ODcyZDYwZTZiY2NjMzkyN2U2NzM5YS4uNDE3ZmU3YjdjOTViZjBlNGVkZGM5MWFi
YjU0NGJiZGRmYjY3ZjY1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTAzLTA2ICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEFuZHJvaWQgd2ViIHZp
ZXcgYXBwbGljYXRpb24gY291bGQgcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIKKyAgICAgICAg
Zm9yIGEgdmlkZW8gdGhhdCBkb2Vzbid0IGhhdmUgdGhlIHBvc3RlciBhdHRyaWJ1dGUuCisKKyAg
ICAgICAgVG8gcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIsIHRoZSBhcHBsaWNhdGlvbiBtdXN0
IHNldCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwKKyAgICAgICAgc2V0dGluZyBhbmQgcmV0dXJuIHRo
ZSBpbWFnZSBpbiB0aGUgcmVzcG9uc2Ugb2YgdGhhdCBVUkwuCisKKyAgICAgICAgVGhlIHdheSB0
byBkbyB0aGlzIHdvdWxkIGJlOgorCisgICAgICAgIEEpIFJlcGxhY2UgdGhlIEVsZW1lbnQ6Omlt
YWdlU291cmNlQXR0cmlidXRlTmFtZSBmdW5jdGlvbiB3aXRoIGFuCisgICAgICAgICAgIEVsZW1l
bnQ6OmltYWdlU291cmNlVVJMIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgaW1hZ2VTb3VyY2VV
UkwgYXMgYQorICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmLiBUaGUgYm9keSB3aWxsIGJl
IHRoZSBzYW1lIGFzIGJlZm9yZSwgaXQgd2lsbCBqdXN0IGFsc28KKyAgICAgICAgICAgaW5jbHVk
ZSBhIGNhbGwgdG8gZ2V0QXR0cmlidXRlLiBBbHNvIHdpbGwgbmVlZCB0byByZXZpc2UgdGhlIGZv
dXIgY2xhc3NlcworICAgICAgICAgICB0aGF0IG92ZXJyaWRlIHRoYXQgZnVuY3Rpb24uCisKKyAg
ICAgICAgQikgQWRkIGEgbmV3IEhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMIGZ1bmN0
aW9uIHRoYXQgaW1wbGVtZW50cyB0aGUKKyAgICAgICAgICAgZGVmYXVsdCBwb3N0ZXIgVVJMIGxv
Z2ljLgorCisgICAgICAgIEMpIFVwZGF0ZSB0aGUgZm91ciBmdW5jdGlvbnMgdGhhdCBnZXQgdGhl
IHBvc3RlciBhdHRyaWJ1dGUgdG8gaGFuZGxlIHBvc3RlcgorICAgICAgICAgICBsb2FkaW5nIGFu
ZCBkaXNwbGF5IHRvIGNhbGwgcG9zdGVySW1hZ2VVUkwuCisKKyAgICAgICAgICAgMSkgSFRNTFZp
ZGVvRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwuCisgICAgICAgICAgIDIpIEhUTUxWaWRlb0VsZW1l
bnQ6OnNldERpc3BsYXlNb2RlLgorICAgICAgICAgICAzKSBIVE1MVmlkZW9FbGVtZW50Ojp1cGRh
dGVEaXNwbGF5U3RhdGUuCisgICAgICAgICAgIDQpIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdp
blByb3h5UGFyYW1zLiBXaWxsIG5lZWQgdG8gY2FzdCB0bworICAgICAgICAgICAgICBIVE1MVmlk
ZW9FbGVtZW50IGFmdGVyIGNoZWNraW5nIGlzVmlkZW8uCisKKyAgICAgICAgKiBtZWRpYS92aWRl
by1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Zp
ZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLW5v
LWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlk
ZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMDcgIEhheWF0byBJ
dG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5n
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY3ZjBmYTVjOGE1N2IwNTUzNmU0ZWVjOWVhNjUwNTgxNzE0NWVi
ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBv
c3Rlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitQQVNTCitQQVNTCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MjllM2E5
MjQ4YTVjZTI3YmM2NzZjMmNkMDc3ZjZlNzZkNGM1NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCkBAIC0wLDAgKzEsNDMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICB9CisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAg
dmFyIGRlZmF1bHRfcG9zdGVyID0gJ2NvbnRlbnQvZ3JlZW5ib3gucG5nJzsKKyAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldERlZmF1bHRWaWRlb1Bvc3RlclVSTChkZWZhdWx0X3Bvc3Rl
cik7CisgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgdmFy
IHBvc3RlciA9IHdpbmRvdy5pbnRlcm5hbHMuZ2V0SW1hZ2VTb3VyY2VVUkwoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInZpZGVvLW5vLXBvc3RlciIpKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAg
ICAgICAgaWYgKHBvc3RlciA9PSBkZWZhdWx0X3Bvc3RlcikKKyAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8t
cG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUwiOworICAgICAgfSBlbHNlCisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6
IGltYWdlIHNvdXJjZSBpcyBudWxsIjsKKworICAgICAgcG9zdGVyID0gIHdpbmRvdy5pbnRlcm5h
bHMuZ2V0SW1hZ2VTb3VyY2VVUkwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLWhhcy1w
b3N0ZXIiKSk7CisgICAgICBpZiAocG9zdGVyKSB7CisgICAgICAgIGlmIChwb3N0ZXIgPT0gImNv
bnRlbnQvYWJlLnBuZyIpCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIlBBU1MiOworICAgICAgICBlbHNlCisgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0
ID0gIkZBSUw6IHBvc3RlciB3YXMgY2hhbmdlZCI7CisgICAgICB9IGVsc2UKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZB
SUw6IGltYWdlIHNvdXJjZSBpcyBudWxsIjsKKworICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgfSwgZmFsc2UpOworICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cHJlIGlkPSJyZXN1bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUgaWQ9InJlc3VsdC1oYXMtcG9z
dGVyIj48L3ByZT4KKzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVz
dC5tcDQiIHByZWxvYWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZpZGVvLWhhcy1wb3N0ZXIiIHNy
Yz0iY29udGVudC90ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2FiZS5wbmciIHByZWxvYWQ9Im5v
bmUiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMGZhNWM4
YTU3YjA1NTM2ZTRlZWM5ZWE2NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKK1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRl
ZmF1bHQtcG9zdGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY4YmEwNjJjMGQ3Y2EzZjQ2ZDVkZjNlZTlm
YTNiNTlhNDMzZGQxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVv
LW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgIH0KKworICBpZiAod2luZG93LmludGVybmFscykgeworICAgIGFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBwb3N0ZXIgPSB3aW5kb3cuaW50ZXJu
YWxzLmdldEltYWdlU291cmNlVVJMKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1uby1w
b3N0ZXIiKSk7CisgICAgICBpZiAocG9zdGVyKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMIDogcG9zdGVyIHdhcyBh
ZGRlZC4iOworICAgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKworICAgICAgcG9zdGVyID0gd2lu
ZG93LmludGVybmFscy5nZXRJbWFnZVNvdXJjZVVSTChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dmlkZW8taGFzLXBvc3RlciIpKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBv
c3RlciA9PSAiY29udGVudC9hYmUucG5nIikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIi
KS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxzZQor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5l
clRleHQgPSAiRkFJTDogSW1hZ2Ugc291cmNlIGlzIG51bGwiOworCisgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwcmUgaWQ9InJlc3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVz
dWx0LWhhcy1wb3N0ZXIiPjwvcHJlPgorPHZpZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0i
Y29udGVudC90ZXN0Lm1wNCIgcHJlbG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFz
LXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIg
cHJlbG9hZD0ibm9uZSIgLz4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192318</attachid>
            <date>2013-03-08 18:03:59 -0800</date>
            <delta_ts>2013-03-13 10:35:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130308180001.patch</filename>
            <type>text/plain</type>
            <size>32826</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRlZDc1ZTYxMTNiZmQ0
NWYzMzhhNGViMWU0ZDAyMGI3MGZkYzllNS4uYWY5ZTI2Zjg4NmNhZTUxMDRlZDhiZGQ1M2NhMzM2
ODE5OWFmMGY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTA2ICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICBUaGUgQW5kcm9pZCB3ZWIgdmlldyBhcHBsaWNhdGlv
biBjb3VsZCBwcm92aWRlIHRoZSBkZWZhdWx0IHBvc3RlcgorICAgICAgICBmb3IgYSB2aWRlbyB0
aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgcG9zdGVyIGF0dHJpYnV0ZS4KKworICAgICAgICBUbyBwcm92
aWRlIHRoZSBkZWZhdWx0IHBvc3RlciwgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc2V0IGRlZmF1bHRW
aWRlb1Bvc3RlclVSTAorICAgICAgICBzZXR0aW5nIGFuZCByZXR1cm4gdGhlIGltYWdlIGluIHRo
ZSByZXNwb25zZSBvZiB0aGF0IFVSTC4KKworICAgICAgICBUaGUgd2F5IHRvIGRvIHRoaXMgd291
bGQgYmU6CisKKyAgICAgICAgQSkgUmVwbGFjZSB0aGUgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lIGZ1bmN0aW9uIHdpdGggYW4KKyAgICAgICAgICAgRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBpbWFnZVNvdXJjZVVSTCBhcyBhCisgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYuIFRoZSBib2R5IHdpbGwgYmUgdGhlIHNhbWUgYXMg
YmVmb3JlLCBpdCB3aWxsIGp1c3QgYWxzbworICAgICAgICAgICBpbmNsdWRlIGEgY2FsbCB0byBn
ZXRBdHRyaWJ1dGUuIEFsc28gd2lsbCBuZWVkIHRvIHJldmlzZSB0aGUgZm91ciBjbGFzc2VzCisg
ICAgICAgICAgIHRoYXQgb3ZlcnJpZGUgdGhhdCBmdW5jdGlvbi4KKworICAgICAgICBCKSBBZGQg
YSBuZXcgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwgZnVuY3Rpb24gdGhhdCBpbXBs
ZW1lbnRzIHRoZQorICAgICAgICAgICBkZWZhdWx0IHBvc3RlciBVUkwgbG9naWMuCisKKyAgICAg
ICAgQykgVXBkYXRlIHRoZSBmb3VyIGZ1bmN0aW9ucyB0aGF0IGdldCB0aGUgcG9zdGVyIGF0dHJp
YnV0ZSB0byBoYW5kbGUgcG9zdGVyCisgICAgICAgICAgIGxvYWRpbmcgYW5kIGRpc3BsYXkgdG8g
Y2FsbCBwb3N0ZXJJbWFnZVVSTC4KKworICAgICAgICAgICAxKSBIVE1MVmlkZW9FbGVtZW50Ojpp
bWFnZVNvdXJjZVVSTC4KKyAgICAgICAgICAgMikgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxh
eU1vZGUuCisgICAgICAgICAgIDMpIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURpc3BsYXlTdGF0
ZS4KKyAgICAgICAgICAgNCkgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMu
IFdpbGwgbmVlZCB0byBjYXN0IHRvCisgICAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgYWZ0
ZXIgY2hlY2tpbmcgaXNWaWRlby4KKworICAgICAgICAqIFdlYkNvcmUub3JkZXI6IFJlcGxhY2Ug
aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdp
dGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgIChFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOiBSZXBsYWNlIGltYWdlU291cmNlQXR0
cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVk
RWxlbWVudC5oOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VT
b3VyY2VVUkwoKQorICAgICAgICAoSFRNTEVtYmVkRWxlbWVudCk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmdldFBsdWdpblByb3h5UGFyYW1zKTogQ2hhbmdlIHRvIHVzZSBwb3N0ZXJJbWFnZVVSTAorICAg
ICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9iamVjdEVsZW1lbnQ6OmltYWdlU291cmNlVVJMKTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJp
YnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBodG1sL0hUTUxPYmpl
Y3RFbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIHdpdGggaW1hZ2VT
b3VyY2VVUkwKKyAgICAgICAgKEhUTUxPYmplY3RFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
SFRNTFZpZGVvRWxlbWVudCk6IHNldCBtX2RlZmF1bHRQb3N0ZXJVUkwgaWYgdGhlcmUgaXMgc3Vj
aCBzZXR0aW5ncworICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3Vy
Y2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1v
ZGUpOiBVc2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKTogVXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKTogUmV0dXJuIGltYWdl
IHNvdXJjZSdzIEtVUkwKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oOgorICAgICAgICAoSFRNTFZpZGVvRWxlbWVudCk6CisgICAgICAgICogbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcDogVXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5pbjogQWRkIGRlZmF1bHRWaWRlb1Bvc3RlclVSTCBzZXR0aW5nLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKTogdXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRV
UkxGb3JJbWFnZU5vZGUpOiB1c2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIHJlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFi
c29sdXRlSW1hZ2VVUkwpOiB1c2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIHN2Zy9TVkdJ
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjppbWFn
ZVNvdXJjZVVSTCk6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFn
ZVNvdXJjZVVSTCgpCisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAo
U1ZHSW1hZ2VFbGVtZW50KTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRo
IGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOiBz
dXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyk6IHN1cHBvcnQgcmVzdG9yZSBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpz
ZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwpOiBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6Cisg
ICAgICAgIChCYWNrdXApOiBzdXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisg
ICAgICAgIChJbnRlcm5hbFNldHRpbmdzKTogQWRkIHNldERlZmF1bHRWaWRvZVBvc3RlclVSTCBt
ZXRob2QuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDogQWRkIHNldERl
ZmF1bHRWaWRlb1Bvc3RlclVSTCBmb3IgdGVzdCBwdXJwb3NlLgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Z2V0SW1hZ2VTb3Vy
Y2VVUkwpOiBBZGQgZ2V0SW1hZ2VTb3VyY2VVUkwgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDogQWRkIGdldEltYWdlU291cmNlVVJMIG1l
dGhvZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFkZCBnZXRJbWFnZVNvdXJj
ZVVSTCBtZXRob2QuCisKIDIwMTMtMDMtMDggIEJyYW5kb24gSm9uZXMgIDxiYWpvbmVzQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgQ2hlY2sgdG8gZW5zdXJlIE11bHRpc2FtcGxlUmVuZGVyYnVmZmVy
IGNyZWF0aW9uIHN1Y2NlZWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9y
ZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCAzYjA2ZTViNGExM2E1YWUz
YWRhYTA5NWZkYjQxNDgzODkxOWUzMjBiLi5lNDZmNGYzZTU1MDk3MjNjYTU4NWRiZDFkMmE5Zjky
ZThkYTY2ZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTU0MTQsNyArNTQxNCw3IEBAIF9fWk5L
N1dlYkNvcmUxNkhUTUxJbWFnZUVsZW1lbnQxMG1hcFRvRW50cnlFUktOU18xM1F1YWxpZmllZE5h
bWVFUk5TXzIwTWFwcGVkQXR0CiBfX1pON1dlYkNvcmUxNkhUTUxJbWFnZUVsZW1lbnQyMHBhcnNl
TWFwcGVkQXR0cmlidXRlRVBOU185QXR0cmlidXRlRQogX19aTjdXZWJDb3JlMTFJbWFnZUxvYWRl
cjM4dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3JFdgogX19aTjdXZWJDb3Jl
MTFJbWFnZUxvYWRlcjE3dXBkYXRlRnJvbUVsZW1lbnRFdgotX19aTks3V2ViQ29yZTdFbGVtZW50
MjRpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWVFdgorX19aTks3V2ViQ29yZTdFbGVtZW50MTRpbWFn
ZVNvdXJjZVVSTEV2CiBfX1pOSzdXZWJDb3JlMTVIVE1MSW1hZ2VMb2FkZXI5c291cmNlVVJJRVJL
TjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZTIwQ2FjaGVkUmVzb3VyY2VMb2FkZXIx
MnJlcXVlc3RJbWFnZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZUwxMWFwcGVuZEFTQ0lJ
RVJLTjNXVEY2U3RyaW5nRVBLY21STlMwXzZWZWN0b3JJY0xtNTEyRUVFCkBAIC0xMDQ4MSw3ICsx
MDQ4MSw3IEBAIF9fWk43V2ViQ29yZTIzTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXREMEV2CiBfX1pO
N1dlYkNvcmUyM01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0MjJ0ZWFyRG93blZpZGVvUmVuZGVyaW5n
RXYKIC1bV2ViQ29yZU1vdmllT2JzZXJ2ZXIgZGlzY29ubmVjdF0KIF9fWk43V2ViQ29yZTI3c2V0
SlNIVE1MVmlkZW9FbGVtZW50UG9zdGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TMF84SlNPYmplY3RF
TlMwXzdKU1ZhbHVlRQotX19aTks3V2ViQ29yZTE2SFRNTFZpZGVvRWxlbWVudDI0aW1hZ2VTb3Vy
Y2VBdHRyaWJ1dGVOYW1lRXYKK19fWk5LN1dlYkNvcmUxNkhUTUxWaWRlb0VsZW1lbnQxNGltYWdl
U291cmNlVVJMRXYKIF9fWk43V2ViQ29yZTExUmVuZGVyVmlkZW8xMmltYWdlQ2hhbmdlZEVQdlBL
TlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUyMldlYkdMQ29udGV4dEF0dHJpYnV0ZXM2Y3JlYXRl
RXYKIF9fWk43V2ViQ29yZTIzQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXNDMkV2CkBAIC0xMTE0OSw3
ICsxMTE0OSw3IEBAIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTBwYWRkaW5nVG9wRXYKIF9f
Wk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTJwYWRkaW5nUmlnaHRFdgogX19aTks3V2ViQ29yZTEx
UmVuZGVyU3R5bGUxM3BhZGRpbmdCb3R0b21FdgogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUx
MXBhZGRpbmdMZWZ0RXYKLV9fWk5LN1dlYkNvcmUxN0hUTUxPYmplY3RFbGVtZW50MjRpbWFnZVNv
dXJjZUF0dHJpYnV0ZU5hbWVFdgorX19aTks3V2ViQ29yZTE3SFRNTE9iamVjdEVsZW1lbnQxNGlt
YWdlU291cmNlVVJMRXYKIF9fWk43V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1lbnQxOWRlZmF1bHRF
dmVudEhhbmRsZXJFUE5TXzVFdmVudEUKIF9fWk5LN1dlYkNvcmUxNkhUTUxFbGVtZW50U3RhY2sx
M2luQnV0dG9uU2NvcGVFUktOU18xM1F1YWxpZmllZE5hbWVFCiBfX1pON1dlYkNvcmVMMjJkZWNv
ZGVOb25BU0NJSVNlcXVlbmNlRVBLaGoKQEAgLTExMjUxLDcgKzExMjUxLDcgQEAgX19aTjdXZWJD
b3JlMTVTVkdVUklSZWZlcmVuY2UxNmlzS25vd25BdHRyaWJ1dGVFUktOU18xM1F1YWxpZmllZE5h
bWVFCiBfX1pOSzdXZWJDb3JlMTVTVkdJbWFnZUVsZW1lbnQyMnNlbGZIYXNSZWxhdGl2ZUxlbmd0
aHNFdgogX19aTkszV1RGMTJTdHJpbmdBcHBlbmRJTlNfNlN0cmluZ0VTMV9FY3ZOU18xMkF0b21p
Y1N0cmluZ0VFdgogX19aVGhuMzYwX043V2ViQ29yZTE1U1ZHSW1hZ2VFbGVtZW50MTZzZXRIcmVm
QmFzZVZhbHVlRVJLTjNXVEY2U3RyaW5nRQotX19aTks3V2ViQ29yZTE1U1ZHSW1hZ2VFbGVtZW50
MjRpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWVFdgorX19aTks3V2ViQ29yZTE1U1ZHSW1hZ2VFbGVt
ZW50MTRpbWFnZVNvdXJjZVVSTEV2CiBfX1pOSzdXZWJDb3JlMTRTVkdJbWFnZUxvYWRlcjlzb3Vy
Y2VVUklFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTks3V2ViQ29yZTdFbGVtZW50N2Jhc2VV
UklFdgogX19aTjdXZWJDb3JlMTVTVkdJbWFnZUVsZW1lbnQyMGluc2VydGVkSW50b0RvY3VtZW50
RXYKQEAgLTI1ODM0LDcgKzI1ODM0LDcgQEAgX19aTks3V2ViQ29yZTE2UERGRG9jdW1lbnRJbWFn
ZTE3ZmlsZW5hbWVFeHRlbnNpb25FdgogX19aTjdXZWJDb3JlNUltYWdlMTBnZXROU0ltYWdlRXYK
IF9fWk43V2ViQ29yZTMzY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRVBOU18xMUNh
Y2hlZEltYWdlRQogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxN3N1Z2dlc3Rl
ZEZpbGVuYW1lRXYKLV9fWk5LN1dlYkNvcmUxNkhUTUxFbWJlZEVsZW1lbnQyNGltYWdlU291cmNl
QXR0cmlidXRlTmFtZUV2CitfX1pOSzdXZWJDb3JlMTZIVE1MRW1iZWRFbGVtZW50MTRpbWFnZVNv
dXJjZVVSTEV2CiBfX1pOSzdXZWJDb3JlMThEb2N1bWVudE9yZGVyZWRNYXAxOWdldEVsZW1lbnRC
eU1hcE5hbWVFUE4zV1RGMTZBdG9taWNTdHJpbmdJbXBsRVBLTlNfOVRyZWVTY29wZUUKIF9fWk5L
N1dlYkNvcmUxOERvY3VtZW50T3JkZXJlZE1hcDNnZXRJWGFkTF9aTlNfMTdrZXlNYXRjaGVzTWFw
TmFtZUVQTjNXVEYxNkF0b21pY1N0cmluZ0ltcGxFUE5TXzdFbGVtZW50RUVFRUVTNl9TNF9QS05T
XzlUcmVlU2NvcGVFCiBfX1pON1dlYkNvcmUxNEltYWdlSW5wdXRUeXBlMjZ3aWxsTW92ZVRvTmV3
T3duZXJEb2N1bWVudEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTUzMTg1NWVlZTBmYzVj
ZTgyZDJjZjVhMzM1ODZiMzcxOWUxNzM5YS4uNDQ2MTYwNjk0N2ZmNmRhY2FjMGVmOTg1NmMwZDg3
OTM3YTBkYzM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTEyMSw5ICsxMTIxLDkgQEAg
S1VSTCBFbGVtZW50OjpiYXNlVVJJKCkgY29uc3QKICAgICByZXR1cm4gS1VSTChwYXJlbnRCYXNl
LCBiYXNlQXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgRWxlbWVudDo6aW1h
Z2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVu
dDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVybiBzcmNBdHRyOworICAgIHJl
dHVybiBnZXRBdHRyaWJ1dGUoc3JjQXR0cik7CiB9CiAKIGJvb2wgRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCmluZGV4IDQ5ODhiMWQ3N2RkZGU0ZTQzMGY3YjU1M2M0ZTYzMmNkZGQwNWYzYmUuLjQ2Mjdi
Njk4ZWIwZDU2ZTdiZTE2ZDJjM2VlMTgzNTMyZTk5ZWQ3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApA
QCAtNDUxLDcgKzQ1MSw3IEBAIHB1YmxpYzoKICAgICBLVVJMIGdldFVSTEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgS1VSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OwogICAgIHZpcnR1YWwg
U3RyaW5nIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgZm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlLCBGb2N1c0Rp
cmVjdGlvbiA9IEZvY3VzRGlyZWN0aW9uTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcAppbmRleCBjMzNlMmY4YjljMGQ0ZDliM2ZlOTk1ZDQwNjgzYTcyOTllMDkw
MmY1Li5kZjJjMTZiY2FiYzA2ZTg4YjIyMGZmODYxOTQ5ZmVjOTY0ODljZTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTIxMCw5ICsyMTAsOSBAQCBib29s
IEhUTUxFbWJlZEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmli
dXRlKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSgpID09IHNyY0F0dHIgfHwgSFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotY29u
c3QgUXVhbGlmaWVkTmFtZSYgSFRNTEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVO
YW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgSFRNTEVtYmVkRWxlbWVudDo6aW1hZ2VT
b3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVybiBzcmNBdHRyOworICAgIHJldHVybiBnZXRB
dHRyaWJ1dGUoc3JjQXR0cik7CiB9CiAKIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6YWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCBhNTk1YmE0ZDU5YWM3YzIwMmNmMTc1
ZjkwOTE2ZmU0MWIxODYwZmJmLi40NDJkY2I5YWIxMTBiZTk0ZTBlOGUxNGEwNjJiODMxNzc5ZDRl
MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtNDEsNyArNDEs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUo
Y29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBRdWFs
aWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDYwMGFi
MzU1OTExMWNmZTMyNTg3Y2RmZmUwMDIyOWMzMjg5NTllYjMuLjY4ZDAyOGIwNjBhNThkOTkxZTY0
ZGY3MzE0Y2I0ZDAwNGFjZjIzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtNDAzNSw3ICs0MDM1LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpnZXRQ
bHVnaW5Qcm94eVBhcmFtcyhLVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmUKICAg
ICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwogCiAgICAgaWYgKGlzVmlkZW8o
KSkgewotICAgICAgICBLVVJMIHBvc3RlclVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHBv
c3RlckF0dHIpOworICAgICAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlbyA9IHN0YXRpY19jYXN0
PEhUTUxWaWRlb0VsZW1lbnQqPih0aGlzKTsKKyAgICAgICAgS1VSTCBwb3N0ZXJVUkwgPSB2aWRl
by0+cG9zdGVySW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFwb3N0ZXJVUkwuaXNFbXB0eSgpICYm
IGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS0+d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwocG9zdGVy
VVJMKSkgewogICAgICAgICAgICAgbmFtZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiX21lZGlhX2Vs
ZW1lbnRfcG9zdGVyXyIpKTsKICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQocG9zdGVyVVJMLnN0
cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXgg
ZjRkNjc1ODJkNDllYWNkNTRhMzM3MjIzOTRjYzhlNzVlMjYzN2MwMy4uZWY0MmQwYjg0OTM4MjU5
M2MwMTZlYmFlNTc0NTU2NDlhMzc2MGQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAKQEAgLTM2NCw5ICszNjQsOSBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50
Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKICAgICBy
ZXR1cm4gYXR0cmlidXRlLm5hbWUoKSA9PSBkYXRhQXR0ciB8fCAoYXR0cmlidXRlLm5hbWUoKSA9
PSB1c2VtYXBBdHRyICYmIGF0dHJpYnV0ZS52YWx1ZSgpLnN0cmluZygpWzBdICE9ICcjJykgfHwg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAot
Y29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTE9iamVjdEVsZW1lbnQ6OmltYWdlU291cmNlQXR0cmli
dXRlTmFtZSgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxPYmplY3RFbGVtZW50Ojpp
bWFnZVNvdXJjZVVSTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRhdGFBdHRyOworICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUoZGF0YUF0dHIpOwogfQogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojpy
ZW5kZXJGYWxsYmFja0NvbnRlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oCmluZGV4IDViN2U3MjBiOTc0NDYwZmNhMTFkMjE1MzU3YmY4OWZkOTYxNzUyYzMuLmJmNzE3
ZGE1NTUxYTM1YzdiZjE4NzdkODMzMjc2Y2E3N2E5ZTYxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjZmU5NTcxM2ZmOWRm
OGQ3MzU3NWI4MDJlZTU4MWYwOGRlNjc4NDFkLi5mMGEwZmQ1OTIwMmEyZGQ3MGY2NDA3YzE5ZmYx
NjAzZmNkNjI1MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
QEAgLTM2LDEwICszNiwxMiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElt
YWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNl
cklkaW9tcy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDksNiAr
NTEsOCBAQCBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6SFRNTFZpZGVvRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudAogICAgIDogSFRNTE1lZGlhRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKHZpZGVvVGFnKSk7CisgICAgaWYgKGRvY3VtZW50LT5zZXR0aW5ncygpKQorICAgICAgICBt
X2RlZmF1bHRQb3N0ZXJVUkwgPSBkb2N1bWVudC0+c2V0dGluZ3MoKS0+ZGVmYXVsdFZpZGVvUG9z
dGVyVVJMKCk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gSFRNTFZpZGVvRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkBAIC0xNzgsMTUgKzE4MiwxOCBAQCBib29sIEhU
TUxWaWRlb0VsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRl
KSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSgpID09IHBvc3RlckF0dHIgfHwgSFRN
TE1lZGlhRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVh
bGlmaWVkTmFtZSYgSFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkg
Y29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgSFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VTb3VyY2VV
UkwoKSBjb25zdAogewotICAgIHJldHVybiBwb3N0ZXJBdHRyOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdXJsID0gZ2V0QXR0cmlidXRlKHBvc3RlckF0dHIpOworICAgIGlmICghdXJsLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHVybDsKKyAgICByZXR1cm4gbV9kZWZhdWx0UG9zdGVyVVJM
OwogfQogCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldERpc3BsYXlNb2RlKERpc3BsYXlNb2Rl
IG1vZGUpCiB7CiAgICAgRGlzcGxheU1vZGUgb2xkTW9kZSA9IGRpc3BsYXlNb2RlKCk7Ci0gICAg
S1VSTCBwb3N0ZXIgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShwb3N0ZXJBdHRyKTsKKyAgICBL
VVJMIHBvc3RlciA9IHBvc3RlckltYWdlVVJMKCk7CiAKICAgICBpZiAoIXBvc3Rlci5pc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIHBvc3RlciBwYXRoLCBidXQgb25seSBzaG93IGl0
IHVudGlsIHRoZSB1c2VyIHRyaWdnZXJzIGRpc3BsYXkgYnkgcGxheWluZyBvciBzZWVraW5nIGFu
ZCB0aGUKQEAgLTIyMSw3ICsyMjgsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldERpc3Bs
YXlNb2RlKERpc3BsYXlNb2RlIG1vZGUpCiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6dXBkYXRl
RGlzcGxheVN0YXRlKCkKIHsKLSAgICBpZiAoZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUocG9zdGVy
QXR0cikuaXNFbXB0eSgpKQorICAgIGlmIChwb3N0ZXJJbWFnZVVSTCgpLmlzRW1wdHkoKSkKICAg
ICAgICAgc2V0RGlzcGxheU1vZGUoVmlkZW8pOwogICAgIGVsc2UgaWYgKGRpc3BsYXlNb2RlKCkg
PCBQb3N0ZXIpCiAgICAgICAgIHNldERpc3BsYXlNb2RlKFBvc3Rlcik7CkBAIC0zMDEsNiArMzA4
LDE0IEBAIHVuc2lnbmVkIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdERyb3BwZWRGcmFtZUNvdW50
KCkgY29uc3QKIH0KICNlbmRpZgogCitLVVJMIEhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdl
VVJMKCkKK3sKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHVybCA9IGltYWdlU291cmNlVVJMKCk7
CisgICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgcmV0
dXJuIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyh1cmwpKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmgKaW5kZXggY2Y0ZmVhY2ZjYjcxYjIyZTM2OTEzYThkOTc4NGNhZWY0MTg1NDlhYi4u
ZmE0NDNmZTBkYWNhODgwMzIyY2VhZmY5OGM0MzBhNmRlYWU4MjQ1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTY1LDYgKzY1LDggQEAgcHVibGljOgogCiAgICAg
Ym9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBkaXNwbGF5TW9k
ZSgpID09IFBvc3RlciB8fCBkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JWaWRlbzsg
fQogCisgICAgS1VSTCBwb3N0ZXJJbWFnZVVSTCgpOworCiBwcml2YXRlOgogICAgIEhUTUxWaWRl
b0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCk7CiAKQEAgLTgw
LDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdCB7
IHJldHVybiBwbGF5ZXIoKSAmJiBwbGF5ZXIoKS0+aGFzVmlkZW8oKTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBj
b25zdCBRdWFsaWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwpAQCAtODksNiArOTEsNyBA
QCBwcml2YXRlOgogCiAgICAgT3duUHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsK
IAorICAgIEF0b21pY1N0cmluZyBtX2RlZmF1bHRQb3N0ZXJVUkw7CiB9OwogCiB9IC8vbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCA0MmFkYzdiN2FlNjkw
N2I0YTY3YzlkM2QxMjZkM2VmMzU5M2MyYjkxLi40YWM4YzQ3NmQ4OTM1OWNiNzA3ZjYwZDQyZDYw
MjhmNTI1ODMzMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTE3
MSw3ICsxNzEsNyBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAg
aWYgKCFkb2N1bWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQXRvbWlj
U3RyaW5nIGF0dHIgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShtX2VsZW1lbnQtPmltYWdlU291
cmNlQXR0cmlidXRlTmFtZSgpKTsKKyAgICBBdG9taWNTdHJpbmcgYXR0ciA9IG1fZWxlbWVudC0+
aW1hZ2VTb3VyY2VVUkwoKTsKIAogICAgIGlmIChhdHRyID09IG1fZmFpbGVkTG9hZFVSTCkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
biBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggZTc5OTFlYWRjYzE0MDMw
N2ZjMDk3NjdiZWZmMjE0YTUzYmY3ZWJhZC4uMjg2NjM2Y2MxNWM0N2ZlNDY0ZjVhMDNlZmE3ZDVj
OTJmZDA4ZjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCkBAIC0xOTUsNCArMTk1LDcgQEAg
dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCBpbml0aWFsPWRlZmF1bHRVbmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkCiAKIGxvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkIGluaXRp
YWw9ZmFsc2UKIAorIyBTb21lIGFwcHMgY291bGQgaGF2ZSBhIGRlZmF1bHQgdmlkZW8gcG9zdGVy
IGlmIGl0IGlzIG5vdCBzZXQuCitkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwgdHlwZT1TdHJpbmcKKwog
c21hcnRJbnNlcnREZWxldGVFbmFibGVkIGluaXRpYWw9dHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXgg
NzYwOTY2M2VkZThlYTBiY2FiOGVhNGRlMjc2NTMzMTg5Nzg4ODhjNi4uMzE1NWVkZWI4ZjcyN2I2
ODNiYzRjZDc5MTEwYjg4YzNjOTQ0ZTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCkBAIC0xNTMsNyArMTUz
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogI2VuZGlmCiAgICAgZWxzZSBpZiAobm9kZS0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6OmVtYmVkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
b2JqZWN0VGFnKSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG5vZGUpOwotICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUo
ZWxlbWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICB1cmxTdHJpbmcg
PSBlbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwogICAgIH0KICAgICBLVVJMIHVybCA9IHVybFN0
cmluZy5pc0VtcHR5KCkgPyBLVVJMKCkgOiBub2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModXJsU3RyaW5nKSk7CiAgICAgV2ViS2l0
OjpXZWJJbWFnZSB3ZWJJbWFnZSA9IGJpdG1hcC0+Yml0bWFwKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggZDZkODY3ZTkxN2FjYTcwN2Q0
ZWE4YjM3Zjc3YzFmMDE2YTI1YmMzMy4uODFkZWE4MDY0MmNkZGU4ODI3YWI3OTk4MTk0NmI5ZDM4
ZjA0NDc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3Rr
LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBLVVJMIGdldFVSTEZvckltYWdlTm9kZShO
b2RlKiBub2RlKQogI2VuZGlmCiAgICAgZWxzZSBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OmVtYmVkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKSkg
ewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUp
OwotICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoZWxlbWVudC0+aW1h
Z2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5p
bWFnZVNvdXJjZVVSTCgpOwogICAgIH0KICAgICByZXR1cm4gdXJsU3RyaW5nLmlzRW1wdHkoKSA/
IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBmMWEzNDZlNzg4ZTRjNjQyZTljZjUzNzQ1ZGVmYzky
MzlmYWNiZGQwLi5mMmQ2NWYwYTUxNjAyZmM5MTdiNzllNWE2ZTgwN2U4ZDY4Mzk1ZDdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0zMjAsNyArMzIw
LDcgQEAgS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKICNlbmRp
ZgogICAgICAgICkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsKLSAgICAgICAgdXJsU3RyaW5nID0g
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKGVsZW1lbnQtPmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgp
KTsKKyAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+aW1hZ2VTb3VyY2VVUkwoKTsKICAgICB9
IGVsc2UKICAgICAgICAgcmV0dXJuIEtVUkwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcAppbmRleCBhZmI0ZGRjYmM2ZGY3MGNmZmE0NzRkZmE3MWNhNmVlMWI4MDYwNGVl
Li4wZDIzYmUzYjI1YjMwZDkzNWYzNjA0N2QwMzJjMmU0MWE4ZmU5MjBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMjIyLDkgKzIyMiw5IEBAIE5vZGU6Okluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSoKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAotY29uc3QgUXVhbGlm
aWVkTmFtZSYgU1ZHSW1hZ2VFbGVtZW50OjppbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25z
dAorY29uc3QgQXRvbWljU3RyaW5nJiBTVkdJbWFnZUVsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gWExpbmtOYW1lczo6aHJlZkF0dHI7CisgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CiB9CiAKIHZvaWQgU1ZHSW1hZ2VFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggY2EwYjYyZTU3MmU4
YzU3ZjA2NTQyMDM3YjE2OGM4NmIyZDEyZTY0OC4uZGU3YTY0YWExY2I4NWVmODY3ZTY2ZTEwMDAy
Y2MzYWY0MjUxNmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAtNTgs
OCArNTgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKLSAKLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291cmNlQXR0cmli
dXRlTmFtZSgpIGNvbnN0OyAgICAgICAKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGMwZjU4NzdhNDg3OWIxY2Fl
ZWViYjc3MTU1ZDVjNmZiY2ZlYjQwYjkuLmMzZjkwZDVkMjFmZDAyNGZjMDQyODg1ZWM2MDE0YTg0
OTBmZmUzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cApAQCAtOTQsNiArOTQsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cChTZXR0
aW5ncyogc2V0dGluZ3MpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyhzZXR0aW5ncy0+
c2hvdWxkRGlzcGxheUNhcHRpb25zKCkpCiAgICAgLCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3Jp
cHRpb25zKHNldHRpbmdzLT5zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucygpKQogI2VuZGlm
CisgICAgLCBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTChzZXR0aW5ncy0+ZGVmYXVsdFZpZGVvUG9z
dGVyVVJMKCkpCiAgICAgLCBtX29yaWdpbmFsVGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3Jl
SGlkaW5nQ29udHJvbHMoc2V0dGluZ3MtPnRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhp
ZGluZ0NvbnRyb2xzKCkpCiB7CiB9CkBAIC0xMzAsNiArMTMxLDcgQEAgdm9pZCBJbnRlcm5hbFNl
dHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgc2V0dGlu
Z3MtPnNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhtX3Nob3VsZERpc3BsYXlDYXB0aW9ucyk7CiAg
ICAgc2V0dGluZ3MtPnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKG1fc2hvdWxkRGlz
cGxheVRleHREZXNjcmlwdGlvbnMpOwogI2VuZGlmCisgICAgc2V0dGluZ3MtPnNldERlZmF1bHRW
aWRlb1Bvc3RlclVSTChtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTCk7CiAgICAgc2V0dGluZ3MtPnNl
dFRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKG1fb3JpZ2luYWxU
aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyk7CiB9CiAKQEAgLTQ4
OSw2ICs0OTEsMTIgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRNaW5pbXVtVGltZXJJbnRl
cnZhbChkb3VibGUgaW50ZXJ2YWxJblNlY29uZHMsIEV4Y2VwdGkKICAgICBzZXR0aW5ncygpLT5z
ZXRNaW5ET01UaW1lckludGVydmFsKGludGVydmFsSW5TZWNvbmRzKTsKIH0KIAordm9pZCBJbnRl
cm5hbFNldHRpbmdzOjpzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoY29uc3QgU3RyaW5nJiB1cmws
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRp
bmdzKCk7CisgICAgc2V0dGluZ3MoKS0+c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKHVybCk7Cit9
CisKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVm
b3JlSGlkaW5nQ29udHJvbHMoZG91YmxlIHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4IDI1YzI1ZmUwODg0MDRiNGJiYmZjNjNhZDYxMmQ5
MTIxZjMwZGFiNjYuLjU0OWIwZmE0NWZhNDBiMjZkYzg0OGE1MmEyNWFhNzhhMTczYTJjNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC04Miw2ICs4Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc3BsYXlDYXB0aW9uczsKICAgICAg
ICAgYm9vbCBtX3Nob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOwogI2VuZGlmCisgICAgICAg
IFN0cmluZyBtX2RlZmF1bHRWaWRlb1Bvc3RlclVSTDsKICAgICAgICAgYm9vbCBtX29yaWdpbmFs
VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHM7CiAgICAgfTsKIApA
QCAtMTI3LDYgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhbmdBdHRyaWJ1dGVBd2Fy
ZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChi
b29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1lcklu
dGVydmFsKGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgc2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdm9pZCBzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdD
b250cm9scyhkb3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggZGQzNDE2MDE1MmVm
YWUyZDdkZTVkNzdjYzQwNDc0YjE3YTNlNjlmNi4uY2RlOGRmNjI1ZjQxOWExYWE5N2IzNjU3MTRk
ZGVhNWRjNGFlZmQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaWRsCkBAIC01OSw1ICs1OSw2IEBACiAgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3koaW4gRE9NU3RyaW5nIHBvbGljeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgdm9pZCBz
ZXRJbWFnZXNFbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChpbiBkb3VibGUgaW50ZXJ2YWxJblNl
Y29uZHMpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIHZvaWQgc2V0RGVmYXVsdFZpZGVvUG9z
dGVyVVJMKGluIERPTVN0cmluZyBwb3N0ZXIpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIHZv
aWQgc2V0VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoaW4gZG91
YmxlIHRpbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCA2Y2IxNDY3NWQ0MWVmNDkwMzI0ZjkzOTNmM2E0YTZmNmRkOGZkMDMz
Li4yZmZiZjE3MTYyNjhkYzA2NThmM2ZlNDU0YWJlNjhmNTYwMDFmOGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMDU3LDQgKzIwNTcsMTMgQEAgU3RyaW5nIEludGVy
bmFsczo6bWFya2VyVGV4dEZvckxpc3RJdGVtKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIHJldHVybiBXZWJDb3JlOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oZWxlbWVu
dCk7CiB9CiAKK1N0cmluZyBJbnRlcm5hbHM6OmdldEltYWdlU291cmNlVVJMKEVsZW1lbnQqIGVs
ZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZWxlbWVudCkgeworICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
IH0KKyAgICByZXR1cm4gZWxlbWVudC0+aW1hZ2VTb3VyY2VVUkwoKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYzFhYzJiYjYzMjFkODU1MjRmZTE5N2E0MjkyY2Q3
YTBiNzRlZmNjZi4uOWU5YjRkYTc0NjJmNjRlMTY4YzY0NWE5MWRlYzE4YTI1NmI5OGI0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yOTUsNiArMjk1LDggQEAgcHVibGljOgog
I2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogICAgIHZvaWQgZW5hYmxlTW9ja1NwZWVjaFN5
bnRoZXNpemVyKCk7CiAjZW5kaWYKKworICAgIFN0cmluZyBnZXRJbWFnZVNvdXJjZVVSTChFbGVt
ZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICAgICAgICAgICAgICAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKaW5kZXggOTMwNDhkNzdiNGNjM2YzN2ZlN2M0ZmU1MDljZWNlMDFhMTk3YWM4MC4u
MjdiNzRiYzEyZGJhNGFiYjcxODJhNTA5NWNhMTk2Y2M5NDYzOWJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMjYwLDQgKzI2MCw2IEBACiAgICAgW0NvbmRpdGlvbmFs
PUVOQ1JZUFRFRF9NRURJQV9WMl0gdm9pZCBpbml0aWFsaXplTW9ja0NETSgpOwogCiAgICAgW0Nv
bmRpdGlvbmFsPVNQRUVDSF9TWU5USEVTSVNdIHZvaWQgZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNp
emVyKCk7CisKKyAgICBET01TdHJpbmcgZ2V0SW1hZ2VTb3VyY2VVUkwoaW4gRWxlbWVudCBlbGVt
ZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYThjZGI4MDNiYWI0NjFmYmFk
MDlmOWE3ZWZmY2M5ZmJiODE4MzNjNS4uNTZmYzIxOTA0MWEyMTRkOTA0ZjhiYzg0MjllY2IxYzBj
NDJhYzRiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTAzLTA2ICBUYW8gQmFpICA8bWlj
aGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0IHZpZGVvIHBv
c3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEFuZHJvaWQgd2ViIHZpZXcgYXBwbGlj
YXRpb24gY291bGQgcHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIKKyAgICAgICAgZm9yIGEgdmlk
ZW8gdGhhdCBkb2Vzbid0IGhhdmUgdGhlIHBvc3RlciBhdHRyaWJ1dGUuCisKKyAgICAgICAgVG8g
cHJvdmlkZSB0aGUgZGVmYXVsdCBwb3N0ZXIsIHRoZSBhcHBsaWNhdGlvbiBtdXN0IHNldCBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwKKyAgICAgICAgc2V0dGluZyBhbmQgcmV0dXJuIHRoZSBpbWFnZSBp
biB0aGUgcmVzcG9uc2Ugb2YgdGhhdCBVUkwuCisKKyAgICAgICAgVGhlIHdheSB0byBkbyB0aGlz
IHdvdWxkIGJlOgorCisgICAgICAgIEEpIFJlcGxhY2UgdGhlIEVsZW1lbnQ6OmltYWdlU291cmNl
QXR0cmlidXRlTmFtZSBmdW5jdGlvbiB3aXRoIGFuCisgICAgICAgICAgIEVsZW1lbnQ6OmltYWdl
U291cmNlVVJMIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgaW1hZ2VTb3VyY2VVUkwgYXMgYQor
ICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmLiBUaGUgYm9keSB3aWxsIGJlIHRoZSBzYW1l
IGFzIGJlZm9yZSwgaXQgd2lsbCBqdXN0IGFsc28KKyAgICAgICAgICAgaW5jbHVkZSBhIGNhbGwg
dG8gZ2V0QXR0cmlidXRlLiBBbHNvIHdpbGwgbmVlZCB0byByZXZpc2UgdGhlIGZvdXIgY2xhc3Nl
cworICAgICAgICAgICB0aGF0IG92ZXJyaWRlIHRoYXQgZnVuY3Rpb24uCisKKyAgICAgICAgQikg
QWRkIGEgbmV3IEhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMIGZ1bmN0aW9uIHRoYXQg
aW1wbGVtZW50cyB0aGUKKyAgICAgICAgICAgZGVmYXVsdCBwb3N0ZXIgVVJMIGxvZ2ljLgorCisg
ICAgICAgIEMpIFVwZGF0ZSB0aGUgZm91ciBmdW5jdGlvbnMgdGhhdCBnZXQgdGhlIHBvc3RlciBh
dHRyaWJ1dGUgdG8gaGFuZGxlIHBvc3RlcgorICAgICAgICAgICBsb2FkaW5nIGFuZCBkaXNwbGF5
IHRvIGNhbGwgcG9zdGVySW1hZ2VVUkwuCisKKyAgICAgICAgICAgMSkgSFRNTFZpZGVvRWxlbWVu
dDo6aW1hZ2VTb3VyY2VVUkwuCisgICAgICAgICAgIDIpIEhUTUxWaWRlb0VsZW1lbnQ6OnNldERp
c3BsYXlNb2RlLgorICAgICAgICAgICAzKSBIVE1MVmlkZW9FbGVtZW50Ojp1cGRhdGVEaXNwbGF5
U3RhdGUuCisgICAgICAgICAgIDQpIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFy
YW1zLiBXaWxsIG5lZWQgdG8gY2FzdCB0bworICAgICAgICAgICAgICBIVE1MVmlkZW9FbGVtZW50
IGFmdGVyIGNoZWNraW5nIGlzVmlkZW8uCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1kZWZhdWx0
LXBvc3Rlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLWRlZmF1
bHQtcG9zdGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLW5vLWRlZmF1bHQt
cG9zdGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tbm8tZGVm
YXVsdC1wb3N0ZXIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMDggIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgZmFpbGluZyB0ZXN0IGV4cGVjdGF0aW9u
IHBlciBidWcgMTExOTAxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVm
YXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVs
dC1wb3N0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZjBmYTVjOGE1N2IwNTUzNmU0ZWVj
OWVhNjUwNTgxNzE0NWViZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitQQVNTCitQ
QVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3MjllM2E5MjQ4YTVjZTI3YmM2NzZjMmNkMDc3ZjZlNzZkNGM1NjUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sCkBA
IC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICB9CisgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgdmFyIGRlZmF1bHRfcG9zdGVyID0gJ2NvbnRlbnQvZ3JlZW5ib3gucG5n
JzsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldERlZmF1bHRWaWRlb1Bvc3RlclVS
TChkZWZhdWx0X3Bvc3Rlcik7CisgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9u
KCkgeworICAgICAgdmFyIHBvc3RlciA9IHdpbmRvdy5pbnRlcm5hbHMuZ2V0SW1hZ2VTb3VyY2VV
UkwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLW5vLXBvc3RlciIpKTsKKyAgICAgIGlm
IChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3RlciA9PSBkZWZhdWx0X3Bvc3RlcikKKyAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4
dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUwiOworICAgICAgfSBlbHNl
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5u
ZXJUZXh0ID0gIkZBSUw6IGltYWdlIHNvdXJjZSBpcyBudWxsIjsKKworICAgICAgcG9zdGVyID0g
IHdpbmRvdy5pbnRlcm5hbHMuZ2V0SW1hZ2VTb3VyY2VVUkwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZGVvLWhhcy1wb3N0ZXIiKSk7CisgICAgICBpZiAocG9zdGVyKSB7CisgICAgICAgIGlm
IChwb3N0ZXIgPT0gImNvbnRlbnQvYWJlLnBuZyIpCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIlBBU1MiOworICAgICAg
ICBlbHNlCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9z
dGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IHBvc3RlciB3YXMgY2hhbmdlZCI7CisgICAgICB9IGVs
c2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIiku
aW5uZXJUZXh0ID0gIkZBSUw6IGltYWdlIHNvdXJjZSBpcyBudWxsIjsKKworICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgZmFsc2UpOworICB9CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJyZXN1bHQtbm8tcG9zdGVyIj48L3ByZT4KKzxwcmUgaWQ9
InJlc3VsdC1oYXMtcG9zdGVyIj48L3ByZT4KKzx2aWRlbyBpZD0idmlkZW8tbm8tcG9zdGVyIiBz
cmM9ImNvbnRlbnQvdGVzdC5tcDQiIHByZWxvYWQ9Im5vbmUiIC8+Cis8dmlkZW8gaWQ9InZpZGVv
LWhhcy1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcG9zdGVyPSJjb250ZW50L2FiZS5w
bmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRlZWM5ZWE2NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY4YmEwNjJjMGQ3
Y2EzZjQ2ZDVkZjNlZTlmYTNiNTlhNDMzZGQxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKQEAgLTAsMCArMSwzOSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgIH0KKworICBpZiAod2luZG93LmludGVybmFscykgeworICAg
IGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBwb3N0ZXIg
PSB3aW5kb3cuaW50ZXJuYWxzLmdldEltYWdlU291cmNlVVJMKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ2aWRlby1uby1wb3N0ZXIiKSk7CisgICAgICBpZiAocG9zdGVyKQorICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlM
IDogcG9zdGVyIHdhcyBhZGRlZC4iOworICAgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKworICAg
ICAgcG9zdGVyID0gd2luZG93LmludGVybmFscy5nZXRJbWFnZVNvdXJjZVVSTChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmlkZW8taGFzLXBvc3RlciIpKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsK
KyAgICAgICAgaWYgKHBvc3RlciA9PSAiY29udGVudC9hYmUucG5nIikKKyAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFT
UyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogcG9zdGVyIHdhcyBjaGFuZ2VkIjsK
KyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhh
cy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogSW1hZ2Ugc291cmNlIGlzIG51bGwiOworCisg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCBmYWxzZSk7CisgIH0KKworPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9InJlc3VsdC1uby1wb3N0ZXIiPjwvcHJl
PgorPHByZSBpZD0icmVzdWx0LWhhcy1wb3N0ZXIiPjwvcHJlPgorPHZpZGVvIGlkPSJ2aWRlby1u
by1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcHJlbG9hZD0ibm9uZSIgLz4KKzx2aWRl
byBpZD0idmlkZW8taGFzLXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwb3N0ZXI9ImNv
bnRlbnQvYWJlLnBuZyIgcHJlbG9hZD0ibm9uZSIgLz4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192766</attachid>
            <date>2013-03-12 10:53:37 -0700</date>
            <delta_ts>2013-03-13 13:14:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130312104936.patch</filename>
            <type>text/plain</type>
            <size>37806</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU1MzU3OThlMjE4N2Mx
NDQ2ZWU4NzE4MDdjOTk1MDNkMTFjNWM5Mi4uM2FjM2UxZjg4ZGFkNTBiZGRlMzg1NjJiODkxZmI4
NTU1YTYxMWFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTA2ICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICBUaGUgQW5kcm9pZCB3ZWIgdmlldyBhcHBsaWNhdGlv
biBjb3VsZCBwcm92aWRlIHRoZSBkZWZhdWx0IHBvc3RlcgorICAgICAgICBmb3IgYSB2aWRlbyB0
aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgcG9zdGVyIGF0dHJpYnV0ZS4KKworICAgICAgICBUbyBwcm92
aWRlIHRoZSBkZWZhdWx0IHBvc3RlciwgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc2V0IGRlZmF1bHRW
aWRlb1Bvc3RlclVSTAorICAgICAgICBzZXR0aW5nIGFuZCByZXR1cm4gdGhlIGltYWdlIGluIHRo
ZSByZXNwb25zZSBvZiB0aGF0IFVSTC4KKworICAgICAgICBUaGUgd2F5IHRvIGRvIHRoaXMgd291
bGQgYmU6CisKKyAgICAgICAgQSkgUmVwbGFjZSB0aGUgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lIGZ1bmN0aW9uIHdpdGggYW4KKyAgICAgICAgICAgRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBpbWFnZVNvdXJjZVVSTCBhcyBhCisgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYuIFRoZSBib2R5IHdpbGwgYmUgdGhlIHNhbWUgYXMg
YmVmb3JlLCBpdCB3aWxsIGp1c3QgYWxzbworICAgICAgICAgICBpbmNsdWRlIGEgY2FsbCB0byBn
ZXRBdHRyaWJ1dGUuIEFsc28gd2lsbCBuZWVkIHRvIHJldmlzZSB0aGUgZm91ciBjbGFzc2VzCisg
ICAgICAgICAgIHRoYXQgb3ZlcnJpZGUgdGhhdCBmdW5jdGlvbi4KKworICAgICAgICBCKSBBZGQg
YSBuZXcgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwgZnVuY3Rpb24gdGhhdCBpbXBs
ZW1lbnRzIHRoZQorICAgICAgICAgICBkZWZhdWx0IHBvc3RlciBVUkwgbG9naWMuCisKKyAgICAg
ICAgQykgVXBkYXRlIHRoZSBmb3VyIGZ1bmN0aW9ucyB0aGF0IGdldCB0aGUgcG9zdGVyIGF0dHJp
YnV0ZSB0byBoYW5kbGUgcG9zdGVyCisgICAgICAgICAgIGxvYWRpbmcgYW5kIGRpc3BsYXkgdG8g
Y2FsbCBwb3N0ZXJJbWFnZVVSTC4KKworICAgICAgICAgICAxKSBIVE1MVmlkZW9FbGVtZW50Ojpp
bWFnZVNvdXJjZVVSTC4KKyAgICAgICAgICAgMikgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxh
eU1vZGUuCisgICAgICAgICAgIDMpIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURpc3BsYXlTdGF0
ZS4KKyAgICAgICAgICAgNCkgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMu
IFdpbGwgbmVlZCB0byBjYXN0IHRvCisgICAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgYWZ0
ZXIgY2hlY2tpbmcgaXNWaWRlby4KKworICAgICAgICAqIFdlYkNvcmUub3JkZXI6IFJlcGxhY2Ug
aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdp
dGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgIChFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOiBSZXBsYWNlIGltYWdlU291cmNlQXR0
cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVk
RWxlbWVudC5oOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VT
b3VyY2VVUkwoKQorICAgICAgICAoSFRNTEVtYmVkRWxlbWVudCk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmdldFBsdWdpblByb3h5UGFyYW1zKTogQ2hhbmdlIHRvIHVzZSBwb3N0ZXJJbWFnZVVSTAorICAg
ICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9iamVjdEVsZW1lbnQ6OmltYWdlU291cmNlVVJMKTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJp
YnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBodG1sL0hUTUxPYmpl
Y3RFbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIHdpdGggaW1hZ2VT
b3VyY2VVUkwKKyAgICAgICAgKEhUTUxPYmplY3RFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
SFRNTFZpZGVvRWxlbWVudCk6IHNldCBtX2RlZmF1bHRQb3N0ZXJVUkwgaWYgdGhlcmUgaXMgc3Vj
aCBzZXR0aW5ncworICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3Vy
Y2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1v
ZGUpOiBVc2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKTogVXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKTogUmV0dXJuIGltYWdl
IHNvdXJjZSdzIEtVUkwKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oOgorICAgICAgICAoSFRNTFZpZGVvRWxlbWVudCk6CisgICAgICAgICogbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcDogVXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5pbjogQWRkIGRlZmF1bHRWaWRlb1Bvc3RlclVSTCBzZXR0aW5nLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKTogdXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRV
UkxGb3JJbWFnZU5vZGUpOiB1c2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIHJlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFi
c29sdXRlSW1hZ2VVUkwpOiB1c2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIHN2Zy9TVkdJ
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjppbWFn
ZVNvdXJjZVVSTCk6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFn
ZVNvdXJjZVVSTCgpCisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAo
U1ZHSW1hZ2VFbGVtZW50KTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRo
IGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOiBz
dXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyk6IHN1cHBvcnQgcmVzdG9yZSBkZWZh
dWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpz
ZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwpOiBzZXQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6Cisg
ICAgICAgIChCYWNrdXApOiBzdXBwb3J0IGJhY2t1cCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisg
ICAgICAgIChJbnRlcm5hbFNldHRpbmdzKTogQWRkIHNldERlZmF1bHRWaWRvZVBvc3RlclVSTCBt
ZXRob2QuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDogQWRkIHNldERl
ZmF1bHRWaWRlb1Bvc3RlclVSTCBmb3IgdGVzdCBwdXJwb3NlLgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Z2V0SW1hZ2VTb3Vy
Y2VVUkwpOiBBZGQgZ2V0SW1hZ2VTb3VyY2VVUkwgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDogQWRkIGdldEltYWdlU291cmNlVVJMIG1l
dGhvZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFkZCBnZXRJbWFnZVNvdXJj
ZVVSTCBtZXRob2QuCisKIDIwMTMtMDMtMTIgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiByZW1vdmluZyBHdGtWZXJzaW9uaW5n
IGZyb20gY2hyb21pdW0gdGFyZ2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL215Q2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvbXlDaGFuZ2VMb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljMTk1ODVi
NWZhMGY5OThjZmI5ZDUzZjQxZjQ0N2I1YmYzZjIyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL215Q2hhbmdlTG9nCkBAIC0wLDAgKzEsODcgQEAKKzIwMTMtMDMtMDYgIFRhbyBC
YWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgdGhlIGRlZmF1bHQg
dmlkZW8gcG9zdGVyIGlmIGl0IGRvZXNuJ3QgZXhpc3QgaW4gdmlkZW8gdGFnCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAyNjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogbWVkaWEvdmlkZW8t
ZGVmYXVsdC1wb3N0ZXIuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdmlkZW8tbm8tZGVmYXVs
dC1wb3N0ZXIuaHRtbAorCisgICAgICAgIFRoZSBBbmRyb2lkIHdlYiB2aWV3IGFwcGxpY2F0aW9u
IGNvdWxkIHByb3ZpZGUgdGhlIGRlZmF1bHQgcG9zdGVyCisgICAgICAgIGZvciBhIHZpZGVvIHRo
YXQgZG9lc24ndCBoYXZlIHRoZSBwb3N0ZXIgYXR0cmlidXRlLgorCisgICAgICAgIFRvIHByb3Zp
ZGUgdGhlIGRlZmF1bHQgcG9zdGVyLCB0aGUgYXBwbGljYXRpb24gbXVzdCBzZXQgZGVmYXVsdFZp
ZGVvUG9zdGVyVVJMCisgICAgICAgIHNldHRpbmcgYW5kIHJldHVybiB0aGUgaW1hZ2UgaW4gdGhl
IHJlc3BvbnNlIG9mIHRoYXQgVVJMLgorCisgICAgICAgIFRoZSB3YXkgdG8gZG8gdGhpcyB3b3Vs
ZCBiZToKKworICAgICAgICBBKSBSZXBsYWNlIHRoZSBFbGVtZW50OjppbWFnZVNvdXJjZUF0dHJp
YnV0ZU5hbWUgZnVuY3Rpb24gd2l0aCBhbgorICAgICAgICAgICBFbGVtZW50OjppbWFnZVNvdXJj
ZVVSTCBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGltYWdlU291cmNlVVJMIGFzIGEKKyAgICAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJi4gVGhlIGJvZHkgd2lsbCBiZSB0aGUgc2FtZSBhcyBi
ZWZvcmUsIGl0IHdpbGwganVzdCBhbHNvCisgICAgICAgICAgIGluY2x1ZGUgYSBjYWxsIHRvIGdl
dEF0dHJpYnV0ZS4gQWxzbyB3aWxsIG5lZWQgdG8gcmV2aXNlIHRoZSBmb3VyIGNsYXNzZXMKKyAg
ICAgICAgICAgdGhhdCBvdmVycmlkZSB0aGF0IGZ1bmN0aW9uLgorCisgICAgICAgIEIpIEFkZCBh
IG5ldyBIVE1MVmlkZW9FbGVtZW50Ojpwb3N0ZXJJbWFnZVVSTCBmdW5jdGlvbiB0aGF0IGltcGxl
bWVudHMgdGhlCisgICAgICAgICAgIGRlZmF1bHQgcG9zdGVyIFVSTCBsb2dpYy4KKworICAgICAg
ICBDKSBVcGRhdGUgdGhlIGZvdXIgZnVuY3Rpb25zIHRoYXQgZ2V0IHRoZSBwb3N0ZXIgYXR0cmli
dXRlIHRvIGhhbmRsZSBwb3N0ZXIKKyAgICAgICAgICAgbG9hZGluZyBhbmQgZGlzcGxheSB0byBj
YWxsIHBvc3RlckltYWdlVVJMLgorCisgICAgICAgICAgIDEpIEhUTUxWaWRlb0VsZW1lbnQ6Omlt
YWdlU291cmNlVVJMLgorICAgICAgICAgICAyKSBIVE1MVmlkZW9FbGVtZW50OjpzZXREaXNwbGF5
TW9kZS4KKyAgICAgICAgICAgMykgSFRNTFZpZGVvRWxlbWVudDo6dXBkYXRlRGlzcGxheVN0YXRl
LgorICAgICAgICAgICA0KSBIVE1MTWVkaWFFbGVtZW50OjpnZXRQbHVnaW5Qcm94eVBhcmFtcy4g
V2lsbCBuZWVkIHRvIGNhc3QgdG8KKyAgICAgICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCBhZnRl
ciBjaGVja2luZyBpc1ZpZGVvLgorCisgICAgICAgICogV2ViQ29yZS5vcmRlcjogUmVwbGFjZSBp
bWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0
aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjppbWFnZVNvdXJj
ZVVSTCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJp
YnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKEVsZW1lbnQpOgorICAg
ICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgIChXZWJDb3JlOjpIVE1M
RW1iZWRFbGVtZW50OjppbWFnZVNvdXJjZVVSTCk6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRF
bGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNv
dXJjZVVSTCgpCisgICAgICAgIChIVE1MRW1iZWRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
Z2V0UGx1Z2luUHJveHlQYXJhbXMpOiBDaGFuZ2UgdG8gdXNlIHBvc3RlckltYWdlVVJMCisgICAg
ICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
T2JqZWN0RWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmli
dXRlTmFtZSgpIHdpdGggaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIGh0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaDogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUgd2l0aCBpbWFnZVNv
dXJjZVVSTAorICAgICAgICAoSFRNTE9iamVjdEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpI
VE1MVmlkZW9FbGVtZW50KTogc2V0IG1fZGVmYXVsdFBvc3RlclVSTCBpZiB0aGVyZSBpcyBzdWNo
IHNldHRpbmdzCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJj
ZVVSTCk6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJj
ZVVSTCgpCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXREaXNwbGF5TW9k
ZSk6IFVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50Ojp1cGRhdGVEaXNwbGF5U3RhdGUpOiBVc2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwpOiBSZXR1cm4gaW1hZ2Ug
c291cmNlJ3MgS1VSTAorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50Lmg6CisgICAgICAgIChIVE1MVmlkZW9FbGVtZW50KToKKyAgICAgICAgKiBsb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwOiBVc2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmluOiBBZGQgZGVmYXVsdFZpZGVvUG9zdGVyVVJMIHNldHRpbmcuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOiB1c2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFVS
TEZvckltYWdlTm9kZSk6IHVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWJz
b2x1dGVJbWFnZVVSTCk6IHVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogc3ZnL1NWR0lt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmltYWdl
U291cmNlVVJMKTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRoIGltYWdl
U291cmNlVVJMKCkKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgIChT
VkdJbWFnZUVsZW1lbnQpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGgg
aW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cCk6IHN1
cHBvcnQgYmFja3VwIGRlZmF1bHRWaWRlb1Bvc3RlclVSTC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKTogc3VwcG9ydCByZXN0b3JlIGRlZmF1
bHRWaWRlb1Bvc3RlclVSTC4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNl
dERlZmF1bHRWaWRlb1Bvc3RlclVSTCk6IHNldCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAg
ICAgICAgKEJhY2t1cCk6IHN1cHBvcnQgYmFja3VwIGRlZmF1bHRWaWRlb1Bvc3RlclVSTC4KKyAg
ICAgICAgKEludGVybmFsU2V0dGluZ3MpOiBBZGQgc2V0RGVmYXVsdFZpZG9lUG9zdGVyVVJMIG1l
dGhvZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOiBBZGQgc2V0RGVm
YXVsdFZpZGVvUG9zdGVyVVJMIGZvciB0ZXN0IHB1cnBvc2UuCisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpnZXRJbWFnZVNvdXJj
ZVVSTCk6IEFkZCBnZXRJbWFnZVNvdXJjZVVSTCBtZXRob2QuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOiBBZGQgZ2V0SW1hZ2VTb3VyY2VVUkwgbWV0
aG9kLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDogQWRkIGdldEltYWdlU291cmNl
VVJMIG1ldGhvZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDNiMDZlNWI0YTEzYTVhZTNhZGFhMDk1
ZmRiNDE0ODM4OTE5ZTMyMGIuLmU0NmY0ZjNlNTUwOTcyM2NhNTg1ZGJkMWQyYTlmOTJlOGRhNjZm
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtNTQxNCw3ICs1NDE0LDcgQEAgX19aTks3V2ViQ29y
ZTE2SFRNTEltYWdlRWxlbWVudDEwbWFwVG9FbnRyeUVSS05TXzEzUXVhbGlmaWVkTmFtZUVSTlNf
MjBNYXBwZWRBdHQKIF9fWk43V2ViQ29yZTE2SFRNTEltYWdlRWxlbWVudDIwcGFyc2VNYXBwZWRB
dHRyaWJ1dGVFUE5TXzlBdHRyaWJ1dGVFCiBfX1pON1dlYkNvcmUxMUltYWdlTG9hZGVyMzh1cGRh
dGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvckV2CiBfX1pON1dlYkNvcmUxMUltYWdl
TG9hZGVyMTd1cGRhdGVGcm9tRWxlbWVudEV2Ci1fX1pOSzdXZWJDb3JlN0VsZW1lbnQyNGltYWdl
U291cmNlQXR0cmlidXRlTmFtZUV2CitfX1pOSzdXZWJDb3JlN0VsZW1lbnQxNGltYWdlU291cmNl
VVJMRXYKIF9fWk5LN1dlYkNvcmUxNUhUTUxJbWFnZUxvYWRlcjlzb3VyY2VVUklFUktOM1dURjEy
QXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlMjBDYWNoZWRSZXNvdXJjZUxvYWRlcjEycmVxdWVz
dEltYWdlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlTDExYXBwZW5kQVNDSUlFUktOM1dU
RjZTdHJpbmdFUEtjbVJOUzBfNlZlY3RvckljTG01MTJFRUUKQEAgLTEwNDgxLDcgKzEwNDgxLDcg
QEAgX19aTjdXZWJDb3JlMjNNZWRpYVBsYXllclByaXZhdGVRVEtpdEQwRXYKIF9fWk43V2ViQ29y
ZTIzTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQyMnRlYXJEb3duVmlkZW9SZW5kZXJpbmdFdgogLVtX
ZWJDb3JlTW92aWVPYnNlcnZlciBkaXNjb25uZWN0XQogX19aTjdXZWJDb3JlMjdzZXRKU0hUTUxW
aWRlb0VsZW1lbnRQb3N0ZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVOUzBfN0pT
VmFsdWVFCi1fX1pOSzdXZWJDb3JlMTZIVE1MVmlkZW9FbGVtZW50MjRpbWFnZVNvdXJjZUF0dHJp
YnV0ZU5hbWVFdgorX19aTks3V2ViQ29yZTE2SFRNTFZpZGVvRWxlbWVudDE0aW1hZ2VTb3VyY2VV
UkxFdgogX19aTjdXZWJDb3JlMTFSZW5kZXJWaWRlbzEyaW1hZ2VDaGFuZ2VkRVB2UEtOU183SW50
UmVjdEUKIF9fWk43V2ViQ29yZTIyV2ViR0xDb250ZXh0QXR0cmlidXRlczZjcmVhdGVFdgogX19a
TjdXZWJDb3JlMjNDYW52YXNDb250ZXh0QXR0cmlidXRlc0MyRXYKQEAgLTExMTQ5LDcgKzExMTQ5
LDcgQEAgX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUxMHBhZGRpbmdUb3BFdgogX19aTks3V2Vi
Q29yZTExUmVuZGVyU3R5bGUxMnBhZGRpbmdSaWdodEV2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJT
dHlsZTEzcGFkZGluZ0JvdHRvbUV2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTExcGFkZGlu
Z0xlZnRFdgotX19aTks3V2ViQ29yZTE3SFRNTE9iamVjdEVsZW1lbnQyNGltYWdlU291cmNlQXR0
cmlidXRlTmFtZUV2CitfX1pOSzdXZWJDb3JlMTdIVE1MT2JqZWN0RWxlbWVudDE0aW1hZ2VTb3Vy
Y2VVUkxFdgogX19aTjdXZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDE5ZGVmYXVsdEV2ZW50SGFu
ZGxlckVQTlNfNUV2ZW50RQogX19aTks3V2ViQ29yZTE2SFRNTEVsZW1lbnRTdGFjazEzaW5CdXR0
b25TY29wZUVSS05TXzEzUXVhbGlmaWVkTmFtZUUKIF9fWk43V2ViQ29yZUwyMmRlY29kZU5vbkFT
Q0lJU2VxdWVuY2VFUEtoagpAQCAtMTEyNTEsNyArMTEyNTEsNyBAQCBfX1pON1dlYkNvcmUxNVNW
R1VSSVJlZmVyZW5jZTE2aXNLbm93bkF0dHJpYnV0ZUVSS05TXzEzUXVhbGlmaWVkTmFtZUUKIF9f
Wk5LN1dlYkNvcmUxNVNWR0ltYWdlRWxlbWVudDIyc2VsZkhhc1JlbGF0aXZlTGVuZ3Roc0V2CiBf
X1pOSzNXVEYxMlN0cmluZ0FwcGVuZElOU182U3RyaW5nRVMxX0Vjdk5TXzEyQXRvbWljU3RyaW5n
RUV2CiBfX1pUaG4zNjBfTjdXZWJDb3JlMTVTVkdJbWFnZUVsZW1lbnQxNnNldEhyZWZCYXNlVmFs
dWVFUktOM1dURjZTdHJpbmdFCi1fX1pOSzdXZWJDb3JlMTVTVkdJbWFnZUVsZW1lbnQyNGltYWdl
U291cmNlQXR0cmlidXRlTmFtZUV2CitfX1pOSzdXZWJDb3JlMTVTVkdJbWFnZUVsZW1lbnQxNGlt
YWdlU291cmNlVVJMRXYKIF9fWk5LN1dlYkNvcmUxNFNWR0ltYWdlTG9hZGVyOXNvdXJjZVVSSUVS
S04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlN0VsZW1lbnQ3YmFzZVVSSUV2CiBf
X1pON1dlYkNvcmUxNVNWR0ltYWdlRWxlbWVudDIwaW5zZXJ0ZWRJbnRvRG9jdW1lbnRFdgpAQCAt
MjU4MzQsNyArMjU4MzQsNyBAQCBfX1pOSzdXZWJDb3JlMTZQREZEb2N1bWVudEltYWdlMTdmaWxl
bmFtZUV4dGVuc2lvbkV2CiBfX1pON1dlYkNvcmU1SW1hZ2UxMGdldE5TSW1hZ2VFdgogX19aTjdX
ZWJDb3JlMzNjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VFUE5TXzExQ2FjaGVkSW1h
Z2VFCiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE3c3VnZ2VzdGVkRmlsZW5h
bWVFdgotX19aTks3V2ViQ29yZTE2SFRNTEVtYmVkRWxlbWVudDI0aW1hZ2VTb3VyY2VBdHRyaWJ1
dGVOYW1lRXYKK19fWk5LN1dlYkNvcmUxNkhUTUxFbWJlZEVsZW1lbnQxNGltYWdlU291cmNlVVJM
RXYKIF9fWk5LN1dlYkNvcmUxOERvY3VtZW50T3JkZXJlZE1hcDE5Z2V0RWxlbWVudEJ5TWFwTmFt
ZUVQTjNXVEYxNkF0b21pY1N0cmluZ0ltcGxFUEtOU185VHJlZVNjb3BlRQogX19aTks3V2ViQ29y
ZTE4RG9jdW1lbnRPcmRlcmVkTWFwM2dldElYYWRMX1pOU18xN2tleU1hdGNoZXNNYXBOYW1lRVBO
M1dURjE2QXRvbWljU3RyaW5nSW1wbEVQTlNfN0VsZW1lbnRFRUVFRVM2X1M0X1BLTlNfOVRyZWVT
Y29wZUUKIF9fWk43V2ViQ29yZTE0SW1hZ2VJbnB1dFR5cGUyNndpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA2NjMwNDlhYjAxNGMyNzYxOTg5NTk1
NTI1Yzk0NmE1NzNmMGE1OTdmLi4yMTM0ZGYwOTdmOTFhYjRhNDQwMjZkNGMxZDc5OTYyNDg2MDVi
NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMTIxLDkgKzExMjEsOSBAQCBLVVJMIEVs
ZW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogICAgIHJldHVybiBLVVJMKHBhcmVudEJhc2UsIGJhc2VB
dHRyaWJ1dGUpOwogfQogCi1jb25zdCBRdWFsaWZpZWROYW1lJiBFbGVtZW50OjppbWFnZVNvdXJj
ZUF0dHJpYnV0ZU5hbWUoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjppbWFn
ZVNvdXJjZVVSTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNyY0F0dHI7CisgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShzcmNBdHRyKTsKIH0KIAogYm9vbCBFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5k
ZXggNDk4OGIxZDc3ZGRkZTRlNDMwZjdiNTUzYzRlNjMyY2RkZDA1ZjNiZS4uNDYyN2I2OThlYjBk
NTZlN2JlMTZkMmMzZWUxODM1MzJlOTllZDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00NTEs
NyArNDUxLDcgQEAgcHVibGljOgogICAgIEtVUkwgZ2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKICAgICBLVVJMIGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAotICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcg
dGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBm
b2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiA9IHRydWUsIEZvY3VzRGlyZWN0aW9u
ID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuY3BwCmluZGV4IGMzM2UyZjhiOWMwZDRkOWIzZmU5OTVkNDA2ODNhNzI5OWUwOTAyZjUuLmRm
MmMxNmJjYWJjMDZlODhiMjIwZmY4NjE5NDlmZWM5NjQ4OWNlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMjEwLDkgKzIxMCw5IEBAIGJvb2wgSFRNTEVt
YmVkRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNv
bnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3JjQXR0ciB8fCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi1jb25zdCBRdWFs
aWZpZWROYW1lJiBIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBj
b25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNvdXJjZVVS
TCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNyY0F0dHI7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0
ZShzcmNBdHRyKTsKIH0KIAogdm9pZCBIVE1MRW1iZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5oCmluZGV4IGE1OTViYTRkNTlhYzdjMjAyY2YxNzVmOTA5MTZm
ZTQxYjE4NjBmYmYuLjQ0MmRjYjlhYjExMGJlOTRlMGU4ZTE0YTA2MmI4MzE3NzlkNGUwZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldEZvckpTQmluZGluZ3MoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggY2Y4ZWFlNmJjMDE4
Njg4NmNiZjcyMTg5ZWZiZTRmNGYzOWFjMjhhNS4uZjEyNDE0NDQ0MDg4MTQzMTM1ZDRiMDJjZjc5
Y2E5NmU3ZjQ4YmE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC00MTQwLDcgKzQxNDAsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblBy
b3h5UGFyYW1zKEtVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4mIG5hbWVzLCBWZQogICAgIEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CiAKICAgICBpZiAoaXNWaWRlbygpKSB7Ci0g
ICAgICAgIEtVUkwgcG9zdGVyVVJMID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUocG9zdGVyQXR0
cik7CisgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvID0gc3RhdGljX2Nhc3Q8SFRNTFZp
ZGVvRWxlbWVudCo+KHRoaXMpOworICAgICAgICBLVVJMIHBvc3RlclVSTCA9IHZpZGVvLT5wb3N0
ZXJJbWFnZVVSTCgpOwogICAgICAgICBpZiAoIXBvc3RlclVSTC5pc0VtcHR5KCkgJiYgZnJhbWUg
JiYgZnJhbWUtPmxvYWRlcigpLT53aWxsTG9hZE1lZGlhRWxlbWVudFVSTChwb3N0ZXJVUkwpKSB7
CiAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxlbWVudF9w
b3N0ZXJfIikpOwogICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChwb3N0ZXJVUkwuc3RyaW5nKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBmNGQ2NzU4
MmQ0OWVhY2Q1NGEzMzcyMjM5NGNjOGU3NWUyNjM3YzAzLi5lZjQyZDBiODQ5MzgyNTkzYzAxNmVi
YWU1NzQ1NTY0OWEzNzYwZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcApAQCAtMzY0LDkgKzM2NCw5IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OmlzVVJM
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBh
dHRyaWJ1dGUubmFtZSgpID09IGRhdGFBdHRyIHx8IChhdHRyaWJ1dGUubmFtZSgpID09IHVzZW1h
cEF0dHIgJiYgYXR0cmlidXRlLnZhbHVlKCkuc3RyaW5nKClbMF0gIT0gJyMnKSB8fCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi1jb25zdCBR
dWFsaWZpZWROYW1lJiBIVE1MT2JqZWN0RWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1l
KCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9iamVjdEVsZW1lbnQ6OmltYWdlU291
cmNlVVJMKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGF0YUF0dHI7CisgICAgcmV0dXJuIGdldEF0
dHJpYnV0ZShkYXRhQXR0cik7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlckZh
bGxiYWNrQ29udGVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5k
ZXggNWI3ZTcyMGI5NzQ0NjBmY2ExMWQyMTUzNTdiZjg5ZmQ5NjE3NTJjMy4uYmY3MTdkYTU1NTFh
MzVjN2JmMTg3N2Q4MzMyNzZjYTc3YTllNjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVm
b3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRh
ID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBpbWFn
ZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgUmVu
ZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGNmZTk1NzEzZmY5ZGY4ZDczNTc1
YjgwMmVlNTgxZjA4ZGU2Nzg0MWQuLmYwYTBmZDU5MjAyYTJkZDcwZjY0MDdjMTlmZjE2MDNmY2Q2
MjUwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMzYs
MTAgKzM2LDEyIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21z
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OSw2ICs1MSw4IEBA
IGlubGluZSBIVE1MVmlkZW9FbGVtZW50OjpIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAgICAgOiBIVE1MTWVkaWFFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodmlk
ZW9UYWcpKTsKKyAgICBpZiAoZG9jdW1lbnQtPnNldHRpbmdzKCkpCisgICAgICAgIG1fZGVmYXVs
dFBvc3RlclVSTCA9IGRvY3VtZW50LT5zZXR0aW5ncygpLT5kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwo
KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIGNyZWF0ZWRCeVBhcnNlcikKQEAgLTE3OCwxNSArMTgyLDE4IEBAIGJvb2wgSFRNTFZpZGVv
RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0
CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkgPT0gcG9zdGVyQXR0ciB8fCBIVE1MTWVkaWFF
bGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi1jb25zdCBRdWFsaWZpZWRO
YW1lJiBIVE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSBjb25zdAor
Y29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHBvc3RlckF0dHI7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB1
cmwgPSBnZXRBdHRyaWJ1dGUocG9zdGVyQXR0cik7CisgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gdXJsOworICAgIHJldHVybiBtX2RlZmF1bHRQb3N0ZXJVUkw7CiB9CiAK
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUgbW9kZSkK
IHsKICAgICBEaXNwbGF5TW9kZSBvbGRNb2RlID0gZGlzcGxheU1vZGUoKTsKLSAgICBLVVJMIHBv
c3RlciA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpOworICAgIEtVUkwgcG9z
dGVyID0gcG9zdGVySW1hZ2VVUkwoKTsKIAogICAgIGlmICghcG9zdGVyLmlzRW1wdHkoKSkgewog
ICAgICAgICAvLyBXZSBoYXZlIGEgcG9zdGVyIHBhdGgsIGJ1dCBvbmx5IHNob3cgaXQgdW50aWwg
dGhlIHVzZXIgdHJpZ2dlcnMgZGlzcGxheSBieSBwbGF5aW5nIG9yIHNlZWtpbmcgYW5kIHRoZQpA
QCAtMjIxLDcgKzIyOCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUo
RGlzcGxheU1vZGUgbW9kZSkKIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp1cGRhdGVEaXNwbGF5
U3RhdGUoKQogewotICAgIGlmIChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShwb3N0ZXJBdHRyKS5p
c0VtcHR5KCkpCisgICAgaWYgKHBvc3RlckltYWdlVVJMKCkuaXNFbXB0eSgpKQogICAgICAgICBz
ZXREaXNwbGF5TW9kZShWaWRlbyk7CiAgICAgZWxzZSBpZiAoZGlzcGxheU1vZGUoKSA8IFBvc3Rl
cikKICAgICAgICAgc2V0RGlzcGxheU1vZGUoUG9zdGVyKTsKQEAgLTMwMSw2ICszMDgsMTQgQEAg
dW5zaWduZWQgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RHJvcHBlZEZyYW1lQ291bnQoKSBjb25z
dAogfQogI2VuZGlmCiAKK0tVUkwgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwoKQor
eworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdXJsID0gaW1hZ2VTb3VyY2VVUkwoKTsKKyAgICBp
ZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4gZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVy
bCkpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
aAppbmRleCBjZjRmZWFjZmNiNzFiMjJlMzY5MTNhOGQ5Nzg0Y2FlZjQxODU0OWFiLi5mYTQ0M2Zl
MGRhY2E4ODAzMjJjZWFmZjk4YzQzMGE2ZGVhZTgyNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuaApAQCAtNjUsNiArNjUsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHNo
b3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGRpc3BsYXlNb2RlKCkgPT0g
UG9zdGVyIHx8IGRpc3BsYXlNb2RlKCkgPT0gUG9zdGVyV2FpdGluZ0ZvclZpZGVvOyB9CiAKKyAg
ICBLVVJMIHBvc3RlckltYWdlVVJMKCk7CisKIHByaXZhdGU6CiAgICAgSFRNTFZpZGVvRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sKTsKIApAQCAtODAsNyArODIs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IHsgcmV0dXJu
IHBsYXllcigpICYmIHBsYXllcigpLT5oYXNWaWRlbygpOyB9CiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVN0YXRlKCk7CkBAIC04OSw2ICs5MSw3IEBAIHByaXZh
dGU6CiAKICAgICBPd25QdHI8SFRNTEltYWdlTG9hZGVyPiBtX2ltYWdlTG9hZGVyOwogCisgICAg
QXRvbWljU3RyaW5nIG1fZGVmYXVsdFBvc3RlclVSTDsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDQ0MTFhOGM1ZWYxZmRmOTAzNGEy
ZmI2NTQyZjMyY2JhZGI5Y2M4MzkuLmRmMjExZTc2ODQ5NGE0MWZjMDRmMmUwNDNhNGQ3ZTNlNjJm
NWIwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMTcyLDcgKzE3
Miw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBpZiAoIWRv
Y3VtZW50LT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBdG9taWNTdHJpbmcg
YXR0ciA9IG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKG1fZWxlbWVudC0+aW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lKCkpOworICAgIEF0b21pY1N0cmluZyBhdHRyID0gbV9lbGVtZW50LT5pbWFnZVNv
dXJjZVVSTCgpOwogCiAgICAgaWYgKGF0dHIgPT0gbV9mYWlsZWRMb2FkVVJMKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCBlNzk5MWVhZGNjMTQwMzA3ZmMwOTc2
N2JlZmYyMTRhNTNiZjdlYmFkLi4yODY2MzZjYzE1YzQ3ZmU0NjRmNWEwM2VmYTdkNWM5MmZkMDhm
NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTE5NSw0ICsxOTUsNyBAQCB1bmlmaWVk
VGV4dENoZWNrZXJFbmFibGVkIGluaXRpYWw9ZGVmYXVsdFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQKIAogbG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQgaW5pdGlhbD1mYWxz
ZQogCisjIFNvbWUgYXBwcyBjb3VsZCBoYXZlIGEgZGVmYXVsdCB2aWRlbyBwb3N0ZXIgaWYgaXQg
aXMgbm90IHNldC4KK2RlZmF1bHRWaWRlb1Bvc3RlclVSTCB0eXBlPVN0cmluZworCiBzbWFydElu
c2VydERlbGV0ZUVuYWJsZWQgaW5pdGlhbD10cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAppbmRleCAzZDVhNmI2
NjhhMGY5NzgzYzM0YjcyZmIyOTE1NDgxOGY0NWZkZDkwLi5lNTM1M2E0OTYxMGY2YzQ1NzUyZWZj
MzlkYzkzNWU3NWRjYzE1ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCiAjZW5kaWYKICAgICBlbHNlIGlmIChub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6ZW1iZWRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvYmplY3RU
YWcpKSB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7Ci0gICAg
ICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShlbGVtZW50LT5pbWFnZVNvdXJj
ZUF0dHJpYnV0ZU5hbWUoKSk7CisgICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmltYWdlU291
cmNlVVJMKCk7CiAgICAgfQogICAgIEtVUkwgdXJsID0gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtV
UkwoKSA6IG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKICAgICBXZWJLaXQ6OldlYkltYWdlIHdlYkltYWdl
ID0gYml0bWFwLT5iaXRtYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkR3RrLmNwcAppbmRleCBkNmQ4NjdlOTE3YWNhNzA3ZDRlYThiMzdmNzdjMWYwMTZhMjVi
YzMzLi44MWRlYTgwNjQyY2RkZTg4MjdhYjc5OTgxOTQ2YjlkMzhmMDQ0NzU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC0xMDcsNyArMTA3
LDcgQEAgc3RhdGljIEtVUkwgZ2V0VVJMRm9ySW1hZ2VOb2RlKE5vZGUqIG5vZGUpCiAjZW5kaWYK
ICAgICBlbHNlIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZW1iZWRUYWcpIHx8IG5v
ZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvYmplY3RUYWcpKSB7CiAgICAgICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgIHVybFN0cmlu
ZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShlbGVtZW50LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5h
bWUoKSk7CisgICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmltYWdlU291cmNlVVJMKCk7CiAg
ICAgfQogICAgIHJldHVybiB1cmxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTCgpIDogbm9kZS0+ZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVy
bFN0cmluZykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CmluZGV4IGE5MjI4ZjAwNzdmMzQwZjg2ZDQzZDkyZDRiZDE0NTE0Nzc2NmI0ODMuLmFhMDRhZDJk
ODY5NzI1MmMzNWRiYTI3ZWE1ZjNiNzY1OGFlMTAxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCBLVVJMIEhpdFRlc3RS
ZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25zdAogI2VuZGlmCiAgICAgICAgKSB7CiAgICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9pbm5lck5vblNo
YXJlZE5vZGUuZ2V0KCkpOwotICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5nZXRBdHRyaWJ1
dGUoZWxlbWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICB1cmxTdHJp
bmcgPSBlbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1
cm4gS1VSTCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGFm
YjRkZGNiYzZkZjcwY2ZmYTQ3NGRmYTcxY2E2ZWUxYjgwNjA0ZWUuLjBkMjNiZTNiMjViMzBkOTM1
ZjM2MDQ3ZDAzMmMyZTQxYThmZTkyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuY3BwCkBAIC0yMjIsOSArMjIyLDkgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBTVkdJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKgogICAgIHJl
dHVybiBJbnNlcnRpb25Eb25lOwogfQogCi1jb25zdCBRdWFsaWZpZWROYW1lJiBTVkdJbWFnZUVs
ZW1lbnQ6OmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJp
bmcmIFNWR0ltYWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVy
biBYTGlua05hbWVzOjpocmVmQXR0cjsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKFhMaW5rTmFt
ZXM6OmhyZWZBdHRyKTsKIH0KIAogdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRleCBjYTBiNjJlNTcyZThjNTdmMDY1NDIwMzdiMTY4Yzg2
YjJkMTJlNjQ4Li5kZTdhNjRhYTFjYjg1ZWY4NjdlNjZlMTAwMDJjYzNhZjQyNTE2ZThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC01OCw4ICs1OCw4IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhD
b250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotIAotICAgIHZpcnR1YWwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7ICAg
ICAgIAorCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGhhdmVM
b2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5jcHAKaW5kZXggYzBmNTg3N2E0ODc5YjFjYWVlZWJiNzcxNTVkNWM2ZmJjZmVi
NDBiOS4uYzNmOTBkNWQyMWZkMDI0ZmMwNDI4ODVlYzYwMTRhODQ5MGZmZTNiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC05NCw2ICs5NCw3IEBA
IEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmdzKiBzZXR0aW5ncykKICAg
ICAsIG1fc2hvdWxkRGlzcGxheUNhcHRpb25zKHNldHRpbmdzLT5zaG91bGREaXNwbGF5Q2FwdGlv
bnMoKSkKICAgICAsIG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoc2V0dGluZ3MtPnNo
b3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKCkpCiAjZW5kaWYKKyAgICAsIG1fZGVmYXVsdFZp
ZGVvUG9zdGVyVVJMKHNldHRpbmdzLT5kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoKSkKICAgICAsIG1f
b3JpZ2luYWxUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyhzZXR0
aW5ncy0+dGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoKSkKIHsK
IH0KQEAgLTEzMCw2ICsxMzEsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVz
dG9yZVRvKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBzZXR0aW5ncy0+c2V0U2hvdWxkRGlzcGxh
eUNhcHRpb25zKG1fc2hvdWxkRGlzcGxheUNhcHRpb25zKTsKICAgICBzZXR0aW5ncy0+c2V0U2hv
dWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMobV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9u
cyk7CiAjZW5kaWYKKyAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKG1fZGVm
YXVsdFZpZGVvUG9zdGVyVVJMKTsKICAgICBzZXR0aW5ncy0+c2V0VGltZVdpdGhvdXRNb3VzZU1v
dmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMobV9vcmlnaW5hbFRpbWVXaXRob3V0TW91c2VNb3Zl
bWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKTsKIH0KIApAQCAtNDg5LDYgKzQ5MSwxMiBAQCB2b2lk
IEludGVybmFsU2V0dGluZ3M6OnNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZh
bEluU2Vjb25kcywgRXhjZXB0aQogICAgIHNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2
YWwoaW50ZXJ2YWxJblNlY29uZHMpOwogfQogCit2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldERl
ZmF1bHRWaWRlb1Bvc3RlclVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsKKyAgICBzZXR0aW5n
cygpLT5zZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwodXJsKTsKK30KKwogdm9pZCBJbnRlcm5hbFNl
dHRpbmdzOjpzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyhk
b3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSW50ZXJuYWxTZXR0aW5nc0d1
YXJkRm9yU2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmgKaW5kZXggMjVjMjVmZTA4ODQwNGI0YmJiZmM2M2FkNjEyZDkxMjFmMzBkYWI2Ni4uNTQ5YjBm
YTQ1ZmE0MGIyNmRjODQ4YTUyYTI1YWE3OGExNzNhMmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgICAg
ICBib29sIG1fc2hvdWxkRGlzcGxheUNhcHRpb25zOwogICAgICAgICBib29sIG1fc2hvdWxkRGlz
cGxheVRleHREZXNjcmlwdGlvbnM7CiAjZW5kaWYKKyAgICAgICAgU3RyaW5nIG1fZGVmYXVsdFZp
ZGVvUG9zdGVyVVJMOwogICAgICAgICBib29sIG1fb3JpZ2luYWxUaW1lV2l0aG91dE1vdXNlTW92
ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9sczsKICAgICB9OwogCkBAIC0xMjcsNiArMTI4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJs
ZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVy
dmFsSW5TZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Q
b3N0ZXJVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNl
dFRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKGRvdWJsZSB0aW1l
LCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmlkbAppbmRleCBkZDM0MTYwMTUyZWZhZTJkN2RlNWQ3N2NjNDA0NzRi
MTdhM2U2OWY2Li5jZGU4ZGY2MjVmNDE5YTFhYTk3YjM2NTcxNGRkZWE1ZGM0YWVmZDE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTU5LDUgKzU5
LDYgQEAKICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShpbiBET01TdHJpbmcgcG9s
aWN5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoaW4g
Ym9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldE1pbmlt
dW1UaW1lckludGVydmFsKGluIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcykgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoaW4gRE9NU3RyaW5n
IHBvc3RlcikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgdm9pZCBzZXRUaW1lV2l0aG91dE1v
dXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyhpbiBkb3VibGUgdGltZSkgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDZj
YjE0Njc1ZDQxZWY0OTAzMjRmOTM5M2YzYTRhNmY2ZGQ4ZmQwMzMuLjJmZmJmMTcxNjI2OGRjMDY1
OGYzZmU0NTRhYmU2OGY1NjAwMWY4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTIwNTcsNCArMjA1NywxMyBAQCBTdHJpbmcgSW50ZXJuYWxzOjptYXJrZXJUZXh0Rm9y
TGlzdEl0ZW0oRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJu
IFdlYkNvcmU6Om1hcmtlclRleHRGb3JMaXN0SXRlbShlbGVtZW50KTsKIH0KIAorU3RyaW5nIElu
dGVybmFsczo6Z2V0SW1hZ2VTb3VyY2VVUkwoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKCFlbGVtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorICAgIHJldHVybiBlbGVt
ZW50LT5pbWFnZVNvdXJjZVVSTCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAppbmRleCBjMWFjMmJiNjMyMWQ4NTUyNGZlMTk3YTQyOTJjZDdhMGI3NGVmY2NmLi45ZTliNGRh
NzQ2MmY2NGUxNjhjNjQ1YTkxZGVjMThhMjU2Yjk4YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKQEAgLTI5NSw2ICsyOTUsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpCiAgICAgdm9pZCBlbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKTsKICNlbmRp
ZgorCisgICAgU3RyaW5nIGdldEltYWdlU291cmNlVVJMKEVsZW1lbnQqLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgICAgICAgICAgICAgICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5h
bHMoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA5MzA0
OGQ3N2I0Y2MzZjM3ZmU3YzRmZTUwOWNlY2UwMWExOTdhYzgwLi4yN2I3NGJjMTJkYmE0YWJiNzE4
MmE1MDk1Y2ExOTZjYzk0NjM5YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CkBAIC0yNjAsNCArMjYwLDYgQEAKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1Yy
XSB2b2lkIGluaXRpYWxpemVNb2NrQ0RNKCk7CiAKICAgICBbQ29uZGl0aW9uYWw9U1BFRUNIX1NZ
TlRIRVNJU10gdm9pZCBlbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKTsKKworICAgIERPTVN0
cmluZyBnZXRJbWFnZVNvdXJjZVVSTChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01FeGNl
cHRpb24pOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5ZjM0ZTZmZmEwOWEyOTIzYTg1YTgwZmJjMjNjMzcyMDU3OTg0
NGY0Li5hYTJhYTE2OGEyMWNkOThjZjZkZTkzOTgwMTg1M2UxNzYxNzk0ODZjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDEgQEAKKzIwMTMtMDMtMDYgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBBZGQgdGhlIGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGRvZXNuJ3Qg
ZXhpc3QgaW4gdmlkZW8gdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTAyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgQW5kcm9pZCB3ZWIgdmlldyBhcHBsaWNhdGlvbiBjb3VsZCBwcm92aWRl
IHRoZSBkZWZhdWx0IHBvc3RlcgorICAgICAgICBmb3IgYSB2aWRlbyB0aGF0IGRvZXNuJ3QgaGF2
ZSB0aGUgcG9zdGVyIGF0dHJpYnV0ZS4KKworICAgICAgICBUbyBwcm92aWRlIHRoZSBkZWZhdWx0
IHBvc3RlciwgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc2V0IGRlZmF1bHRWaWRlb1Bvc3RlclVSTAor
ICAgICAgICBzZXR0aW5nIGFuZCByZXR1cm4gdGhlIGltYWdlIGluIHRoZSByZXNwb25zZSBvZiB0
aGF0IFVSTC4KKworICAgICAgICBUaGUgd2F5IHRvIGRvIHRoaXMgd291bGQgYmU6CisKKyAgICAg
ICAgQSkgUmVwbGFjZSB0aGUgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIGZ1bmN0
aW9uIHdpdGggYW4KKyAgICAgICAgICAgRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwgZnVuY3Rpb24g
dGhhdCByZXR1cm5zIHRoZSBpbWFnZVNvdXJjZVVSTCBhcyBhCisgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYuIFRoZSBib2R5IHdpbGwgYmUgdGhlIHNhbWUgYXMgYmVmb3JlLCBpdCB3aWxs
IGp1c3QgYWxzbworICAgICAgICAgICBpbmNsdWRlIGEgY2FsbCB0byBnZXRBdHRyaWJ1dGUuIEFs
c28gd2lsbCBuZWVkIHRvIHJldmlzZSB0aGUgZm91ciBjbGFzc2VzCisgICAgICAgICAgIHRoYXQg
b3ZlcnJpZGUgdGhhdCBmdW5jdGlvbi4KKworICAgICAgICBCKSBBZGQgYSBuZXcgSFRNTFZpZGVv
RWxlbWVudDo6cG9zdGVySW1hZ2VVUkwgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHRoZQorICAg
ICAgICAgICBkZWZhdWx0IHBvc3RlciBVUkwgbG9naWMuCisKKyAgICAgICAgQykgVXBkYXRlIHRo
ZSBmb3VyIGZ1bmN0aW9ucyB0aGF0IGdldCB0aGUgcG9zdGVyIGF0dHJpYnV0ZSB0byBoYW5kbGUg
cG9zdGVyCisgICAgICAgICAgIGxvYWRpbmcgYW5kIGRpc3BsYXkgdG8gY2FsbCBwb3N0ZXJJbWFn
ZVVSTC4KKworICAgICAgICAgICAxKSBIVE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJjZVVSTC4K
KyAgICAgICAgICAgMikgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUuCisgICAgICAg
ICAgIDMpIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURpc3BsYXlTdGF0ZS4KKyAgICAgICAgICAg
NCkgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMuIFdpbGwgbmVlZCB0byBj
YXN0IHRvCisgICAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgYWZ0ZXIgY2hlY2tpbmcgaXNW
aWRlby4KKworICAgICAgICAqIG1lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5odG1sOiBB
ZGRlZC4KKwogMjAxMy0wMy0xMiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3
ZjBmYTVjOGE1N2IwNTUzNmU0ZWVjOWVhNjUwNTgxNzE0NWViZDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlh
L3ZpZGVvLWRlZmF1bHQtcG9zdGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZh
dWx0LXBvc3Rlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MjllM2E5MjQ4YTVjZTI3YmM2NzZjMmNkMDc3
ZjZlNzZkNGM1NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1k
ZWZhdWx0LXBvc3Rlci5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICB9CisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgdmFyIGRlZmF1bHRfcG9zdGVyID0g
J2NvbnRlbnQvZ3JlZW5ib3gucG5nJzsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNl
dERlZmF1bHRWaWRlb1Bvc3RlclVSTChkZWZhdWx0X3Bvc3Rlcik7CisgICAgYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHBvc3RlciA9IHdpbmRvdy5pbnRl
cm5hbHMuZ2V0SW1hZ2VTb3VyY2VVUkwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLW5v
LXBvc3RlciIpKTsKKyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3RlciA9PSBk
ZWZhdWx0X3Bvc3RlcikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0g
IkZBSUwiOworICAgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IGltYWdlIHNvdXJjZSBpcyBudWxs
IjsKKworICAgICAgcG9zdGVyID0gIHdpbmRvdy5pbnRlcm5hbHMuZ2V0SW1hZ2VTb3VyY2VVUkwo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvLWhhcy1wb3N0ZXIiKSk7CisgICAgICBpZiAo
cG9zdGVyKSB7CisgICAgICAgIGlmIChwb3N0ZXIgPT0gImNvbnRlbnQvYWJlLnBuZyIpCisgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJU
ZXh0ID0gIlBBU1MiOworICAgICAgICBlbHNlCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IHBvc3RlciB3YXMg
Y2hhbmdlZCI7CisgICAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdC1oYXMtcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUw6IGltYWdlIHNvdXJjZSBpcyBu
dWxsIjsKKworICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgZmFsc2UpOwor
ICB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJyZXN1bHQtbm8tcG9z
dGVyIj48L3ByZT4KKzxwcmUgaWQ9InJlc3VsdC1oYXMtcG9zdGVyIj48L3ByZT4KKzx2aWRlbyBp
ZD0idmlkZW8tbm8tcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHByZWxvYWQ9Im5vbmUi
IC8+Cis8dmlkZW8gaWQ9InZpZGVvLWhhcy1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIg
cG9zdGVyPSJjb250ZW50L2FiZS5wbmciIHByZWxvYWQ9Im5vbmUiIC8+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rl
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMGZhNWM4YTU3YjA1NTM2ZTRlZWM5ZWE2NTA1
ODE3MTQ1ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5v
LWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1BBU1MKK1BBU1MK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIu
aHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzY4YmEwNjJjMGQ3Y2EzZjQ2ZDVkZjNlZTlmYTNiNTlhNDMzZGQxOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdD4KKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgIH0KKworICBpZiAod2lu
ZG93LmludGVybmFscykgeworICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigp
IHsKKyAgICAgIHZhciBwb3N0ZXIgPSB3aW5kb3cuaW50ZXJuYWxzLmdldEltYWdlU291cmNlVVJM
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1uby1wb3N0ZXIiKSk7CisgICAgICBpZiAo
cG9zdGVyKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3Rl
ciIpLmlubmVyVGV4dCA9ICJGQUlMIDogcG9zdGVyIHdhcyBhZGRlZC4iOworICAgICAgZWxzZQor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVy
VGV4dCA9ICJQQVNTIjsKKworICAgICAgcG9zdGVyID0gd2luZG93LmludGVybmFscy5nZXRJbWFn
ZVNvdXJjZVVSTChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8taGFzLXBvc3RlciIpKTsK
KyAgICAgIGlmIChwb3N0ZXIpIHsKKyAgICAgICAgaWYgKHBvc3RlciA9PSAiY29udGVudC9hYmUu
cG5nIikKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0
ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDog
cG9zdGVyIHdhcyBjaGFuZ2VkIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0LWhhcy1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJTDogSW1hZ2Ug
c291cmNlIGlzIG51bGwiOworCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9
LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9InJl
c3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1wb3N0ZXIiPjwvcHJl
PgorPHZpZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcHJl
bG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBvc3RlciIgc3JjPSJjb250ZW50
L3Rlc3QubXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJlbG9hZD0ibm9uZSIgLz4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192945</attachid>
            <date>2013-03-13 10:35:40 -0700</date>
            <delta_ts>2013-03-13 13:15:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130313103138.patch</filename>
            <type>text/plain</type>
            <size>30203</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhiNDQxYWI3OGJiOTFl
MDgyMzJjMDA2NWRiZTg0YzAzMzU5NWNhMS4uM2UzYjkwM2VlNjk5ZmRkM2IxNjg5M2M1YTAzMmIx
NWZhYzg5MmI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAzLTA2ICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICBUaGUgQW5kcm9pZCB3ZWIgdmlldyBhcHBsaWNhdGlv
biBjb3VsZCBwcm92aWRlIHRoZSBkZWZhdWx0IHBvc3RlcgorICAgICAgICBmb3IgYSB2aWRlbyB0
aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgcG9zdGVyIGF0dHJpYnV0ZS4KKworICAgICAgICBUbyBwcm92
aWRlIHRoZSBkZWZhdWx0IHBvc3RlciwgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc2V0IGRlZmF1bHRW
aWRlb1Bvc3RlclVSTAorICAgICAgICBzZXR0aW5nIGFuZCByZXR1cm4gdGhlIGltYWdlIGluIHRo
ZSByZXNwb25zZSBvZiB0aGF0IFVSTC4KKworICAgICAgICBUaGUgd2F5IHRvIGRvIHRoaXMgd291
bGQgYmU6CisKKyAgICAgICAgQSkgUmVwbGFjZSB0aGUgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lIGZ1bmN0aW9uIHdpdGggYW4KKyAgICAgICAgICAgRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBpbWFnZVNvdXJjZVVSTCBhcyBhCisgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYuIFRoZSBib2R5IHdpbGwgYmUgdGhlIHNhbWUgYXMg
YmVmb3JlLCBpdCB3aWxsIGp1c3QgYWxzbworICAgICAgICAgICBpbmNsdWRlIGEgY2FsbCB0byBn
ZXRBdHRyaWJ1dGUuIEFsc28gd2lsbCBuZWVkIHRvIHJldmlzZSB0aGUgZm91ciBjbGFzc2VzCisg
ICAgICAgICAgIHRoYXQgb3ZlcnJpZGUgdGhhdCBmdW5jdGlvbi4KKworICAgICAgICBCKSBBZGQg
YSBuZXcgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwgZnVuY3Rpb24gdGhhdCBpbXBs
ZW1lbnRzIHRoZQorICAgICAgICAgICBkZWZhdWx0IHBvc3RlciBVUkwgbG9naWMuCisKKyAgICAg
ICAgQykgVXBkYXRlIHRoZSBmb3VyIGZ1bmN0aW9ucyB0aGF0IGdldCB0aGUgcG9zdGVyIGF0dHJp
YnV0ZSB0byBoYW5kbGUgcG9zdGVyCisgICAgICAgICAgIGxvYWRpbmcgYW5kIGRpc3BsYXkgdG8g
Y2FsbCBwb3N0ZXJJbWFnZVVSTC4KKworICAgICAgICAgICAxKSBIVE1MVmlkZW9FbGVtZW50Ojpp
bWFnZVNvdXJjZVVSTC4KKyAgICAgICAgICAgMikgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxh
eU1vZGUuCisgICAgICAgICAgIDMpIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURpc3BsYXlTdGF0
ZS4KKyAgICAgICAgICAgNCkgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMu
IFdpbGwgbmVlZCB0byBjYXN0IHRvCisgICAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgYWZ0
ZXIgY2hlY2tpbmcgaXNWaWRlby4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmltYWdlU291cmNlVVJMKTogUmVwbGFjZSBpbWFnZVNvdXJj
ZUF0dHJpYnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3Vy
Y2VVUkwoKQorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNvdXJjZVVSTCk6IFJlcGxhY2UgaW1hZ2VT
b3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogaHRt
bC9IVE1MRW1iZWRFbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkg
d2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFy
YW1zKTogQ2hhbmdlIHRvIHVzZSBwb3N0ZXJJbWFnZVVSTAorICAgICAgICAqIGh0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6Omlt
YWdlU291cmNlVVJMKTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRoIGlt
YWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IFJlcGxh
Y2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIHdpdGggaW1hZ2VTb3VyY2VVUkwKKyAgICAgICAg
KiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudDo6SFRNTFZpZGVvRWxlbWVudCk6IHNldCBtX2RlZmF1bHRQb3N0ZXJVUkwgaWYgdGhl
cmUgaXMgc3VjaCBzZXR0aW5ncworICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
aW1hZ2VTb3VyY2VVUkwpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGgg
aW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0
RGlzcGxheU1vZGUpOiBVc2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKTogVXNlIGltYWdlU291cmNlVVJMKCkK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKTogUmV0
dXJuIGltYWdlIHNvdXJjZSdzIEtVUkwKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJM
KCkgYW5kIGFkZCBtX2RlZmF1bHRQb3N0ZXJVUkwKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50
KTogVXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGQg
ZGVmYXVsdFZpZGVvUG9zdGVyVVJMIHNldHRpbmcuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlSW1hZ2UpOiB1c2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTEZvckltYWdlTm9k
ZSk6IHVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVS
TCk6IHVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmltYWdlU291cmNlVVJMKTog
UmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkK
KyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJh
Y2t1cDo6QmFja3VwKTogc3VwcG9ydCBiYWNrdXAgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOiBzdXBw
b3J0IHJlc3RvcmUgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxTZXR0aW5nczo6c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKTogc2V0IGRlZmF1bHRWaWRl
b1Bvc3RlclVSTC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAg
ICAgKEJhY2t1cCk6IHN1cHBvcnQgYmFja3VwIGRlZmF1bHRWaWRlb1Bvc3RlclVSTC4KKyAgICAg
ICAgKEludGVybmFsU2V0dGluZ3MpOiBBZGQgc2V0RGVmYXVsdFZpZG9lUG9zdGVyVVJMIG1ldGhv
ZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOiBBZGQgc2V0RGVmYXVs
dFZpZGVvUG9zdGVyVVJMIGZvciB0ZXN0IHB1cnBvc2UuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpnZXRJbWFnZVNvdXJjZVVS
TCk6IEFkZCBnZXRJbWFnZVNvdXJjZVVSTCBtZXRob2QuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDogQWRkIGdldEltYWdlU291cmNlVVJMIG1ldGhvZC4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5pZGw6IEFkZCBnZXRJbWFnZVNvdXJjZVVSTCBtZXRob2QuCisKIDIwMTMtMDMt
MTMgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBGaXggYm9keSBi
YWNrZ3JvdW5kIGltYWdlIGdlb21ldHJ5IGNhbGN1bGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggNjYzMDQ5YWIwMTRjMjc2MTk4OTU5NTUyNWM5NDZhNTczZjBhNTk3Zi4uMjEzNGRmMDk3
ZjkxYWI0YTQ0MDI2ZDRjMWQ3OTk2MjQ4NjA1YjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtMTEyMSw5ICsxMTIxLDkgQEAgS1VSTCBFbGVtZW50OjpiYXNlVVJJKCkgY29uc3QKICAgICBy
ZXR1cm4gS1VSTChwYXJlbnRCYXNlLCBiYXNlQXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlm
aWVkTmFtZSYgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2NvbnN0
IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJl
dHVybiBzcmNBdHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3JjQXR0cik7CiB9CiAKIGJv
b2wgRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYg
Y29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDQ5ODhiMWQ3N2RkZGU0ZTQzMGY3YjU1M2M0
ZTYzMmNkZGQwNWYzYmUuLjQ2MjdiNjk4ZWIwZDU2ZTdiZTE2ZDJjM2VlMTgzNTMyZTk5ZWQ3ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDUxLDcgKzQ1MSw3IEBAIHB1YmxpYzoKICAgICBLVVJM
IGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgS1VSTCBn
ZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxl
Y3Rpb24gPSB0cnVlLCBGb2N1c0RpcmVjdGlvbiA9IEZvY3VzRGlyZWN0aW9uTm9uZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCBjMzNlMmY4YjljMGQ0ZDli
M2ZlOTk1ZDQwNjgzYTcyOTllMDkwMmY1Li5kZjJjMTZiY2FiYzA2ZTg4YjIyMGZmODYxOTQ5ZmVj
OTY0ODljZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAg
LTIxMCw5ICsyMTAsOSBAQCBib29sIEhUTUxFbWJlZEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGUubmFt
ZSgpID09IHNyY0F0dHIgfHwgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUo
YXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTEVtYmVkRWxlbWVudDo6
aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgSFRN
TEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVybiBzcmNB
dHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3JjQXR0cik7CiB9CiAKIHZvaWQgSFRNTEVt
YmVkRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JiB1cmxzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCBh
NTk1YmE0ZDU5YWM3YzIwMmNmMTc1ZjkwOTE2ZmU0MWIxODYwZmJmLi40NDJkY2I5YWIxMTBiZTk0
ZTBlOGUxNGEwNjJiODMxNzc5ZDRlMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVs
ZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwo
KSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRn
ZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IGNmOGVhZTZiYzAxODY4ODZjYmY3MjE4OWVmYmU0ZjRmMzlhYzI4YTUu
LmYxMjQxNDQ0NDA4ODE0MzEzNWQ0YjAyY2Y3OWNhOTZlN2Y0OGJhNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDE0MCw3ICs0MTQwLDggQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpnZXRQbHVnaW5Qcm94eVBhcmFtcyhLVVJMJiB1cmwsIFZlY3RvcjxT
dHJpbmc+JiBuYW1lcywgVmUKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgp
OwogCiAgICAgaWYgKGlzVmlkZW8oKSkgewotICAgICAgICBLVVJMIHBvc3RlclVSTCA9IGdldE5v
bkVtcHR5VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpOworICAgICAgICBIVE1MVmlkZW9FbGVtZW50
KiB2aWRlbyA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPih0aGlzKTsKKyAgICAgICAg
S1VSTCBwb3N0ZXJVUkwgPSB2aWRlby0+cG9zdGVySW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFw
b3N0ZXJVUkwuaXNFbXB0eSgpICYmIGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS0+d2lsbExvYWRN
ZWRpYUVsZW1lbnRVUkwocG9zdGVyVVJMKSkgewogICAgICAgICAgICAgbmFtZXMuYXBwZW5kKEFT
Q0lJTGl0ZXJhbCgiX21lZGlhX2VsZW1lbnRfcG9zdGVyXyIpKTsKICAgICAgICAgICAgIHZhbHVl
cy5hcHBlbmQocG9zdGVyVVJMLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAKaW5kZXggZjRkNjc1ODJkNDllYWNkNTRhMzM3MjIzOTRjYzhlNzVlMjYz
N2MwMy4uZWY0MmQwYjg0OTM4MjU5M2MwMTZlYmFlNTc0NTU2NDlhMzc2MGQwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTM2NCw5ICszNjQsOSBAQCBi
b29sIEhUTUxPYmplY3RFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0
dHJpYnV0ZSkgY29uc3QKICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUoKSA9PSBkYXRhQXR0ciB8
fCAoYXR0cmlidXRlLm5hbWUoKSA9PSB1c2VtYXBBdHRyICYmIGF0dHJpYnV0ZS52YWx1ZSgpLnN0
cmluZygpWzBdICE9ICcjJykgfHwgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNVUkxBdHRyaWJ1
dGUoYXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTE9iamVjdEVsZW1l
bnQ6OmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcm
IEhUTUxPYmplY3RFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGRhdGFBdHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoZGF0YUF0dHIpOwogfQogCiB2b2lk
IEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJGYWxsYmFja0NvbnRlbnQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDViN2U3MjBiOTc0NDYwZmNhMTFkMjE1MzU3
YmY4OWZkOTYxNzUyYzMuLmJmNzE3ZGE1NTUxYTM1YzdiZjE4NzdkODMzMjc2Y2E3N2E5ZTYxNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTc5LDcgKzc5LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNC
aW5kaW5ncygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cAppbmRleCBhMzc3YjU2OWVkNzgwZTRmNDk5M2Y1ZGM2NjE1Y2MyNTg0MTBjOTAzLi5hZmYzNzVi
Y2Q2Y2FmMjcwYmU1N2IxNDU0YWM4ZmMxYWI0ZTA3ZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTM2LDEwICszNiwxMiBAQAogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAi
U2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDksNiArNTEsOCBAQCBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6SFRN
TFZpZGVvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudAogICAg
IDogSFRNTE1lZGlhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHZpZGVvVGFnKSk7CisgICAgaWYgKGRvY3VtZW50LT5z
ZXR0aW5ncygpKQorICAgICAgICBtX2RlZmF1bHRQb3N0ZXJVUkwgPSBkb2N1bWVudC0+c2V0dGlu
Z3MoKS0+ZGVmYXVsdFZpZGVvUG9zdGVyVVJMKCk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFZpZGVv
RWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkBAIC0xNzgs
MTUgKzE4MiwxOCBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSgp
ID09IHBvc3RlckF0dHIgfHwgSFRNTE1lZGlhRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmli
dXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VT
b3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgSFRNTFZpZGVv
RWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVybiBwb3N0ZXJBdHRy
OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdXJsID0gZ2V0QXR0cmlidXRlKHBvc3RlckF0dHIp
OworICAgIGlmICghc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybCkuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gdXJsOworICAgIHJldHVybiBtX2RlZmF1bHRQb3N0ZXJVUkw7
CiB9CiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUg
bW9kZSkKIHsKICAgICBEaXNwbGF5TW9kZSBvbGRNb2RlID0gZGlzcGxheU1vZGUoKTsKLSAgICBL
VVJMIHBvc3RlciA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpOworICAgIEtV
UkwgcG9zdGVyID0gcG9zdGVySW1hZ2VVUkwoKTsKIAogICAgIGlmICghcG9zdGVyLmlzRW1wdHko
KSkgewogICAgICAgICAvLyBXZSBoYXZlIGEgcG9zdGVyIHBhdGgsIGJ1dCBvbmx5IHNob3cgaXQg
dW50aWwgdGhlIHVzZXIgdHJpZ2dlcnMgZGlzcGxheSBieSBwbGF5aW5nIG9yIHNlZWtpbmcgYW5k
IHRoZQpAQCAtMjIxLDcgKzIyOCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxh
eU1vZGUoRGlzcGxheU1vZGUgbW9kZSkKIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp1cGRhdGVE
aXNwbGF5U3RhdGUoKQogewotICAgIGlmIChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShwb3N0ZXJB
dHRyKS5pc0VtcHR5KCkpCisgICAgaWYgKHBvc3RlckltYWdlVVJMKCkuaXNFbXB0eSgpKQogICAg
ICAgICBzZXREaXNwbGF5TW9kZShWaWRlbyk7CiAgICAgZWxzZSBpZiAoZGlzcGxheU1vZGUoKSA8
IFBvc3RlcikKICAgICAgICAgc2V0RGlzcGxheU1vZGUoUG9zdGVyKTsKQEAgLTMwOCw2ICszMTUs
MTQgQEAgdW5zaWduZWQgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RHJvcHBlZEZyYW1lQ291bnQo
KSBjb25zdAogfQogI2VuZGlmCiAKK2NvbnN0IEtVUkwgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVy
SW1hZ2VVUkwoKQoreworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdXJsID0gc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKGltYWdlU291cmNlVVJMKCkpOworICAgIGlmICh1cmwuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gS1VSTCgpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5j
b21wbGV0ZVVSTCh1cmwpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuaAppbmRleCAwYzNmZDY4YmNiZjM0MjRlYWJiMzc0M2Y0Y2I2YTcxOWFjZGQ4
MTJiLi43NmI4YWQyMDdhZmYxNzk3ZjA1N2MwNzFlMDAzYjQyNDJjYTM2YmZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGRpc3Bs
YXlNb2RlKCkgPT0gUG9zdGVyIHx8IGRpc3BsYXlNb2RlKCkgPT0gUG9zdGVyV2FpdGluZ0ZvclZp
ZGVvOyB9CiAKKyAgICBjb25zdCBLVVJMIHBvc3RlckltYWdlVVJMKCk7CisKIHByaXZhdGU6CiAg
ICAgSFRNTFZpZGVvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29s
KTsKIApAQCAtODQsNyArODYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRl
bygpIGNvbnN0IHsgcmV0dXJuIHBsYXllcigpICYmIHBsYXllcigpLT5oYXNWaWRlbygpOyB9CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVN0YXRlKCk7CkBAIC05
Myw2ICs5NSw3IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8SFRNTEltYWdlTG9hZGVyPiBtX2lt
YWdlTG9hZGVyOwogCisgICAgQXRvbWljU3RyaW5nIG1fZGVmYXVsdFBvc3RlclVSTDsKIH07CiAK
IH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDQ0
MTFhOGM1ZWYxZmRmOTAzNGEyZmI2NTQyZjMyY2JhZGI5Y2M4MzkuLmRmMjExZTc2ODQ5NGE0MWZj
MDRmMmUwNDNhNGQ3ZTNlNjJmNWIwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVt
ZW50KCkKICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBBdG9taWNTdHJpbmcgYXR0ciA9IG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKG1fZWxlbWVu
dC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOworICAgIEF0b21pY1N0cmluZyBhdHRyID0g
bV9lbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwogCiAgICAgaWYgKGF0dHIgPT0gbV9mYWlsZWRM
b2FkVVJMKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCBlNzk5
MWVhZGNjMTQwMzA3ZmMwOTc2N2JlZmYyMTRhNTNiZjdlYmFkLi4yODY2MzZjYzE1YzQ3ZmU0NjRm
NWEwM2VmYTdkNWM5MmZkMDhmNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTE5NSw0
ICsxOTUsNyBAQCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkIGluaXRpYWw9ZGVmYXVsdFVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQKIAogbG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVu
YWJsZWQgaW5pdGlhbD1mYWxzZQogCisjIFNvbWUgYXBwcyBjb3VsZCBoYXZlIGEgZGVmYXVsdCB2
aWRlbyBwb3N0ZXIgaWYgaXQgaXMgbm90IHNldC4KK2RlZmF1bHRWaWRlb1Bvc3RlclVSTCB0eXBl
PVN0cmluZworCiBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQgaW5pdGlhbD10cnVlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVt
LmNwcAppbmRleCAzZDVhNmI2NjhhMGY5NzgzYzM0YjcyZmIyOTE1NDgxOGY0NWZkZDkwLi5lNTM1
M2E0OTYxMGY2YzQ1NzUyZWZjMzlkYzkzNWU3NWRjYzE1ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAg
LTE1Myw3ICsxNTMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAjZW5kaWYKICAgICBlbHNlIGlmIChu
b2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZW1iZWRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjpvYmplY3RUYWcpKSB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0Vs
ZW1lbnQobm9kZSk7Ci0gICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShl
bGVtZW50LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7CisgICAgICAgIHVybFN0cmluZyA9
IGVsZW1lbnQtPmltYWdlU291cmNlVVJMKCk7CiAgICAgfQogICAgIEtVUkwgdXJsID0gdXJsU3Ry
aW5nLmlzRW1wdHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKICAgICBXZWJLaXQ6
OldlYkltYWdlIHdlYkltYWdlID0gYml0bWFwLT5iaXRtYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBlZjM5NGM0OTcwNTNjOTg4ZGIx
MWU5NzFlNjVkY2E3NjAyMzJkOTFhLi5kNDI1NTRmNTNkYzdhMGY4NGNmOTVhMjE0MDkxNTM5ZmY2
NjJlOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIEtVUkwgZ2V0VVJMRm9ySW1hZ2VOb2RlKE5v
ZGUqIG5vZGUpCiAjZW5kaWYKICAgICBlbHNlIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6ZW1iZWRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvYmplY3RUYWcpKSB7
CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7Ci0gICAgICAgIHVy
bFN0cmluZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShlbGVtZW50LT5pbWFnZVNvdXJjZUF0dHJp
YnV0ZU5hbWUoKSk7CisgICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmltYWdlU291cmNlVVJM
KCk7CiAgICAgfQogICAgIHJldHVybiB1cmxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTCgpIDogbm9k
ZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKHVybFN0cmluZykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwCmluZGV4IDIzZGEzMWM2MDM3YjAyNDM0YTJjZDJjMmVlNzNkOGJkN2YyMDlkMTYuLmM2
MzZmNTdmOWJkMzY3OGJjMWQ5YjY2Mzk2MmM0OGNhNjk1ZjJlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCBLVVJMIEhp
dFRlc3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25zdAogI2VuZGlmCiAgICAgICAgKSB7
CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobV9pbm5lck5vblNoYXJlZE5v
ZGUuZ2V0KCkpOwotICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoZWxl
bWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICB1cmxTdHJpbmcgPSBl
bGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gS1VS
TCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGFmYjRkZGNi
YzZkZjcwY2ZmYTQ3NGRmYTcxY2E2ZWUxYjgwNjA0ZWUuLjBkMjNiZTNiMjViMzBkOTM1ZjM2MDQ3
ZDAzMmMyZTQxYThmZTkyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3Bw
CkBAIC0yMjIsOSArMjIyLDkgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBT
VkdJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKgogICAgIHJldHVybiBJ
bnNlcnRpb25Eb25lOwogfQogCi1jb25zdCBRdWFsaWZpZWROYW1lJiBTVkdJbWFnZUVsZW1lbnQ6
OmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIFNW
R0ltYWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVybiBYTGlu
a05hbWVzOjpocmVmQXR0cjsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6Omhy
ZWZBdHRyKTsKIH0KIAogdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuaAppbmRleCBjYTBiNjJlNTcyZThjNTdmMDY1NDIwMzdiMTY4Yzg2YjJkMTJl
NjQ4Li5kZTdhNjRhYTFjYjg1ZWY4NjdlNjZlMTAwMDJjYzNhZjQyNTE2ZThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC01OCw4ICs1OCw4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotIAotICAgIHZpcnR1YWwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7ICAgICAgIAor
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRS
ZXF1aXJlZFJlc291cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAKaW5kZXggYzBmNTg3N2E0ODc5YjFjYWVlZWJiNzcxNTVkNWM2ZmJjZmViNDBiOS4u
YzNmOTBkNWQyMWZkMDI0ZmMwNDI4ODVlYzYwMTRhODQ5MGZmZTNiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC05NCw2ICs5NCw3IEBAIEludGVy
bmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAsIG1f
c2hvdWxkRGlzcGxheUNhcHRpb25zKHNldHRpbmdzLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKSkK
ICAgICAsIG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoc2V0dGluZ3MtPnNob3VsZERp
c3BsYXlUZXh0RGVzY3JpcHRpb25zKCkpCiAjZW5kaWYKKyAgICAsIG1fZGVmYXVsdFZpZGVvUG9z
dGVyVVJMKHNldHRpbmdzLT5kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoKSkKICAgICAsIG1fb3JpZ2lu
YWxUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyhzZXR0aW5ncy0+
dGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoKSkKIHsKIH0KQEAg
LTEzMCw2ICsxMzEsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRv
KFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBzZXR0aW5ncy0+c2V0U2hvdWxkRGlzcGxheUNhcHRp
b25zKG1fc2hvdWxkRGlzcGxheUNhcHRpb25zKTsKICAgICBzZXR0aW5ncy0+c2V0U2hvdWxkRGlz
cGxheVRleHREZXNjcmlwdGlvbnMobV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyk7CiAj
ZW5kaWYKKyAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKG1fZGVmYXVsdFZp
ZGVvUG9zdGVyVVJMKTsKICAgICBzZXR0aW5ncy0+c2V0VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50
QmVmb3JlSGlkaW5nQ29udHJvbHMobV9vcmlnaW5hbFRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJl
Zm9yZUhpZGluZ0NvbnRyb2xzKTsKIH0KIApAQCAtNDg5LDYgKzQ5MSwxMiBAQCB2b2lkIEludGVy
bmFsU2V0dGluZ3M6OnNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZhbEluU2Vj
b25kcywgRXhjZXB0aQogICAgIHNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50
ZXJ2YWxJblNlY29uZHMpOwogfQogCit2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldERlZmF1bHRW
aWRlb1Bvc3RlclVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsKKyAgICBzZXR0aW5ncygpLT5z
ZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwodXJsKTsKK30KKwogdm9pZCBJbnRlcm5hbFNldHRpbmdz
OjpzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyhkb3VibGUg
dGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9y
U2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5k
ZXggMjVjMjVmZTA4ODQwNGI0YmJiZmM2M2FkNjEyZDkxMjFmMzBkYWI2Ni4uNTQ5YjBmYTQ1ZmE0
MGIyNmRjODQ4YTUyYTI1YWE3OGExNzNhMmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgICAgICBib29s
IG1fc2hvdWxkRGlzcGxheUNhcHRpb25zOwogICAgICAgICBib29sIG1fc2hvdWxkRGlzcGxheVRl
eHREZXNjcmlwdGlvbnM7CiAjZW5kaWYKKyAgICAgICAgU3RyaW5nIG1fZGVmYXVsdFZpZGVvUG9z
dGVyVVJMOwogICAgICAgICBib29sIG1fb3JpZ2luYWxUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRC
ZWZvcmVIaWRpbmdDb250cm9sczsKICAgICB9OwogCkBAIC0xMjcsNiArMTI4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoYm9v
bCk7CiAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsSW5T
ZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJV
UkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFRpbWVX
aXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKGRvdWJsZSB0aW1lLCBFeGNl
cHRpb25Db2RlJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmlkbAppbmRleCBkZDM0MTYwMTUyZWZhZTJkN2RlNWQ3N2NjNDA0NzRiMTdhM2U2
OWY2Li5jZGU4ZGY2MjVmNDE5YTFhYTk3YjM2NTcxNGRkZWE1ZGM0YWVmZDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTU5LDUgKzU5LDYgQEAK
ICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShpbiBET01TdHJpbmcgcG9saWN5KSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoaW4gYm9vbGVh
biBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1l
ckludGVydmFsKGluIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcykgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoaW4gRE9NU3RyaW5nIHBvc3Rl
cikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgdm9pZCBzZXRUaW1lV2l0aG91dE1vdXNlTW92
ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyhpbiBkb3VibGUgdGltZSkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDJkYzI1ZTEy
MGRjOWFlYjBhNmVmZTc5OTkzNmJlNDU5ZTMxNTY3ZWEuLmQ3NzY5YmIwMTY2MDQxYzQxNGY4MjA4
NjQ5Y2EzZDNjN2NlYTY3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTIwNTYsNCArMjA1NiwxMyBAQCBTdHJpbmcgSW50ZXJuYWxzOjptYXJrZXJUZXh0Rm9yTGlzdEl0
ZW0oRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIFdlYkNv
cmU6Om1hcmtlclRleHRGb3JMaXN0SXRlbShlbGVtZW50KTsKIH0KIAorU3RyaW5nIEludGVybmFs
czo6Z2V0SW1hZ2VTb3VyY2VVUkwoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKCFlbGVtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorICAgIHJldHVybiBlbGVtZW50LT5p
bWFnZVNvdXJjZVVSTCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCBjMWFjMmJiNjMyMWQ4NTUyNGZlMTk3YTQyOTJjZDdhMGI3NGVmY2NmLi45ZTliNGRhNzQ2MmY2
NGUxNjhjNjQ1YTkxZGVjMThhMjU2Yjk4YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTI5NSw2ICsyOTUsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCiAgICAgdm9pZCBlbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKTsKICNlbmRpZgorCisg
ICAgU3RyaW5nIGdldEltYWdlU291cmNlVVJMKEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgICAgICAgICAgICAgICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9j
dW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA5MzA0OGQ3N2I0
Y2MzZjM3ZmU3YzRmZTUwOWNlY2UwMWExOTdhYzgwLi4yN2I3NGJjMTJkYmE0YWJiNzE4MmE1MDk1
Y2ExOTZjYzk0NjM5YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0y
NjAsNCArMjYwLDYgQEAKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyXSB2b2lk
IGluaXRpYWxpemVNb2NrQ0RNKCk7CiAKICAgICBbQ29uZGl0aW9uYWw9U1BFRUNIX1NZTlRIRVNJ
U10gdm9pZCBlbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKTsKKworICAgIERPTVN0cmluZyBn
ZXRJbWFnZVNvdXJjZVVSTChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24p
OwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBmYzk1YmNlYjBmZjJkZDNiZjNmY2ZiMDVhYzdlYjEzYzBmYzU2ZjQyLi5j
ZGE4N2YwYmViZGQwYTAwMTk3ZjUzOTExMWJjMzg1NjUxNDkxNjFhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDEgQEAKKzIwMTMtMDMtMDYgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBBZGQgdGhlIGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGRvZXNuJ3QgZXhpc3Qg
aW4gdmlkZW8gdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTAyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgQW5kcm9pZCB3ZWIgdmlldyBhcHBsaWNhdGlvbiBjb3VsZCBwcm92aWRlIHRoZSBk
ZWZhdWx0IHBvc3RlcgorICAgICAgICBmb3IgYSB2aWRlbyB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGUg
cG9zdGVyIGF0dHJpYnV0ZS4KKworICAgICAgICBUbyBwcm92aWRlIHRoZSBkZWZhdWx0IHBvc3Rl
ciwgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc2V0IGRlZmF1bHRWaWRlb1Bvc3RlclVSTAorICAgICAg
ICBzZXR0aW5nIGFuZCByZXR1cm4gdGhlIGltYWdlIGluIHRoZSByZXNwb25zZSBvZiB0aGF0IFVS
TC4KKworICAgICAgICBUaGUgd2F5IHRvIGRvIHRoaXMgd291bGQgYmU6CisKKyAgICAgICAgQSkg
UmVwbGFjZSB0aGUgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIGZ1bmN0aW9uIHdp
dGggYW4KKyAgICAgICAgICAgRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwgZnVuY3Rpb24gdGhhdCBy
ZXR1cm5zIHRoZSBpbWFnZVNvdXJjZVVSTCBhcyBhCisgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYuIFRoZSBib2R5IHdpbGwgYmUgdGhlIHNhbWUgYXMgYmVmb3JlLCBpdCB3aWxsIGp1c3Qg
YWxzbworICAgICAgICAgICBpbmNsdWRlIGEgY2FsbCB0byBnZXRBdHRyaWJ1dGUuIEFsc28gd2ls
bCBuZWVkIHRvIHJldmlzZSB0aGUgZm91ciBjbGFzc2VzCisgICAgICAgICAgIHRoYXQgb3ZlcnJp
ZGUgdGhhdCBmdW5jdGlvbi4KKworICAgICAgICBCKSBBZGQgYSBuZXcgSFRNTFZpZGVvRWxlbWVu
dDo6cG9zdGVySW1hZ2VVUkwgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHRoZQorICAgICAgICAg
ICBkZWZhdWx0IHBvc3RlciBVUkwgbG9naWMuCisKKyAgICAgICAgQykgVXBkYXRlIHRoZSBmb3Vy
IGZ1bmN0aW9ucyB0aGF0IGdldCB0aGUgcG9zdGVyIGF0dHJpYnV0ZSB0byBoYW5kbGUgcG9zdGVy
CisgICAgICAgICAgIGxvYWRpbmcgYW5kIGRpc3BsYXkgdG8gY2FsbCBwb3N0ZXJJbWFnZVVSTC4K
KworICAgICAgICAgICAxKSBIVE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJjZVVSTC4KKyAgICAg
ICAgICAgMikgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUuCisgICAgICAgICAgIDMp
IEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURpc3BsYXlTdGF0ZS4KKyAgICAgICAgICAgNCkgSFRN
TE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMuIFdpbGwgbmVlZCB0byBjYXN0IHRv
CisgICAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgYWZ0ZXIgY2hlY2tpbmcgaXNWaWRlby4K
KworICAgICAgICAqIG1lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRtbDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5odG1sOiBBZGRlZC4K
KwogMjAxMy0wMy0xMyAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgogCiAgICAgICAg
IEZpeCBib2R5IGJhY2tncm91bmQgaW1hZ2UgZ2VvbWV0cnkgY2FsY3VsYXRpb24KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YzUwYThlNmE3MDQwZGQ0NzRiYTM2OTJmNjgyODIzODczN2Q3MDg4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorUEFTUworUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDViMDFiNzliOGZi
M2RjZjczMTBiYzJjNDM1ZGVmN2QyOTA0OTllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRtbApAQCAtMCwwICsxLDU0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgfQorICBpZiAod2luZG93LmludGVybmFscykgeworICAgIHZhciBk
ZWZhdWx0X3Bvc3RlciA9ICdjb250ZW50L2dyZWVuYm94LnBuZyc7CisgICAgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoZGVmYXVsdF9wb3N0ZXIpOwor
ICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBwb3N0
ZXIgPSB3aW5kb3cuaW50ZXJuYWxzLmdldEltYWdlU291cmNlVVJMKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ2aWRlby1uby1wb3N0ZXIiKSk7CisgICAgICBpZiAocG9zdGVyKSB7CisgICAgICAg
IGlmIChwb3N0ZXIgPT0gZGVmYXVsdF9wb3N0ZXIpCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3Rl
ciIpLmlubmVyVGV4dCA9ICJGQUlMIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBpbWFn
ZSBzb3VyY2UgaXMgbnVsbCI7CisKKyAgICAgIHBvc3RlciA9ICB3aW5kb3cuaW50ZXJuYWxzLmdl
dEltYWdlU291cmNlVVJMKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1oYXMtcG9zdGVy
IikpOworICAgICAgaWYgKHBvc3RlcikgeworICAgICAgICBpZiAocG9zdGVyID09ICJjb250ZW50
L2FiZS5wbmciKQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFz
LXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJG
QUlMOiBwb3N0ZXIgd2FzIGNoYW5nZWQiOworICAgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBp
bWFnZSBzb3VyY2UgaXMgbnVsbCI7CisKKyAgICAgIHBvc3RlciA9ICB3aW5kb3cuaW50ZXJuYWxz
LmdldEltYWdlU291cmNlVVJMKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1oYXMtZW1w
dHktcG9zdGVyIikpOworICAgICAgaWYgKHBvc3RlcikgeworICAgICAgICBpZiAocG9zdGVyID09
IGRlZmF1bHRfcG9zdGVyKQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQtaGFzLWVtcHR5LXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLWVtcHR5LXBvc3Rl
ciIpLmlubmVyVGV4dCA9ICJGQUlMIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1lbXB0eS1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJ
TDogaW1hZ2Ugc291cmNlIGlzIG51bGwiOworCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICB9LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
cmUgaWQ9InJlc3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1wb3N0
ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1lbXB0eS1wb3N0ZXIiPjwvcHJlPgorPHZp
ZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcHJlbG9hZD0i
bm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3Qu
bXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJlbG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBp
ZD0idmlkZW8taGFzLWVtcHR5LXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwb3N0ZXI9
IiIgcHJlbG9hZD0ibm9uZSIgLz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mN2YwZmE1YzhhNTdiMDU1MzZlNGVlYzllYTY1MDU4MTcxNDVlYmQwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjhiYTA2MmMwZDdj
YTNmNDZkNWRmM2VlOWZhM2I1OWE0MzNkZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKyAgfQorCisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAg
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHBvc3RlciA9
IHdpbmRvdy5pbnRlcm5hbHMuZ2V0SW1hZ2VTb3VyY2VVUkwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZGVvLW5vLXBvc3RlciIpKTsKKyAgICAgIGlmIChwb3N0ZXIpCisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUwg
OiBwb3N0ZXIgd2FzIGFkZGVkLiI7CisgICAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIlBBU1MiOworCisgICAg
ICBwb3N0ZXIgPSB3aW5kb3cuaW50ZXJuYWxzLmdldEltYWdlU291cmNlVVJMKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ2aWRlby1oYXMtcG9zdGVyIikpOworICAgICAgaWYgKHBvc3Rlcikgewor
ICAgICAgICBpZiAocG9zdGVyID09ICJjb250ZW50L2FiZS5wbmciKQorICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNT
IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgd2FzIGNoYW5nZWQiOwor
ICAgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFz
LXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBJbWFnZSBzb3VyY2UgaXMgbnVsbCI7CisKKyAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIGZhbHNlKTsKKyAgfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0icmVzdWx0LW5vLXBvc3RlciI+PC9wcmU+
Cis8cHJlIGlkPSJyZXN1bHQtaGFzLXBvc3RlciI+PC9wcmU+Cis8dmlkZW8gaWQ9InZpZGVvLW5v
LXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwcmVsb2FkPSJub25lIiAvPgorPHZpZGVv
IGlkPSJ2aWRlby1oYXMtcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHBvc3Rlcj0iY29u
dGVudC9hYmUucG5nIiBwcmVsb2FkPSJub25lIiAvPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192979</attachid>
            <date>2013-03-13 13:14:50 -0700</date>
            <delta_ts>2013-03-13 15:03:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110263-20130313131047.patch</filename>
            <type>text/plain</type>
            <size>30203</size>
            <attacher>michaelbai</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhiNDQxYWI3OGJiOTFl
MDgyMzJjMDA2NWRiZTg0YzAzMzU5NWNhMS4uM2UzYjkwM2VlNjk5ZmRkM2IxNjg5M2M1YTAzMmIx
NWZhYzg5MmI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAzLTA2ICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3ZpZGVv
LWRlZmF1bHQtcG9zdGVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3ZpZGVvLW5vLWRlZmF1
bHQtcG9zdGVyLmh0bWwKKworICAgICAgICBUaGUgQW5kcm9pZCB3ZWIgdmlldyBhcHBsaWNhdGlv
biBjb3VsZCBwcm92aWRlIHRoZSBkZWZhdWx0IHBvc3RlcgorICAgICAgICBmb3IgYSB2aWRlbyB0
aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgcG9zdGVyIGF0dHJpYnV0ZS4KKworICAgICAgICBUbyBwcm92
aWRlIHRoZSBkZWZhdWx0IHBvc3RlciwgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc2V0IGRlZmF1bHRW
aWRlb1Bvc3RlclVSTAorICAgICAgICBzZXR0aW5nIGFuZCByZXR1cm4gdGhlIGltYWdlIGluIHRo
ZSByZXNwb25zZSBvZiB0aGF0IFVSTC4KKworICAgICAgICBUaGUgd2F5IHRvIGRvIHRoaXMgd291
bGQgYmU6CisKKyAgICAgICAgQSkgUmVwbGFjZSB0aGUgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lIGZ1bmN0aW9uIHdpdGggYW4KKyAgICAgICAgICAgRWxlbWVudDo6aW1hZ2VTb3Vy
Y2VVUkwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBpbWFnZVNvdXJjZVVSTCBhcyBhCisgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYuIFRoZSBib2R5IHdpbGwgYmUgdGhlIHNhbWUgYXMg
YmVmb3JlLCBpdCB3aWxsIGp1c3QgYWxzbworICAgICAgICAgICBpbmNsdWRlIGEgY2FsbCB0byBn
ZXRBdHRyaWJ1dGUuIEFsc28gd2lsbCBuZWVkIHRvIHJldmlzZSB0aGUgZm91ciBjbGFzc2VzCisg
ICAgICAgICAgIHRoYXQgb3ZlcnJpZGUgdGhhdCBmdW5jdGlvbi4KKworICAgICAgICBCKSBBZGQg
YSBuZXcgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwgZnVuY3Rpb24gdGhhdCBpbXBs
ZW1lbnRzIHRoZQorICAgICAgICAgICBkZWZhdWx0IHBvc3RlciBVUkwgbG9naWMuCisKKyAgICAg
ICAgQykgVXBkYXRlIHRoZSBmb3VyIGZ1bmN0aW9ucyB0aGF0IGdldCB0aGUgcG9zdGVyIGF0dHJp
YnV0ZSB0byBoYW5kbGUgcG9zdGVyCisgICAgICAgICAgIGxvYWRpbmcgYW5kIGRpc3BsYXkgdG8g
Y2FsbCBwb3N0ZXJJbWFnZVVSTC4KKworICAgICAgICAgICAxKSBIVE1MVmlkZW9FbGVtZW50Ojpp
bWFnZVNvdXJjZVVSTC4KKyAgICAgICAgICAgMikgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxh
eU1vZGUuCisgICAgICAgICAgIDMpIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURpc3BsYXlTdGF0
ZS4KKyAgICAgICAgICAgNCkgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMu
IFdpbGwgbmVlZCB0byBjYXN0IHRvCisgICAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgYWZ0
ZXIgY2hlY2tpbmcgaXNWaWRlby4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmltYWdlU291cmNlVVJMKTogUmVwbGFjZSBpbWFnZVNvdXJj
ZUF0dHJpYnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGggaW1hZ2VTb3Vy
Y2VVUkwoKQorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNvdXJjZVVSTCk6IFJlcGxhY2UgaW1hZ2VT
b3VyY2VBdHRyaWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogaHRt
bC9IVE1MRW1iZWRFbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkg
d2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFy
YW1zKTogQ2hhbmdlIHRvIHVzZSBwb3N0ZXJJbWFnZVVSTAorICAgICAgICAqIGh0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6Omlt
YWdlU291cmNlVVJMKTogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRoIGlt
YWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IFJlcGxh
Y2UgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIHdpdGggaW1hZ2VTb3VyY2VVUkwKKyAgICAgICAg
KiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudDo6SFRNTFZpZGVvRWxlbWVudCk6IHNldCBtX2RlZmF1bHRQb3N0ZXJVUkwgaWYgdGhl
cmUgaXMgc3VjaCBzZXR0aW5ncworICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
aW1hZ2VTb3VyY2VVUkwpOiBSZXBsYWNlIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIHdpdGgg
aW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0
RGlzcGxheU1vZGUpOiBVc2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudDo6dXBkYXRlRGlzcGxheVN0YXRlKTogVXNlIGltYWdlU291cmNlVVJMKCkK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKTogUmV0
dXJuIGltYWdlIHNvdXJjZSdzIEtVUkwKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDogUmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJM
KCkgYW5kIGFkZCBtX2RlZmF1bHRQb3N0ZXJVUkwKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50
KTogVXNlIGltYWdlU291cmNlVVJMKCkKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGQg
ZGVmYXVsdFZpZGVvUG9zdGVyVVJMIHNldHRpbmcuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlSW1hZ2UpOiB1c2UgaW1hZ2VTb3VyY2VVUkwoKQorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTEZvckltYWdlTm9k
ZSk6IHVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVS
TCk6IHVzZSBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmltYWdlU291cmNlVVJMKTog
UmVwbGFjZSBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSB3aXRoIGltYWdlU291cmNlVVJMKCkK
KyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6IFJlcGxhY2UgaW1hZ2VTb3VyY2VBdHRy
aWJ1dGVOYW1lKCkgd2l0aCBpbWFnZVNvdXJjZVVSTCgpCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJh
Y2t1cDo6QmFja3VwKTogc3VwcG9ydCBiYWNrdXAgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOiBzdXBw
b3J0IHJlc3RvcmUgZGVmYXVsdFZpZGVvUG9zdGVyVVJMLgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxTZXR0aW5nczo6c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKTogc2V0IGRlZmF1bHRWaWRl
b1Bvc3RlclVSTC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAg
ICAgKEJhY2t1cCk6IHN1cHBvcnQgYmFja3VwIGRlZmF1bHRWaWRlb1Bvc3RlclVSTC4KKyAgICAg
ICAgKEludGVybmFsU2V0dGluZ3MpOiBBZGQgc2V0RGVmYXVsdFZpZG9lUG9zdGVyVVJMIG1ldGhv
ZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsOiBBZGQgc2V0RGVmYXVs
dFZpZGVvUG9zdGVyVVJMIGZvciB0ZXN0IHB1cnBvc2UuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpnZXRJbWFnZVNvdXJjZVVS
TCk6IEFkZCBnZXRJbWFnZVNvdXJjZVVSTCBtZXRob2QuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDogQWRkIGdldEltYWdlU291cmNlVVJMIG1ldGhvZC4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5pZGw6IEFkZCBnZXRJbWFnZVNvdXJjZVVSTCBtZXRob2QuCisKIDIwMTMtMDMt
MTMgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBGaXggYm9keSBi
YWNrZ3JvdW5kIGltYWdlIGdlb21ldHJ5IGNhbGN1bGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggNjYzMDQ5YWIwMTRjMjc2MTk4OTU5NTUyNWM5NDZhNTczZjBhNTk3Zi4uMjEzNGRmMDk3
ZjkxYWI0YTQ0MDI2ZDRjMWQ3OTk2MjQ4NjA1YjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtMTEyMSw5ICsxMTIxLDkgQEAgS1VSTCBFbGVtZW50OjpiYXNlVVJJKCkgY29uc3QKICAgICBy
ZXR1cm4gS1VSTChwYXJlbnRCYXNlLCBiYXNlQXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlm
aWVkTmFtZSYgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2NvbnN0
IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJl
dHVybiBzcmNBdHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3JjQXR0cik7CiB9CiAKIGJv
b2wgRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYg
Y29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDQ5ODhiMWQ3N2RkZGU0ZTQzMGY3YjU1M2M0
ZTYzMmNkZGQwNWYzYmUuLjQ2MjdiNjk4ZWIwZDU2ZTdiZTE2ZDJjM2VlMTgzNTMyZTk5ZWQ3ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDUxLDcgKzQ1MSw3IEBAIHB1YmxpYzoKICAgICBLVVJM
IGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgS1VSTCBn
ZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxl
Y3Rpb24gPSB0cnVlLCBGb2N1c0RpcmVjdGlvbiA9IEZvY3VzRGlyZWN0aW9uTm9uZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCBjMzNlMmY4YjljMGQ0ZDli
M2ZlOTk1ZDQwNjgzYTcyOTllMDkwMmY1Li5kZjJjMTZiY2FiYzA2ZTg4YjIyMGZmODYxOTQ5ZmVj
OTY0ODljZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAg
LTIxMCw5ICsyMTAsOSBAQCBib29sIEhUTUxFbWJlZEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGUubmFt
ZSgpID09IHNyY0F0dHIgfHwgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUo
YXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTEVtYmVkRWxlbWVudDo6
aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgSFRN
TEVtYmVkRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVybiBzcmNB
dHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3JjQXR0cik7CiB9CiAKIHZvaWQgSFRNTEVt
YmVkRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JiB1cmxzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCBh
NTk1YmE0ZDU5YWM3YzIwMmNmMTc1ZjkwOTE2ZmU0MWIxODYwZmJmLi40NDJkY2I5YWIxMTBiZTk0
ZTBlOGUxNGEwNjJiODMxNzc5ZDRlMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVs
ZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBpbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwo
KSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRn
ZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IGNmOGVhZTZiYzAxODY4ODZjYmY3MjE4OWVmYmU0ZjRmMzlhYzI4YTUu
LmYxMjQxNDQ0NDA4ODE0MzEzNWQ0YjAyY2Y3OWNhOTZlN2Y0OGJhNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDE0MCw3ICs0MTQwLDggQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpnZXRQbHVnaW5Qcm94eVBhcmFtcyhLVVJMJiB1cmwsIFZlY3RvcjxT
dHJpbmc+JiBuYW1lcywgVmUKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgp
OwogCiAgICAgaWYgKGlzVmlkZW8oKSkgewotICAgICAgICBLVVJMIHBvc3RlclVSTCA9IGdldE5v
bkVtcHR5VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpOworICAgICAgICBIVE1MVmlkZW9FbGVtZW50
KiB2aWRlbyA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPih0aGlzKTsKKyAgICAgICAg
S1VSTCBwb3N0ZXJVUkwgPSB2aWRlby0+cG9zdGVySW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFw
b3N0ZXJVUkwuaXNFbXB0eSgpICYmIGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS0+d2lsbExvYWRN
ZWRpYUVsZW1lbnRVUkwocG9zdGVyVVJMKSkgewogICAgICAgICAgICAgbmFtZXMuYXBwZW5kKEFT
Q0lJTGl0ZXJhbCgiX21lZGlhX2VsZW1lbnRfcG9zdGVyXyIpKTsKICAgICAgICAgICAgIHZhbHVl
cy5hcHBlbmQocG9zdGVyVVJMLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAKaW5kZXggZjRkNjc1ODJkNDllYWNkNTRhMzM3MjIzOTRjYzhlNzVlMjYz
N2MwMy4uZWY0MmQwYjg0OTM4MjU5M2MwMTZlYmFlNTc0NTU2NDlhMzc2MGQwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTM2NCw5ICszNjQsOSBAQCBi
b29sIEhUTUxPYmplY3RFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0
dHJpYnV0ZSkgY29uc3QKICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUoKSA9PSBkYXRhQXR0ciB8
fCAoYXR0cmlidXRlLm5hbWUoKSA9PSB1c2VtYXBBdHRyICYmIGF0dHJpYnV0ZS52YWx1ZSgpLnN0
cmluZygpWzBdICE9ICcjJykgfHwgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNVUkxBdHRyaWJ1
dGUoYXR0cmlidXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTE9iamVjdEVsZW1l
bnQ6OmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcm
IEhUTUxPYmplY3RFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGRhdGFBdHRyOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoZGF0YUF0dHIpOwogfQogCiB2b2lk
IEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJGYWxsYmFja0NvbnRlbnQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDViN2U3MjBiOTc0NDYwZmNhMTFkMjE1MzU3
YmY4OWZkOTYxNzUyYzMuLmJmNzE3ZGE1NTUxYTM1YzdiZjE4NzdkODMzMjc2Y2E3N2E5ZTYxNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTc5LDcgKzc5LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0Rm9ySlNC
aW5kaW5ncygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cAppbmRleCBhMzc3YjU2OWVkNzgwZTRmNDk5M2Y1ZGM2NjE1Y2MyNTg0MTBjOTAzLi5iYTcwZGNl
YWI5OGIwMTg0YjBlMTdhNTBhNDFmNTQwYWEyZTA0NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTM2LDEwICszNiwxMiBAQAogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAi
U2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDksNiArNTEsOCBAQCBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6SFRN
TFZpZGVvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudAogICAg
IDogSFRNTE1lZGlhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHZpZGVvVGFnKSk7CisgICAgaWYgKGRvY3VtZW50LT5z
ZXR0aW5ncygpKQorICAgICAgICBtX2RlZmF1bHRQb3N0ZXJVUkwgPSBkb2N1bWVudC0+c2V0dGlu
Z3MoKS0+ZGVmYXVsdFZpZGVvUG9zdGVyVVJMKCk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFZpZGVv
RWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkBAIC0xNzgs
MTUgKzE4MiwxOCBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSgp
ID09IHBvc3RlckF0dHIgfHwgSFRNTE1lZGlhRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmli
dXRlKTsKIH0KIAotY29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTFZpZGVvRWxlbWVudDo6aW1hZ2VT
b3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgSFRNTFZpZGVv
RWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVybiBwb3N0ZXJBdHRy
OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdXJsID0gZ2V0QXR0cmlidXRlKHBvc3RlckF0dHIp
OworICAgIGlmICghc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybCkuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gdXJsOworICAgIHJldHVybiBtX2RlZmF1bHRQb3N0ZXJVUkw7
CiB9CiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUg
bW9kZSkKIHsKICAgICBEaXNwbGF5TW9kZSBvbGRNb2RlID0gZGlzcGxheU1vZGUoKTsKLSAgICBL
VVJMIHBvc3RlciA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHBvc3RlckF0dHIpOworICAgIEtV
UkwgcG9zdGVyID0gcG9zdGVySW1hZ2VVUkwoKTsKIAogICAgIGlmICghcG9zdGVyLmlzRW1wdHko
KSkgewogICAgICAgICAvLyBXZSBoYXZlIGEgcG9zdGVyIHBhdGgsIGJ1dCBvbmx5IHNob3cgaXQg
dW50aWwgdGhlIHVzZXIgdHJpZ2dlcnMgZGlzcGxheSBieSBwbGF5aW5nIG9yIHNlZWtpbmcgYW5k
IHRoZQpAQCAtMjIxLDcgKzIyOCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxh
eU1vZGUoRGlzcGxheU1vZGUgbW9kZSkKIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp1cGRhdGVE
aXNwbGF5U3RhdGUoKQogewotICAgIGlmIChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShwb3N0ZXJB
dHRyKS5pc0VtcHR5KCkpCisgICAgaWYgKHBvc3RlckltYWdlVVJMKCkuaXNFbXB0eSgpKQogICAg
ICAgICBzZXREaXNwbGF5TW9kZShWaWRlbyk7CiAgICAgZWxzZSBpZiAoZGlzcGxheU1vZGUoKSA8
IFBvc3RlcikKICAgICAgICAgc2V0RGlzcGxheU1vZGUoUG9zdGVyKTsKQEAgLTMwOCw2ICszMTUs
MTQgQEAgdW5zaWduZWQgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RHJvcHBlZEZyYW1lQ291bnQo
KSBjb25zdAogfQogI2VuZGlmCiAKK0tVUkwgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VV
UkwoKSBjb25zdAoreworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdXJsID0gc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKGltYWdlU291cmNlVVJMKCkpOworICAgIGlmICh1cmwuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gS1VSTCgpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5j
b21wbGV0ZVVSTCh1cmwpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuaAppbmRleCAwYzNmZDY4YmNiZjM0MjRlYWJiMzc0M2Y0Y2I2YTcxOWFjZGQ4
MTJiLi4yNDYzOTQ1NjA0ZDQ0NGIzMDUyNDIxYTdhZTA0ZTZkMWViMDkzOWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGRpc3Bs
YXlNb2RlKCkgPT0gUG9zdGVyIHx8IGRpc3BsYXlNb2RlKCkgPT0gUG9zdGVyV2FpdGluZ0ZvclZp
ZGVvOyB9CiAKKyAgICBLVVJMIHBvc3RlckltYWdlVVJMKCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgSFRNTFZpZGVvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29s
KTsKIApAQCAtODQsNyArODYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRl
bygpIGNvbnN0IHsgcmV0dXJuIHBsYXllcigpICYmIHBsYXllcigpLT5oYXNWaWRlbygpOyB9CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVN0YXRlKCk7CkBAIC05
Myw2ICs5NSw3IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8SFRNTEltYWdlTG9hZGVyPiBtX2lt
YWdlTG9hZGVyOwogCisgICAgQXRvbWljU3RyaW5nIG1fZGVmYXVsdFBvc3RlclVSTDsKIH07CiAK
IH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDQ0
MTFhOGM1ZWYxZmRmOTAzNGEyZmI2NTQyZjMyY2JhZGI5Y2M4MzkuLmRmMjExZTc2ODQ5NGE0MWZj
MDRmMmUwNDNhNGQ3ZTNlNjJmNWIwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVt
ZW50KCkKICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBBdG9taWNTdHJpbmcgYXR0ciA9IG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKG1fZWxlbWVu
dC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOworICAgIEF0b21pY1N0cmluZyBhdHRyID0g
bV9lbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwogCiAgICAgaWYgKGF0dHIgPT0gbV9mYWlsZWRM
b2FkVVJMKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCBlNzk5
MWVhZGNjMTQwMzA3ZmMwOTc2N2JlZmYyMTRhNTNiZjdlYmFkLi4yODY2MzZjYzE1YzQ3ZmU0NjRm
NWEwM2VmYTdkNWM5MmZkMDhmNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTE5NSw0
ICsxOTUsNyBAQCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkIGluaXRpYWw9ZGVmYXVsdFVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQKIAogbG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVu
YWJsZWQgaW5pdGlhbD1mYWxzZQogCisjIFNvbWUgYXBwcyBjb3VsZCBoYXZlIGEgZGVmYXVsdCB2
aWRlbyBwb3N0ZXIgaWYgaXQgaXMgbm90IHNldC4KK2RlZmF1bHRWaWRlb1Bvc3RlclVSTCB0eXBl
PVN0cmluZworCiBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQgaW5pdGlhbD10cnVlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVt
LmNwcAppbmRleCAzZDVhNmI2NjhhMGY5NzgzYzM0YjcyZmIyOTE1NDgxOGY0NWZkZDkwLi5lNTM1
M2E0OTYxMGY2YzQ1NzUyZWZjMzlkYzkzNWU3NWRjYzE1ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAg
LTE1Myw3ICsxNTMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAjZW5kaWYKICAgICBlbHNlIGlmIChu
b2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZW1iZWRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjpvYmplY3RUYWcpKSB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0Vs
ZW1lbnQobm9kZSk7Ci0gICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShl
bGVtZW50LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7CisgICAgICAgIHVybFN0cmluZyA9
IGVsZW1lbnQtPmltYWdlU291cmNlVVJMKCk7CiAgICAgfQogICAgIEtVUkwgdXJsID0gdXJsU3Ry
aW5nLmlzRW1wdHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKICAgICBXZWJLaXQ6
OldlYkltYWdlIHdlYkltYWdlID0gYml0bWFwLT5iaXRtYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBlZjM5NGM0OTcwNTNjOTg4ZGIx
MWU5NzFlNjVkY2E3NjAyMzJkOTFhLi5kNDI1NTRmNTNkYzdhMGY4NGNmOTVhMjE0MDkxNTM5ZmY2
NjJlOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIEtVUkwgZ2V0VVJMRm9ySW1hZ2VOb2RlKE5v
ZGUqIG5vZGUpCiAjZW5kaWYKICAgICBlbHNlIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6ZW1iZWRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvYmplY3RUYWcpKSB7
CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7Ci0gICAgICAgIHVy
bFN0cmluZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShlbGVtZW50LT5pbWFnZVNvdXJjZUF0dHJp
YnV0ZU5hbWUoKSk7CisgICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmltYWdlU291cmNlVVJM
KCk7CiAgICAgfQogICAgIHJldHVybiB1cmxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTCgpIDogbm9k
ZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKHVybFN0cmluZykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwCmluZGV4IDIzZGEzMWM2MDM3YjAyNDM0YTJjZDJjMmVlNzNkOGJkN2YyMDlkMTYuLmM2
MzZmNTdmOWJkMzY3OGJjMWQ5YjY2Mzk2MmM0OGNhNjk1ZjJlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCBLVVJMIEhp
dFRlc3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25zdAogI2VuZGlmCiAgICAgICAgKSB7
CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobV9pbm5lck5vblNoYXJlZE5v
ZGUuZ2V0KCkpOwotICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoZWxl
bWVudC0+aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkpOworICAgICAgICB1cmxTdHJpbmcgPSBl
bGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gS1VS
TCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGFmYjRkZGNi
YzZkZjcwY2ZmYTQ3NGRmYTcxY2E2ZWUxYjgwNjA0ZWUuLjBkMjNiZTNiMjViMzBkOTM1ZjM2MDQ3
ZDAzMmMyZTQxYThmZTkyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3Bw
CkBAIC0yMjIsOSArMjIyLDkgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBT
VkdJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKgogICAgIHJldHVybiBJ
bnNlcnRpb25Eb25lOwogfQogCi1jb25zdCBRdWFsaWZpZWROYW1lJiBTVkdJbWFnZUVsZW1lbnQ6
OmltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIFNW
R0ltYWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogewotICAgIHJldHVybiBYTGlu
a05hbWVzOjpocmVmQXR0cjsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6Omhy
ZWZBdHRyKTsKIH0KIAogdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuaAppbmRleCBjYTBiNjJlNTcyZThjNTdmMDY1NDIwMzdiMTY4Yzg2YjJkMTJl
NjQ4Li5kZTdhNjRhYTFjYjg1ZWY4NjdlNjZlMTAwMDJjYzNhZjQyNTE2ZThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC01OCw4ICs1OCw4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotIAotICAgIHZpcnR1YWwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7ICAgICAgIAor
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRS
ZXF1aXJlZFJlc291cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAKaW5kZXggYzBmNTg3N2E0ODc5YjFjYWVlZWJiNzcxNTVkNWM2ZmJjZmViNDBiOS4u
YzNmOTBkNWQyMWZkMDI0ZmMwNDI4ODVlYzYwMTRhODQ5MGZmZTNiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC05NCw2ICs5NCw3IEBAIEludGVy
bmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAsIG1f
c2hvdWxkRGlzcGxheUNhcHRpb25zKHNldHRpbmdzLT5zaG91bGREaXNwbGF5Q2FwdGlvbnMoKSkK
ICAgICAsIG1fc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoc2V0dGluZ3MtPnNob3VsZERp
c3BsYXlUZXh0RGVzY3JpcHRpb25zKCkpCiAjZW5kaWYKKyAgICAsIG1fZGVmYXVsdFZpZGVvUG9z
dGVyVVJMKHNldHRpbmdzLT5kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoKSkKICAgICAsIG1fb3JpZ2lu
YWxUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyhzZXR0aW5ncy0+
dGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMoKSkKIHsKIH0KQEAg
LTEzMCw2ICsxMzEsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRv
KFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBzZXR0aW5ncy0+c2V0U2hvdWxkRGlzcGxheUNhcHRp
b25zKG1fc2hvdWxkRGlzcGxheUNhcHRpb25zKTsKICAgICBzZXR0aW5ncy0+c2V0U2hvdWxkRGlz
cGxheVRleHREZXNjcmlwdGlvbnMobV9zaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyk7CiAj
ZW5kaWYKKyAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdFZpZGVvUG9zdGVyVVJMKG1fZGVmYXVsdFZp
ZGVvUG9zdGVyVVJMKTsKICAgICBzZXR0aW5ncy0+c2V0VGltZVdpdGhvdXRNb3VzZU1vdmVtZW50
QmVmb3JlSGlkaW5nQ29udHJvbHMobV9vcmlnaW5hbFRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJl
Zm9yZUhpZGluZ0NvbnRyb2xzKTsKIH0KIApAQCAtNDg5LDYgKzQ5MSwxMiBAQCB2b2lkIEludGVy
bmFsU2V0dGluZ3M6OnNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZhbEluU2Vj
b25kcywgRXhjZXB0aQogICAgIHNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50
ZXJ2YWxJblNlY29uZHMpOwogfQogCit2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldERlZmF1bHRW
aWRlb1Bvc3RlclVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsKKyAgICBzZXR0aW5ncygpLT5z
ZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwodXJsKTsKK30KKwogdm9pZCBJbnRlcm5hbFNldHRpbmdz
OjpzZXRUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyhkb3VibGUg
dGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9y
U2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5k
ZXggMjVjMjVmZTA4ODQwNGI0YmJiZmM2M2FkNjEyZDkxMjFmMzBkYWI2Ni4uNTQ5YjBmYTQ1ZmE0
MGIyNmRjODQ4YTUyYTI1YWE3OGExNzNhMmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgICAgICBib29s
IG1fc2hvdWxkRGlzcGxheUNhcHRpb25zOwogICAgICAgICBib29sIG1fc2hvdWxkRGlzcGxheVRl
eHREZXNjcmlwdGlvbnM7CiAjZW5kaWYKKyAgICAgICAgU3RyaW5nIG1fZGVmYXVsdFZpZGVvUG9z
dGVyVVJMOwogICAgICAgICBib29sIG1fb3JpZ2luYWxUaW1lV2l0aG91dE1vdXNlTW92ZW1lbnRC
ZWZvcmVIaWRpbmdDb250cm9sczsKICAgICB9OwogCkBAIC0xMjcsNiArMTI4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoYm9v
bCk7CiAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsSW5T
ZWNvbmRzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJV
UkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFRpbWVX
aXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKGRvdWJsZSB0aW1lLCBFeGNl
cHRpb25Db2RlJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmlkbAppbmRleCBkZDM0MTYwMTUyZWZhZTJkN2RlNWQ3N2NjNDA0NzRiMTdhM2U2
OWY2Li5jZGU4ZGY2MjVmNDE5YTFhYTk3YjM2NTcxNGRkZWE1ZGM0YWVmZDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTU5LDUgKzU5LDYgQEAK
ICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShpbiBET01TdHJpbmcgcG9saWN5KSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoaW4gYm9vbGVh
biBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldE1pbmltdW1UaW1l
ckludGVydmFsKGluIGRvdWJsZSBpbnRlcnZhbEluU2Vjb25kcykgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoaW4gRE9NU3RyaW5nIHBvc3Rl
cikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgdm9pZCBzZXRUaW1lV2l0aG91dE1vdXNlTW92
ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyhpbiBkb3VibGUgdGltZSkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDJkYzI1ZTEy
MGRjOWFlYjBhNmVmZTc5OTkzNmJlNDU5ZTMxNTY3ZWEuLmQ3NzY5YmIwMTY2MDQxYzQxNGY4MjA4
NjQ5Y2EzZDNjN2NlYTY3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTIwNTYsNCArMjA1NiwxMyBAQCBTdHJpbmcgSW50ZXJuYWxzOjptYXJrZXJUZXh0Rm9yTGlzdEl0
ZW0oRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIFdlYkNv
cmU6Om1hcmtlclRleHRGb3JMaXN0SXRlbShlbGVtZW50KTsKIH0KIAorU3RyaW5nIEludGVybmFs
czo6Z2V0SW1hZ2VTb3VyY2VVUkwoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKCFlbGVtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorICAgIHJldHVybiBlbGVtZW50LT5p
bWFnZVNvdXJjZVVSTCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCBjMWFjMmJiNjMyMWQ4NTUyNGZlMTk3YTQyOTJjZDdhMGI3NGVmY2NmLi45ZTliNGRhNzQ2MmY2
NGUxNjhjNjQ1YTkxZGVjMThhMjU2Yjk4YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTI5NSw2ICsyOTUsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCiAgICAgdm9pZCBlbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKTsKICNlbmRpZgorCisg
ICAgU3RyaW5nIGdldEltYWdlU291cmNlVVJMKEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgICAgICAgICAgICAgICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9j
dW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA5MzA0OGQ3N2I0
Y2MzZjM3ZmU3YzRmZTUwOWNlY2UwMWExOTdhYzgwLi4yN2I3NGJjMTJkYmE0YWJiNzE4MmE1MDk1
Y2ExOTZjYzk0NjM5YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0y
NjAsNCArMjYwLDYgQEAKICAgICBbQ29uZGl0aW9uYWw9RU5DUllQVEVEX01FRElBX1YyXSB2b2lk
IGluaXRpYWxpemVNb2NrQ0RNKCk7CiAKICAgICBbQ29uZGl0aW9uYWw9U1BFRUNIX1NZTlRIRVNJ
U10gdm9pZCBlbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKTsKKworICAgIERPTVN0cmluZyBn
ZXRJbWFnZVNvdXJjZVVSTChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24p
OwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBmYzk1YmNlYjBmZjJkZDNiZjNmY2ZiMDVhYzdlYjEzYzBmYzU2ZjQyLi5j
ZGE4N2YwYmViZGQwYTAwMTk3ZjUzOTExMWJjMzg1NjUxNDkxNjFhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDEgQEAKKzIwMTMtMDMtMDYgIFRhbyBCYWkgIDxtaWNoYWVsYmFpQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBBZGQgdGhlIGRlZmF1bHQgdmlkZW8gcG9zdGVyIGlmIGl0IGRvZXNuJ3QgZXhpc3Qg
aW4gdmlkZW8gdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTAyNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgQW5kcm9pZCB3ZWIgdmlldyBhcHBsaWNhdGlvbiBjb3VsZCBwcm92aWRlIHRoZSBk
ZWZhdWx0IHBvc3RlcgorICAgICAgICBmb3IgYSB2aWRlbyB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGUg
cG9zdGVyIGF0dHJpYnV0ZS4KKworICAgICAgICBUbyBwcm92aWRlIHRoZSBkZWZhdWx0IHBvc3Rl
ciwgdGhlIGFwcGxpY2F0aW9uIG11c3Qgc2V0IGRlZmF1bHRWaWRlb1Bvc3RlclVSTAorICAgICAg
ICBzZXR0aW5nIGFuZCByZXR1cm4gdGhlIGltYWdlIGluIHRoZSByZXNwb25zZSBvZiB0aGF0IFVS
TC4KKworICAgICAgICBUaGUgd2F5IHRvIGRvIHRoaXMgd291bGQgYmU6CisKKyAgICAgICAgQSkg
UmVwbGFjZSB0aGUgRWxlbWVudDo6aW1hZ2VTb3VyY2VBdHRyaWJ1dGVOYW1lIGZ1bmN0aW9uIHdp
dGggYW4KKyAgICAgICAgICAgRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwgZnVuY3Rpb24gdGhhdCBy
ZXR1cm5zIHRoZSBpbWFnZVNvdXJjZVVSTCBhcyBhCisgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYuIFRoZSBib2R5IHdpbGwgYmUgdGhlIHNhbWUgYXMgYmVmb3JlLCBpdCB3aWxsIGp1c3Qg
YWxzbworICAgICAgICAgICBpbmNsdWRlIGEgY2FsbCB0byBnZXRBdHRyaWJ1dGUuIEFsc28gd2ls
bCBuZWVkIHRvIHJldmlzZSB0aGUgZm91ciBjbGFzc2VzCisgICAgICAgICAgIHRoYXQgb3ZlcnJp
ZGUgdGhhdCBmdW5jdGlvbi4KKworICAgICAgICBCKSBBZGQgYSBuZXcgSFRNTFZpZGVvRWxlbWVu
dDo6cG9zdGVySW1hZ2VVUkwgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHRoZQorICAgICAgICAg
ICBkZWZhdWx0IHBvc3RlciBVUkwgbG9naWMuCisKKyAgICAgICAgQykgVXBkYXRlIHRoZSBmb3Vy
IGZ1bmN0aW9ucyB0aGF0IGdldCB0aGUgcG9zdGVyIGF0dHJpYnV0ZSB0byBoYW5kbGUgcG9zdGVy
CisgICAgICAgICAgIGxvYWRpbmcgYW5kIGRpc3BsYXkgdG8gY2FsbCBwb3N0ZXJJbWFnZVVSTC4K
KworICAgICAgICAgICAxKSBIVE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJjZVVSTC4KKyAgICAg
ICAgICAgMikgSFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUuCisgICAgICAgICAgIDMp
IEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURpc3BsYXlTdGF0ZS4KKyAgICAgICAgICAgNCkgSFRN
TE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMuIFdpbGwgbmVlZCB0byBjYXN0IHRv
CisgICAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQgYWZ0ZXIgY2hlY2tpbmcgaXNWaWRlby4K
KworICAgICAgICAqIG1lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRtbDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5odG1sOiBBZGRlZC4K
KwogMjAxMy0wMy0xMyAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgogCiAgICAgICAg
IEZpeCBib2R5IGJhY2tncm91bmQgaW1hZ2UgZ2VvbWV0cnkgY2FsY3VsYXRpb24KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YzUwYThlNmE3MDQwZGQ0NzRiYTM2OTJmNjgyODIzODczN2Q3MDg4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorUEFTUworUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1kZWZhdWx0LXBvc3Rlci5odG1sIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDViMDFiNzliOGZi
M2RjZjczMTBiYzJjNDM1ZGVmN2QyOTA0OTllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tZGVmYXVsdC1wb3N0ZXIuaHRtbApAQCAtMCwwICsxLDU0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgfQorICBpZiAod2luZG93LmludGVybmFscykgeworICAgIHZhciBk
ZWZhdWx0X3Bvc3RlciA9ICdjb250ZW50L2dyZWVuYm94LnBuZyc7CisgICAgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXREZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoZGVmYXVsdF9wb3N0ZXIpOwor
ICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBwb3N0
ZXIgPSB3aW5kb3cuaW50ZXJuYWxzLmdldEltYWdlU291cmNlVVJMKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ2aWRlby1uby1wb3N0ZXIiKSk7CisgICAgICBpZiAocG9zdGVyKSB7CisgICAgICAg
IGlmIChwb3N0ZXIgPT0gZGVmYXVsdF9wb3N0ZXIpCisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdC1uby1wb3N0ZXIiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3Rl
ciIpLmlubmVyVGV4dCA9ICJGQUlMIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0LW5vLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBpbWFn
ZSBzb3VyY2UgaXMgbnVsbCI7CisKKyAgICAgIHBvc3RlciA9ICB3aW5kb3cuaW50ZXJuYWxzLmdl
dEltYWdlU291cmNlVVJMKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1oYXMtcG9zdGVy
IikpOworICAgICAgaWYgKHBvc3RlcikgeworICAgICAgICBpZiAocG9zdGVyID09ICJjb250ZW50
L2FiZS5wbmciKQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFz
LXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJG
QUlMOiBwb3N0ZXIgd2FzIGNoYW5nZWQiOworICAgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBp
bWFnZSBzb3VyY2UgaXMgbnVsbCI7CisKKyAgICAgIHBvc3RlciA9ICB3aW5kb3cuaW50ZXJuYWxz
LmdldEltYWdlU291cmNlVVJMKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlby1oYXMtZW1w
dHktcG9zdGVyIikpOworICAgICAgaWYgKHBvc3RlcikgeworICAgICAgICBpZiAocG9zdGVyID09
IGRlZmF1bHRfcG9zdGVyKQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQtaGFzLWVtcHR5LXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLWVtcHR5LXBvc3Rl
ciIpLmlubmVyVGV4dCA9ICJGQUlMIjsKKyAgICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0LWhhcy1lbXB0eS1wb3N0ZXIiKS5pbm5lclRleHQgPSAiRkFJ
TDogaW1hZ2Ugc291cmNlIGlzIG51bGwiOworCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICB9LCBmYWxzZSk7CisgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
cmUgaWQ9InJlc3VsdC1uby1wb3N0ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1wb3N0
ZXIiPjwvcHJlPgorPHByZSBpZD0icmVzdWx0LWhhcy1lbXB0eS1wb3N0ZXIiPjwvcHJlPgorPHZp
ZGVvIGlkPSJ2aWRlby1uby1wb3N0ZXIiIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgcHJlbG9hZD0i
bm9uZSIgLz4KKzx2aWRlbyBpZD0idmlkZW8taGFzLXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3Qu
bXA0IiBwb3N0ZXI9ImNvbnRlbnQvYWJlLnBuZyIgcHJlbG9hZD0ibm9uZSIgLz4KKzx2aWRlbyBp
ZD0idmlkZW8taGFzLWVtcHR5LXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwb3N0ZXI9
IiIgcHJlbG9hZD0ibm9uZSIgLz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLW5vLWRlZmF1bHQtcG9zdGVyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mN2YwZmE1YzhhNTdiMDU1MzZlNGVlYzllYTY1MDU4MTcxNDVlYmQwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1uby1kZWZhdWx0LXBvc3Rlci5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjhiYTA2MmMwZDdj
YTNmNDZkNWRmM2VlOWZhM2I1OWE0MzNkZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tbm8tZGVmYXVsdC1wb3N0ZXIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKyAgfQorCisgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAg
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHBvc3RlciA9
IHdpbmRvdy5pbnRlcm5hbHMuZ2V0SW1hZ2VTb3VyY2VVUkwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZGVvLW5vLXBvc3RlciIpKTsKKyAgICAgIGlmIChwb3N0ZXIpCisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIkZBSUwg
OiBwb3N0ZXIgd2FzIGFkZGVkLiI7CisgICAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQtbm8tcG9zdGVyIikuaW5uZXJUZXh0ID0gIlBBU1MiOworCisgICAg
ICBwb3N0ZXIgPSB3aW5kb3cuaW50ZXJuYWxzLmdldEltYWdlU291cmNlVVJMKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ2aWRlby1oYXMtcG9zdGVyIikpOworICAgICAgaWYgKHBvc3Rlcikgewor
ICAgICAgICBpZiAocG9zdGVyID09ICJjb250ZW50L2FiZS5wbmciKQorICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJQQVNT
IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQtaGFzLXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBwb3N0ZXIgd2FzIGNoYW5nZWQiOwor
ICAgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQtaGFz
LXBvc3RlciIpLmlubmVyVGV4dCA9ICJGQUlMOiBJbWFnZSBzb3VyY2UgaXMgbnVsbCI7CisKKyAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIGZhbHNlKTsKKyAgfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0icmVzdWx0LW5vLXBvc3RlciI+PC9wcmU+
Cis8cHJlIGlkPSJyZXN1bHQtaGFzLXBvc3RlciI+PC9wcmU+Cis8dmlkZW8gaWQ9InZpZGVvLW5v
LXBvc3RlciIgc3JjPSJjb250ZW50L3Rlc3QubXA0IiBwcmVsb2FkPSJub25lIiAvPgorPHZpZGVv
IGlkPSJ2aWRlby1oYXMtcG9zdGVyIiBzcmM9ImNvbnRlbnQvdGVzdC5tcDQiIHBvc3Rlcj0iY29u
dGVudC9hYmUucG5nIiBwcmVsb2FkPSJub25lIiAvPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>