<?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>98416</bug_id>
          
          <creation_ts>2012-10-04 09:07:19 -0700</creation_ts>
          <short_desc>MediaStream API: Update the MediaStream constructor</short_desc>
          <delta_ts>2012-12-21 01:16:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103226</dependson>
    
    <dependson>103642</dependson>
          <blocked>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Bergkvist">adam.bergkvist</reporter>
          <assigned_to name="Adam Bergkvist">adam.bergkvist</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>syoichi</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>734737</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-10-04 09:07:19 -0700</bug_when>
    <thetext>Update the MediaStream constructor to match the Media Capture and Stream specification as of 13 August 2012 [1]. The patch also based on a minor change [2] that limits track kinds to &quot;audio&quot; and &quot;video&quot; (was &quot;audio&quot;, &quot;video&quot; and user agent defined) not yet published as editors draft.

[1] http://dev.w3.org/2011/webrtc/editor/getusermedia-20120813.html#mediastream
[2] https://github.com/fluffy/webrtc-w3c/commit/d531859862578af2265eedb790428d530ddff5ec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734752</commentid>
    <comment_count>1</comment_count>
      <attachid>167115</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-10-04 09:20:54 -0700</bug_when>
    <thetext>Created attachment 167115
Proposed patch

The custom bindings could share some helper functions. If desirable, what&apos;s the best way to do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734778</commentid>
    <comment_count>2</comment_count>
      <attachid>167115</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-10-04 09:53:36 -0700</bug_when>
    <thetext>Comment on attachment 167115
Proposed patch

Attachment 167115 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14172265</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734911</commentid>
    <comment_count>3</comment_count>
      <attachid>167115</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-04 12:02:17 -0700</bug_when>
    <thetext>Comment on attachment 167115
Proposed patch

Why do we need to use a custom constructor?  Can we improve the code generator so we don&apos;t need to add more custom code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735422</commentid>
    <comment_count>4</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-05 00:00:11 -0700</bug_when>
    <thetext>Yeah, I am sorry that custom code are coming back, especially since I fixed a few issues with the code generators and threw out all the old custom code earlier this year, but I can&apos;s see how the code generator could easily be modified for this use case.

The constructor now takes an array that can contain one to many objects of three different kinds. I tried to &quot;talk sense&quot; to the standardization committee but they want it like this.

One other possible approach that would avoid custom code is to heavily modify the Dictionary class to be able to return the real objects, but I don&apos;t know if that would be much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735699</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 09:27:24 -0700</bug_when>
    <thetext>I think we already support overloaded constructors.  I don&apos;t think it would be that hard to support overloaded constructors with [].  The IDL declaration would look something like:

interface [
    Conditional=MEDIA_STREAM,
    EventTarget,
    Constructor(in MediaStream[] streams),
    Constructor(in MediaStreamTrackList[] trackLists),
    Constructor(in MediaStreamTrack[] tracks),
    CallWith=ScriptExecutionContext,
    ConstructorRaisesException
] MediaStream {
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735708</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-10-05 09:30:51 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Yeah, I am sorry that custom code are coming back, especially since I fixed a few issues with the code generators and threw out all the old custom code earlier this year, but I can&apos;s see how the code generator could easily be modified for this use case.

Yes, it&apos;s a tricky translation with a union type. I know that at least the WebSocket constructor has a union type argument to the constructor and it uses a custom binding too.

&gt; The constructor now takes an array that can contain one to many objects of three different kinds. I tried to &quot;talk sense&quot; to the standardization committee but they want it like this.

The discussion [1] kind of died out. I don&apos;t know if that means that people are happy with the current behavior or if they don&apos;t care. I&apos;m not sure that the current behavior will be the final, but it seems that people like some kind of flexible argument list (some combination of MediaStream, MediaStreamTrackList and MediaStreamTrack objets).

[1] http://lists.w3.org/Archives/Public/public-media-capture/2012Sep/0027.html

Just thinking out loud around this below.

The current definition in WebIDL is:

typedef (MediaStream? or MediaStreamTrackList or MediaStreamTrack) TrackContainer;
[Constructor (TrackContainer[]? trackContainers)]

Could we introduce a type in WebKit that represents the typedef&apos;ed TrackContainer? The corresponding static create function would look something like:

static PassRefPtr&lt;MediaStream&gt; create(ScriptExecutionContext*, TrackContainerVector);

The functionality to extract the tracks from the track containers would then be in MediaStream.cpp instead of the custom binding. That could make it easier to move over to an automatically generated binding since it&apos;s pure argument translation.

An alternative to the create function above would be with one list for each type of track container:

static PassRefPtr&lt;MediaStream&gt; create(ScriptExecutionContext*, MediaStreamVector, MediaStreamTrackListVector, MediaStreamTrackVector);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735710</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-10-05 09:33:15 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think we already support overloaded constructors.  I don&apos;t think it would be that hard to support overloaded constructors with [].  The IDL declaration would look something like:
&gt; 
&gt; interface [
&gt;     Conditional=MEDIA_STREAM,
&gt;     EventTarget,
&gt;     Constructor(in MediaStream[] streams),
&gt;     Constructor(in MediaStreamTrackList[] trackLists),
&gt;     Constructor(in MediaStreamTrack[] tracks),
&gt;     CallWith=ScriptExecutionContext,
&gt;     ConstructorRaisesException
&gt; ] MediaStream {
&gt; ...

The behavior would be different since you couldn&apos;t use two different types in one constructor call. For example:

var audioStream = new MediaStream([localStream.audioTracks, remoteStream.audioTracks[0]]);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735714</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 09:36:53 -0700</bug_when>
    <thetext>I see.  IMHO, we should push back on the standards body to make the API more like other web platform APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737761</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-10-09 07:27:17 -0700</bug_when>
    <thetext>We can take it another round the the Media Capture TF. But if the outcome does use a WebIDL union, wouldn&apos;t it be OK to let it start off as a custom binding and then modify the bindings generator when some other object needs similar functionality and we know how this type of binding should look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769171</commentid>
    <comment_count>10</comment_count>
      <attachid>174660</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-11-16 05:57:43 -0800</bug_when>
    <thetext>Created attachment 174660
Updated patch

The spec has been updated with a simplified version of the MediaStream constructor.

[Constructor (),
Constructor (MediaStream? stream),
Constructor (MediaStreamTrack[] tracks)]

It&apos;s still not possible to do this without a custom binding, but the bindings are simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769180</commentid>
    <comment_count>11</comment_count>
      <attachid>174660</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-11-16 06:05:22 -0800</bug_when>
    <thetext>Comment on attachment 174660
Updated patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStream.idl:29
&gt; +    ConstructorParameters=0,

Have you tried to use 
Constructor(in sequence&lt;MediaStreamTrack&gt; tracks)
Constructor(in [Optional] MediaStream stream)
instead of custom bindings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769216</commentid>
    <comment_count>12</comment_count>
      <attachid>174660</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 06:45:39 -0800</bug_when>
    <thetext>Comment on attachment 174660
Updated patch

Attachment 174660 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14858479</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769363</commentid>
    <comment_count>13</comment_count>
      <attachid>174660</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-16 09:35:58 -0800</bug_when>
    <thetext>Comment on attachment 174660
Updated patch

We should be able to do this without custom bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770746</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-11-19 07:41:52 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 174660 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174660&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.idl:29
&gt; &gt; +    ConstructorParameters=0,
&gt; 
&gt; Have you tried to use 
&gt; Constructor(in sequence&lt;MediaStreamTrack&gt; tracks)
&gt; Constructor(in [Optional] MediaStream stream)
&gt; instead of custom bindings?

Thanks for the pointer, but it won&apos;t work afaik without modifying the bindings generator. I&apos;ve only seen [] and sequence&lt;&gt; used with basic types (mainly long) and DOMString for arguments.

Constructor(in sequence&lt;MediaStreamTrack&gt; tracks)
will look for:
::create(Vector&lt;MediaStreamTrack&gt;&amp;)
while we want something like:
::create(Vector&lt;RefPtr&lt;MediaStreamTrack&gt; &gt;&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770940</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-19 12:29:11 -0800</bug_when>
    <thetext>&gt; Thanks for the pointer, but it won&apos;t work afaik without modifying the bindings generator.

Then we&apos;ll need to improve the bindings generator.  We don&apos;t want to add custom code to implement this behavior.  The bindings generator should handle it for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771576</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-11-19 23:35:16 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Then we&apos;ll need to improve the bindings generator.  We don&apos;t want to add custom code to implement this behavior.  The bindings generator should handle it for us.

OK. Should that be done in a separate bug/patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771603</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-19 23:48:58 -0800</bug_when>
    <thetext>&gt; OK. Should that be done in a separate bug/patch?

Yes, that&apos;s probably easiest.  You can add a test using run-bindings-tests if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782550</commentid>
    <comment_count>18</comment_count>
      <attachid>177482</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-12-04 08:03:46 -0800</bug_when>
    <thetext>Created attachment 177482
Updated patch

Updated patch with generated bindings for V8 (custom for JSC). Tommy is working on support for overloaded constructors in the JSC bindings generator (http://webkit.org/b/103226) and once he&apos;s done, we can remove the JSC custom binding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782646</commentid>
    <comment_count>19</comment_count>
      <attachid>177482</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-04 10:01:01 -0800</bug_when>
    <thetext>Comment on attachment 177482
Updated patch

Attachment 177482 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15154015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783407</commentid>
    <comment_count>20</comment_count>
      <attachid>177672</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-12-04 22:43:04 -0800</bug_when>
    <thetext>Created attachment 177672
Updated patch

Fixed GTK build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783412</commentid>
    <comment_count>21</comment_count>
      <attachid>177672</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 22:51:34 -0800</bug_when>
    <thetext>Comment on attachment 177672
Updated patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:41
&gt; +    for (size_t i = 0; i &lt; sourceVector.size(); ++i)

Please use { } when the body has more than one (textual) line.

&gt; Source/WebCore/bindings/js/JSMediaStreamCustom.cpp:46
&gt; +EncodedJSValue JSC_HOST_CALL JSMediaStreamConstructor::constructJSMediaStream(ExecState* exec)

I thought we were going to avoid custom code here by improving CodeGeneratorJS...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783448</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-12-05 00:00:46 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 177672 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177672&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSMediaStreamCustom.cpp:46
&gt; &gt; +EncodedJSValue JSC_HOST_CALL JSMediaStreamConstructor::constructJSMediaStream(ExecState* exec)
&gt; 
&gt; I thought we were going to avoid custom code here by improving CodeGeneratorJS...

Yes that&apos;s the goal. We had two issues with the code generators. The first, general support for arrays and sequences has been fixed in b103642. The second, support for overloaded constructors is only fixed for V8 at the moment, but Tommy is working on support in CodeGeneratorJS (b103226). What&apos;s your view on using a custom binding for JSC for now and remove it as soon as support for overloaded constructors in JSC are fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784340</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-05 17:34:07 -0800</bug_when>
    <thetext>&gt; What&apos;s your view on using a custom binding for JSC for now and remove it as soon as support for overloaded constructors in JSC are fixed?

I&apos;d prefer if we fixed bug 103226 first and avoiding having the custom code (even for a short time).  My experience is that once the custom code lands, it&apos;s easy for folks to leave it there rather than improving the code generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784719</commentid>
    <comment_count>24</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-12-06 00:48:46 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; &gt; What&apos;s your view on using a custom binding for JSC for now and remove it as soon as support for overloaded constructors in JSC are fixed?
&gt; 
&gt; I&apos;d prefer if we fixed bug 103226 first and avoiding having the custom code (even for a short time).  My experience is that once the custom code lands, it&apos;s easy for folks to leave it there rather than improving the code generator.

I feel guilty for not having finished the code generator feature yet but I got drafted to do some WebAudio and SpeechRecognition coding while at the same time trying to get some WebRTC code finished for M25 :/
Not an excuse but maybe an explanation.

However whatever happens it&apos;s my P0 task for next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784844</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-12-06 04:26:39 -0800</bug_when>
    <thetext>(In reply to comment #23) 
&gt; I&apos;d prefer if we fixed bug 103226 first and avoiding having the custom code (even for a short time).  My experience is that once the custom code lands, it&apos;s easy for folks to leave it there rather than improving the code generator.

Ok I understand.

Could you disregard from the custom binding and continue to review this patch anyhow? It would save us one iteration since the non custom patch is almost identical to this patch without the custom binding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784966</commentid>
    <comment_count>26</comment_count>
      <attachid>177672</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-06 08:50:06 -0800</bug_when>
    <thetext>Comment on attachment 177672
Updated patch

The rest of this patch looks fine.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784984</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-12-06 09:41:03 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 177672 [details])
&gt; The rest of this patch looks fine.  :)

Great. :)

Then I&apos;ll update the patch when bug 103226 is resolved. If the change only consists of removing the custom binding and &quot;JSCustomConstructor&quot; from the idl I&apos;ll land it. Otherwise, if there are any major changes I&apos;ll mark it for review again. Sounds ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784985</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-12-06 09:43:11 -0800</bug_when>
    <thetext>I&apos;ll fix the first comment from #21 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785003</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-06 10:06:47 -0800</bug_when>
    <thetext>Sgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795484</commentid>
    <comment_count>30</comment_count>
      <attachid>180351</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-12-20 09:22:32 -0800</bug_when>
    <thetext>Created attachment 180351
patch for landing

Patch for landing without custom binding for JSC (thanks to bug 103226)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796184</commentid>
    <comment_count>31</comment_count>
      <attachid>180351</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 01:16:12 -0800</bug_when>
    <thetext>Comment on attachment 180351
patch for landing

Clearing flags on attachment: 180351

Committed r138354: &lt;http://trac.webkit.org/changeset/138354&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796185</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 01:16:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167115</attachid>
            <date>2012-10-04 09:20:54 -0700</date>
            <delta_ts>2012-11-16 05:57:43 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>ms_constructor00.patch</filename>
            <type>text/plain</type>
            <size>32161</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjZGZjMWVjLi5lYjk5MmFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTAt
MDQgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODQxNgorICAgICAg
ICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSB0aGUgTWVkaWFTdHJlYW0gY29uc3RydWN0b3IKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRo
ZSBNZWRpYVN0cmVhbSBjb25zdHJ1Y3RvciB0byBzdXBwb3J0IHRoZSBtb3JlIGdlbmVyYWwgYXJn
dW1lbnQKKyAgICAgICAgbGlzdCBmb3JtIHRoZSBsYXRlc3QgTWVkaWEgQ2FwdHVyZSBhbmQgU3Ry
ZWFtcyBzcGVjaWZpY2F0aW9uIFsxXS4gQWRkZWQKKyAgICAgICAgY3VzdG9tIGNvbnN0cnVjdG9y
IGZvciBKU0MgYW5kIFY4LgorICAgICAgICBbMV0gaHR0cDovL2Rldi53My5vcmcvMjAxMS93ZWJy
dGMvZWRpdG9yL2dldHVzZXJtZWRpYS0yMDEyMDgxMy5odG1sI21lZGlhc3RyZWFtCisKKyAgICAg
ICAgKiBmYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC5odG1sOiBDaGFuZ2VkIGNvbnN0cnVjdG9y
IGxlbmd0aCB0byAwICh3YXMgMikuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2Jl
cnJ5L2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhw
ZWN0ZWQudHh0OgorCiAyMDEyLTA5LTI3ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgRGVsZXRlIHRlc3QgdGhhdCBubyBsb25nZXIgZXhpc3RzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGguaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLmh0bWwKaW5kZXggYjVkMWIwNi4uYjUyOTNk
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGguaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC5odG1sCkBAIC0y
OSw3ICsyOSw3IEBAIHNob3VsZEJlKCdJbnQzMkFycmF5Lmxlbmd0aCcsICcxJyk7CiBzaG91bGRC
ZSgnSW50OEFycmF5Lmxlbmd0aCcsICcxJyk7CiBzaG91bGRCZSgnSW50ZW50Lmxlbmd0aCcsICcz
Jyk7CiBzaG91bGRCZSgnTWVkaWFDb250cm9sbGVyLmxlbmd0aCcsICcwJyk7Ci1zaG91bGRCZSgn
TWVkaWFTdHJlYW0ubGVuZ3RoJywgJzInKTsKK3Nob3VsZEJlKCdNZWRpYVN0cmVhbS5sZW5ndGgn
LCAnMCcpOwogc2hvdWxkQmUoJ01lc3NhZ2VDaGFubmVsLmxlbmd0aCcsICcwJyk7CiBzaG91bGRC
ZSgnTWVzc2FnZUV2ZW50Lmxlbmd0aCcsICcyJyk7CiBzaG91bGRCZSgnT3ZlcmZsb3dFdmVudC5s
ZW5ndGgnLCAnMicpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKaW5kZXggMWMyYzBh
ZC4uZGNjNzQ0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC03LDEyICs3
LDExNyBAQCBQQVNTIEdvdCBsb2NhbCBzdHJlYW0uCiBQQVNTIGxvY2FsU3RyZWFtLmF1ZGlvVHJh
Y2tzLmxlbmd0aCBpcyAxCiBQQVNTIGxvY2FsU3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAx
CiBQQVNTIHR5cGVvZiB3ZWJraXRNZWRpYVN0cmVhbSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCi1Q
QVNTIHN0cmVhbSA9IG5ldyB3ZWJraXRNZWRpYVN0cmVhbShsb2NhbFN0cmVhbS5hdWRpb1RyYWNr
cywgbG9jYWxTdHJlYW0udmlkZW9UcmFja3MpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKGRvY3VtZW50KSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBDb25zdHJ1Y3RvciBhcmd1bWVudCBpcyBub3Qgb2YgdHlwZSBBcnJheS4KK1BBU1MgbmV3
IHdlYmtpdE1lZGlhU3RyZWFtKFtkb2N1bWVudF0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFsbG93ZWQgdHlwZXMgYXJlIExvY2FsTWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtLCBNZWRpYVN0
cmVhbVRyYWNrTGlzdCBhbmQgTWVkaWFTdHJlYW1UcmFjay4KK1BBU1MgbmV3IHdlYmtpdE1lZGlh
U3RyZWFtKFtzdHJlYW0sIGRvY3VtZW50XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQWxs
b3dlZCB0eXBlcyBhcmUgTG9jYWxNZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFt
VHJhY2tMaXN0IGFuZCBNZWRpYVN0cmVhbVRyYWNrLgorUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQK
IFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCiBQQVNTIFtvYmplY3QgTWVk
aWFTdHJlYW1dIGlzIGRlZmluZWQuCi1QQVNTIHN0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdN
ZWRpYVN0cmVhbScKLVBBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCi1QQVNTIHN0
cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBzLmNvbnN0cnVjdG9yLm5hbWUgaXMg
J01lZGlhU3RyZWFtJworUEFTUyBzLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1Mg
cy52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAor
UEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1MgW29iamVjdCBNZWRp
YVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BBU1Mgcy5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0
cmVhbScKK1BBU1Mgcy5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIHMudmlkZW9U
cmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKK1BBU1MgW29i
amVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1d
IGlzIGRlZmluZWQuCitQQVNTIHMuY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQ
QVNTIHMuYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBzLnZpZGVvVHJhY2tzLmxl
bmd0aCBpcyBuVmlkZW8KK1BBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCitQQVNTIFtvYmplY3QgTWVk
aWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZp
bmVkLgorUEFTUyBzLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBzLmF1
ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1Mgcy52aWRlb1RyYWNrcy5sZW5ndGggaXMg
blZpZGVvCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFt
XSBpcyBub24tbnVsbC4KK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BB
U1Mgcy5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1Mgcy5hdWRpb1RyYWNr
cy5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIHMudmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbwor
UEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9u
LW51bGwuCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIHMuY29u
c3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIHMuYXVkaW9UcmFja3MubGVuZ3Ro
IGlzIG5BdWRpbworUEFTUyBzLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgU3Ry
ZWFtIGNvbnN0cnVjdGVkCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgor
UEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBzLmNvbnN0cnVjdG9y
Lm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBzLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVk
aW8KK1BBU1Mgcy52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIFN0cmVhbSBjb25z
dHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1MgW29i
amVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BBU1Mgcy5jb25zdHJ1Y3Rvci5uYW1lIGlz
ICdNZWRpYVN0cmVhbScKK1BBU1Mgcy5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCitQQVNT
IHMudmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQK
K1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCitQQVNTIFtvYmplY3QgTWVk
aWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIHMuY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFT
dHJlYW0nCitQQVNTIHMuYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBzLnZpZGVv
VHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCitQQVNTIFtv
YmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFt
XSBpcyBkZWZpbmVkLgorUEFTUyBzLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJwor
UEFTUyBzLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1Mgcy52aWRlb1RyYWNrcy5s
ZW5ndGggaXMgblZpZGVvCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1l
ZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVm
aW5lZC4KK1BBU1Mgcy5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1Mgcy5h
dWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIHMudmlkZW9UcmFja3MubGVuZ3RoIGlz
IG5WaWRlbworUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKK1BBU1MgW29iamVjdCBNZWRpYVN0cmVh
bV0gaXMgbm9uLW51bGwuCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQ
QVNTIHMuY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIHMuYXVkaW9UcmFj
a3MubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBzLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8K
K1BBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5v
bi1udWxsLgorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBzLmNv
bnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBzLmF1ZGlvVHJhY2tzLmxlbmd0
aCBpcyBuQXVkaW8KK1BBU1Mgcy52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIFN0
cmVhbSBjb25zdHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4K
K1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BBU1Mgcy5jb25zdHJ1Y3Rv
ci5uYW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1Mgcy5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1
ZGlvCitQQVNTIHMudmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBTdHJlYW0gY29u
c3RydWN0ZWQKK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCitQQVNTIFtv
YmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIHMuY29uc3RydWN0b3IubmFtZSBp
cyAnTWVkaWFTdHJlYW0nCitQQVNTIHMuYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbworUEFT
UyBzLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgU3RyZWFtIGNvbnN0cnVjdGVk
CitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IE1l
ZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBzLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlh
U3RyZWFtJworUEFTUyBzLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1Mgcy52aWRl
b1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAorUEFTUyBb
b2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1MgW29iamVjdCBNZWRpYVN0cmVh
bV0gaXMgZGVmaW5lZC4KK1BBU1Mgcy5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScK
K1BBU1Mgcy5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIHMudmlkZW9UcmFja3Mu
bGVuZ3RoIGlzIG5WaWRlbworUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKK1BBU1MgW29iamVjdCBN
ZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRl
ZmluZWQuCitQQVNTIHMuY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIHMu
YXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBzLnZpZGVvVHJhY2tzLmxlbmd0aCBp
cyBuVmlkZW8KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNv
bnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q29uc3RydWN0b3IuaHRtbAppbmRleCAzZWJlMGM5Li4wNjVhMjRhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRt
bApAQCAtMTAsNiArMTAsOCBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUZXN0cyB3ZWJraXRN
ZWRpYVN0cmVhbS4iKTsKIAordmFyIHVuZGVmaW5lZDsKKwogZnVuY3Rpb24gZXJyb3IoKSB7CiAg
ICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOwogICAgIGZpbmlzaEpT
VGVzdCgpOwpAQCAtMzAsMTcgKzMyLDYxIEBAIGZ1bmN0aW9uIGdvdFN0cmVhbShzKSB7CiAgICAg
c2hvdWxkQmUoJ2xvY2FsU3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7CiAgICAgc2hv
dWxkQmUoJ2xvY2FsU3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CiAKLSAgICBzdHJl
YW0gPSBudWxsOwogICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHdlYmtpdE1lZGlhU3RyZWFtID09
PSAnZnVuY3Rpb24nIik7Ci0gICAgc2hvdWxkTm90VGhyb3coInN0cmVhbSA9IG5ldyB3ZWJraXRN
ZWRpYVN0cmVhbShsb2NhbFN0cmVhbS5hdWRpb1RyYWNrcywgbG9jYWxTdHJlYW0udmlkZW9UcmFj
a3MpOyIpOwotICAgIHNob3VsZEJlTm9uTnVsbChzdHJlYW0pOwotICAgIHNob3VsZEJlRGVmaW5l
ZChzdHJlYW0pOwotICAgIHNob3VsZEJlKCJzdHJlYW0uY29uc3RydWN0b3IubmFtZSIsICInTWVk
aWFTdHJlYW0nIik7Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAn
MScpOwotICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKwor
ICAgIHRlc3RDb25zdHJ1Y3Rvcihsb2NhbFN0cmVhbSk7CisKICAgICBmaW5pc2hKU1Rlc3QoKTsK
IH0KIAorZnVuY3Rpb24gdGVzdENvbnN0cnVjdG9yKHMpIHsKKyAgICB2YXIgbkF1ZGlvID0gcy5h
dWRpb1RyYWNrcy5sZW5ndGg7CisgICAgdmFyIG5WaWRlbyA9IHMuYXVkaW9UcmFja3MubGVuZ3Ro
OworCisgICAgc3RyZWFtID0gczsKKyAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKGRvY3VtZW50KScpOworICAgIHNob3VsZFRocm93KCduZXcgd2Via2l0TWVkaWFTdHJlYW0o
W2RvY3VtZW50XSknKTsKKyAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtz
dHJlYW0sIGRvY3VtZW50XSknKTsKKworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFT
dHJlYW0oKSwgMCwgMCk7CisgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShb
XSksIDAsIDApOworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0obnVsbCks
IDAsIDApOworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW251bGxdKSwg
MCwgMCk7CisgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbSh1bmRlZmluZWQp
LCAwLCAwKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFt1bmRlZmlu
ZWRdKSwgMCwgMCk7CisKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtz
XSksIG5BdWRpbywgblZpZGVvKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKFtzLCBzXSksIG5BdWRpbywgblZpZGVvKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtp
dE1lZGlhU3RyZWFtKFtzLCB1bmRlZmluZWRdKSwgbkF1ZGlvLCBuVmlkZW8pOworCisgICAgdmVy
aWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy5hdWRpb1RyYWNrc10pLCBuQXVkaW8s
IDApOworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MudmlkZW9UcmFj
a3NdKSwgMCwgblZpZGVvKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFt
KFtzLmF1ZGlvVHJhY2tzLCBzLnZpZGVvVHJhY2tzXSksIG5BdWRpbywgblZpZGVvKTsKKyAgICB2
ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmF1ZGlvVHJhY2tzLCBzLnZpZGVv
VHJhY2tzLCBzLmF1ZGlvVHJhY2tzXSksIG5BdWRpbywgblZpZGVvKTsKKworICAgIC8vIHRoZSBm
b2xsb3dpbmcgdGVzdHMgYXNzdW1lcyB0aGF0IG5BdWRpbyA+IDAgYW5kIG5WaWRlbyA+IDAgKHZl
cmlmaWVkIGFib3ZlKQorICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3Mu
YXVkaW9UcmFja3NbMF1dKSwgMSwgMCk7CisgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRp
YVN0cmVhbShbcy52aWRlb1RyYWNrc1swXV0pLCAwLCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3
IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmF1ZGlvVHJhY2tzWzBdLCBzLnZpZGVvVHJhY2tzWzBdXSks
IDEsIDEpOworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MudmlkZW9U
cmFja3NbMF0sIHMuYXVkaW9UcmFja3NbMF0sIHMudmlkZW9UcmFja3NbMF1dKSwgMSwgMSk7CisK
KyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLCBzLmF1ZGlvVHJhY2tz
LCBzLnZpZGVvVHJhY2tzLAorICAgICAgICAgICAgcy5hdWRpb1RyYWNrc1swXSwgcy52aWRlb1Ry
YWNrc1swXV0pLCBuQXVkaW8sIG5WaWRlbyk7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeVN0cmVhbShz
dHJlYW0sIG51bUF1ZGlvVHJhY2tzLCBudW1WaWRlb1RyYWNrcykgeworICAgIHMgPSBzdHJlYW07
CisgICAgbkF1ZGlvID0gbnVtQXVkaW9UcmFja3M7CisgICAgblZpZGVvID0gbnVtVmlkZW9UcmFj
a3M7CisKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gY29uc3RydWN0ZWQnKTsKKyAgICBzaG91bGRC
ZU5vbk51bGwocyk7CisgICAgc2hvdWxkQmVEZWZpbmVkKHMpOworICAgIHNob3VsZEJlKCJzLmNv
bnN0cnVjdG9yLm5hbWUiLCAiJ01lZGlhU3RyZWFtJyIpOworICAgIHNob3VsZEJlKCdzLmF1ZGlv
VHJhY2tzLmxlbmd0aCcsICduQXVkaW8nKTsKKyAgICBzaG91bGRCZSgncy52aWRlb1RyYWNrcy5s
ZW5ndGgnLCAnblZpZGVvJyk7Cit9CisKIGdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZSwgYXVkaW86
dHJ1ZX0sIGdvdFN0cmVhbSk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2JsYWNrYmVycnkvZmFzdC9qcy9jb25zdHJ1Y3Rv
ci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vYmxhY2tiZXJyeS9m
YXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggZjk2ZDE0OS4uNTVl
MjI3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vYmxhY2tiZXJyeS9mYXN0L2pz
L2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKQEAg
LTI1LDcgKzI1LDcgQEAgUEFTUyBJbnQzMkFycmF5Lmxlbmd0aCBpcyAxCiBQQVNTIEludDhBcnJh
eS5sZW5ndGggaXMgMQogRkFJTCBJbnRlbnQubGVuZ3RoIHNob3VsZCBiZSAzLiBUaHJldyBleGNl
cHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEludGVudAogUEFTUyBN
ZWRpYUNvbnRyb2xsZXIubGVuZ3RoIGlzIDAKLUZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3Vs
ZCBiZSAyLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IE1lZGlhU3RyZWFtCitGQUlMIE1lZGlhU3RyZWFtLmxlbmd0aCBzaG91bGQgYmUgMC4gVGhy
ZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBNZWRpYVN0
cmVhbQogUEFTUyBNZXNzYWdlQ2hhbm5lbC5sZW5ndGggaXMgMAogUEFTUyBNZXNzYWdlRXZlbnQu
bGVuZ3RoIGlzIDIKIFBBU1MgT3ZlcmZsb3dFdmVudC5sZW5ndGggaXMgMgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2pzL2NvbnN0cnVjdG9yLWxl
bmd0aC1leHBlY3RlZC50eHQKaW5kZXggMzk0NDE0Yi4uZjY3Njc3OCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9qcy9jb25zdHJ1Y3Rvci1s
ZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0yNSw3ICsyNSw3IEBAIFBBU1MgSW50MzJBcnJheS5sZW5n
dGggaXMgMQogUEFTUyBJbnQ4QXJyYXkubGVuZ3RoIGlzIDEKIEZBSUwgSW50ZW50Lmxlbmd0aCBz
aG91bGQgYmUgMy4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBJbnRlbnQKIFBBU1MgTWVkaWFDb250cm9sbGVyLmxlbmd0aCBpcyAwCi1GQUlMIE1l
ZGlhU3RyZWFtLmxlbmd0aCBzaG91bGQgYmUgMi4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBNZWRpYVN0cmVhbQorRkFJTCBNZWRpYVN0cmVhbS5s
ZW5ndGggc2hvdWxkIGJlIDAuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogTWVkaWFTdHJlYW0KIFBBU1MgTWVzc2FnZUNoYW5uZWwubGVuZ3RoIGlz
IDAKIFBBU1MgTWVzc2FnZUV2ZW50Lmxlbmd0aCBpcyAyCiBQQVNTIE92ZXJmbG93RXZlbnQubGVu
Z3RoIGlzIDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2pzL2Nv
bnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDM5NDQxNGIuLmY2
NzY3NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2pzL2NvbnN0
cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtMjUsNyArMjUsNyBA
QCBQQVNTIEludDMyQXJyYXkubGVuZ3RoIGlzIDEKIFBBU1MgSW50OEFycmF5Lmxlbmd0aCBpcyAx
CiBGQUlMIEludGVudC5sZW5ndGggc2hvdWxkIGJlIDMuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogSW50ZW50CiBQQVNTIE1lZGlhQ29udHJvbGxl
ci5sZW5ndGggaXMgMAotRkFJTCBNZWRpYVN0cmVhbS5sZW5ndGggc2hvdWxkIGJlIDIuIFRocmV3
IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogTWVkaWFTdHJl
YW0KK0ZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBleGNlcHRpb24g
UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1lZGlhU3RyZWFtCiBQQVNTIE1l
c3NhZ2VDaGFubmVsLmxlbmd0aCBpcyAwCiBQQVNTIE1lc3NhZ2VFdmVudC5sZW5ndGggaXMgMgog
UEFTUyBPdmVyZmxvd0V2ZW50Lmxlbmd0aCBpcyAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50
eHQKaW5kZXggYWI2ZTQ0Yi4uZmEzODA5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4
dApAQCAtMjUsNyArMjUsNyBAQCBQQVNTIEludDMyQXJyYXkubGVuZ3RoIGlzIDEKIFBBU1MgSW50
OEFycmF5Lmxlbmd0aCBpcyAxCiBGQUlMIEludGVudC5sZW5ndGggc2hvdWxkIGJlIDMuIFRocmV3
IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogSW50ZW50CiBQ
QVNTIE1lZGlhQ29udHJvbGxlci5sZW5ndGggaXMgMAotRkFJTCBNZWRpYVN0cmVhbS5sZW5ndGgg
c2hvdWxkIGJlIDIuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogTWVkaWFTdHJlYW0KK0ZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAw
LiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1l
ZGlhU3RyZWFtCiBQQVNTIE1lc3NhZ2VDaGFubmVsLmxlbmd0aCBpcyAwCiBQQVNTIE1lc3NhZ2VF
dmVudC5sZW5ndGggaXMgMgogUEFTUyBPdmVyZmxvd0V2ZW50Lmxlbmd0aCBpcyAyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYTM5ZDcwZC4uZTgyMjA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEy
LTEwLTA0ICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0MTYKKyAg
ICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgdGhlIE1lZGlhU3RyZWFtIGNvbnN0cnVjdG9y
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
ZCB0aGUgTWVkaWFTdHJlYW0gY29uc3RydWN0b3IgdG8gc3VwcG9ydCB0aGUgbW9yZSBnZW5lcmFs
IGFyZ3VtZW50CisgICAgICAgIGxpc3QgZm9ybSB0aGUgbGF0ZXN0IE1lZGlhIENhcHR1cmUgYW5k
IFN0cmVhbXMgc3BlY2lmaWNhdGlvbiBbMV0uIEFkZGVkCisgICAgICAgIGN1c3RvbSBjb25zdHJ1
Y3RvciBmb3IgSlNDIGFuZCBWOC4KKyAgICAgICAgWzFdIGh0dHA6Ly9kZXYudzMub3JnLzIwMTEv
d2VicnRjL2VkaXRvci9nZXR1c2VybWVkaWEtMjAxMjA4MTMuaHRtbCNtZWRpYXN0cmVhbQorCisg
ICAgICAgIFVwZGF0ZWQgdGVzdDogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVj
dG9yLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uaWRsOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU01lZGlhU3RyZWFtQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5zU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnBy
b2Nlc3NUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzVHJhY2tMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNNZWRpYVN0
cmVhbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVkaWFTdHJlYW1Db25zdHJ1
Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpj
b250YWluc1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzVHJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvY2Vzc1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpWOE1lZGlh
U3RyZWFtOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKwogMjAxMi0wOS0yNyAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjEyOTgwNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGZmZTI2
MDAuLjdkYmViZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjMyNSw2ICsy
MzI1LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZWRpYUxpc3RDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
ZGlhU3RyZWFtQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZW1v
cnlJbmZvQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
Q2hhbm5lbEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IGNlOGUyNjUuLmVjYjRiNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC0z
Niw0OSArMzYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHByb2Nl
c3NUcmFja0xpc3QoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gcHJwVHJhY2tzLCBj
b25zdCBTdHJpbmcmIGtpbmQsIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzLCBFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHRyYWNr
cyA9IHBycFRyYWNrczsKLSAgICBpZiAoIXRyYWNrcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewotICAgICAg
ICBNZWRpYVN0cmVhbVRyYWNrKiB0cmFjayA9IHRyYWNrcy0+aXRlbShpKTsKLSAgICAgICAgaWYg
KHRyYWNrLT5raW5kKCkgIT0ga2luZCkgewotICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIE1lZGlhU3RyZWFtU291cmNl
KiBzb3VyY2UgPSB0cmFjay0+Y29tcG9uZW50KCktPnNvdXJjZSgpOwotICAgICAgICBib29sIGlz
RHVwbGljYXRlID0gZmFsc2U7Ci0gICAgICAgIGZvciAoTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3I6
Oml0ZXJhdG9yIGogPSBzb3VyY2VzLmJlZ2luKCk7IGogPCBzb3VyY2VzLmVuZCgpOyArK2opIHsK
LSAgICAgICAgICAgIGlmICgoKmopLT5pZCgpID09IHNvdXJjZS0+aWQoKSkgewotICAgICAgICAg
ICAgICAgIGlzRHVwbGljYXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWlzRHVwbGljYXRlKQotICAgICAgICAg
ICAgc291cmNlcy5hcHBlbmQoc291cmNlKTsKLSAgICB9Ci19Ci0KLVBhc3NSZWZQdHI8TWVkaWFT
dHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gYXVkaW9UcmFja3MsIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHZpZGVvVHJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykK
LXsKLSAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXM7Ci0gICAgcHJvY2Vz
c1RyYWNrTGlzdChhdWRpb1RyYWNrcywgImF1ZGlvIiwgYXVkaW9Tb3VyY2VzLCBlYyk7Ci0gICAg
aWYgKGVjKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
IHZpZGVvU291cmNlczsKLSAgICBwcm9jZXNzVHJhY2tMaXN0KHZpZGVvVHJhY2tzLCAidmlkZW8i
LCB2aWRlb1NvdXJjZXMsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IE1lZGlhU3RyZWFt
RGVzY3JpcHRvcjo6Y3JlYXRlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgYXVkaW9Tb3Vy
Y2VzLCB2aWRlb1NvdXJjZXMpOwotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRp
ZENyZWF0ZU1lZGlhU3RyZWFtKGRlc2NyaXB0b3IuZ2V0KCkpOwotCi0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNZWRpYVN0cmVhbShjb250ZXh0LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSkpOwotfQot
CiBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBz
dHJlYW1EZXNjcmlwdG9yKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW0o
Y29udGV4dCwgc3RyZWFtRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCmluZGV4IGZjOGQ2NjcuLjcwOTBiZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKQEAg
LTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcj4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1U
cmFja0xpc3Q+LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtKCk7CiAKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKGVuZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwKaW5kZXggNjVhMTgzMy4uOGQ0MjI0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwK
QEAgLTI3LDkgKzI3LDkgQEAgbW9kdWxlIGNvcmUgewogICAgIGludGVyZmFjZSBbCiAgICAgICAg
IENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKICAgICAgICAgRXZlbnRUYXJnZXQsCi0gICAgICAg
IENvbnN0cnVjdG9yKGluIE1lZGlhU3RyZWFtVHJhY2tMaXN0IGF1ZGlvVHJhY2tzLCBpbiBNZWRp
YVN0cmVhbVRyYWNrTGlzdCB2aWRlb1RyYWNrcyksCisgICAgICAgIEN1c3RvbUNvbnN0cnVjdG9y
LAorICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MCwKICAgICAgICAgQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwKLSAgICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24K
ICAgIF0gTWVkaWFTdHJlYW0gewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGxhYmVsOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1UcmFja0xpc3Qg
YXVkaW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggODQwMGMzMS4uZWU1OTBmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMjA4NCw2ICsyMDg0LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U01haW5UaHJlYWRFeGVjU3RhdGUuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNNZWRp
YUxpc3RDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFt
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNNZW1vcnlJbmZvQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCcs
CkBAIC0yNDAxLDYgKzI0MDIsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEludGVudENvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ3VzdG9tLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzY3Mjg1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUN1c3RvbS5j
cHAKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nzb24g
QUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3Jz
CisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiSlNNZWRpYVN0cmVhbS5oIgorCisjaW5j
bHVkZSAiSlNNZWRpYVN0cmVhbVRyYWNrLmgiCisjaW5jbHVkZSAiSlNNZWRpYVN0cmVhbVRyYWNr
TGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1D
ZW50ZXIuaCIKKyNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBi
b29sIGNvbnRhaW5zU291cmNlKE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VWZWN0b3Is
IE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzb3VyY2VWZWN0b3Iuc2l6ZSgpOyArK2kpCisgICAgICAgIGlmIChzb3VyY2UtPmlkKCkgPT0g
c291cmNlVmVjdG9yW2ldLT5pZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBwcm9jZXNzVHJhY2soTWVkaWFTdHJlYW1UcmFj
ayogdHJhY2ssIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VWZWN0b3IpCit7CisgICAg
aWYgKHRyYWNrLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFTdHJlYW1UcmFjazo6RU5ERUQpCisgICAg
ICAgIHJldHVybjsKKworICAgIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UgPSB0cmFjay0+Y29t
cG9uZW50KCktPnNvdXJjZSgpOworICAgIGlmICghY29udGFpbnNTb3VyY2Uoc291cmNlVmVjdG9y
LCBzb3VyY2UpKQorICAgICAgICBzb3VyY2VWZWN0b3IuYXBwZW5kKHNvdXJjZSk7Cit9CisKK3N0
YXRpYyB2b2lkIHByb2Nlc3NUcmFja0xpc3QoTWVkaWFTdHJlYW1UcmFja0xpc3QqIHRyYWNrTGlz
dCwgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZVZlY3RvcikKK3sKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHRyYWNrTGlzdC0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgcHJvY2Vz
c1RyYWNrKHRyYWNrTGlzdC0+aXRlbShpKSwgc291cmNlVmVjdG9yKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU01lZGlhU3RyZWFtQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
TWVkaWFTdHJlYW0oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTWVkaWFTdHJlYW1Db25zdHJ1
Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTTWVkaWFTdHJlYW1Db25zdHJ1Y3Rv
cio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29u
dGV4dCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VF
cnJvcihleGVjLCAiTWVkaWFTdHJlYW0gY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBp
cyB1bmF2YWlsYWJsZSIpKTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291
cmNlczsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB2aWRlb1NvdXJjZXM7CisKKyAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CisgICAgICAgIEpTVmFsdWUgdHJhY2tDb250YWluZXJzID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgICAgIGlmICghaXNKU0FycmF5KHRyYWNrQ29udGFpbmVycykpCisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
Q29uc3RydWN0b3IgYXJndW1lbnQgaXMgbm90IG9mIHR5cGUgQXJyYXkiKSk7CisKKyAgICAgICAg
SlNBcnJheSogY29udGFpbmVyc0FycmF5ID0gYXNBcnJheSh0cmFja0NvbnRhaW5lcnMpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnRhaW5lcnNBcnJheS0+bGVuZ3RoKCk7ICsr
aSkgeworICAgICAgICAgICAgSlNWYWx1ZSBjb250YWluZXIgPSBjb250YWluZXJzQXJyYXktPmdl
dEluZGV4KGkpOworICAgICAgICAgICAgaWYgKGNvbnRhaW5lci5pc1VuZGVmaW5lZE9yTnVsbCgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoY29udGFpbmVy
LmluaGVyaXRzKCZKU01lZGlhU3RyZWFtVHJhY2s6OnNfaW5mbykpIHsKKyAgICAgICAgICAgICAg
ICBNZWRpYVN0cmVhbVRyYWNrKiB0cmFjayA9IHRvTWVkaWFTdHJlYW1UcmFjayhjb250YWluZXIp
OworICAgICAgICAgICAgICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VWZWN0b3Ig
PSB0cmFjay0+a2luZCgpID09ICJhdWRpbyIgPyBhdWRpb1NvdXJjZXMgOiB2aWRlb1NvdXJjZXM7
CisgICAgICAgICAgICAgICAgcHJvY2Vzc1RyYWNrKHRyYWNrLCBzb3VyY2VWZWN0b3IpOworCisg
ICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRhaW5lci5pbmhlcml0cygmSlNNZWRpYVN0cmVhbVRy
YWNrTGlzdDo6c19pbmZvKSkgeworICAgICAgICAgICAgICAgIE1lZGlhU3RyZWFtVHJhY2tMaXN0
KiB0cmFja0xpc3QgPSB0b01lZGlhU3RyZWFtVHJhY2tMaXN0KGNvbnRhaW5lcik7CisgICAgICAg
ICAgICAgICAgaWYgKCF0cmFja0xpc3QtPmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3Vy
Y2VWZWN0b3IgPSB0cmFja0xpc3QtPml0ZW0oMCktPmtpbmQoKSA9PSAiYXVkaW8iID8gYXVkaW9T
b3VyY2VzIDogdmlkZW9Tb3VyY2VzOworICAgICAgICAgICAgICAgIHByb2Nlc3NUcmFja0xpc3Qo
dHJhY2tMaXN0LCBzb3VyY2VWZWN0b3IpOworCisgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRh
aW5lci5pbmhlcml0cygmSlNNZWRpYVN0cmVhbTo6c19pbmZvKSkgeworICAgICAgICAgICAgICAg
IE1lZGlhU3RyZWFtKiBzdHJlYW0gPSB0b01lZGlhU3RyZWFtKGNvbnRhaW5lcik7CisgICAgICAg
ICAgICAgICAgcHJvY2Vzc1RyYWNrTGlzdChzdHJlYW0tPmF1ZGlvVHJhY2tzKCksIGF1ZGlvU291
cmNlcyk7CisgICAgICAgICAgICAgICAgcHJvY2Vzc1RyYWNrTGlzdChzdHJlYW0tPnZpZGVvVHJh
Y2tzKCksIHZpZGVvU291cmNlcyk7CisKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBbGxv
d2VkIHR5cGVzIGFyZSBMb2NhbE1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1U
cmFja0xpc3QgYW5kIE1lZGlhU3RyZWFtVHJhY2siKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0gTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJj
ZXMsIHZpZGVvU291cmNlcyk7CisgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlk
Q3JlYXRlTWVkaWFTdHJlYW0oZGVzY3JpcHRvci5nZXQoKSk7CisKKyAgICBSZWZQdHI8TWVkaWFT
dHJlYW0+IG1lZGlhU3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBkZXNjcmlw
dG9yLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dS
QVBQRVIoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIE1lZGlhU3RyZWFtLCBt
ZWRpYVN0cmVhbS5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZWRpYVN0cmVhbUNvbnN0cnVjdG9yLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2VjYTM4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVkaWFTdHJlYW1Db25zdHJ1
Y3Rvci5jcHAKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRXJp
Y3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlY4TWVkaWFTdHJlYW0uaCIKKwor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIK
KyNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSAiVjhNZWRpYVN0cmVhbVRyYWNrLmgiCisjaW5j
bHVkZSAiVjhNZWRpYVN0cmVhbVRyYWNrTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBib29sIGNvbnRhaW5zU291cmNlKE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3Vy
Y2VWZWN0b3IsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCit7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzb3VyY2VWZWN0b3Iuc2l6ZSgpOyArK2kpCisgICAgICAgIGlmIChzb3VyY2Ut
PmlkKCkgPT0gc291cmNlVmVjdG9yW2ldLT5pZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBwcm9jZXNzVHJhY2soTWVkaWFT
dHJlYW1UcmFjayogdHJhY2ssIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VWZWN0b3Ip
Cit7CisgICAgaWYgKHRyYWNrLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFTdHJlYW1UcmFjazo6RU5E
RUQpCisgICAgICAgIHJldHVybjsKKworICAgIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UgPSB0
cmFjay0+Y29tcG9uZW50KCktPnNvdXJjZSgpOworICAgIGlmICghY29udGFpbnNTb3VyY2Uoc291
cmNlVmVjdG9yLCBzb3VyY2UpKQorICAgICAgICBzb3VyY2VWZWN0b3IuYXBwZW5kKHNvdXJjZSk7
Cit9CisKK3N0YXRpYyB2b2lkIHByb2Nlc3NUcmFja0xpc3QoTWVkaWFTdHJlYW1UcmFja0xpc3Qq
IHRyYWNrTGlzdCwgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZVZlY3RvcikKK3sKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrTGlzdC0+bGVuZ3RoKCk7ICsraSkKKyAgICAg
ICAgcHJvY2Vzc1RyYWNrKHRyYWNrTGlzdC0+aXRlbShpKSwgc291cmNlVmVjdG9yKTsKK30KKwor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVkaWFTdHJlYW06OmNvbnN0cnVjdG9yQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5NZWRpYVN0
cmVhbS5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fu
bm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKworICAg
IGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBF
eGlzdGluZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2VzOworICAgIE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKKworICAgIGlmIChhcmdzLkxlbmd0aCgp
ICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSkgeworICAgICAgICB2ODo6TG9jYWw8djg6
OlZhbHVlPiB0cmFja0NvbnRhaW5lcnMgPSBhcmdzWzBdOworICAgICAgICBpZiAoIXRyYWNrQ29u
dGFpbmVycy0+SXNBcnJheSgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJD
b25zdHJ1Y3RvciBhcmd1bWVudCBpcyBub3Qgb2YgdHlwZSBBcnJheSIsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKKworICAgICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBjb250YWluZXJzQXJyYXkgPSB2
ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh0cmFja0NvbnRhaW5lcnMpOworICAgICAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgY29udGFpbmVyc0FycmF5LT5MZW5ndGgoKTsgKytpKSB7Cisg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udGFpbmVyID0gY29udGFpbmVyc0Fy
cmF5LT5HZXQodjg6OkludDMyOjpOZXcoaSkpOworICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVk
T3JOdWxsKGNvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIGlmIChWOE1lZGlhU3RyZWFtVHJhY2s6Okhhc0luc3RhbmNlKGNvbnRhaW5lcikpIHsKKyAg
ICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QoY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICBNZWRpYVN0cmVh
bVRyYWNrKiB0cmFjayA9IFY4TWVkaWFTdHJlYW1UcmFjazo6dG9OYXRpdmUob2JqZWN0KTsKKyAg
ICAgICAgICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgc291cmNlVmVjdG9yID0gdHJh
Y2stPmtpbmQoKSA9PSAiYXVkaW8iID8gYXVkaW9Tb3VyY2VzIDogdmlkZW9Tb3VyY2VzOworICAg
ICAgICAgICAgICAgIHByb2Nlc3NUcmFjayh0cmFjaywgc291cmNlVmVjdG9yKTsKKworICAgICAg
ICAgICAgfSBlbHNlIGlmIChWOE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpIYXNJbnN0YW5jZShjb250
YWluZXIpKSB7CisgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3Qg
PSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnRhaW5lcik7CisgICAgICAgICAgICAg
ICAgTWVkaWFTdHJlYW1UcmFja0xpc3QqIHRyYWNrTGlzdCA9IFY4TWVkaWFTdHJlYW1UcmFja0xp
c3Q6OnRvTmF0aXZlKG9iamVjdCk7CisgICAgICAgICAgICAgICAgaWYgKCF0cmFja0xpc3QtPmxl
bmd0aCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAg
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VWZWN0b3IgPSB0cmFja0xpc3QtPml0ZW0o
MCktPmtpbmQoKSA9PSAiYXVkaW8iID8gYXVkaW9Tb3VyY2VzIDogdmlkZW9Tb3VyY2VzOworICAg
ICAgICAgICAgICAgIHByb2Nlc3NUcmFja0xpc3QodHJhY2tMaXN0LCBzb3VyY2VWZWN0b3IpOwor
CisgICAgICAgICAgICB9IGVsc2UgaWYgKFY4TWVkaWFTdHJlYW06Okhhc0luc3RhbmNlKGNvbnRh
aW5lcikpIHsKKyAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY29udGFpbmVyKTsKKyAgICAgICAgICAgICAg
ICBNZWRpYVN0cmVhbSogc3RyZWFtID0gVjhNZWRpYVN0cmVhbTo6dG9OYXRpdmUob2JqZWN0KTsK
KyAgICAgICAgICAgICAgICBwcm9jZXNzVHJhY2tMaXN0KHN0cmVhbS0+YXVkaW9UcmFja3MoKSwg
YXVkaW9Tb3VyY2VzKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzVHJhY2tMaXN0KHN0cmVhbS0+
dmlkZW9UcmFja3MoKSwgdmlkZW9Tb3VyY2VzKTsKKworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJBbGxvd2VkIHR5cGVzIGFyZSBMb2Nh
bE1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFja0xpc3QgYW5kIE1lZGlh
U3RyZWFtVHJhY2siLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0gTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJj
ZXMsIHZpZGVvU291cmNlcyk7CisgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlk
Q3JlYXRlTWVkaWFTdHJlYW0oZGVzY3JpcHRvci5nZXQoKSk7CisgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtPiBtZWRpYVN0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dCwgZGVzY3JpcHRv
ci5yZWxlYXNlKCkpOworCisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJn
cy5Ib2xkZXIoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmlu
Zm8sIG1lZGlhU3RyZWFtLmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZv
ckRPTU9iamVjdChtZWRpYVN0cmVhbS5yZWxlYXNlKCksIHdyYXBwZXIpOworICAgIHJldHVybiB3
cmFwcGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX1NPQ0tFVFMpCg==
</data>
<flag name="review"
          id="179683"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="179685"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174660</attachid>
            <date>2012-11-16 05:57:43 -0800</date>
            <delta_ts>2012-12-04 08:03:46 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>ms_constructor01.patch</filename>
            <type>text/plain</type>
            <size>28178</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MGQ1YjdmLi5kZTY5NjIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTEt
MTYgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODQxNgorICAgICAg
ICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSB0aGUgTWVkaWFTdHJlYW0gY29uc3RydWN0b3IKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRo
ZSBNZWRpYVN0cmVhbSBjb25zdHJ1Y3RvciB0byBzdXBwb3J0IHRoZSBtb3JlIGdlbmVyYWwgYXJn
dW1lbnQKKyAgICAgICAgbGlzdCBmb3JtIHRoZSBsYXRlc3QgTWVkaWEgQ2FwdHVyZSBhbmQgU3Ry
ZWFtcyBzcGVjaWZpY2F0aW9uIFsxXS4gQWRkZWQKKyAgICAgICAgY3VzdG9tIGNvbnN0cnVjdG9y
IGZvciBKU0MgYW5kIFY4LgorICAgICAgICBbMV0gaHR0cDovL2Rldi53My5vcmcvMjAxMS93ZWJy
dGMvZWRpdG9yL2FyY2hpdmVzLzIwMTIxMTE1L2dldHVzZXJtZWRpYS5odG1sCisKKyAgICAgICAg
KiBmYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLmh0bWw6CisgICAgICAgICogcGxh
dGZvcm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5n
dGgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvanMvY29uc3RydWN0
b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0xMS0xMiAgRXJpayBBcnZpZHNzb24gIDxh
cnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlcGxhY2UgRE9NRXhjZXB0aW9uIFRZUEVfTUlT
TUFUQ0hfRVJSIHdpdGggVHlwZUVycm9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pz
L2NvbnN0cnVjdG9yLWxlbmd0aC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9jb25zdHJ1Y3Rv
ci1sZW5ndGguaHRtbAppbmRleCBiNWQxYjA2Li5iNTI5M2RiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAgc2hvdWxkQmUo
J0ludDMyQXJyYXkubGVuZ3RoJywgJzEnKTsKIHNob3VsZEJlKCdJbnQ4QXJyYXkubGVuZ3RoJywg
JzEnKTsKIHNob3VsZEJlKCdJbnRlbnQubGVuZ3RoJywgJzMnKTsKIHNob3VsZEJlKCdNZWRpYUNv
bnRyb2xsZXIubGVuZ3RoJywgJzAnKTsKLXNob3VsZEJlKCdNZWRpYVN0cmVhbS5sZW5ndGgnLCAn
MicpOworc2hvdWxkQmUoJ01lZGlhU3RyZWFtLmxlbmd0aCcsICcwJyk7CiBzaG91bGRCZSgnTWVz
c2FnZUNoYW5uZWwubGVuZ3RoJywgJzAnKTsKIHNob3VsZEJlKCdNZXNzYWdlRXZlbnQubGVuZ3Ro
JywgJzInKTsKIHNob3VsZEJlKCdPdmVyZmxvd0V2ZW50Lmxlbmd0aCcsICcyJyk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNv
bnN0cnVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCAxYzJjMGFkLi4wZmVlNTk2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
b25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTcsMTIgKzcsNjUgQEAgUEFTUyBHb3QgbG9jYWwg
c3RyZWFtLgogUEFTUyBsb2NhbFN0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQogUEFTUyBs
b2NhbFN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQogUEFTUyB0eXBlb2Ygd2Via2l0TWVk
aWFTdHJlYW0gPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQotUEFTUyBzdHJlYW0gPSBuZXcgd2Via2l0
TWVkaWFTdHJlYW0obG9jYWxTdHJlYW0uYXVkaW9UcmFja3MsIGxvY2FsU3RyZWFtLnZpZGVvVHJh
Y2tzKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVh
bShkb2N1bWVudCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ29uc3RydWN0b3IgYXJndW1l
bnQgaXMgbm90IG9mIHR5cGUgTWVkaWFTdHJlYW0gb3IgTWVkaWFTdHJlYW1UcmFja1tdLgorUEFT
UyBuZXcgd2Via2l0TWVkaWFTdHJlYW0oW2RvY3VtZW50XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXJyYXkgZWxlbWVudCBpcyBub3Qgb2YgdHlwZSBNZWRpYVN0cmVhbVRyYWNrLgorUEFT
UyBuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3N0cmVhbS5hdWRpb1RyYWNrc1swXSwgZG9jdW1lbnRd
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheSBlbGVtZW50IGlzIG5vdCBvZiB0eXBl
IE1lZGlhU3RyZWFtVHJhY2suCitQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbbnVsbF0pIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5IGVsZW1lbnQgaXMgbm90IG9mIHR5cGUgTWVk
aWFTdHJlYW1UcmFjay4KK1BBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFt1bmRlZmluZWRdKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheSBlbGVtZW50IGlzIG5vdCBvZiB0eXBlIE1l
ZGlhU3RyZWFtVHJhY2suCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1l
ZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVm
aW5lZC4KLVBBU1Mgc3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJwotUEFT
UyBzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIDEKLVBBU1Mgc3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCBpcyAxCitQQVNTIHMuY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQ
QVNTIHMuYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBzLnZpZGVvVHJhY2tzLmxl
bmd0aCBpcyBuVmlkZW8KK1BBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCitQQVNTIFtvYmplY3QgTWVk
aWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZp
bmVkLgorUEFTUyBzLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBzLmF1
ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1Mgcy52aWRlb1RyYWNrcy5sZW5ndGggaXMg
blZpZGVvCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFt
XSBpcyBub24tbnVsbC4KK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BB
U1Mgcy5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1Mgcy5hdWRpb1RyYWNr
cy5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIHMudmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbwor
UEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9u
LW51bGwuCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIHMuY29u
c3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIHMuYXVkaW9UcmFja3MubGVuZ3Ro
IGlzIG5BdWRpbworUEFTUyBzLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgU3Ry
ZWFtIGNvbnN0cnVjdGVkCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgor
UEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBzLmNvbnN0cnVjdG9y
Lm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBzLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVk
aW8KK1BBU1Mgcy52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIFN0cmVhbSBjb25z
dHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1MgW29i
amVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BBU1Mgcy5jb25zdHJ1Y3Rvci5uYW1lIGlz
ICdNZWRpYVN0cmVhbScKK1BBU1Mgcy5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCitQQVNT
IHMudmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQK
K1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCitQQVNTIFtvYmplY3QgTWVk
aWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIHMuY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFT
dHJlYW0nCitQQVNTIHMuYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBzLnZpZGVv
VHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCitQQVNTIFtv
YmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFt
XSBpcyBkZWZpbmVkLgorUEFTUyBzLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJwor
UEFTUyBzLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1Mgcy52aWRlb1RyYWNrcy5s
ZW5ndGggaXMgblZpZGVvCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1l
ZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVm
aW5lZC4KK1BBU1Mgcy5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1Mgcy5h
dWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIHMudmlkZW9UcmFja3MubGVuZ3RoIGlz
IG5WaWRlbwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29u
c3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
b25zdHJ1Y3Rvci5odG1sCmluZGV4IDNlYmUwYzkuLjY1ZmI0NDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci5odG1s
CkBAIC0xMCw2ICsxMCw4IEBACiA8c2NyaXB0PgogZGVzY3JpcHRpb24oIlRlc3RzIHdlYmtpdE1l
ZGlhU3RyZWFtLiIpOwogCit2YXIgdW5kZWZpbmVkOworCiBmdW5jdGlvbiBlcnJvcigpIHsKICAg
ICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7CiAgICAgZmluaXNoSlNU
ZXN0KCk7CkBAIC0zMCwxNyArMzIsNTIgQEAgZnVuY3Rpb24gZ290U3RyZWFtKHMpIHsKICAgICBz
aG91bGRCZSgnbG9jYWxTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKICAgICBzaG91
bGRCZSgnbG9jYWxTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKIAotICAgIHN0cmVh
bSA9IG51bGw7CiAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2Ygd2Via2l0TWVkaWFTdHJlYW0gPT09
ICdmdW5jdGlvbiciKTsKLSAgICBzaG91bGROb3RUaHJvdygic3RyZWFtID0gbmV3IHdlYmtpdE1l
ZGlhU3RyZWFtKGxvY2FsU3RyZWFtLmF1ZGlvVHJhY2tzLCBsb2NhbFN0cmVhbS52aWRlb1RyYWNr
cyk7Iik7Ci0gICAgc2hvdWxkQmVOb25OdWxsKHN0cmVhbSk7Ci0gICAgc2hvdWxkQmVEZWZpbmVk
KHN0cmVhbSk7Ci0gICAgc2hvdWxkQmUoInN0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIiwgIidNZWRp
YVN0cmVhbSciKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcx
Jyk7Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOworCisg
ICAgdGVzdENvbnN0cnVjdG9yKGxvY2FsU3RyZWFtKTsKKwogICAgIGZpbmlzaEpTVGVzdCgpOwog
fQogCitmdW5jdGlvbiB0ZXN0Q29uc3RydWN0b3IocykgeworICAgIHZhciBuQXVkaW8gPSBzLmF1
ZGlvVHJhY2tzLmxlbmd0aDsKKyAgICB2YXIgblZpZGVvID0gcy5hdWRpb1RyYWNrcy5sZW5ndGg7
CisKKyAgICAvLyBzb21lIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXNzdW1lcyB0aGF0IG5BdWRpbyA+
IDAgYW5kIG5WaWRlbyA+IDAgKHZlcmlmaWVkIGFib3ZlKQorCisgICAgc3RyZWFtID0gczsKKyAg
ICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKGRvY3VtZW50KScpOworICAgIHNo
b3VsZFRocm93KCduZXcgd2Via2l0TWVkaWFTdHJlYW0oW2RvY3VtZW50XSknKTsKKyAgICBzaG91
bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uYXVkaW9UcmFja3NbMF0sIGRv
Y3VtZW50XSknKTsKKyAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtudWxs
XSknKTsKKyAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFt1bmRlZmluZWRd
KScpOworCisgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbSgpLCAwLCAwKTsK
KyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtdKSwgMCwgMCk7CisgICAg
dmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShudWxsKSwgMCwgMCk7CisgICAgdmVy
aWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbSh1bmRlZmluZWQpLCAwLCAwKTsKKworICAg
IHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0ocyksIG5BdWRpbywgblZpZGVvKTsK
KworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MuYXVkaW9UcmFja3Nb
MF1dKSwgMSwgMCk7CisgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy52
aWRlb1RyYWNrc1swXV0pLCAwLCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlh
U3RyZWFtKFtzLmF1ZGlvVHJhY2tzWzBdLCBzLnZpZGVvVHJhY2tzWzBdXSksIDEsIDEpOworICAg
IHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MudmlkZW9UcmFja3NbMF0sIHMu
YXVkaW9UcmFja3NbMF0sIHMudmlkZW9UcmFja3NbMF1dKSwgMSwgMSk7Cit9CisKK2Z1bmN0aW9u
IHZlcmlmeVN0cmVhbShzdHJlYW0sIG51bUF1ZGlvVHJhY2tzLCBudW1WaWRlb1RyYWNrcykgewor
ICAgIHMgPSBzdHJlYW07CisgICAgbkF1ZGlvID0gbnVtQXVkaW9UcmFja3M7CisgICAgblZpZGVv
ID0gbnVtVmlkZW9UcmFja3M7CisKKyAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gY29uc3RydWN0ZWQn
KTsKKyAgICBzaG91bGRCZU5vbk51bGwocyk7CisgICAgc2hvdWxkQmVEZWZpbmVkKHMpOworICAg
IHNob3VsZEJlKCJzLmNvbnN0cnVjdG9yLm5hbWUiLCAiJ01lZGlhU3RyZWFtJyIpOworICAgIHNo
b3VsZEJlKCdzLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICduQXVkaW8nKTsKKyAgICBzaG91bGRCZSgn
cy52aWRlb1RyYWNrcy5sZW5ndGgnLCAnblZpZGVvJyk7Cit9CisKIGdldFVzZXJNZWRpYSh7dmlk
ZW86dHJ1ZSwgYXVkaW86dHJ1ZX0sIGdvdFN0cmVhbSk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2JsYWNrYmVycnkvZmFz
dC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKaW5k
ZXggZjk2ZDE0OS4uNTVlMjI3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1l
eHBlY3RlZC50eHQKQEAgLTI1LDcgKzI1LDcgQEAgUEFTUyBJbnQzMkFycmF5Lmxlbmd0aCBpcyAx
CiBQQVNTIEludDhBcnJheS5sZW5ndGggaXMgMQogRkFJTCBJbnRlbnQubGVuZ3RoIHNob3VsZCBi
ZSAzLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6
IEludGVudAogUEFTUyBNZWRpYUNvbnRyb2xsZXIubGVuZ3RoIGlzIDAKLUZBSUwgTWVkaWFTdHJl
YW0ubGVuZ3RoIHNob3VsZCBiZSAyLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENh
bid0IGZpbmQgdmFyaWFibGU6IE1lZGlhU3RyZWFtCitGQUlMIE1lZGlhU3RyZWFtLmxlbmd0aCBz
aG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBNZWRpYVN0cmVhbQogUEFTUyBNZXNzYWdlQ2hhbm5lbC5sZW5ndGggaXMgMAogUEFT
UyBNZXNzYWdlRXZlbnQubGVuZ3RoIGlzIDIKIFBBU1MgT3ZlcmZsb3dFdmVudC5sZW5ndGggaXMg
MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0
b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2pz
L2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggMzk0NDE0Yi4uZjY3Njc3OCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0b3It
bGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9q
cy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0yNSw3ICsyNSw3IEBAIFBBU1Mg
SW50MzJBcnJheS5sZW5ndGggaXMgMQogUEFTUyBJbnQ4QXJyYXkubGVuZ3RoIGlzIDEKIEZBSUwg
SW50ZW50Lmxlbmd0aCBzaG91bGQgYmUgMy4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBJbnRlbnQKIFBBU1MgTWVkaWFDb250cm9sbGVyLmxlbmd0
aCBpcyAwCi1GQUlMIE1lZGlhU3RyZWFtLmxlbmd0aCBzaG91bGQgYmUgMi4gVGhyZXcgZXhjZXB0
aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBNZWRpYVN0cmVhbQorRkFJ
TCBNZWRpYVN0cmVhbS5sZW5ndGggc2hvdWxkIGJlIDAuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogTWVkaWFTdHJlYW0KIFBBU1MgTWVzc2FnZUNo
YW5uZWwubGVuZ3RoIGlzIDAKIFBBU1MgTWVzc2FnZUV2ZW50Lmxlbmd0aCBpcyAyCiBQQVNTIE92
ZXJmbG93RXZlbnQubGVuZ3RoIGlzIDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDM5NDQxNGIuLmY2NzY3NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dApA
QCAtMjUsNyArMjUsNyBAQCBQQVNTIEludDMyQXJyYXkubGVuZ3RoIGlzIDEKIFBBU1MgSW50OEFy
cmF5Lmxlbmd0aCBpcyAxCiBGQUlMIEludGVudC5sZW5ndGggc2hvdWxkIGJlIDMuIFRocmV3IGV4
Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogSW50ZW50CiBQQVNT
IE1lZGlhQ29udHJvbGxlci5sZW5ndGggaXMgMAotRkFJTCBNZWRpYVN0cmVhbS5sZW5ndGggc2hv
dWxkIGJlIDIuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogTWVkaWFTdHJlYW0KK0ZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAwLiBU
aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1lZGlh
U3RyZWFtCiBQQVNTIE1lc3NhZ2VDaGFubmVsLmxlbmd0aCBpcyAwCiBQQVNTIE1lc3NhZ2VFdmVu
dC5sZW5ndGggaXMgMgogUEFTUyBPdmVyZmxvd0V2ZW50Lmxlbmd0aCBpcyAyCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2pzL2NvbnN0cnVjdG9yLWxl
bmd0aC1leHBlY3RlZC50eHQKaW5kZXggYWI2ZTQ0Yi4uZmEzODA5ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvanMvY29uc3RydWN0b3ItbGVu
Z3RoLWV4cGVjdGVkLnR4dApAQCAtMjUsNyArMjUsNyBAQCBQQVNTIEludDMyQXJyYXkubGVuZ3Ro
IGlzIDEKIFBBU1MgSW50OEFycmF5Lmxlbmd0aCBpcyAxCiBGQUlMIEludGVudC5sZW5ndGggc2hv
dWxkIGJlIDMuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogSW50ZW50CiBQQVNTIE1lZGlhQ29udHJvbGxlci5sZW5ndGggaXMgMAotRkFJTCBNZWRp
YVN0cmVhbS5sZW5ndGggc2hvdWxkIGJlIDIuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogTWVkaWFTdHJlYW0KK0ZBSUwgTWVkaWFTdHJlYW0ubGVu
Z3RoIHNob3VsZCBiZSAwLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IE1lZGlhU3RyZWFtCiBQQVNTIE1lc3NhZ2VDaGFubmVsLmxlbmd0aCBpcyAw
CiBQQVNTIE1lc3NhZ2VFdmVudC5sZW5ndGggaXMgMgogUEFTUyBPdmVyZmxvd0V2ZW50Lmxlbmd0
aCBpcyAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNzFjZmUzNi4uOTNiZWIyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM0IEBACisyMDEyLTExLTE2ICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVy
aWNzc29uLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTg0MTYKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgdGhlIE1lZGlhU3Ry
ZWFtIGNvbnN0cnVjdG9yCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlZCB0aGUgTWVkaWFTdHJlYW0gY29uc3RydWN0b3IgdG8gc3VwcG9ydCB0
aGUgbW9yZSBnZW5lcmFsIGFyZ3VtZW50CisgICAgICAgIGxpc3QgZm9ybSB0aGUgbGF0ZXN0IE1l
ZGlhIENhcHR1cmUgYW5kIFN0cmVhbXMgc3BlY2lmaWNhdGlvbiBbMV0uIEFkZGVkCisgICAgICAg
IGN1c3RvbSBjb25zdHJ1Y3RvciBmb3IgSlNDIGFuZCBWOC4KKyAgICAgICAgWzFdIGh0dHA6Ly9k
ZXYudzMub3JnLzIwMTEvd2VicnRjL2VkaXRvci9hcmNoaXZlcy8yMDEyMTExNS9nZXR1c2VybWVk
aWEuaHRtbAorCisgICAgICAgIFVwZGF0ZWQgdGVzdDogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb250YWluc1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OnByb2Nlc3NUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcm9tU291cmNl
VmVjdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DdXN0b20uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVhbUNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKU01lZGlhU3RyZWFtKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhNZWRpYVN0cmVhbUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVkaWFTdHJlYW06OmNvbnN0cnVjdG9yQ2FsbGJhY2sp
OgorCiAyMDEyLTExLTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAog
ICAgICAgICBFeHBvc2UgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0QXR0YWNoZWRX
aW5kb3cgYXMgcHVibGljLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTMwMGNj
Yy4uOGUzYWQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMzM4LDYgKzIz
MzgsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhTGlzdEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVk
aWFTdHJlYW1DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lbW9y
eUluZm9DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VD
aGFubmVsQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
RXZlbnRDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggM2RhMzEyMS4uY2VhYjUwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgRXJpY3Nzb24gQUIuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2
LDQ3ICszNiw2MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHByb2Nl
c3NUcmFja0xpc3QoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gcHJwVHJhY2tzLCBj
b25zdCBTdHJpbmcmIGtpbmQsIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzLCBFeGNl
cHRpb25Db2RlJiBlYykKK3N0YXRpYyBib29sIGNvbnRhaW5zU291cmNlKE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yJiBzb3VyY2VWZWN0b3IsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiB7Ci0g
ICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiB0cmFja3MgPSBwcnBUcmFja3M7Ci0gICAg
aWYgKCF0cmFja3MpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VWZWN0b3Iuc2l6
ZSgpOyArK2kpCisgICAgICAgIGlmIChzb3VyY2UtPmlkKCkgPT0gc291cmNlVmVjdG9yW2ldLT5p
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitz
dGF0aWMgdm9pZCBwcm9jZXNzVHJhY2soTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJiBzb3VyY2VWZWN0b3IpCit7CisgICAgaWYgKHRyYWNrLT5yZWFkeVN0
YXRlKCkgPT0gTWVkaWFTdHJlYW1UcmFjazo6RU5ERUQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFja3MtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAg
ICAgTWVkaWFTdHJlYW1UcmFjayogdHJhY2sgPSB0cmFja3MtPml0ZW0oaSk7Ci0gICAgICAgIGlm
ICh0cmFjay0+a2luZCgpICE9IGtpbmQpIHsKLSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBNZWRpYVN0cmVhbVNvdXJj
ZSogc291cmNlID0gdHJhY2stPmNvbXBvbmVudCgpLT5zb3VyY2UoKTsKLSAgICAgICAgYm9vbCBp
c0R1cGxpY2F0ZSA9IGZhbHNlOwotICAgICAgICBmb3IgKE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
OjppdGVyYXRvciBqID0gc291cmNlcy5iZWdpbigpOyBqIDwgc291cmNlcy5lbmQoKTsgKytqKSB7
Ci0gICAgICAgICAgICBpZiAoKCpqKS0+aWQoKSA9PSBzb3VyY2UtPmlkKCkpIHsKLSAgICAgICAg
ICAgICAgICBpc0R1cGxpY2F0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpc0R1cGxpY2F0ZSkKLSAgICAgICAg
ICAgIHNvdXJjZXMuYXBwZW5kKHNvdXJjZSk7Ci0gICAgfQorICAgIE1lZGlhU3RyZWFtU291cmNl
KiBzb3VyY2UgPSB0cmFjay0+Y29tcG9uZW50KCktPnNvdXJjZSgpOworICAgIGlmICghY29udGFp
bnNTb3VyY2Uoc291cmNlVmVjdG9yLCBzb3VyY2UpKQorICAgICAgICBzb3VyY2VWZWN0b3IuYXBw
ZW5kKHNvdXJjZSk7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrTGlzdD4gYXVkaW9UcmFja3MsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xp
c3Q+IHZpZGVvVHJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKK3N0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPiBjcmVhdGVGcm9tU291cmNlVmVjdG9ycyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogewotICAgIE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsKLSAgICBwcm9jZXNzVHJhY2tMaXN0KGF1
ZGlvVHJhY2tzLCAiYXVkaW8iLCBhdWRpb1NvdXJjZXMsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgdmlkZW9Tb3VyY2Vz
OwotICAgIHByb2Nlc3NUcmFja0xpc3QodmlkZW9UcmFja3MsICJ2aWRlbyIsIHZpZGVvU291cmNl
cywgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBSZWZQdHI8TWVk
aWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpj
cmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291
cmNlcyk7CiAgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlkQ3JlYXRlTWVkaWFT
dHJlYW0oZGVzY3JpcHRvci5nZXQoKSk7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlh
U3RyZWFtKGNvbnRleHQsIGRlc2NyaXB0b3IucmVsZWFzZSgpKSk7CisgICAgcmV0dXJuIE1lZGlh
U3RyZWFtOjpjcmVhdGUoY29udGV4dCwgZGVzY3JpcHRvci5yZWxlYXNlKCkpOworfQorCitQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCit7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3Vy
Y2VzOworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKKworICAgIHJl
dHVybiBjcmVhdGVGcm9tU291cmNlVmVjdG9ycyhjb250ZXh0LCBhdWRpb1NvdXJjZXMsIHZpZGVv
U291cmNlcyk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bT4gc3RyZWFtKQoreworICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsK
KyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB2aWRlb1NvdXJjZXM7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0cmVhbS0+YXVkaW9UcmFja3MoKS0+bGVuZ3RoKCk7ICsraSkKKyAg
ICAgICAgcHJvY2Vzc1RyYWNrKHN0cmVhbS0+YXVkaW9UcmFja3MoKS0+aXRlbShpKSwgYXVkaW9T
b3VyY2VzKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyZWFtLT52aWRlb1RyYWNr
cygpLT5sZW5ndGgoKTsgKytpKQorICAgICAgICBwcm9jZXNzVHJhY2soc3RyZWFtLT52aWRlb1Ry
YWNrcygpLT5pdGVtKGkpLCB2aWRlb1NvdXJjZXMpOworCisgICAgcmV0dXJuIGNyZWF0ZUZyb21T
b3VyY2VWZWN0b3JzKGNvbnRleHQsIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKK30KKwor
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yJiB0cmFja3Mp
Cit7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2VzOworICAgIE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdHJhY2tzLnNpemUoKTsgKytpKQorICAgICAgICBwcm9jZXNzVHJhY2sodHJhY2tzW2ld
LmdldCgpLCB0cmFja3NbaV0tPmtpbmQoKSA9PSAiYXVkaW8iID8gYXVkaW9Tb3VyY2VzIDogdmlk
ZW9Tb3VyY2VzKTsKKworICAgIHJldHVybiBjcmVhdGVGcm9tU291cmNlVmVjdG9ycyhjb250ZXh0
LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CiAKIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXgg
NjQyZWMwZi4uMzlkOGY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtNDQsOCArNDQsMTAgQEAgcHVibGljOgogICAgICAgICBF
TkRFRCA9IDIKICAgICB9OwogCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImKTsKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2tMaXN0PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtKCk7CiAK
ICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVuZGVkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwKaW5kZXggODNm
ZDdkYS4uNmIwZGRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5pZGwKQEAgLTI1LDcgKzI1LDggQEAKIFsKICAgICBDb25kaXRpb25h
bD1NRURJQV9TVFJFQU0sCiAgICAgRXZlbnRUYXJnZXQsCi0gICAgQ29uc3RydWN0b3IoaW4gTWVk
aWFTdHJlYW1UcmFja0xpc3QgYXVkaW9UcmFja3MsIGluIE1lZGlhU3RyZWFtVHJhY2tMaXN0IHZp
ZGVvVHJhY2tzKSwKKyAgICBDdXN0b21Db25zdHJ1Y3RvciwKKyAgICBDb25zdHJ1Y3RvclBhcmFt
ZXRlcnM9MCwKICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIENvbnN0
cnVjdG9yUmFpc2VzRXhjZXB0aW9uCiAgICBdIGludGVyZmFjZSBNZWRpYVN0cmVhbSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggMmJiMGZjNy4uZDY4ZmZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjA4
NCw2ICsyMDg0LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVj
U3RhdGUuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3Rh
dGUuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNNZWRpYUxpc3RDdXN0b20uY3BwJywK
KyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNNZW1vcnlJbmZvQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCcsCkBAIC0yMzg4LDYgKzIzODks
NyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudENvbnN0cnVjdG9y
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxG
cmFtZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0
aW9uQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVkaWFT
dHJlYW1Db25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43YWZiOGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUN1c3RvbS5jcHAKQEAgLTAsMCArMSw4MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmlj
c3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJKU01lZGlhU3RyZWFtLmgiCisKKyNpbmNsdWRlICJKU01lZGlhU3RyZWFt
VHJhY2suaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvcjo6Y29u
c3RydWN0SlNNZWRpYVN0cmVhbShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNNZWRpYVN0cmVh
bUNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNNZWRpYVN0cmVhbUNv
bnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAg
aWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsICJNZWRpYVN0cmVhbSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRv
Y3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOworCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBtZWRp
YVN0cmVhbTsKKworICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpIHx8IGV4ZWMtPmFyZ3Vt
ZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgbWVkaWFTdHJlYW0gPSBNZWRp
YVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQpOworCisgICAgfSBlbHNlIGlmIChpc0pTQXJyYXkoZXhl
Yy0+YXJndW1lbnQoMCkpKSB7CisgICAgICAgIEpTQXJyYXkqIHRyYWNrc0FycmF5ID0gYXNBcnJh
eShleGVjLT5hcmd1bWVudCgwKSk7CisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgdHJh
Y2tWZWN0b3I7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3NBcnJheS0+
bGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0gdHJhY2tzQXJy
YXktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAgICAgaWYgKGVsZW1lbnQuaW5oZXJpdHMo
JkpTTWVkaWFTdHJlYW1UcmFjazo6c19pbmZvKSkKKyAgICAgICAgICAgICAgICB0cmFja1ZlY3Rv
ci5hcHBlbmQodG9NZWRpYVN0cmVhbVRyYWNrKGVsZW1lbnQpKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiQXJyYXkgZWxlbWVudCBpcyBub3Qgb2YgdHlwZSBNZWRpYVN0cmVhbVRyYWNrIikp
OworICAgICAgICB9CisgICAgICAgIG1lZGlhU3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShj
b250ZXh0LCB0cmFja1ZlY3Rvcik7CisKKyAgICB9IGVsc2UgaWYgKGV4ZWMtPmFyZ3VtZW50KDAp
LmluaGVyaXRzKCZKU01lZGlhU3RyZWFtOjpzX2luZm8pKSB7CisgICAgICAgIE1lZGlhU3RyZWFt
KiBzdHJlYW0gPSB0b01lZGlhU3RyZWFtKGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICAgICAgbWVk
aWFTdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIHN0cmVhbSk7CisKKyAgICB9
IGVsc2UKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIkNvbnN0cnVjdG9yIGFyZ3VtZW50IGlzIG5vdCBvZiB0eXBlIE1lZGlhU3RyZWFtIG9y
IE1lZGlhU3RyZWFtVHJhY2tbXSIpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JF
QVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBNZWRp
YVN0cmVhbSwgbWVkaWFTdHJlYW0uZ2V0KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lZGlhU3RyZWFtQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVkaWFTdHJlYW1Db25zdHJ1Y3Rv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdkZGE3YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lZGlhU3Ry
ZWFtQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBp
dHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlY4TWVkaWFTdHJl
YW0uaCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiVjhNZWRpYVN0cmVh
bVRyYWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TWVkaWFTdHJlYW06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5NZWRpYVN0cmVhbS5Db25zdHJ1Y3RvciIpOwor
CisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1
bmN0aW9uLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKworICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6
OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKKyAgICAg
ICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gbWVkaWFTdHJlYW07CisKKyAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkgfHwgaXNVbmRlZmlu
ZWRPck51bGwoYXJnc1swXSkpIHsKKyAgICAgICAgbWVkaWFTdHJlYW0gPSBNZWRpYVN0cmVhbTo6
Y3JlYXRlKGNvbnRleHQpOworCisgICAgfSBlbHNlIGlmIChhcmdzWzBdLT5Jc0FycmF5KCkpIHsK
KyAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gdHJhY2tzQXJyYXkgPSB2ODo6TG9jYWw8djg6
OkFycmF5Pjo6Q2FzdChhcmdzWzBdKTsKKyAgICAgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0
cmFja1ZlY3RvcjsKKworICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgdHJhY2tzQXJy
YXktPkxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBl
bGVtZW50ID0gdHJhY2tzQXJyYXktPkdldCh2ODo6SW50MzI6Ok5ldyhpKSk7CisgICAgICAgICAg
ICBpZiAoVjhNZWRpYVN0cmVhbVRyYWNrOjpIYXNJbnN0YW5jZShlbGVtZW50KSkgeworICAgICAg
ICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChlbGVtZW50KTsKKyAgICAgICAgICAgICAgICB0cmFja1ZlY3Rvci5hcHBl
bmQoVjhNZWRpYVN0cmVhbVRyYWNrOjp0b05hdGl2ZShvYmplY3QpKTsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiQXJyYXkgZWxlbWVu
dCBpcyBub3Qgb2YgdHlwZSBNZWRpYVN0cmVhbVRyYWNrIiwgYXJncy5HZXRJc29sYXRlKCkpOwor
ICAgICAgICB9CisgICAgICAgIG1lZGlhU3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250
ZXh0LCB0cmFja1ZlY3Rvcik7CisKKyAgICB9IGVsc2UgaWYgKFY4TWVkaWFTdHJlYW06Okhhc0lu
c3RhbmNlKGFyZ3NbMF0pKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0
ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKTsKKyAgICAgICAgTWVkaWFT
dHJlYW0qIHN0cmVhbSA9IFY4TWVkaWFTdHJlYW06OnRvTmF0aXZlKG9iamVjdCk7CisgICAgICAg
IG1lZGlhU3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBzdHJlYW0pOworCisg
ICAgfSBlbHNlCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiQ29uc3RydWN0b3IgYXJn
dW1lbnQgaXMgbm90IG9mIHR5cGUgTWVkaWFTdHJlYW0gb3IgTWVkaWFTdHJlYW1UcmFja1tdIiwg
YXJncy5HZXRJc29sYXRlKCkpOworCisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gYXJncy5Ib2xkZXIoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBl
ciwgJmluZm8sIG1lZGlhU3RyZWFtLmdldCgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckRPTU9iamVjdChtZWRpYVN0cmVhbS5yZWxlYXNlKCksIHdyYXBwZXIpOworICAgIHJl
dHVybiB3cmFwcGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQo=
</data>
<flag name="review"
          id="189806"
          type_id="1"
          status="-"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="189823"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177482</attachid>
            <date>2012-12-04 08:03:46 -0800</date>
            <delta_ts>2012-12-04 22:43:04 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>ms_constructor02.patch</filename>
            <type>text/plain</type>
            <size>24117</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMDcwZDUzLi4zMzM0MjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTIt
MDQgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIHRoZSBNZWRpYVN0cmVhbSBjb25zdHJ1Y3Rvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRo
ZSBNZWRpYVN0cmVhbSBjb25zdHJ1Y3RvciB0byBzdXBwb3J0IHRoZSBtb3JlIGdlbmVyYWwgYXJn
dW1lbnQKKyAgICAgICAgbGlzdCBmcm9tIHRoZSBsYXRlc3QgTWVkaWEgQ2FwdHVyZSBhbmQgU3Ry
ZWFtcyBzcGVjaWZpY2F0aW9uOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDExL3dlYnJ0
Yy9lZGl0b3IvZ2V0dXNlcm1lZGlhLmh0bWwKKworICAgICAgICAqIGZhc3QvanMvY29uc3RydWN0
b3ItbGVuZ3RoLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNv
bnN0cnVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtQ29uc3RydWN0b3IuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L2Zh
c3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvanMvY29uc3RydWN0b3ItbGVu
Z3RoLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0xMS0zMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEz
NjE0Mi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3Ro
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC5odG1sCmluZGV4
IGI1ZDFiMDYuLmI1MjkzZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvY29uc3Ry
dWN0b3ItbGVuZ3RoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9jb25zdHJ1Y3Rvci1s
ZW5ndGguaHRtbApAQCAtMjksNyArMjksNyBAQCBzaG91bGRCZSgnSW50MzJBcnJheS5sZW5ndGgn
LCAnMScpOwogc2hvdWxkQmUoJ0ludDhBcnJheS5sZW5ndGgnLCAnMScpOwogc2hvdWxkQmUoJ0lu
dGVudC5sZW5ndGgnLCAnMycpOwogc2hvdWxkQmUoJ01lZGlhQ29udHJvbGxlci5sZW5ndGgnLCAn
MCcpOwotc2hvdWxkQmUoJ01lZGlhU3RyZWFtLmxlbmd0aCcsICcyJyk7CitzaG91bGRCZSgnTWVk
aWFTdHJlYW0ubGVuZ3RoJywgJzAnKTsKIHNob3VsZEJlKCdNZXNzYWdlQ2hhbm5lbC5sZW5ndGgn
LCAnMCcpOwogc2hvdWxkQmUoJ01lc3NhZ2VFdmVudC5sZW5ndGgnLCAnMicpOwogc2hvdWxkQmUo
J092ZXJmbG93RXZlbnQubGVuZ3RoJywgJzInKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3ItZXhwZWN0ZWQu
dHh0CmluZGV4IDFjMmMwYWQuLjI4NWZmMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dApAQCAtNywxMiArNyw1NSBAQCBQQVNTIEdvdCBsb2NhbCBzdHJlYW0uCiBQQVNTIGxvY2Fs
U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCiBQQVNTIGxvY2FsU3RyZWFtLnZpZGVvVHJh
Y2tzLmxlbmd0aCBpcyAxCiBQQVNTIHR5cGVvZiB3ZWJraXRNZWRpYVN0cmVhbSA9PT0gJ2Z1bmN0
aW9uJyBpcyB0cnVlCi1QQVNTIHN0cmVhbSA9IG5ldyB3ZWJraXRNZWRpYVN0cmVhbShsb2NhbFN0
cmVhbS5hdWRpb1RyYWNrcywgbG9jYWxTdHJlYW0udmlkZW9UcmFja3MpOyBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKGRvY3VtZW50KSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgd2Via2l0TWVkaWFTdHJl
YW0oW2RvY3VtZW50XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxpZCBBcnJheSBl
bGVtZW50IHR5cGUuCitQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmF1ZGlvVHJh
Y2tzWzBdLCBkb2N1bWVudF0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludmFsaWQgQXJy
YXkgZWxlbWVudCB0eXBlLgorUEFTUyBuZXcgd2Via2l0TWVkaWFTdHJlYW0oW251bGxdKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZS4KK1BBU1Mg
bmV3IHdlYmtpdE1lZGlhU3RyZWFtKFt1bmRlZmluZWRdKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZS4KK1BBU1MgbmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5l
dyB3ZWJraXRNZWRpYVN0cmVhbSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1lZGlh
U3RyZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5l
ZC4KLVBBU1Mgc3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJwotUEFTUyBz
dHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIDEKLVBBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxl
bmd0aCBpcyAxCitQQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVh
bScKK1BBU1MgbmV3U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3
U3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgU3RyZWFtIGNvbnN0cnVj
dGVkCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0
IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFt
ZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIG5ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMg
bkF1ZGlvCitQQVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNT
IFN0cmVhbSBjb25zdHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVs
bC4KK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BBU1MgbmV3U3RyZWFt
LmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBuZXdTdHJlYW0uYXVkaW9U
cmFja3MubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3Ro
IGlzIG5WaWRlbworUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKK1BBU1MgW29iamVjdCBNZWRpYVN0
cmVhbV0gaXMgbm9uLW51bGwuCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQu
CitQQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1Mg
bmV3U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLnZp
ZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCitQQVNT
IFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IE1lZGlhU3Ry
ZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVk
aWFTdHJlYW0nCitQQVNTIG5ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCitQ
QVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIFN0cmVhbSBj
b25zdHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1Mg
W29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BBU1MgbmV3U3RyZWFtLmNvbnN0cnVj
dG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBuZXdTdHJlYW0uYXVkaW9UcmFja3MubGVu
Z3RoIGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRl
bworUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMg
bm9uLW51bGwuCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIG5l
d1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1MgbmV3U3RyZWFt
LmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCBpcyBuVmlkZW8KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAppbmRleCAzZWJlMGM5Li43ZDg0YTNlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3Iu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3Ry
dWN0b3IuaHRtbApAQCAtMTAsNiArMTAsMTIgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigiVGVz
dHMgd2Via2l0TWVkaWFTdHJlYW0uIik7CiAKK3ZhciB1bmRlZmluZWQ7Cit2YXIgc3RyZWFtOwor
dmFyIG5ld1N0cmVhbTsKK3ZhciBuQXVkaW87Cit2YXIgblZpZGVvOworCiBmdW5jdGlvbiBlcnJv
cigpIHsKICAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7CiAgICAg
ZmluaXNoSlNUZXN0KCk7CkBAIC0zMCwxNyArMzYsNDcgQEAgZnVuY3Rpb24gZ290U3RyZWFtKHMp
IHsKICAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsK
ICAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKIAot
ICAgIHN0cmVhbSA9IG51bGw7CiAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2Ygd2Via2l0TWVkaWFT
dHJlYW0gPT09ICdmdW5jdGlvbiciKTsKLSAgICBzaG91bGROb3RUaHJvdygic3RyZWFtID0gbmV3
IHdlYmtpdE1lZGlhU3RyZWFtKGxvY2FsU3RyZWFtLmF1ZGlvVHJhY2tzLCBsb2NhbFN0cmVhbS52
aWRlb1RyYWNrcyk7Iik7Ci0gICAgc2hvdWxkQmVOb25OdWxsKHN0cmVhbSk7Ci0gICAgc2hvdWxk
QmVEZWZpbmVkKHN0cmVhbSk7Ci0gICAgc2hvdWxkQmUoInN0cmVhbS5jb25zdHJ1Y3Rvci5uYW1l
IiwgIidNZWRpYVN0cmVhbSciKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxl
bmd0aCcsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAn
MScpOworCisgICAgdGVzdENvbnN0cnVjdG9yKGxvY2FsU3RyZWFtKTsKKwogICAgIGZpbmlzaEpT
VGVzdCgpOwogfQogCitmdW5jdGlvbiB0ZXN0Q29uc3RydWN0b3IocykgeworICAgIHN0cmVhbSA9
IHM7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShkb2N1bWVudCknKTsK
KyAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtkb2N1bWVudF0pJyk7Cisg
ICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmF1ZGlvVHJhY2tz
WzBdLCBkb2N1bWVudF0pJyk7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVh
bShbbnVsbF0pJyk7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShbdW5k
ZWZpbmVkXSknKTsKKyAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKG51bGwp
Jyk7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbSh1bmRlZmluZWQpJyk7
CisKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKCksIDAsIDApOworICAg
IHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW10pLCAwLCAwKTsKKworICAgIHZl
cmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0ocyksIHMuYXVkaW9UcmFja3MubGVuZ3Ro
LCBzLnZpZGVvVHJhY2tzLmxlbmd0aCk7CisKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1l
ZGlhU3RyZWFtKFtzLmF1ZGlvVHJhY2tzWzBdXSksIDEsIDApOworICAgIHZlcmlmeVN0cmVhbShu
ZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MudmlkZW9UcmFja3NbMF1dKSwgMCwgMSk7CisgICAgdmVy
aWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy5hdWRpb1RyYWNrc1swXSwgcy52aWRl
b1RyYWNrc1swXV0pLCAxLCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKFtzLnZpZGVvVHJhY2tzWzBdLCBzLmF1ZGlvVHJhY2tzWzBdLCBzLnZpZGVvVHJhY2tzWzBd
XSksIDEsIDEpOworfQorCitmdW5jdGlvbiB2ZXJpZnlTdHJlYW0ocywgbnVtQXVkaW9UcmFja3Ms
IG51bVZpZGVvVHJhY2tzKSB7CisgICAgbmV3U3RyZWFtID0gczsKKyAgICBuQXVkaW8gPSBudW1B
dWRpb1RyYWNrczsKKyAgICBuVmlkZW8gPSBudW1WaWRlb1RyYWNrczsKKworICAgIHRlc3RQYXNz
ZWQoJ1N0cmVhbSBjb25zdHJ1Y3RlZCcpOworICAgIHNob3VsZEJlTm9uTnVsbChuZXdTdHJlYW0p
OworICAgIHNob3VsZEJlRGVmaW5lZChuZXdTdHJlYW0pOworICAgIHNob3VsZEJlKCJuZXdTdHJl
YW0uY29uc3RydWN0b3IubmFtZSIsICInTWVkaWFTdHJlYW0nIik7CisgICAgc2hvdWxkQmUoJ25l
d1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnbkF1ZGlvJyk7CisgICAgc2hvdWxkQmUoJ25l
d1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnblZpZGVvJyk7Cit9CisKIGdldFVzZXJNZWRp
YSh7dmlkZW86dHJ1ZSwgYXVkaW86dHJ1ZX0sIGdvdFN0cmVhbSk7CiAKIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2JsYWNrYmVy
cnkvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50
eHQKaW5kZXggZjk2ZDE0OS4uNTVlMjI3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxl
bmd0aC1leHBlY3RlZC50eHQKQEAgLTI1LDcgKzI1LDcgQEAgUEFTUyBJbnQzMkFycmF5Lmxlbmd0
aCBpcyAxCiBQQVNTIEludDhBcnJheS5sZW5ndGggaXMgMQogRkFJTCBJbnRlbnQubGVuZ3RoIHNo
b3VsZCBiZSAzLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IEludGVudAogUEFTUyBNZWRpYUNvbnRyb2xsZXIubGVuZ3RoIGlzIDAKLUZBSUwgTWVk
aWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAyLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1lZGlhU3RyZWFtCitGQUlMIE1lZGlhU3RyZWFtLmxl
bmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBNZWRpYVN0cmVhbQogUEFTUyBNZXNzYWdlQ2hhbm5lbC5sZW5ndGggaXMg
MAogUEFTUyBNZXNzYWdlRXZlbnQubGVuZ3RoIGlzIDIKIFBBU1MgT3ZlcmZsb3dFdmVudC5sZW5n
dGggaXMgMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9q
cy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDMx
YjY2OWEuLmQxZjc3OTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50
eHQKQEAgLTI1LDcgKzI1LDcgQEAgRkFJTCBJbnQzMkFycmF5Lmxlbmd0aCBzaG91bGQgYmUgMS4g
V2FzIDAuCiBGQUlMIEludDhBcnJheS5sZW5ndGggc2hvdWxkIGJlIDEuIFdhcyAwLgogRkFJTCBJ
bnRlbnQubGVuZ3RoIHNob3VsZCBiZSAzLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6
IEludGVudCBpcyBub3QgZGVmaW5lZAogUEFTUyBNZWRpYUNvbnRyb2xsZXIubGVuZ3RoIGlzIDAK
LUZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAyLiBUaHJldyBleGNlcHRpb24gUmVm
ZXJlbmNlRXJyb3I6IE1lZGlhU3RyZWFtIGlzIG5vdCBkZWZpbmVkCitGQUlMIE1lZGlhU3RyZWFt
Lmxlbmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBNZWRp
YVN0cmVhbSBpcyBub3QgZGVmaW5lZAogUEFTUyBNZXNzYWdlQ2hhbm5lbC5sZW5ndGggaXMgMAog
RkFJTCBNZXNzYWdlRXZlbnQubGVuZ3RoIHNob3VsZCBiZSAyLiBXYXMgMC4KIEZBSUwgT3ZlcmZs
b3dFdmVudC5sZW5ndGggc2hvdWxkIGJlIDIuIFdhcyAwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBl
Y3RlZC50eHQKaW5kZXggMzk0NDE0Yi4uZjY3Njc3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhw
ZWN0ZWQudHh0CkBAIC0yNSw3ICsyNSw3IEBAIFBBU1MgSW50MzJBcnJheS5sZW5ndGggaXMgMQog
UEFTUyBJbnQ4QXJyYXkubGVuZ3RoIGlzIDEKIEZBSUwgSW50ZW50Lmxlbmd0aCBzaG91bGQgYmUg
My4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBJ
bnRlbnQKIFBBU1MgTWVkaWFDb250cm9sbGVyLmxlbmd0aCBpcyAwCi1GQUlMIE1lZGlhU3RyZWFt
Lmxlbmd0aCBzaG91bGQgYmUgMi4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBNZWRpYVN0cmVhbQorRkFJTCBNZWRpYVN0cmVhbS5sZW5ndGggc2hv
dWxkIGJlIDAuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogTWVkaWFTdHJlYW0KIFBBU1MgTWVzc2FnZUNoYW5uZWwubGVuZ3RoIGlzIDAKIFBBU1Mg
TWVzc2FnZUV2ZW50Lmxlbmd0aCBpcyAyCiBQQVNTIE92ZXJmbG93RXZlbnQubGVuZ3RoIGlzIDIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2pzL2NvbnN0cnVjdG9y
LWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9qcy9j
b25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDM5NDQxNGIuLmY2NzY3NzggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxl
bmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvanMv
Y29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtMjUsNyArMjUsNyBAQCBQQVNTIElu
dDMyQXJyYXkubGVuZ3RoIGlzIDEKIFBBU1MgSW50OEFycmF5Lmxlbmd0aCBpcyAxCiBGQUlMIElu
dGVudC5sZW5ndGggc2hvdWxkIGJlIDMuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogSW50ZW50CiBQQVNTIE1lZGlhQ29udHJvbGxlci5sZW5ndGgg
aXMgMAotRkFJTCBNZWRpYVN0cmVhbS5sZW5ndGggc2hvdWxkIGJlIDIuIFRocmV3IGV4Y2VwdGlv
biBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogTWVkaWFTdHJlYW0KK0ZBSUwg
TWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1lZGlhU3RyZWFtCiBQQVNTIE1lc3NhZ2VDaGFu
bmVsLmxlbmd0aCBpcyAwCiBQQVNTIE1lc3NhZ2VFdmVudC5sZW5ndGggaXMgMgogUEFTUyBPdmVy
Zmxvd0V2ZW50Lmxlbmd0aCBpcyAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXgg
ZGM0Yzg3NC4uZTI3MTUxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFz
dC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtMjUs
NyArMjUsNyBAQCBQQVNTIEludDMyQXJyYXkubGVuZ3RoIGlzIDEKIFBBU1MgSW50OEFycmF5Lmxl
bmd0aCBpcyAxCiBGQUlMIEludGVudC5sZW5ndGggc2hvdWxkIGJlIDMuIFRocmV3IGV4Y2VwdGlv
biBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogSW50ZW50CiBQQVNTIE1lZGlh
Q29udHJvbGxlci5sZW5ndGggaXMgMAotRkFJTCBNZWRpYVN0cmVhbS5sZW5ndGggc2hvdWxkIGJl
IDIuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
TWVkaWFTdHJlYW0KK0ZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBl
eGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1lZGlhU3RyZWFt
CiBQQVNTIE1lc3NhZ2VDaGFubmVsLmxlbmd0aCBpcyAwCiBQQVNTIE1lc3NhZ2VFdmVudC5sZW5n
dGggaXMgMgogUEFTUyBPdmVyZmxvd0V2ZW50Lmxlbmd0aCBpcyAyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0
YTNkZi4uY2I3OWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTA0ICBB
ZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KKworICAgICAgICBN
ZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSB0aGUgTWVkaWFTdHJlYW0gY29uc3RydWN0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDE2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgTWVk
aWFTdHJlYW0gY29uc3RydWN0b3IgdG8gc3VwcG9ydCB0aGUgbW9yZSBnZW5lcmFsIGFyZ3VtZW50
CisgICAgICAgIGxpc3QgZnJvbSB0aGUgbGF0ZXN0IE1lZGlhIENhcHR1cmUgYW5kIFN0cmVhbXMg
c3BlY2lmaWNhdGlvbjoKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAxMS93ZWJydGMvZWRp
dG9yL2dldHVzZXJtZWRpYS5odG1sCisKKyAgICAgICAgQWRkZWQgbW9yZSB0ZXN0IGNhc2VzIHRv
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRhaW5zU291cmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJvY2Vzc1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyb21Tb3VyY2VWZWN0
b3JzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU3RyZWFtQ29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTTWVkaWFTdHJlYW0pOgorCiAyMDEyLTExLTMwICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTM2MTQyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTUyYTE2OC4u
ZDI5MDI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMzU1LDYgKzIzNTUs
NyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
ZGlhTGlzdEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFT
dHJlYW1DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lbW9yeUlu
Zm9DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFu
bmVsQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZl
bnRDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggM2RhMzEyMS4uNTdlOGVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDQ3
ICszNiw2NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHByb2Nlc3NU
cmFja0xpc3QoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gcHJwVHJhY2tzLCBjb25z
dCBTdHJpbmcmIGtpbmQsIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzLCBFeGNlcHRp
b25Db2RlJiBlYykKK3N0YXRpYyBib29sIGNvbnRhaW5zU291cmNlKE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBzb3VyY2VWZWN0b3IsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiB7Ci0gICAg
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiB0cmFja3MgPSBwcnBUcmFja3M7Ci0gICAgaWYg
KCF0cmFja3MpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VWZWN0b3Iuc2l6ZSgp
OyArK2kpCisgICAgICAgIGlmIChzb3VyY2UtPmlkKCkgPT0gc291cmNlVmVjdG9yW2ldLT5pZCgp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0
aWMgdm9pZCBwcm9jZXNzVHJhY2soTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiBzb3VyY2VWZWN0b3IpCit7CisgICAgaWYgKHRyYWNrLT5yZWFkeVN0YXRl
KCkgPT0gTWVkaWFTdHJlYW1UcmFjazo6RU5ERUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFja3MtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAg
TWVkaWFTdHJlYW1UcmFjayogdHJhY2sgPSB0cmFja3MtPml0ZW0oaSk7Ci0gICAgICAgIGlmICh0
cmFjay0+a2luZCgpICE9IGtpbmQpIHsKLSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSog
c291cmNlID0gdHJhY2stPmNvbXBvbmVudCgpLT5zb3VyY2UoKTsKLSAgICAgICAgYm9vbCBpc0R1
cGxpY2F0ZSA9IGZhbHNlOwotICAgICAgICBmb3IgKE1lZGlhU3RyZWFtU291cmNlVmVjdG9yOjpp
dGVyYXRvciBqID0gc291cmNlcy5iZWdpbigpOyBqIDwgc291cmNlcy5lbmQoKTsgKytqKSB7Ci0g
ICAgICAgICAgICBpZiAoKCpqKS0+aWQoKSA9PSBzb3VyY2UtPmlkKCkpIHsKLSAgICAgICAgICAg
ICAgICBpc0R1cGxpY2F0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpc0R1cGxpY2F0ZSkKLSAgICAgICAgICAg
IHNvdXJjZXMuYXBwZW5kKHNvdXJjZSk7Ci0gICAgfQorICAgIE1lZGlhU3RyZWFtU291cmNlKiBz
b3VyY2UgPSB0cmFjay0+Y29tcG9uZW50KCktPnNvdXJjZSgpOworICAgIGlmICghY29udGFpbnNT
b3VyY2Uoc291cmNlVmVjdG9yLCBzb3VyY2UpKQorICAgICAgICBzb3VyY2VWZWN0b3IuYXBwZW5k
KHNvdXJjZSk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGVGcm9t
U291cmNlVmVjdG9ycyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0
b3I+IGRlc2NyaXB0b3IgPSBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCksIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKKyAgICBNZWRp
YVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRDcmVhdGVNZWRpYVN0cmVhbShkZXNjcmlwdG9y
LmdldCgpKTsKKworICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIGRlc2Ny
aXB0b3IucmVsZWFzZSgpKTsKK30KKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJl
YW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciB2aWRlb1NvdXJjZXM7CisKKyAgICByZXR1cm4gY3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMo
Y29udGV4dCwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwogfQogCi1QYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IGF1ZGlvVHJhY2tzLCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiB2aWRlb1RyYWNrcywgRXhjZXB0aW9uQ29kZSYg
ZWMpCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkK
IHsKKyAgICBBU1NFUlQoc3RyZWFtKTsKKwogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1
ZGlvU291cmNlczsKLSAgICBwcm9jZXNzVHJhY2tMaXN0KGF1ZGlvVHJhY2tzLCAiYXVkaW8iLCBh
dWRpb1NvdXJjZXMsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOworICAgIE1l
ZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RyZWFtLT5hdWRpb1RyYWNrcygpLT5sZW5ndGgoKTsgKytpKQorICAgICAgICBw
cm9jZXNzVHJhY2soc3RyZWFtLT5hdWRpb1RyYWNrcygpLT5pdGVtKGkpLCBhdWRpb1NvdXJjZXMp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJlYW0tPnZpZGVvVHJhY2tzKCktPmxl
bmd0aCgpOyArK2kpCisgICAgICAgIHByb2Nlc3NUcmFjayhzdHJlYW0tPnZpZGVvVHJhY2tzKCkt
Pml0ZW0oaSksIHZpZGVvU291cmNlcyk7CiAKKyAgICByZXR1cm4gY3JlYXRlRnJvbVNvdXJjZVZl
Y3RvcnMoY29udGV4dCwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworfQorCitQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImIHRyYWNrcykKK3sKKyAg
ICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXM7CiAgICAgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3IgdmlkZW9Tb3VyY2VzOwotICAgIHByb2Nlc3NUcmFja0xpc3QodmlkZW9UcmFj
a3MsICJ2aWRlbyIsIHZpZGVvU291cmNlcywgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0g
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Ci0gICAgTWVkaWFTdHJlYW1DZW50ZXI6Omlu
c3RhbmNlKCkuZGlkQ3JlYXRlTWVkaWFTdHJlYW0oZGVzY3JpcHRvci5nZXQoKSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHByb2Nlc3NU
cmFjayh0cmFja3NbaV0uZ2V0KCksIHRyYWNrc1tpXS0+a2luZCgpID09ICJhdWRpbyIgPyBhdWRp
b1NvdXJjZXMgOiB2aWRlb1NvdXJjZXMpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRp
YVN0cmVhbShjb250ZXh0LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSkpOworICAgIHJldHVybiBjcmVh
dGVGcm9tU291cmNlVmVjdG9ycyhjb250ZXh0LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7
CiB9CiAKIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0
b3I+IHN0cmVhbURlc2NyaXB0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggNjQyZWMwZi4uMzlkOGY3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtNDQsOCAr
NDQsMTAgQEAgcHVibGljOgogICAgICAgICBFTkRFRCA9IDIKICAgICB9OwogCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3ImKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
RGVzY3JpcHRvcj4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+
LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgfk1lZGlhU3RyZWFtKCk7CiAKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGVuZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5pZGwKaW5kZXggODNmZDdkYS4uNzZiM2ZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwKQEAgLTI1LDkg
KzI1LDEyIEBACiBbCiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAogICAgIEV2ZW50VGFy
Z2V0LAotICAgIENvbnN0cnVjdG9yKGluIE1lZGlhU3RyZWFtVHJhY2tMaXN0IGF1ZGlvVHJhY2tz
LCBpbiBNZWRpYVN0cmVhbVRyYWNrTGlzdCB2aWRlb1RyYWNrcyksCisgICAgQ29uc3RydWN0b3Is
CisgICAgQ29uc3RydWN0b3IoaW4gTWVkaWFTdHJlYW0gc3RyZWFtKSwKKyAgICBDb25zdHJ1Y3Rv
cihpbiBNZWRpYVN0cmVhbVRyYWNrW10gdHJhY2tzKSwKKyAgICBKU0N1c3RvbUNvbnN0cnVjdG9y
LAorICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0wLAogICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsCi0gICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24KICAgIF0gaW50ZXJm
YWNlIE1lZGlhU3RyZWFtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVs
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNrTGlzdCBhdWRpb1RyYWNr
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1OTYzODQ2Li40ZTcxN2FlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC0yMTAwLDYgKzIxMDAsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lZGlhTGlzdEN1c3Rv
bS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lbW9yeUluZm9DdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUN1c3RvbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc2NDU3YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DdXN0b20uY3BwCkBAIC0w
LDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAiSlNNZWRpYVN0cmVhbS5oIgorCisjaW5jbHVkZSAiSlNN
ZWRpYVN0cmVhbVRyYWNrLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU01lZGlhU3RyZWFtQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTTWVkaWFTdHJlYW0oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpT
TWVkaWFTdHJlYW1Db25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTTWVk
aWFTdHJlYW1Db25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiTWVkaWFTdHJlYW0gY29uc3RydWN0b3IgYXNz
b2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKKworICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gbWVkaWFTdHJlYW07CisKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewor
ICAgICAgICBtZWRpYVN0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dCk7CisKKyAg
ICB9IGVsc2UgaWYgKGlzSlNBcnJheShleGVjLT5hcmd1bWVudCgwKSkpIHsKKyAgICAgICAgSlNB
cnJheSogdHJhY2tzQXJyYXkgPSBhc0FycmF5KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICAgICAg
TWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0cmFja1ZlY3RvcjsKKworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRyYWNrc0FycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBK
U1ZhbHVlIGVsZW1lbnQgPSB0cmFja3NBcnJheS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAg
ICAgICBpZiAoZWxlbWVudC5pbmhlcml0cygmSlNNZWRpYVN0cmVhbVRyYWNrOjpzX2luZm8pKQor
ICAgICAgICAgICAgICAgIHRyYWNrVmVjdG9yLmFwcGVuZCh0b01lZGlhU3RyZWFtVHJhY2soZWxl
bWVudCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbnZhbGlkIEFycmF5IGVsZW1lbnQg
dHlwZSIpKTsKKyAgICAgICAgfQorICAgICAgICBtZWRpYVN0cmVhbSA9IE1lZGlhU3RyZWFtOjpj
cmVhdGUoY29udGV4dCwgdHJhY2tWZWN0b3IpOworCisgICAgfSBlbHNlIGlmIChleGVjLT5hcmd1
bWVudCgwKS5pbmhlcml0cygmSlNNZWRpYVN0cmVhbTo6c19pbmZvKSkgeworICAgICAgICBNZWRp
YVN0cmVhbSogc3RyZWFtID0gdG9NZWRpYVN0cmVhbShleGVjLT5hcmd1bWVudCgwKSk7CisgICAg
ICAgIG1lZGlhU3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBzdHJlYW0pOwor
CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGpzQ29uc3Ry
dWN0b3ItPmdsb2JhbE9iamVjdCgpLCBNZWRpYVN0cmVhbSwgbWVkaWFTdHJlYW0uZ2V0KCkpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkK
</data>
<flag name="commit-queue"
          id="193676"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177672</attachid>
            <date>2012-12-04 22:43:04 -0800</date>
            <delta_ts>2012-12-20 09:22:32 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>ms_constructor03.patch</filename>
            <type>text/plain</type>
            <size>24119</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMDcwZDUzLi4zMzM0MjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTIt
MDQgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIHRoZSBNZWRpYVN0cmVhbSBjb25zdHJ1Y3Rvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRo
ZSBNZWRpYVN0cmVhbSBjb25zdHJ1Y3RvciB0byBzdXBwb3J0IHRoZSBtb3JlIGdlbmVyYWwgYXJn
dW1lbnQKKyAgICAgICAgbGlzdCBmcm9tIHRoZSBsYXRlc3QgTWVkaWEgQ2FwdHVyZSBhbmQgU3Ry
ZWFtcyBzcGVjaWZpY2F0aW9uOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDExL3dlYnJ0
Yy9lZGl0b3IvZ2V0dXNlcm1lZGlhLmh0bWwKKworICAgICAgICAqIGZhc3QvanMvY29uc3RydWN0
b3ItbGVuZ3RoLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNv
bnN0cnVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtQ29uc3RydWN0b3IuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L2Zh
c3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvanMvY29uc3RydWN0b3ItbGVu
Z3RoLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0xMS0zMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEz
NjE0Mi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3Ro
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC5odG1sCmluZGV4
IGI1ZDFiMDYuLmI1MjkzZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvY29uc3Ry
dWN0b3ItbGVuZ3RoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9jb25zdHJ1Y3Rvci1s
ZW5ndGguaHRtbApAQCAtMjksNyArMjksNyBAQCBzaG91bGRCZSgnSW50MzJBcnJheS5sZW5ndGgn
LCAnMScpOwogc2hvdWxkQmUoJ0ludDhBcnJheS5sZW5ndGgnLCAnMScpOwogc2hvdWxkQmUoJ0lu
dGVudC5sZW5ndGgnLCAnMycpOwogc2hvdWxkQmUoJ01lZGlhQ29udHJvbGxlci5sZW5ndGgnLCAn
MCcpOwotc2hvdWxkQmUoJ01lZGlhU3RyZWFtLmxlbmd0aCcsICcyJyk7CitzaG91bGRCZSgnTWVk
aWFTdHJlYW0ubGVuZ3RoJywgJzAnKTsKIHNob3VsZEJlKCdNZXNzYWdlQ2hhbm5lbC5sZW5ndGgn
LCAnMCcpOwogc2hvdWxkQmUoJ01lc3NhZ2VFdmVudC5sZW5ndGgnLCAnMicpOwogc2hvdWxkQmUo
J092ZXJmbG93RXZlbnQubGVuZ3RoJywgJzInKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3ItZXhwZWN0ZWQu
dHh0CmluZGV4IDFjMmMwYWQuLjI4NWZmMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dApAQCAtNywxMiArNyw1NSBAQCBQQVNTIEdvdCBsb2NhbCBzdHJlYW0uCiBQQVNTIGxvY2Fs
U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCiBQQVNTIGxvY2FsU3RyZWFtLnZpZGVvVHJh
Y2tzLmxlbmd0aCBpcyAxCiBQQVNTIHR5cGVvZiB3ZWJraXRNZWRpYVN0cmVhbSA9PT0gJ2Z1bmN0
aW9uJyBpcyB0cnVlCi1QQVNTIHN0cmVhbSA9IG5ldyB3ZWJraXRNZWRpYVN0cmVhbShsb2NhbFN0
cmVhbS5hdWRpb1RyYWNrcywgbG9jYWxTdHJlYW0udmlkZW9UcmFja3MpOyBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKGRvY3VtZW50KSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgd2Via2l0TWVkaWFTdHJl
YW0oW2RvY3VtZW50XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxpZCBBcnJheSBl
bGVtZW50IHR5cGUuCitQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmF1ZGlvVHJh
Y2tzWzBdLCBkb2N1bWVudF0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludmFsaWQgQXJy
YXkgZWxlbWVudCB0eXBlLgorUEFTUyBuZXcgd2Via2l0TWVkaWFTdHJlYW0oW251bGxdKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZS4KK1BBU1Mg
bmV3IHdlYmtpdE1lZGlhU3RyZWFtKFt1bmRlZmluZWRdKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZS4KK1BBU1MgbmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5l
dyB3ZWJraXRNZWRpYVN0cmVhbSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1lZGlh
U3RyZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5l
ZC4KLVBBU1Mgc3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJwotUEFTUyBz
dHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIDEKLVBBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxl
bmd0aCBpcyAxCitQQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVh
bScKK1BBU1MgbmV3U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3
U3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgU3RyZWFtIGNvbnN0cnVj
dGVkCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0
IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFt
ZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIG5ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMg
bkF1ZGlvCitQQVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNT
IFN0cmVhbSBjb25zdHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVs
bC4KK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BBU1MgbmV3U3RyZWFt
LmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBuZXdTdHJlYW0uYXVkaW9U
cmFja3MubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3Ro
IGlzIG5WaWRlbworUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKK1BBU1MgW29iamVjdCBNZWRpYVN0
cmVhbV0gaXMgbm9uLW51bGwuCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQu
CitQQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1Mg
bmV3U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLnZp
ZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCitQQVNT
IFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IE1lZGlhU3Ry
ZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVk
aWFTdHJlYW0nCitQQVNTIG5ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCitQ
QVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIFN0cmVhbSBj
b25zdHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1Mg
W29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BBU1MgbmV3U3RyZWFtLmNvbnN0cnVj
dG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBuZXdTdHJlYW0uYXVkaW9UcmFja3MubGVu
Z3RoIGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRl
bworUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMg
bm9uLW51bGwuCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIG5l
d1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1MgbmV3U3RyZWFt
LmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCBpcyBuVmlkZW8KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAppbmRleCAzZWJlMGM5Li43ZDg0YTNlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3Iu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3Ry
dWN0b3IuaHRtbApAQCAtMTAsNiArMTAsMTIgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigiVGVz
dHMgd2Via2l0TWVkaWFTdHJlYW0uIik7CiAKK3ZhciB1bmRlZmluZWQ7Cit2YXIgc3RyZWFtOwor
dmFyIG5ld1N0cmVhbTsKK3ZhciBuQXVkaW87Cit2YXIgblZpZGVvOworCiBmdW5jdGlvbiBlcnJv
cigpIHsKICAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7CiAgICAg
ZmluaXNoSlNUZXN0KCk7CkBAIC0zMCwxNyArMzYsNDcgQEAgZnVuY3Rpb24gZ290U3RyZWFtKHMp
IHsKICAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsK
ICAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKIAot
ICAgIHN0cmVhbSA9IG51bGw7CiAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2Ygd2Via2l0TWVkaWFT
dHJlYW0gPT09ICdmdW5jdGlvbiciKTsKLSAgICBzaG91bGROb3RUaHJvdygic3RyZWFtID0gbmV3
IHdlYmtpdE1lZGlhU3RyZWFtKGxvY2FsU3RyZWFtLmF1ZGlvVHJhY2tzLCBsb2NhbFN0cmVhbS52
aWRlb1RyYWNrcyk7Iik7Ci0gICAgc2hvdWxkQmVOb25OdWxsKHN0cmVhbSk7Ci0gICAgc2hvdWxk
QmVEZWZpbmVkKHN0cmVhbSk7Ci0gICAgc2hvdWxkQmUoInN0cmVhbS5jb25zdHJ1Y3Rvci5uYW1l
IiwgIidNZWRpYVN0cmVhbSciKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxl
bmd0aCcsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAn
MScpOworCisgICAgdGVzdENvbnN0cnVjdG9yKGxvY2FsU3RyZWFtKTsKKwogICAgIGZpbmlzaEpT
VGVzdCgpOwogfQogCitmdW5jdGlvbiB0ZXN0Q29uc3RydWN0b3IocykgeworICAgIHN0cmVhbSA9
IHM7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShkb2N1bWVudCknKTsK
KyAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtkb2N1bWVudF0pJyk7Cisg
ICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmF1ZGlvVHJhY2tz
WzBdLCBkb2N1bWVudF0pJyk7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVh
bShbbnVsbF0pJyk7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShbdW5k
ZWZpbmVkXSknKTsKKyAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKG51bGwp
Jyk7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbSh1bmRlZmluZWQpJyk7
CisKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKCksIDAsIDApOworICAg
IHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW10pLCAwLCAwKTsKKworICAgIHZl
cmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0ocyksIHMuYXVkaW9UcmFja3MubGVuZ3Ro
LCBzLnZpZGVvVHJhY2tzLmxlbmd0aCk7CisKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1l
ZGlhU3RyZWFtKFtzLmF1ZGlvVHJhY2tzWzBdXSksIDEsIDApOworICAgIHZlcmlmeVN0cmVhbShu
ZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MudmlkZW9UcmFja3NbMF1dKSwgMCwgMSk7CisgICAgdmVy
aWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy5hdWRpb1RyYWNrc1swXSwgcy52aWRl
b1RyYWNrc1swXV0pLCAxLCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKFtzLnZpZGVvVHJhY2tzWzBdLCBzLmF1ZGlvVHJhY2tzWzBdLCBzLnZpZGVvVHJhY2tzWzBd
XSksIDEsIDEpOworfQorCitmdW5jdGlvbiB2ZXJpZnlTdHJlYW0ocywgbnVtQXVkaW9UcmFja3Ms
IG51bVZpZGVvVHJhY2tzKSB7CisgICAgbmV3U3RyZWFtID0gczsKKyAgICBuQXVkaW8gPSBudW1B
dWRpb1RyYWNrczsKKyAgICBuVmlkZW8gPSBudW1WaWRlb1RyYWNrczsKKworICAgIHRlc3RQYXNz
ZWQoJ1N0cmVhbSBjb25zdHJ1Y3RlZCcpOworICAgIHNob3VsZEJlTm9uTnVsbChuZXdTdHJlYW0p
OworICAgIHNob3VsZEJlRGVmaW5lZChuZXdTdHJlYW0pOworICAgIHNob3VsZEJlKCJuZXdTdHJl
YW0uY29uc3RydWN0b3IubmFtZSIsICInTWVkaWFTdHJlYW0nIik7CisgICAgc2hvdWxkQmUoJ25l
d1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnbkF1ZGlvJyk7CisgICAgc2hvdWxkQmUoJ25l
d1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnblZpZGVvJyk7Cit9CisKIGdldFVzZXJNZWRp
YSh7dmlkZW86dHJ1ZSwgYXVkaW86dHJ1ZX0sIGdvdFN0cmVhbSk7CiAKIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2JsYWNrYmVy
cnkvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50
eHQKaW5kZXggZjk2ZDE0OS4uNTVlMjI3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxl
bmd0aC1leHBlY3RlZC50eHQKQEAgLTI1LDcgKzI1LDcgQEAgUEFTUyBJbnQzMkFycmF5Lmxlbmd0
aCBpcyAxCiBQQVNTIEludDhBcnJheS5sZW5ndGggaXMgMQogRkFJTCBJbnRlbnQubGVuZ3RoIHNo
b3VsZCBiZSAzLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IEludGVudAogUEFTUyBNZWRpYUNvbnRyb2xsZXIubGVuZ3RoIGlzIDAKLUZBSUwgTWVk
aWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAyLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1lZGlhU3RyZWFtCitGQUlMIE1lZGlhU3RyZWFtLmxl
bmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBNZWRpYVN0cmVhbQogUEFTUyBNZXNzYWdlQ2hhbm5lbC5sZW5ndGggaXMg
MAogUEFTUyBNZXNzYWdlRXZlbnQubGVuZ3RoIGlzIDIKIFBBU1MgT3ZlcmZsb3dFdmVudC5sZW5n
dGggaXMgMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9q
cy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDMx
YjY2OWEuLmQxZjc3OTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50
eHQKQEAgLTI1LDcgKzI1LDcgQEAgRkFJTCBJbnQzMkFycmF5Lmxlbmd0aCBzaG91bGQgYmUgMS4g
V2FzIDAuCiBGQUlMIEludDhBcnJheS5sZW5ndGggc2hvdWxkIGJlIDEuIFdhcyAwLgogRkFJTCBJ
bnRlbnQubGVuZ3RoIHNob3VsZCBiZSAzLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6
IEludGVudCBpcyBub3QgZGVmaW5lZAogUEFTUyBNZWRpYUNvbnRyb2xsZXIubGVuZ3RoIGlzIDAK
LUZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAyLiBUaHJldyBleGNlcHRpb24gUmVm
ZXJlbmNlRXJyb3I6IE1lZGlhU3RyZWFtIGlzIG5vdCBkZWZpbmVkCitGQUlMIE1lZGlhU3RyZWFt
Lmxlbmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBNZWRp
YVN0cmVhbSBpcyBub3QgZGVmaW5lZAogUEFTUyBNZXNzYWdlQ2hhbm5lbC5sZW5ndGggaXMgMAog
RkFJTCBNZXNzYWdlRXZlbnQubGVuZ3RoIHNob3VsZCBiZSAyLiBXYXMgMC4KIEZBSUwgT3ZlcmZs
b3dFdmVudC5sZW5ndGggc2hvdWxkIGJlIDIuIFdhcyAwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBl
Y3RlZC50eHQKaW5kZXggMzk0NDE0Yi4uZjY3Njc3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhw
ZWN0ZWQudHh0CkBAIC0yNSw3ICsyNSw3IEBAIFBBU1MgSW50MzJBcnJheS5sZW5ndGggaXMgMQog
UEFTUyBJbnQ4QXJyYXkubGVuZ3RoIGlzIDEKIEZBSUwgSW50ZW50Lmxlbmd0aCBzaG91bGQgYmUg
My4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBJ
bnRlbnQKIFBBU1MgTWVkaWFDb250cm9sbGVyLmxlbmd0aCBpcyAwCi1GQUlMIE1lZGlhU3RyZWFt
Lmxlbmd0aCBzaG91bGQgYmUgMi4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBNZWRpYVN0cmVhbQorRkFJTCBNZWRpYVN0cmVhbS5sZW5ndGggc2hv
dWxkIGJlIDAuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJp
YWJsZTogTWVkaWFTdHJlYW0KIFBBU1MgTWVzc2FnZUNoYW5uZWwubGVuZ3RoIGlzIDAKIFBBU1Mg
TWVzc2FnZUV2ZW50Lmxlbmd0aCBpcyAyCiBQQVNTIE92ZXJmbG93RXZlbnQubGVuZ3RoIGlzIDIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2pzL2NvbnN0cnVjdG9y
LWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9qcy9j
b25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDM5NDQxNGIuLmY2NzY3NzggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxl
bmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvanMv
Y29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtMjUsNyArMjUsNyBAQCBQQVNTIElu
dDMyQXJyYXkubGVuZ3RoIGlzIDEKIFBBU1MgSW50OEFycmF5Lmxlbmd0aCBpcyAxCiBGQUlMIElu
dGVudC5sZW5ndGggc2hvdWxkIGJlIDMuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogSW50ZW50CiBQQVNTIE1lZGlhQ29udHJvbGxlci5sZW5ndGgg
aXMgMAotRkFJTCBNZWRpYVN0cmVhbS5sZW5ndGggc2hvdWxkIGJlIDIuIFRocmV3IGV4Y2VwdGlv
biBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogTWVkaWFTdHJlYW0KK0ZBSUwg
TWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1lZGlhU3RyZWFtCiBQQVNTIE1lc3NhZ2VDaGFu
bmVsLmxlbmd0aCBpcyAwCiBQQVNTIE1lc3NhZ2VFdmVudC5sZW5ndGggaXMgMgogUEFTUyBPdmVy
Zmxvd0V2ZW50Lmxlbmd0aCBpcyAyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXgg
ZGM0Yzg3NC4uZTI3MTUxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFz
dC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtMjUs
NyArMjUsNyBAQCBQQVNTIEludDMyQXJyYXkubGVuZ3RoIGlzIDEKIFBBU1MgSW50OEFycmF5Lmxl
bmd0aCBpcyAxCiBGQUlMIEludGVudC5sZW5ndGggc2hvdWxkIGJlIDMuIFRocmV3IGV4Y2VwdGlv
biBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogSW50ZW50CiBQQVNTIE1lZGlh
Q29udHJvbGxlci5sZW5ndGggaXMgMAotRkFJTCBNZWRpYVN0cmVhbS5sZW5ndGggc2hvdWxkIGJl
IDIuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
TWVkaWFTdHJlYW0KK0ZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBl
eGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1lZGlhU3RyZWFt
CiBQQVNTIE1lc3NhZ2VDaGFubmVsLmxlbmd0aCBpcyAwCiBQQVNTIE1lc3NhZ2VFdmVudC5sZW5n
dGggaXMgMgogUEFTUyBPdmVyZmxvd0V2ZW50Lmxlbmd0aCBpcyAyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0
YTNkZi4uY2I3OWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTA0ICBB
ZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KKworICAgICAgICBN
ZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSB0aGUgTWVkaWFTdHJlYW0gY29uc3RydWN0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDE2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgTWVk
aWFTdHJlYW0gY29uc3RydWN0b3IgdG8gc3VwcG9ydCB0aGUgbW9yZSBnZW5lcmFsIGFyZ3VtZW50
CisgICAgICAgIGxpc3QgZnJvbSB0aGUgbGF0ZXN0IE1lZGlhIENhcHR1cmUgYW5kIFN0cmVhbXMg
c3BlY2lmaWNhdGlvbjoKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAxMS93ZWJydGMvZWRp
dG9yL2dldHVzZXJtZWRpYS5odG1sCisKKyAgICAgICAgQWRkZWQgbW9yZSB0ZXN0IGNhc2VzIHRv
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRhaW5zU291cmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJvY2Vzc1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyb21Tb3VyY2VWZWN0
b3JzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU3RyZWFtQ29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTTWVkaWFTdHJlYW0pOgorCiAyMDEyLTExLTMwICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTM2MTQyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTUyYTE2OC4u
ZDI5MDI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMzU1LDYgKzIzNTUs
NyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
ZGlhTGlzdEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFT
dHJlYW1DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lbW9yeUlu
Zm9DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFu
bmVsQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZl
bnRDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggM2RhMzEyMS4uNTdlOGVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDQ3
ICszNiw2NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHByb2Nlc3NU
cmFja0xpc3QoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gcHJwVHJhY2tzLCBjb25z
dCBTdHJpbmcmIGtpbmQsIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzLCBFeGNlcHRp
b25Db2RlJiBlYykKK3N0YXRpYyBib29sIGNvbnRhaW5zU291cmNlKE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBzb3VyY2VWZWN0b3IsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiB7Ci0gICAg
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiB0cmFja3MgPSBwcnBUcmFja3M7Ci0gICAgaWYg
KCF0cmFja3MpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VWZWN0b3Iuc2l6ZSgp
OyArK2kpCisgICAgICAgIGlmIChzb3VyY2UtPmlkKCkgPT0gc291cmNlVmVjdG9yW2ldLT5pZCgp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0
aWMgdm9pZCBwcm9jZXNzVHJhY2soTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiBzb3VyY2VWZWN0b3IpCit7CisgICAgaWYgKHRyYWNrLT5yZWFkeVN0YXRl
KCkgPT0gTWVkaWFTdHJlYW1UcmFjazo6RU5ERUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFja3MtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAg
TWVkaWFTdHJlYW1UcmFjayogdHJhY2sgPSB0cmFja3MtPml0ZW0oaSk7Ci0gICAgICAgIGlmICh0
cmFjay0+a2luZCgpICE9IGtpbmQpIHsKLSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZSog
c291cmNlID0gdHJhY2stPmNvbXBvbmVudCgpLT5zb3VyY2UoKTsKLSAgICAgICAgYm9vbCBpc0R1
cGxpY2F0ZSA9IGZhbHNlOwotICAgICAgICBmb3IgKE1lZGlhU3RyZWFtU291cmNlVmVjdG9yOjpp
dGVyYXRvciBqID0gc291cmNlcy5iZWdpbigpOyBqIDwgc291cmNlcy5lbmQoKTsgKytqKSB7Ci0g
ICAgICAgICAgICBpZiAoKCpqKS0+aWQoKSA9PSBzb3VyY2UtPmlkKCkpIHsKLSAgICAgICAgICAg
ICAgICBpc0R1cGxpY2F0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpc0R1cGxpY2F0ZSkKLSAgICAgICAgICAg
IHNvdXJjZXMuYXBwZW5kKHNvdXJjZSk7Ci0gICAgfQorICAgIE1lZGlhU3RyZWFtU291cmNlKiBz
b3VyY2UgPSB0cmFjay0+Y29tcG9uZW50KCktPnNvdXJjZSgpOworICAgIGlmICghY29udGFpbnNT
b3VyY2Uoc291cmNlVmVjdG9yLCBzb3VyY2UpKQorICAgICAgICBzb3VyY2VWZWN0b3IuYXBwZW5k
KHNvdXJjZSk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGVGcm9t
U291cmNlVmVjdG9ycyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0
b3I+IGRlc2NyaXB0b3IgPSBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCksIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKKyAgICBNZWRp
YVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRDcmVhdGVNZWRpYVN0cmVhbShkZXNjcmlwdG9y
LmdldCgpKTsKKworICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIGRlc2Ny
aXB0b3IucmVsZWFzZSgpKTsKK30KKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJl
YW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciB2aWRlb1NvdXJjZXM7CisKKyAgICByZXR1cm4gY3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMo
Y29udGV4dCwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwogfQogCi1QYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IGF1ZGlvVHJhY2tzLCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiB2aWRlb1RyYWNrcywgRXhjZXB0aW9uQ29kZSYg
ZWMpCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkK
IHsKKyAgICBBU1NFUlQoc3RyZWFtKTsKKwogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1
ZGlvU291cmNlczsKLSAgICBwcm9jZXNzVHJhY2tMaXN0KGF1ZGlvVHJhY2tzLCAiYXVkaW8iLCBh
dWRpb1NvdXJjZXMsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOworICAgIE1l
ZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RyZWFtLT5hdWRpb1RyYWNrcygpLT5sZW5ndGgoKTsgKytpKQorICAgICAgICBw
cm9jZXNzVHJhY2soc3RyZWFtLT5hdWRpb1RyYWNrcygpLT5pdGVtKGkpLCBhdWRpb1NvdXJjZXMp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJlYW0tPnZpZGVvVHJhY2tzKCktPmxl
bmd0aCgpOyArK2kpCisgICAgICAgIHByb2Nlc3NUcmFjayhzdHJlYW0tPnZpZGVvVHJhY2tzKCkt
Pml0ZW0oaSksIHZpZGVvU291cmNlcyk7CiAKKyAgICByZXR1cm4gY3JlYXRlRnJvbVNvdXJjZVZl
Y3RvcnMoY29udGV4dCwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworfQorCitQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImIHRyYWNrcykKK3sKKyAg
ICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXM7CiAgICAgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3IgdmlkZW9Tb3VyY2VzOwotICAgIHByb2Nlc3NUcmFja0xpc3QodmlkZW9UcmFj
a3MsICJ2aWRlbyIsIHZpZGVvU291cmNlcywgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0g
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Ci0gICAgTWVkaWFTdHJlYW1DZW50ZXI6Omlu
c3RhbmNlKCkuZGlkQ3JlYXRlTWVkaWFTdHJlYW0oZGVzY3JpcHRvci5nZXQoKSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHByb2Nlc3NU
cmFjayh0cmFja3NbaV0uZ2V0KCksIHRyYWNrc1tpXS0+a2luZCgpID09ICJhdWRpbyIgPyBhdWRp
b1NvdXJjZXMgOiB2aWRlb1NvdXJjZXMpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRp
YVN0cmVhbShjb250ZXh0LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSkpOworICAgIHJldHVybiBjcmVh
dGVGcm9tU291cmNlVmVjdG9ycyhjb250ZXh0LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7
CiB9CiAKIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0
b3I+IHN0cmVhbURlc2NyaXB0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggNjQyZWMwZi4uMzlkOGY3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtNDQsOCAr
NDQsMTAgQEAgcHVibGljOgogICAgICAgICBFTkRFRCA9IDIKICAgICB9OwogCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3ImKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
RGVzY3JpcHRvcj4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+
LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgfk1lZGlhU3RyZWFtKCk7CiAKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGVuZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5pZGwKaW5kZXggODNmZDdkYS4uNzZiM2ZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwKQEAgLTI1LDkg
KzI1LDEyIEBACiBbCiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAogICAgIEV2ZW50VGFy
Z2V0LAotICAgIENvbnN0cnVjdG9yKGluIE1lZGlhU3RyZWFtVHJhY2tMaXN0IGF1ZGlvVHJhY2tz
LCBpbiBNZWRpYVN0cmVhbVRyYWNrTGlzdCB2aWRlb1RyYWNrcyksCisgICAgQ29uc3RydWN0b3Is
CisgICAgQ29uc3RydWN0b3IoaW4gTWVkaWFTdHJlYW0gc3RyZWFtKSwKKyAgICBDb25zdHJ1Y3Rv
cihpbiBNZWRpYVN0cmVhbVRyYWNrW10gdHJhY2tzKSwKKyAgICBKU0N1c3RvbUNvbnN0cnVjdG9y
LAorICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0wLAogICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsCi0gICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24KICAgIF0gaW50ZXJm
YWNlIE1lZGlhU3RyZWFtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVs
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNrTGlzdCBhdWRpb1RyYWNr
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1OTYzODQ2Li40ZTcxN2FlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC0yMTAwLDYgKzIxMDAsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lZGlhTGlzdEN1c3Rv
bS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lbW9yeUluZm9DdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUN1c3RvbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJjZWFjZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DdXN0b20uY3BwCkBAIC0w
LDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAiSlNNZWRpYVN0cmVhbS5oIgorCisjaW5jbHVkZSAiSlNN
ZWRpYVN0cmVhbVRyYWNrLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU01lZGlhU3RyZWFtQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTTWVkaWFTdHJlYW0oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpT
TWVkaWFTdHJlYW1Db25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTTWVk
aWFTdHJlYW1Db25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiTWVkaWFTdHJlYW0gY29uc3RydWN0b3IgYXNz
b2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKKworICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gbWVkaWFTdHJlYW07CisKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewor
ICAgICAgICBtZWRpYVN0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dCk7CisKKyAg
ICB9IGVsc2UgaWYgKGlzSlNBcnJheShleGVjLT5hcmd1bWVudCgwKSkpIHsKKyAgICAgICAgSlNB
cnJheSogdHJhY2tzQXJyYXkgPSBhc0FycmF5KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICAgICAg
TWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0cmFja1ZlY3RvcjsKKworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHRyYWNrc0FycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBK
U1ZhbHVlIGVsZW1lbnQgPSB0cmFja3NBcnJheS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAg
ICAgICBpZiAoZWxlbWVudC5pbmhlcml0cygmSlNNZWRpYVN0cmVhbVRyYWNrOjpzX2luZm8pKQor
ICAgICAgICAgICAgICAgIHRyYWNrVmVjdG9yLmFwcGVuZCh0b01lZGlhU3RyZWFtVHJhY2soZWxl
bWVudCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbnZhbGlkIEFycmF5IGVsZW1lbnQg
dHlwZSIpKTsKKyAgICAgICAgfQorICAgICAgICBtZWRpYVN0cmVhbSA9IE1lZGlhU3RyZWFtOjpj
cmVhdGUoY29udGV4dCwgdHJhY2tWZWN0b3IpOworCisgICAgfSBlbHNlIGlmIChleGVjLT5hcmd1
bWVudCgwKS5pbmhlcml0cygmSlNNZWRpYVN0cmVhbTo6c19pbmZvKSkgeworICAgICAgICBNZWRp
YVN0cmVhbSogc3RyZWFtID0gdG9NZWRpYVN0cmVhbShleGVjLT5hcmd1bWVudCgwKSk7CisgICAg
ICAgIG1lZGlhU3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBzdHJlYW0pOwor
CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworCisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywganNDb25z
dHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIE1lZGlhU3RyZWFtLCBtZWRpYVN0cmVhbS5nZXQoKSkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQo=
</data>
<flag name="review"
          id="193911"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="194386"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180351</attachid>
            <date>2012-12-20 09:22:32 -0800</date>
            <delta_ts>2012-12-21 01:16:12 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>ms_constructor04.patch</filename>
            <type>text/plain</type>
            <size>19138</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNzA4ZDk0Li4zY2Y3NjQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTIt
MjAgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIHRoZSBNZWRpYVN0cmVhbSBjb25zdHJ1Y3Rvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0MTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIE1l
ZGlhU3RyZWFtIGNvbnN0cnVjdG9yIHRvIHN1cHBvcnQgdGhlIG1vcmUgZ2VuZXJhbCBhcmd1bWVu
dAorICAgICAgICBsaXN0IGZyb20gdGhlIGxhdGVzdCBNZWRpYSBDYXB0dXJlIGFuZCBTdHJlYW1z
IHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMTEvd2VicnRjL2Vk
aXRvci9nZXR1c2VybWVkaWEuaHRtbAorCisgICAgICAgICogZmFzdC9qcy9jb25zdHJ1Y3Rvci1s
ZW5ndGguaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3Ry
dWN0b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Db25zdHJ1Y3Rvci5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvZmFzdC9q
cy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgt
ZXhwZWN0ZWQudHh0OgorCiAyMDEyLTEyLTE5ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZS1za2lwcGluZyB0b3VjaC1pbnB1dC1lbGVtZW50LWNoYW5n
LWRvY3VtZW50cy5odG1sIHNpbmNlIGl0J3Mgc3RpbGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Nv
bnN0cnVjdG9yLWxlbmd0aC5odG1sCmluZGV4IDkxYjNhMDIuLmYzMDkyNGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGguaHRtbApAQCAtMjksNyArMjksNyBAQCBz
aG91bGRCZSgnSW50MzJBcnJheS5sZW5ndGgnLCAnMScpOwogc2hvdWxkQmUoJ0ludDhBcnJheS5s
ZW5ndGgnLCAnMScpOwogc2hvdWxkQmUoJ0ludGVudC5sZW5ndGgnLCAnMycpOwogc2hvdWxkQmUo
J01lZGlhQ29udHJvbGxlci5sZW5ndGgnLCAnMCcpOwotc2hvdWxkQmUoJ01lZGlhU3RyZWFtLmxl
bmd0aCcsICcyJyk7CitzaG91bGRCZSgnTWVkaWFTdHJlYW0ubGVuZ3RoJywgJzAnKTsKIHNob3Vs
ZEJlKCdNZXNzYWdlQ2hhbm5lbC5sZW5ndGgnLCAnMCcpOwogc2hvdWxkQmUoJ01lc3NhZ2VFdmVu
dC5sZW5ndGgnLCAnMicpOwogc2hvdWxkQmUoJ092ZXJmbG93RXZlbnQubGVuZ3RoJywgJzInKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25z
dHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtQ29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CmluZGV4IDFjMmMwYWQuLjI4NWZmMmMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtNywxMiArNyw1NSBAQCBQQVNTIEdv
dCBsb2NhbCBzdHJlYW0uCiBQQVNTIGxvY2FsU3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAx
CiBQQVNTIGxvY2FsU3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCiBQQVNTIHR5cGVvZiB3
ZWJraXRNZWRpYVN0cmVhbSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCi1QQVNTIHN0cmVhbSA9IG5l
dyB3ZWJraXRNZWRpYVN0cmVhbShsb2NhbFN0cmVhbS5hdWRpb1RyYWNrcywgbG9jYWxTdHJlYW0u
dmlkZW9UcmFja3MpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdE1l
ZGlhU3RyZWFtKGRvY3VtZW50KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgorUEFTUyBuZXcgd2Via2l0TWVkaWFTdHJlYW0oW2RvY3VtZW50XSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUuCitQQVNTIG5ldyB3ZWJraXRN
ZWRpYVN0cmVhbShbc3RyZWFtLmF1ZGlvVHJhY2tzWzBdLCBkb2N1bWVudF0pIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEludmFsaWQgQXJyYXkgZWxlbWVudCB0eXBlLgorUEFTUyBuZXcgd2Vi
a2l0TWVkaWFTdHJlYW0oW251bGxdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlk
IEFycmF5IGVsZW1lbnQgdHlwZS4KK1BBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFt1bmRlZmlu
ZWRdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlw
ZS4KK1BBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbSh1bmRlZmluZWQp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFN0cmVhbSBjb25z
dHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29i
amVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KLVBBU1Mgc3RyZWFtLmNvbnN0cnVjdG9yLm5h
bWUgaXMgJ01lZGlhU3RyZWFtJwotUEFTUyBzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIDEK
LVBBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCitQQVNTIG5ld1N0cmVhbS5jb25z
dHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1MgbmV3U3RyZWFtLmF1ZGlvVHJhY2tz
Lmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBu
VmlkZW8KK1BBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1d
IGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFT
UyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIG5ld1N0
cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIG5ld1N0cmVhbS52aWRlb1Ry
YWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAorUEFTUyBbb2Jq
ZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0g
aXMgZGVmaW5lZC4KK1BBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3Ry
ZWFtJworUEFTUyBuZXdTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBu
ZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBTdHJlYW0gY29uc3Ry
dWN0ZWQKK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCitQQVNTIFtvYmpl
Y3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5u
YW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1MgbmV3U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBp
cyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BB
U1MgU3RyZWFtIGNvbnN0cnVjdGVkCitQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1u
dWxsLgorUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJl
YW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIG5ld1N0cmVhbS5hdWRp
b1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5n
dGggaXMgblZpZGVvCitQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAorUEFTUyBbb2JqZWN0IE1lZGlh
U3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5l
ZC4KK1BBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFT
UyBuZXdTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0u
dmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKK1BB
U1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCitQQVNTIFtvYmplY3QgTWVkaWFT
dHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdN
ZWRpYVN0cmVhbScKK1BBU1MgbmV3U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8K
K1BBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAppbmRl
eCAzZWJlMGM5Li43ZDg0YTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbApAQCAtMTAsNiArMTAsMTIgQEAK
IDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigiVGVzdHMgd2Via2l0TWVkaWFTdHJlYW0uIik7CiAKK3Zh
ciB1bmRlZmluZWQ7Cit2YXIgc3RyZWFtOwordmFyIG5ld1N0cmVhbTsKK3ZhciBuQXVkaW87Cit2
YXIgblZpZGVvOworCiBmdW5jdGlvbiBlcnJvcigpIHsKICAgICB0ZXN0RmFpbGVkKCdTdHJlYW0g
Z2VuZXJhdGlvbiBmYWlsZWQuJyk7CiAgICAgZmluaXNoSlNUZXN0KCk7CkBAIC0zMCwxNyArMzYs
NDcgQEAgZnVuY3Rpb24gZ290U3RyZWFtKHMpIHsKICAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0u
YXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKICAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0udmlk
ZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKIAotICAgIHN0cmVhbSA9IG51bGw7CiAgICAgc2hvdWxk
QmVUcnVlKCJ0eXBlb2Ygd2Via2l0TWVkaWFTdHJlYW0gPT09ICdmdW5jdGlvbiciKTsKLSAgICBz
aG91bGROb3RUaHJvdygic3RyZWFtID0gbmV3IHdlYmtpdE1lZGlhU3RyZWFtKGxvY2FsU3RyZWFt
LmF1ZGlvVHJhY2tzLCBsb2NhbFN0cmVhbS52aWRlb1RyYWNrcyk7Iik7Ci0gICAgc2hvdWxkQmVO
b25OdWxsKHN0cmVhbSk7Ci0gICAgc2hvdWxkQmVEZWZpbmVkKHN0cmVhbSk7Ci0gICAgc2hvdWxk
QmUoInN0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIiwgIidNZWRpYVN0cmVhbSciKTsKLSAgICBzaG91
bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ3N0
cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOworCisgICAgdGVzdENvbnN0cnVjdG9yKGxv
Y2FsU3RyZWFtKTsKKwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCitmdW5jdGlvbiB0ZXN0Q29u
c3RydWN0b3IocykgeworICAgIHN0cmVhbSA9IHM7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJr
aXRNZWRpYVN0cmVhbShkb2N1bWVudCknKTsKKyAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1l
ZGlhU3RyZWFtKFtkb2N1bWVudF0pJyk7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRp
YVN0cmVhbShbc3RyZWFtLmF1ZGlvVHJhY2tzWzBdLCBkb2N1bWVudF0pJyk7CisgICAgc2hvdWxk
VGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShbbnVsbF0pJyk7CisgICAgc2hvdWxkVGhyb3co
J25ldyB3ZWJraXRNZWRpYVN0cmVhbShbdW5kZWZpbmVkXSknKTsKKyAgICBzaG91bGRUaHJvdygn
bmV3IHdlYmtpdE1lZGlhU3RyZWFtKG51bGwpJyk7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJr
aXRNZWRpYVN0cmVhbSh1bmRlZmluZWQpJyk7CisKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtp
dE1lZGlhU3RyZWFtKCksIDAsIDApOworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFT
dHJlYW0oW10pLCAwLCAwKTsKKworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJl
YW0ocyksIHMuYXVkaW9UcmFja3MubGVuZ3RoLCBzLnZpZGVvVHJhY2tzLmxlbmd0aCk7CisKKyAg
ICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmF1ZGlvVHJhY2tzWzBdXSks
IDEsIDApOworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MudmlkZW9U
cmFja3NbMF1dKSwgMCwgMSk7CisgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVh
bShbcy5hdWRpb1RyYWNrc1swXSwgcy52aWRlb1RyYWNrc1swXV0pLCAxLCAxKTsKKyAgICB2ZXJp
ZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLnZpZGVvVHJhY2tzWzBdLCBzLmF1ZGlv
VHJhY2tzWzBdLCBzLnZpZGVvVHJhY2tzWzBdXSksIDEsIDEpOworfQorCitmdW5jdGlvbiB2ZXJp
ZnlTdHJlYW0ocywgbnVtQXVkaW9UcmFja3MsIG51bVZpZGVvVHJhY2tzKSB7CisgICAgbmV3U3Ry
ZWFtID0gczsKKyAgICBuQXVkaW8gPSBudW1BdWRpb1RyYWNrczsKKyAgICBuVmlkZW8gPSBudW1W
aWRlb1RyYWNrczsKKworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBjb25zdHJ1Y3RlZCcpOworICAg
IHNob3VsZEJlTm9uTnVsbChuZXdTdHJlYW0pOworICAgIHNob3VsZEJlRGVmaW5lZChuZXdTdHJl
YW0pOworICAgIHNob3VsZEJlKCJuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSIsICInTWVkaWFT
dHJlYW0nIik7CisgICAgc2hvdWxkQmUoJ25ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAn
bkF1ZGlvJyk7CisgICAgc2hvdWxkQmUoJ25ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAn
blZpZGVvJyk7Cit9CisKIGdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZSwgYXVkaW86dHJ1ZX0sIGdv
dFN0cmVhbSk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2JsYWNrYmVycnkvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vYmxhY2tiZXJyeS9mYXN0L2pzL2Nv
bnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggYTU1ZDhkNC4uOWRiZmZjOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vYmxhY2tiZXJyeS9mYXN0L2pzL2NvbnN0cnVj
dG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTI1LDcgKzI1
LDcgQEAgUEFTUyBJbnQzMkFycmF5Lmxlbmd0aCBpcyAxCiBQQVNTIEludDhBcnJheS5sZW5ndGgg
aXMgMQogRkFJTCBJbnRlbnQubGVuZ3RoIHNob3VsZCBiZSAzLiBUaHJldyBleGNlcHRpb24gUmVm
ZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEludGVudAogUEFTUyBNZWRpYUNvbnRy
b2xsZXIubGVuZ3RoIGlzIDAKLUZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAyLiBU
aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1lZGlh
U3RyZWFtCitGQUlMIE1lZGlhU3RyZWFtLmxlbmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0
aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBNZWRpYVN0cmVhbQogUEFT
UyBNZXNzYWdlQ2hhbm5lbC5sZW5ndGggaXMgMAogUEFTUyBNZXNzYWdlRXZlbnQubGVuZ3RoIGlz
IDIKIFBBU1MgT3ZlcmZsb3dFdmVudC5sZW5ndGggaXMgMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9qcy9jb25zdHJ1Y3Rvci1s
ZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IGQxNjc0NzYuLjhkMWI3ZTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2pzL2Nv
bnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTI1LDcgKzI1LDcgQEAgRkFJTCBJbnQz
MkFycmF5Lmxlbmd0aCBzaG91bGQgYmUgMS4gV2FzIDAuCiBGQUlMIEludDhBcnJheS5sZW5ndGgg
c2hvdWxkIGJlIDEuIFdhcyAwLgogRkFJTCBJbnRlbnQubGVuZ3RoIHNob3VsZCBiZSAzLiBUaHJl
dyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IEludGVudCBpcyBub3QgZGVmaW5lZAogUEFTUyBN
ZWRpYUNvbnRyb2xsZXIubGVuZ3RoIGlzIDAKLUZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3Vs
ZCBiZSAyLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IE1lZGlhU3RyZWFtIGlzIG5v
dCBkZWZpbmVkCitGQUlMIE1lZGlhU3RyZWFtLmxlbmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhj
ZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBNZWRpYVN0cmVhbSBpcyBub3QgZGVmaW5lZAogUEFTUyBN
ZXNzYWdlQ2hhbm5lbC5sZW5ndGggaXMgMAogRkFJTCBNZXNzYWdlRXZlbnQubGVuZ3RoIHNob3Vs
ZCBiZSAyLiBXYXMgMC4KIEZBSUwgT3ZlcmZsb3dFdmVudC5sZW5ndGggc2hvdWxkIGJlIDIuIFdh
cyAwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3Ry
dWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0
L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggNWExNTVlZi4uMzE5ZDRj
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvanMvY29uc3RydWN0
b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFz
dC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0yNSw3ICsyNSw3IEBAIFBB
U1MgSW50MzJBcnJheS5sZW5ndGggaXMgMQogUEFTUyBJbnQ4QXJyYXkubGVuZ3RoIGlzIDEKIEZB
SUwgSW50ZW50Lmxlbmd0aCBzaG91bGQgYmUgMy4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBJbnRlbnQKIFBBU1MgTWVkaWFDb250cm9sbGVyLmxl
bmd0aCBpcyAwCi1GQUlMIE1lZGlhU3RyZWFtLmxlbmd0aCBzaG91bGQgYmUgMi4gVGhyZXcgZXhj
ZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBNZWRpYVN0cmVhbQor
RkFJTCBNZWRpYVN0cmVhbS5sZW5ndGggc2hvdWxkIGJlIDAuIFRocmV3IGV4Y2VwdGlvbiBSZWZl
cmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogTWVkaWFTdHJlYW0KIFBBU1MgTWVzc2Fn
ZUNoYW5uZWwubGVuZ3RoIGlzIDAKIFBBU1MgTWVzc2FnZUV2ZW50Lmxlbmd0aCBpcyAyCiBQQVNT
IE92ZXJmbG93RXZlbnQubGVuZ3RoIGlzIDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0
CmluZGV4IDVhMTU1ZWYuLjMxOWQ0YzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4
dApAQCAtMjUsNyArMjUsNyBAQCBQQVNTIEludDMyQXJyYXkubGVuZ3RoIGlzIDEKIFBBU1MgSW50
OEFycmF5Lmxlbmd0aCBpcyAxCiBGQUlMIEludGVudC5sZW5ndGggc2hvdWxkIGJlIDMuIFRocmV3
IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogSW50ZW50CiBQ
QVNTIE1lZGlhQ29udHJvbGxlci5sZW5ndGggaXMgMAotRkFJTCBNZWRpYVN0cmVhbS5sZW5ndGgg
c2hvdWxkIGJlIDIuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogTWVkaWFTdHJlYW0KK0ZBSUwgTWVkaWFTdHJlYW0ubGVuZ3RoIHNob3VsZCBiZSAw
LiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IE1l
ZGlhU3RyZWFtCiBQQVNTIE1lc3NhZ2VDaGFubmVsLmxlbmd0aCBpcyAwCiBQQVNTIE1lc3NhZ2VF
dmVudC5sZW5ndGggaXMgMgogUEFTUyBPdmVyZmxvd0V2ZW50Lmxlbmd0aCBpcyAyCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2pzL2NvbnN0cnVjdG9yLWxlbmd0aC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2pzL2NvbnN0cnVjdG9y
LWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggOTk4OTlhZi4uMTAzZWY0YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9qcy9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvanMvY29uc3RydWN0b3It
bGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtMjUsNyArMjUsNyBAQCBQQVNTIEludDMyQXJyYXkubGVu
Z3RoIGlzIDEKIFBBU1MgSW50OEFycmF5Lmxlbmd0aCBpcyAxCiBGQUlMIEludGVudC5sZW5ndGgg
c2hvdWxkIGJlIDMuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogSW50ZW50CiBQQVNTIE1lZGlhQ29udHJvbGxlci5sZW5ndGggaXMgMAotRkFJTCBN
ZWRpYVN0cmVhbS5sZW5ndGggc2hvdWxkIGJlIDIuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogTWVkaWFTdHJlYW0KK0ZBSUwgTWVkaWFTdHJlYW0u
bGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IE1lZGlhU3RyZWFtCiBQQVNTIE1lc3NhZ2VDaGFubmVsLmxlbmd0aCBp
cyAwCiBQQVNTIE1lc3NhZ2VFdmVudC5sZW5ndGggaXMgMgogUEFTUyBPdmVyZmxvd0V2ZW50Lmxl
bmd0aCBpcyAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk1ZDM2OS4uY2RmYjU1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDEyLTEyLTIwICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2aXN0
QGVyaWNzc29uLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSB0aGUgTWVk
aWFTdHJlYW0gY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk4NDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKwor
ICAgICAgICBVcGRhdGVkIHRoZSBNZWRpYVN0cmVhbSBjb25zdHJ1Y3RvciB0byBzdXBwb3J0IHRo
ZSBtb3JlIGdlbmVyYWwgYXJndW1lbnQKKyAgICAgICAgbGlzdCBmcm9tIHRoZSBsYXRlc3QgTWVk
aWEgQ2FwdHVyZSBhbmQgU3RyZWFtcyBzcGVjaWZpY2F0aW9uOgorICAgICAgICBodHRwOi8vZGV2
LnczLm9yZy8yMDExL3dlYnJ0Yy9lZGl0b3IvZ2V0dXNlcm1lZGlhLmh0bWwKKworICAgICAgICBB
ZGRlZCBtb3JlIHRlc3QgY2FzZXMgdG8gZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRh
aW5zU291cmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vz
c1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyb21Tb3VyY2VWZWN0b3JzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmlkbDoKKwogMjAxMi0xMi0xOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI4OTY0Nzg+IENhbm5vdCBs
b2cgaW50byBnbWFpbC9mYWNlYm9vayB3aXRoIE5ldHdvcmtQcm9jZXNzIGFuZCBwcml2YXRlIGJy
b3dzaW5nIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggM2RhMzEyMS4uZGI3OGZkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDQ3
ICszNiw2NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHByb2Nlc3NU
cmFja0xpc3QoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gcHJwVHJhY2tzLCBjb25z
dCBTdHJpbmcmIGtpbmQsIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VzLCBFeGNlcHRp
b25Db2RlJiBlYykKK3N0YXRpYyBib29sIGNvbnRhaW5zU291cmNlKE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBzb3VyY2VWZWN0b3IsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiB7Ci0gICAg
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiB0cmFja3MgPSBwcnBUcmFja3M7Ci0gICAgaWYg
KCF0cmFja3MpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VWZWN0b3Iuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKHNvdXJjZS0+aWQoKSA9PSBzb3VyY2VWZWN0b3JbaV0tPmlk
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitzdGF0aWMgdm9pZCBwcm9jZXNzVHJhY2soTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIE1l
ZGlhU3RyZWFtU291cmNlVmVjdG9yJiBzb3VyY2VWZWN0b3IpCit7CisgICAgaWYgKHRyYWNrLT5y
ZWFkeVN0YXRlKCkgPT0gTWVkaWFTdHJlYW1UcmFjazo6RU5ERUQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFja3MtPmxlbmd0aCgpOyArK2kpIHsK
LSAgICAgICAgTWVkaWFTdHJlYW1UcmFjayogdHJhY2sgPSB0cmFja3MtPml0ZW0oaSk7Ci0gICAg
ICAgIGlmICh0cmFjay0+a2luZCgpICE9IGtpbmQpIHsKLSAgICAgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBNZWRpYVN0cmVh
bVNvdXJjZSogc291cmNlID0gdHJhY2stPmNvbXBvbmVudCgpLT5zb3VyY2UoKTsKLSAgICAgICAg
Ym9vbCBpc0R1cGxpY2F0ZSA9IGZhbHNlOwotICAgICAgICBmb3IgKE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yOjppdGVyYXRvciBqID0gc291cmNlcy5iZWdpbigpOyBqIDwgc291cmNlcy5lbmQoKTsg
KytqKSB7Ci0gICAgICAgICAgICBpZiAoKCpqKS0+aWQoKSA9PSBzb3VyY2UtPmlkKCkpIHsKLSAg
ICAgICAgICAgICAgICBpc0R1cGxpY2F0ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpc0R1cGxpY2F0ZSkKLSAg
ICAgICAgICAgIHNvdXJjZXMuYXBwZW5kKHNvdXJjZSk7Ci0gICAgfQorICAgIE1lZGlhU3RyZWFt
U291cmNlKiBzb3VyY2UgPSB0cmFjay0+Y29tcG9uZW50KCktPnNvdXJjZSgpOworICAgIGlmICgh
Y29udGFpbnNTb3VyY2Uoc291cmNlVmVjdG9yLCBzb3VyY2UpKQorICAgICAgICBzb3VyY2VWZWN0
b3IuYXBwZW5kKHNvdXJjZSk7Cit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBj
cmVhdGVGcm9tU291cmNlVmVjdG9ycyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bURlc2NyaXB0b3I+IGRlc2NyaXB0b3IgPSBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsK
KyAgICBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRDcmVhdGVNZWRpYVN0cmVhbShk
ZXNjcmlwdG9yLmdldCgpKTsKKworICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRl
eHQsIGRlc2NyaXB0b3IucmVsZWFzZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4g
TWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiBhdWRpb1RyYWNrcywgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrTGlzdD4gdmlkZW9UcmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogewogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNl
czsKLSAgICBwcm9jZXNzVHJhY2tMaXN0KGF1ZGlvVHJhY2tzLCAiYXVkaW8iLCBhdWRpb1NvdXJj
ZXMsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAwOworICAgIE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKKworICAgIHJldHVybiBjcmVhdGVGcm9tU291cmNl
VmVjdG9ycyhjb250ZXh0LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Cit9CiAKK1Bhc3NS
ZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtKQoreworICAgIEFT
U0VSVChzdHJlYW0pOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2Vz
OwogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKLSAgICBwcm9jZXNz
VHJhY2tMaXN0KHZpZGVvVHJhY2tzLCAidmlkZW8iLCB2aWRlb1NvdXJjZXMsIGVjKTsKLSAgICBp
ZiAoZWMpCi0gICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3Jp
cHRvcj4gZGVzY3JpcHRvciA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKSwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwotICAgIE1l
ZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZENyZWF0ZU1lZGlhU3RyZWFtKGRlc2NyaXB0
b3IuZ2V0KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyZWFtLT5hdWRpb1RyYWNr
cygpLT5sZW5ndGgoKTsgKytpKQorICAgICAgICBwcm9jZXNzVHJhY2soc3RyZWFtLT5hdWRpb1Ry
YWNrcygpLT5pdGVtKGkpLCBhdWRpb1NvdXJjZXMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdHJlYW0tPnZpZGVvVHJhY2tzKCktPmxlbmd0aCgpOyArK2kpCisgICAgICAgIHByb2Nl
c3NUcmFjayhzdHJlYW0tPnZpZGVvVHJhY2tzKCktPml0ZW0oaSksIHZpZGVvU291cmNlcyk7CisK
KyAgICByZXR1cm4gY3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMoY29udGV4dCwgYXVkaW9Tb3VyY2Vz
LCB2aWRlb1NvdXJjZXMpOworfQorCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVh
bTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IE1lZGlhU3Ry
ZWFtVHJhY2tWZWN0b3ImIHRyYWNrcykKK3sKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBh
dWRpb1NvdXJjZXM7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgdmlkZW9Tb3VyY2VzOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3Muc2l6ZSgpOyArK2kpCisgICAgICAg
IHByb2Nlc3NUcmFjayh0cmFja3NbaV0uZ2V0KCksIHRyYWNrc1tpXS0+a2luZCgpID09ICJhdWRp
byIgPyBhdWRpb1NvdXJjZXMgOiB2aWRlb1NvdXJjZXMpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZWRpYVN0cmVhbShjb250ZXh0LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSkpOworICAgIHJl
dHVybiBjcmVhdGVGcm9tU291cmNlVmVjdG9ycyhjb250ZXh0LCBhdWRpb1NvdXJjZXMsIHZpZGVv
U291cmNlcyk7CiB9CiAKIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggNjQyZWMwZi4uMzlkOGY3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApA
QCAtNDQsOCArNDQsMTAgQEAgcHVibGljOgogICAgICAgICBFTkRFRCA9IDIKICAgICB9OwogCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcj4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1U
cmFja0xpc3Q+LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtKCk7CiAKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKGVuZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwKaW5kZXggODNmZDdkYS4uZWM3MjE0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwK
QEAgLTI1LDkgKzI1LDExIEBACiBbCiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAogICAg
IEV2ZW50VGFyZ2V0LAotICAgIENvbnN0cnVjdG9yKGluIE1lZGlhU3RyZWFtVHJhY2tMaXN0IGF1
ZGlvVHJhY2tzLCBpbiBNZWRpYVN0cmVhbVRyYWNrTGlzdCB2aWRlb1RyYWNrcyksCisgICAgQ29u
c3RydWN0b3IsCisgICAgQ29uc3RydWN0b3IoaW4gTWVkaWFTdHJlYW0gc3RyZWFtKSwKKyAgICBD
b25zdHJ1Y3RvcihpbiBNZWRpYVN0cmVhbVRyYWNrW10gdHJhY2tzKSwKKyAgICBDb25zdHJ1Y3Rv
clBhcmFtZXRlcnM9MCwKICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAotICAg
IENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uCiAgICBdIGludGVyZmFjZSBNZWRpYVN0cmVhbSB7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgTWVkaWFTdHJlYW1UcmFja0xpc3QgYXVkaW9UcmFja3M7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>