<?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>80417</bug_id>
          
          <creation_ts>2012-03-06 07:17:12 -0800</creation_ts>
          <short_desc>Speech JavaScript API: add SpeechGrammar and SpeechGrammarList</short_desc>
          <delta_ts>2012-03-09 02:56:52 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80410</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
    
    <cc>satish</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>571829</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-03-06 07:17:12 -0800</bug_when>
    <thetext>Speech JavaScript API: add SpeechGrammar and SpeechGrammarList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571837</commentid>
    <comment_count>1</comment_count>
      <attachid>130378</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-03-06 07:21:33 -0800</bug_when>
    <thetext>Created attachment 130378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572752</commentid>
    <comment_count>2</comment_count>
      <attachid>130586</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-03-07 03:22:28 -0800</bug_when>
    <thetext>Created attachment 130586
Patch

Rebase and link to spec in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572769</commentid>
    <comment_count>3</comment_count>
      <attachid>130586</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2012-03-07 03:55:35 -0800</bug_when>
    <thetext>Comment on attachment 130586
Patch

&gt; Source/WebCore/Modules/speech/SpeechGrammar.idl: 31
&gt; attribute DOMString src;

should this be &quot;attribute [URL] DOMString src&quot; similar to src in HTMLImageElement.idl ? If you agree, should the &apos;src()&apos; method in the code return a KURL as it does for image?

&gt; Source/WebCore/Modules/speech/SpeechGrammar.h: 38
&gt; static PassRefPtr&lt;SpeechGrammar&gt; create(); // FIXME:

The spec doesn&apos;t mention constructing a SpeechGrammer as a standalone object, instead there are methods in SpeechGrammarList to add from uri and string. So this method could be removed and added later if required. FWIW I think this would be useful but would need SpeechGrammarList to also support add/remove items. That should perhaps be discussed at the spec level.

If you agree, seems like it should also be removed from DOMWindowSpeech.idl

&gt; Source/WebCore/Modules/speech/SpeechGrammarList.cpp: 42
&gt; return 0; // FIXME: Throw exception?

referring to an invalid index typically returns &apos;undefined&apos;.

&gt; Source/WebCore/Modules/speech/SpeechGrammarList.cpp: 55
&gt; m_grammars.append(SpeechGrammar::create(String(&quot;data:&quot;) + string, weight));

Do you need to urlencode &apos;string&apos; when adding it to the data url?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572843</commentid>
    <comment_count>4</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-03-07 06:31:47 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 130586 [details])
&gt; &gt; Source/WebCore/Modules/speech/SpeechGrammar.idl: 31
&gt; &gt; attribute DOMString src;
&gt; 
&gt; should this be &quot;attribute [URL] DOMString src&quot; similar to src in HTMLImageElement.idl ? If you agree, should the &apos;src()&apos; method in the code return a KURL as it does for image?

Yes, this sounds reasonable. Done.

&gt; &gt; Source/WebCore/Modules/speech/SpeechGrammar.h: 38
&gt; &gt; static PassRefPtr&lt;SpeechGrammar&gt; create(); // FIXME:
&gt; 
&gt; The spec doesn&apos;t mention constructing a SpeechGrammer as a standalone object, instead there are methods in SpeechGrammarList to add from uri and string. So this method could be removed and added later if required. FWIW I think this would be useful but would need SpeechGrammarList to also support add/remove items. That should perhaps be discussed at the spec level.

The IDL in the spec does say that SpeechGrammar should have a constructor. But as you say, it doesn&apos;t otherwise discuss it, or provide methods to add/remove a SpeechGrammar object to a SpeechGrammarList.

I&apos;d like to keep this with the FIXME and revisit when this is resolved in the spec.

&gt; &gt; Source/WebCore/Modules/speech/SpeechGrammarList.cpp: 42
&gt; &gt; return 0; // FIXME: Throw exception?
&gt; 
&gt; referring to an invalid index typically returns &apos;undefined&apos;.

Does it? DOMStringList.item, TouchList.item, NamedNodeMap.item and NodeList.item all seem to return null?

Removing the FIXME, though.

&gt; &gt; Source/WebCore/Modules/speech/SpeechGrammarList.cpp: 55
&gt; &gt; m_grammars.append(SpeechGrammar::create(String(&quot;data:&quot;) + string, weight));
&gt; 
&gt; Do you need to urlencode &apos;string&apos; when adding it to the data url?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572844</commentid>
    <comment_count>5</comment_count>
      <attachid>130613</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-03-07 06:32:19 -0800</bug_when>
    <thetext>Created attachment 130613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572864</commentid>
    <comment_count>6</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2012-03-07 07:08:39 -0800</bug_when>
    <thetext>Looks good.

&gt;&gt; referring to an invalid index typically returns &apos;undefined&apos;.
&gt;
&gt; Does it? DOMStringList.item, TouchList.item, NamedNodeMap.item and NodeList.item all seem to return null?
&gt;
&gt; Removing the FIXME, though.

Yes I meant we can remove the FIXME</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572996</commentid>
    <comment_count>7</comment_count>
      <attachid>130613</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-07 10:25:29 -0800</bug_when>
    <thetext>Comment on attachment 130613
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Implement SpeechGrammar and SpeechGrammarList.
&gt; +        (Spec: http://speech-javascript-api-spec.googlecode.com/git/speechapi.html)

Thanks for including the link to the spec.

&gt; Source/WebCore/Modules/speech/SpeechGrammar.h:40
&gt; +    static PassRefPtr&lt;SpeechGrammar&gt; create(); // FIXME: The spec is not clear on what the constructor should look like.
&gt; +    static PassRefPtr&lt;SpeechGrammar&gt; create(const KURL&amp; src, double weight);

I&apos;d update the spec to let you call the second of these constructors.

&gt; Source/WebCore/Modules/speech/SpeechGrammar.h:42
&gt; +    KURL src() { return m_src; }

KURL src() -&gt; const KURL&amp; src() const

&gt; Source/WebCore/Modules/speech/SpeechGrammar.h:43
&gt; +    void setSrc(const String&amp; src) { m_src = KURL(ParsedURLString, src); }

Using ParsedURLString string isn&apos;t correct.  ParsedURLString is only for use when the string in question was created using KURL::string().  It&apos;s more likely you want to resolve this URL relative to some base.  For example, you can add a [CallWith=ScriptExecutionContext] to the attribute (I think it works for attributes), and then resolve the URL relative with context-&gt;completeURL(src).

You&apos;ll also want to add something to there spec about where to get the base URL.  I believe HTML5 has a notion of a &quot;active script&quot; or something like that, which matches up with [CallWith=ScriptExecutionContext].

Alternatively, you can just represent this URL as a DOMString and worry about resolving it when this object gets used.  I&apos;m now sure how this object gets used, so I don&apos;t know whether there&apos;s an obvious base URL to use at that time.

&gt; Source/WebCore/Modules/speech/SpeechGrammarList.cpp:50
&gt; +void SpeechGrammarList::addFromUri(const String&amp; src, double weight)
&gt; +{
&gt; +    m_grammars.append(SpeechGrammar::create(KURL(ParsedURLString, src), weight));
&gt; +}

Here too, you&apos;re miss using ParsedURLString.

&gt; Source/WebCore/Modules/speech/SpeechGrammarList.cpp:54
&gt; +    String urlString = String(&quot;data:&quot;) + encodeWithURLEscapeSequences(string);

This doesn&apos;t look right.  If this is meant to construct a data URL, you&apos;ll need to include a MIME type in a data URL.  Here are some example data URLs:

data:text/html,&lt;h1&gt;hi&lt;/h1&gt;

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAI
AAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9lnQ7FpHGaOurt1
I34nfH9pMMZAZ8BwMGEvvh%2BBsJCAgICLwIOA8EBAQEBAQEBAQEBK79H5RfIQAAAAA
AAAAAAAAAAAAAAAAAAAAAAID%2FABMSqAfj%2FsLmvAAAAABJRU5ErkJggg%3D%3D

&gt; Source/WebCore/Modules/speech/SpeechGrammarList.idl:32
&gt; +        getter SpeechGrammar item(in unsigned long index);

Unfortunately, I don&apos;t think we support the use of getter in this way (although we&apos;d liked to).  Instead, you should use https://trac.webkit.org/wiki/WebKitIDL#IndexedGetter

&gt; LayoutTests/fast/speech/scripted/speechgrammar-basics.html:21
&gt; +    shouldBe(&quot;g.weight&quot;, &quot;1.0&quot;);
&gt; +    shouldBe(&quot;g.src&quot;, &quot;&apos;&apos;&quot;);

Please add tests for setting these attributes, including to invalid values (and both relative and absolute URLs).

&gt; LayoutTests/fast/speech/scripted/speechgrammar-basics.html:28
&gt; +    gs.addFromUri(&quot;http://example.tld/grammar&quot;, 2);

Please add a test with a relative URL.

&gt; LayoutTests/fast/speech/scripted/speechgrammar-basics.html:34
&gt; +    shouldBe(&quot;gs.item(1).src&quot;, &quot;&apos;data:foo&apos;&quot;);

Here we can see that src is an invalid data URLs.  (Every data URL must have a , character somewhere.)

&gt; LayoutTests/fast/speech/scripted/speechgrammar-basics.html:35
&gt; +    shouldBe(&quot;gs.item(1).weight&quot;, &quot;42&quot;);

Please add a test that uses the indexed getter:

shouldBe(&quot;gs[0].weight&quot;, &quot;2&quot;)

etc.

Also, please add test for out of bounds index (both positive and negative).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573788</commentid>
    <comment_count>8</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-03-08 06:11:54 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 130613 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130613&amp;action=review

Thanks very much for the review, Adam!

&gt; &gt; Source/WebCore/Modules/speech/SpeechGrammar.h:40
&gt; &gt; +    static PassRefPtr&lt;SpeechGrammar&gt; create(); // FIXME: The spec is not clear on what the constructor should look like.
&gt; &gt; +    static PassRefPtr&lt;SpeechGrammar&gt; create(const KURL&amp; src, double weight);
&gt; 
&gt; I&apos;d update the spec to let you call the second of these constructors.

Sounds reasonable. I&apos;d like to have the spec sort all of this out (the constructor, should we have add/remove on the list object, should the attributes on the grammar be readonly or not). For now, I&apos;d like to just keep the FIXME here.

&gt; &gt; Source/WebCore/Modules/speech/SpeechGrammar.h:42
&gt; &gt; +    KURL src() { return m_src; }
&gt; 
&gt; KURL src() -&gt; const KURL&amp; src() const
Done.

&gt; 
&gt; &gt; Source/WebCore/Modules/speech/SpeechGrammar.h:43
&gt; &gt; +    void setSrc(const String&amp; src) { m_src = KURL(ParsedURLString, src); }
&gt; 
&gt; Using ParsedURLString string isn&apos;t correct.  ParsedURLString is only for use when the string in question was created using KURL::string().  It&apos;s more likely you want to resolve this URL relative to some base.  For example, you can add a [CallWith=ScriptExecutionContext] to the attribute (I think it works for attributes), and then resolve the URL relative with context-&gt;completeURL(src).

Thanks. I think we should just resolve it relative to the base of the Document when the URLs are passed in. I&apos;ll get the spec updated.

&gt; &gt; Source/WebCore/Modules/speech/SpeechGrammarList.cpp:54
&gt; &gt; +    String urlString = String(&quot;data:&quot;) + encodeWithURLEscapeSequences(string);
&gt; 
&gt; This doesn&apos;t look right.  If this is meant to construct a data URL, you&apos;ll need to include a MIME type in a data URL.

The spec is a bit vague (to say the least) about the grammar bit, but if I understand correctly, it should be in the XML format of http://www.w3.org/TR/speech-grammar/. I&apos;ll get the spec updated.

So I think &quot;application/xml&quot; should be the appropriate MIME type.

It will be the speech server&apos;s responsibility to reject any invalid grammars.

&gt; &gt; Source/WebCore/Modules/speech/SpeechGrammarList.idl:32
&gt; &gt; +        getter SpeechGrammar item(in unsigned long index);
&gt; 
&gt; Unfortunately, I don&apos;t think we support the use of getter in this way (although we&apos;d liked to).  Instead, you should use https://trac.webkit.org/wiki/WebKitIDL#IndexedGetter
Done.

&gt; &gt; LayoutTests/fast/speech/scripted/speechgrammar-basics.html:21
&gt; &gt; +    shouldBe(&quot;g.weight&quot;, &quot;1.0&quot;);
&gt; &gt; +    shouldBe(&quot;g.src&quot;, &quot;&apos;&apos;&quot;);
&gt; 
&gt; Please add tests for setting these attributes, including to invalid values (and both relative and absolute URLs).
Done.

&gt; &gt; LayoutTests/fast/speech/scripted/speechgrammar-basics.html:28
&gt; &gt; +    gs.addFromUri(&quot;http://example.tld/grammar&quot;, 2);
&gt; 
&gt; Please add a test with a relative URL.
Done.

&gt; &gt; LayoutTests/fast/speech/scripted/speechgrammar-basics.html:35
&gt; &gt; +    shouldBe(&quot;gs.item(1).weight&quot;, &quot;42&quot;);
&gt; 
&gt; Please add a test that uses the indexed getter:
&gt; 
&gt; shouldBe(&quot;gs[0].weight&quot;, &quot;2&quot;)
&gt; 
&gt; etc.
Done.

&gt; Also, please add test for out of bounds index (both positive and negative).
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573790</commentid>
    <comment_count>9</comment_count>
      <attachid>130814</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-03-08 06:12:22 -0800</bug_when>
    <thetext>Created attachment 130814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574187</commentid>
    <comment_count>10</comment_count>
      <attachid>130814</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-08 14:12:23 -0800</bug_when>
    <thetext>Comment on attachment 130814
Patch

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

Looks great.  Thanks.

&gt; Source/WebCore/Modules/speech/SpeechGrammarList.idl:29
&gt; +        IndexedGetter

Looks like you&apos;re missing a , after IndexedGetter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574766</commentid>
    <comment_count>11</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-03-09 02:52:10 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 130814 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130814&amp;action=review
&gt; 
&gt; Looks great.  Thanks.
&gt; 
&gt; &gt; Source/WebCore/Modules/speech/SpeechGrammarList.idl:29
&gt; &gt; +        IndexedGetter
&gt; 
&gt; Looks like you&apos;re missing a , after IndexedGetter
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574771</commentid>
    <comment_count>12</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-03-09 02:56:52 -0800</bug_when>
    <thetext>Committed r110281: &lt;http://trac.webkit.org/changeset/110281&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130378</attachid>
            <date>2012-03-06 07:21:33 -0800</date>
            <delta_ts>2012-03-07 03:22:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80417-20120306152131.patch</filename>
            <type>text/plain</type>
            <size>21251</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMxN2QzMTE2ZGQyNjk5
NzA1NTJjMmRmZGNlOWRiY2U0Zjk2MTVkZi4uYTIwNjhmNWI1NDU3ZTNhZGMzNGY1MGEwMmY5MzMx
NzBlOWY3YWE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAzLTA2ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIEphdmFTY3Jp
cHQgQVBJOiBhZGQgU3BlZWNoR3JhbW1hciBhbmQgU3BlZWNoR3JhbW1hckxpc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFNwZWVjaEdy
YW1tYXIgYW5kIFNwZWVjaEdyYW1tYXJMaXN0LgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNo
L3NjcmlwdGVkL3NwZWVjaGdyYW1tYXItYmFzaWNzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMv
c3BlZWNoL0RPTVdpbmRvd1NwZWVjaC5pZGw6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoR3JhbW1hci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaEdyYW1tYXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyOjpT
cGVlY2hHcmFtbWFyKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNwZWVjaEdyYW1tYXIpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoR3JhbW1hcjo6c3JjKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaEdy
YW1tYXI6OnNldFNyYyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyOjp3ZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoR3JhbW1hcjo6c2V0V2VpZ2h0KToKKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoR3JhbW1hckxpc3Q6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoR3JhbW1h
ckxpc3Q6OmFkZEZyb21VcmkpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoR3JhbW1hckxpc3Q6
OmFkZEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoR3JhbW1hckxpc3Q6OlNw
ZWVjaEdyYW1tYXJMaXN0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFy
TGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTcGVlY2hHcmFtbWFyTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyTGlzdDo6bGVuZ3RoKToKKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5pZGw6CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorCiAyMDEyLTAzLTA2ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFsZXhhbmRlci5mYWVy
b3lAbm9raWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBUaWxlVGltZXIgdHlwZWRlZiBmcm9tIHRo
ZSB0aWxlZCBiYWNraW5nIHN0b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9ET01XaW5kb3dTcGVlY2guaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvRE9NV2luZG93U3BlZWNoLmlkbAppbmRleCBkYmZkOWE3NzVlZjE0MzhhN2FlYjU1YzVlZjkx
NTI5YjZiMzgxZWJjLi42ZDMwYmM2YjVkMDg2YzhlYzYwZTc1YTMwZWZjMmMxMzkxYzI4ZjZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2gu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaC5p
ZGwKQEAgLTI5LDUgKzI5LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFN1cHBsZW1lbnRh
bD1ET01XaW5kb3cKICAgICBdIERPTVdpbmRvd1NwZWVjaCB7CiAgICAgICAgIGF0dHJpYnV0ZSBb
VjhFbmFibGVkQXRSdW50aW1lXSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yQ29uc3RydWN0b3Igd2Vi
a2l0U3BlZWNoUmVjb2duaXRpb25FcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRB
dFJ1bnRpbWVdIFNwZWVjaEdyYW1tYXJDb25zdHJ1Y3RvciB3ZWJraXRTcGVlY2hHcmFtbWFyOwor
ICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gU3BlZWNoR3JhbW1hckxpc3RD
b25zdHJ1Y3RvciB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdDsKICAgICB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NzhhMzVlMzNkMjliZGVjOTg1NTUxOTUxYzEyMmM3ZGYyYjA5ZjA4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShT
Q1JJUFRFRF9TUEVFQ0gpCisKKyNpbmNsdWRlICJTcGVlY2hHcmFtbWFyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVlY2hHcmFtbWFyOjpj
cmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlZWNoR3JhbW1hcik7Cit9CisK
K1Bhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgc3JjLCBkb3VibGUgd2VpZ2h0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3Bl
ZWNoR3JhbW1hcihzcmMsIHdlaWdodCkpOworfQorCitTcGVlY2hHcmFtbWFyOjpTcGVlY2hHcmFt
bWFyKCkKKyAgICA6IG1fd2VpZ2h0KDEuMCkKK3sKK30KKworU3BlZWNoR3JhbW1hcjo6U3BlZWNo
R3JhbW1hcihjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIHdlaWdodCkKKyAgICA6IG1fc3JjKHNy
YykKKyAgICAsIG1fd2VpZ2h0KHdlaWdodCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2M1YjAxMDQxNGUy
ZTc1ZTQwMzRkMjI2ZjYyYzAzMTE1MzdlNmNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNwZWVjaEdyYW1tYXJfaAorI2RlZmluZSBTcGVlY2hHcmFtbWFyX2gK
KworI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU3BlZWNoR3JhbW1hciA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaEdyYW1tYXI+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBjcmVhdGUo
KTsgLy8gRklYTUU6IFRoZSBzcGVjIGlzIG5vdCBjbGVhciBvbiB3aGF0IHRoZSBjb25zdHJ1Y3Rv
ciBzaG91bGQgbG9vayBsaWtlLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXI+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIHdlaWdodCk7CisKKyAgICBTdHJpbmcg
c3JjKCkgeyByZXR1cm4gbV9zcmM7IH0KKyAgICB2b2lkIHNldFNyYyhjb25zdCBTdHJpbmcmIHNy
YykgeyBtX3NyYyA9IHNyYzsgfQorCisgICAgZG91YmxlIHdlaWdodCgpIHsgcmV0dXJuIG1fd2Vp
Z2h0OyB9CisgICAgdm9pZCBzZXRXZWlnaHQoZG91YmxlIHdlaWdodCkgeyBtX3dlaWdodCA9IHdl
aWdodDsgfQorCitwcml2YXRlOgorICAgIFNwZWVjaEdyYW1tYXIoKTsKKyAgICBTcGVlY2hHcmFt
bWFyKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgd2VpZ2h0KTsKKworICAgIFN0cmluZyBtX3Ny
YzsKKyAgICBkb3VibGUgbV93ZWlnaHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQorCisjZW5kaWYgLy8gU3BlZWNoR3Jh
bW1hcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hH
cmFtbWFyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMzNDA1ZWI5NTg4N2QxNmFiZjU2MTkzMzdmNTA1NzgxNDExZDE5NzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hH
cmFtbWFyLmlkbApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworICAg
IGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVNDUklQVEVEX1NQRUVDSCwKKyAgICAg
ICAgQ29uc3RydWN0b3IKKyAgICBdIFNwZWVjaEdyYW1tYXIgeworICAgICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHNyYzsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0IHdlaWdodDsKKyAgICB9Owor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1h
ckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxp
c3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFlYzEzZmI4YWMwZjBjMjI5ZjVjYjFmYjQyZGJiNjdhMjcxNTI4
MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hHcmFtbWFyTGlzdC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCisKKyNpbmNsdWRlICJTcGVl
Y2hHcmFtbWFyTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U3Bl
ZWNoR3JhbW1hckxpc3Q+IFNwZWVjaEdyYW1tYXJMaXN0OjpjcmVhdGUoKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU3BlZWNoR3JhbW1hckxpc3QpOworfQorCitQYXNzUmVmUHRyPFNwZWVj
aEdyYW1tYXI+IFNwZWVjaEdyYW1tYXJMaXN0OjppdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpIGNv
bnN0Cit7CisgICAgaWYgKGluZGV4ID49IG1fZ3JhbW1hcnMuc2l6ZSgpKQorICAgICAgICByZXR1
cm4gMDsgLy8gRklYTUU6IFRocm93IGV4Y2VwdGlvbj8KKworICAgIHJldHVybiBtX2dyYW1tYXJz
W2luZGV4XTsKK30KKwordm9pZCBTcGVlY2hHcmFtbWFyTGlzdDo6YWRkRnJvbVVyaShjb25zdCBT
dHJpbmcmIHNyYywgZG91YmxlIHdlaWdodCkKK3sKKyAgICBtX2dyYW1tYXJzLmFwcGVuZChTcGVl
Y2hHcmFtbWFyOjpjcmVhdGUoc3JjLCB3ZWlnaHQpKTsKK30KKwordm9pZCBTcGVlY2hHcmFtbWFy
TGlzdDo6YWRkRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlIHdlaWdodCkK
K3sKKyAgICAvLyBGSVhNRTogSXMgdGhpcyB3aGF0IHdlJ3JlIHN1cHBvc2VkIHRvIGRvPworICAg
IG1fZ3JhbW1hcnMuYXBwZW5kKFNwZWVjaEdyYW1tYXI6OmNyZWF0ZShTdHJpbmcoImRhdGE6Iikg
KyBzdHJpbmcsIHdlaWdodCkpOworfQorCitTcGVlY2hHcmFtbWFyTGlzdDo6U3BlZWNoR3JhbW1h
ckxpc3QoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoU0NSSVBURURfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaEdyYW1tYXJMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMwZjhjMWM1Yjg2ZDljNWIwODE3MjZm
MzIwMWUwMzFkZmJmOGFlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05F
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgU3BlZWNoR3JhbW1hckxpc3RfaAorI2RlZmluZSBTcGVlY2hHcmFtbWFyTGlzdF9o
CisKKyNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQorCisjaW5jbHVkZSAiU3BlZWNoR3JhbW1h
ci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNwZWVjaEdyYW1tYXJMaXN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8U3BlZWNoR3JhbW1hckxpc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyTGlzdD4gY3JlYXRlKCk7CisKKyAgICB1bnNpZ25lZCBs
b25nIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hcnMuc2l6ZSgpOyB9CisgICAgUGFz
c1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBpdGVtKHVuc2lnbmVkIGxvbmcpIGNvbnN0OworCisgICAg
dm9pZCBhZGRGcm9tVXJpKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgd2VpZ2h0ID0gMS4wKTsK
KyAgICB2b2lkIGFkZEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiwgZG91YmxlIHdlaWdodCA9IDEu
MCk7CisKK3ByaXZhdGU6CisgICAgU3BlZWNoR3JhbW1hckxpc3QoKTsKKworICAgIFZlY3RvcjxS
ZWZQdHI8U3BlZWNoR3JhbW1hcj4gPiBtX2dyYW1tYXJzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKKworI2VuZGlmIC8v
IFNwZWVjaEdyYW1tYXJMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTU1MWNlNjRiODFmNGQ2YjEy
NmU3YjUyZmY4ZWZkNTNmYzZhOTkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9u
YWw9U0NSSVBURURfU1BFRUNILAorICAgICAgICBDb25zdHJ1Y3RvcgorICAgIF0gU3BlZWNoR3Jh
bW1hckxpc3QgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CisgICAgICAgIGdldHRlciBTcGVlY2hHcmFtbWFyIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBp
bmRleCk7CisgICAgICAgIHZvaWQgYWRkRnJvbVVyaShpbiBET01TdHJpbmcgc3JjLCBpbiBbT3B0
aW9uYWxdIGZsb2F0IHdlaWdodCk7CisgICAgICAgIHZvaWQgYWRkRnJvbVN0cmluZyhpbiBET01T
dHJpbmcgc3RyaW5nLCBpbiBbT3B0aW9uYWxdIGZsb2F0IHdlaWdodCk7CisgICAgfTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBkZjc4Y2U5ODRkYWY1Yjc2ZDcyNzJmYzhkOGI2ZWUxY2MxNjVmODUy
Li5lZDRkMjQzNTY3ZmRkOWFjNDk5ZDQ3NDJmNjUyZGY0YzI4NTQwZGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC03NjQsNiArNzY0LDggQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9T
aWduYWxpbmdDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL0RPTVdp
bmRvd1NwZWVjaC5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1t
YXIuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5p
ZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3Iu
aWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1NRTERhdGFi
YXNlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5pZGwn
LApAQCAtMTQwNCw2ICsxNDA2LDEwIEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaEdyYW1tYXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFt
bWFyLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNw
cCcsCisgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5jcHAnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcCcsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNDI1ZGQ5MTNjZGM1M2ViNDc1OTM3ZjhjNmNlZmUyZjAyYTdmODcxMi4uNmU4OWI1YzY5
NmNhMGFiZDMzNGUxOTExYmUzYmJiMjYxOWE3MzZjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTAzLTA2ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
U3BlZWNoIEphdmFTY3JpcHQgQVBJOiBhZGQgU3BlZWNoR3JhbW1hciBhbmQgU3BlZWNoR3JhbW1h
ckxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
NDE3CisKKyAgICAgICAgQWRkIGEgdGVzdCBmb3IgU3BlZWNoR3JhbW1hciBhbmQgU3BlZWNoR3Jh
bW1hckxpc3QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3BlZWNoL3NjcmlwdGVkL3NwZWVjaGdyYW1tYXIt
YmFzaWNzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAzLTA2ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rp
dmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByZXBhcmUgZm9y
IGV4dHJhY3RpbmcgU2NyaXB0TWFwcGluZyBpbXBsZW1lbnRhdGlvbiBmcm9tIERlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3Jp
cHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWFjMjFkZDFlODE0Y2Y2NjhkZTBlMTU4NjAyMDExZmEyM2ViMTk0MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL3NwZWVjaGdyYW1tYXIt
YmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0aGUgYmFzaWNzIG9m
IFNwZWVjaEdyYW1tYXIgYW5kIFNwZWVjaEdyYW1tYXJMaXN0CisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTICd3ZWJraXRTcGVlY2hHcmFtbWFyJyBpbiB3aW5kb3cgaXMgdHJ1
ZQorUEFTUyB3ZWJraXRTcGVlY2hHcmFtbWFyID09IG51bGwgaXMgZmFsc2UKK1BBU1MgJ3dlYmtp
dFNwZWVjaEdyYW1tYXJMaXN0JyBpbiB3aW5kb3cgaXMgdHJ1ZQorUEFTUyB3ZWJraXRTcGVlY2hH
cmFtbWFyTGlzdCA9PSBudWxsIGlzIGZhbHNlCitQQVNTIGcgPT0gbnVsbCBpcyBmYWxzZQorUEFT
UyBnLndlaWdodCBpcyAxLjAKK1BBU1MgZy5zcmMgaXMgJycKK1BBU1MgZ3MgPT0gbnVsbCBpcyBm
YWxzZQorUEFTUyBncy5sZW5ndGggaXMgMAorUEFTUyBncy5pdGVtKDApID09IG51bGwgaXMgdHJ1
ZQorUEFTUyBncy5sZW5ndGggaXMgMQorUEFTUyBncy5sZW5ndGggaXMgMgorUEFTUyBncy5pdGVt
KDApLnNyYyBpcyAnaHR0cDovL2V4YW1wbGUudGxkL2dyYW1tYXInCitQQVNTIGdzLml0ZW0oMCku
d2VpZ2h0IGlzIDIKK1BBU1MgZ3MuaXRlbSgxKS5zcmMgaXMgJ2RhdGE6Zm9vJworUEFTUyBncy5p
dGVtKDEpLndlaWdodCBpcyA0MgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3Njcmlw
dGVkL3NwZWVjaGdyYW1tYXItYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9z
Y3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NWRjMjEyNGE4
NjVmNTYwYTBiYjM2M2NlOGU2YmY5ZmM2YzE3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy5odG1sCkBAIC0w
LDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoZSBiYXNpY3Mgb2YgU3BlZWNoR3Jh
bW1hciBhbmQgU3BlZWNoR3JhbW1hckxpc3QnKTsKKworZnVuY3Rpb24gcnVuKCkgeworICAgIC8v
IENoZWNrIGF2YWlsYWJpbGl0eSBvZiBjb25zdHJ1Y3RvcnMuCisgICAgc2hvdWxkQmVUcnVlKCIn
d2Via2l0U3BlZWNoR3JhbW1hcicgaW4gd2luZG93Iik7CisgICAgc2hvdWxkQmVGYWxzZSgid2Vi
a2l0U3BlZWNoR3JhbW1hciA9PSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCInd2Via2l0U3Bl
ZWNoR3JhbW1hckxpc3QnIGluIHdpbmRvdyIpOworICAgIHNob3VsZEJlRmFsc2UoIndlYmtpdFNw
ZWVjaEdyYW1tYXJMaXN0ID09IG51bGwiKTsKKworICAgIC8vIFRlc3QgY3JlYXRpbmcgYSBncmFt
bWFyIGV4cGxpY2l0bHkuCisgICAgd2luZG93LmcgPSBuZXcgd2Via2l0U3BlZWNoR3JhbW1hcigp
OworICAgIHNob3VsZEJlRmFsc2UoImcgPT0gbnVsbCIpOworICAgIHNob3VsZEJlKCJnLndlaWdo
dCIsICIxLjAiKTsKKyAgICBzaG91bGRCZSgiZy5zcmMiLCAiJyciKTsKKworICAgIC8vIFRlc3Qg
Y3JlYXRpbmcgYSBncmFtbWFyIGxpc3QuCisgICAgd2luZG93LmdzID0gbmV3IHdlYmtpdFNwZWVj
aEdyYW1tYXJMaXN0KCk7CisgICAgc2hvdWxkQmVGYWxzZSgiZ3MgPT0gbnVsbCIpOworICAgIHNo
b3VsZEJlKCJncy5sZW5ndGgiLCAiMCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ3MuaXRlbSgwKSA9
PSBudWxsIik7IC8vIEZJWE1FOiBTaG91bGQgcHJvYmFibHkgdGhyb3c/CisgICAgZ3MuYWRkRnJv
bVVyaSgiaHR0cDovL2V4YW1wbGUudGxkL2dyYW1tYXIiLCAyKTsKKyAgICBzaG91bGRCZSgiZ3Mu
bGVuZ3RoIiwgIjEiKTsKKyAgICBncy5hZGRGcm9tU3RyaW5nKCJmb28iLCA0Mik7CisgICAgc2hv
dWxkQmUoImdzLmxlbmd0aCIsICIyIik7CisgICAgc2hvdWxkQmUoImdzLml0ZW0oMCkuc3JjIiwg
IidodHRwOi8vZXhhbXBsZS50bGQvZ3JhbW1hciciKTsKKyAgICBzaG91bGRCZSgiZ3MuaXRlbSgw
KS53ZWlnaHQiLCAiMiIpOworICAgIHNob3VsZEJlKCJncy5pdGVtKDEpLnNyYyIsICInZGF0YTpm
b28nIik7CisgICAgc2hvdWxkQmUoImdzLml0ZW0oMSkud2VpZ2h0IiwgIjQyIik7CisKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130586</attachid>
            <date>2012-03-07 03:22:28 -0800</date>
            <delta_ts>2012-03-07 06:32:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80417-20120307112226.patch</filename>
            <type>text/plain</type>
            <size>21329</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5ZjEwZTUzMTMwNjQ1
NDdkMmUwNTY5YTg3MmI4NjU0OGI5YjRkMS4uZDU0OGY2YjMxMzgyYThmMDdjNmFkYzY3Nzc0M2Mz
OGIwM2QzOGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAzLTA2ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIEphdmFTY3Jp
cHQgQVBJOiBhZGQgU3BlZWNoR3JhbW1hciBhbmQgU3BlZWNoR3JhbW1hckxpc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFNwZWVjaEdy
YW1tYXIgYW5kIFNwZWVjaEdyYW1tYXJMaXN0LgorICAgICAgICAoU3BlYzogaHR0cDovL3NwZWVj
aC1qYXZhc2NyaXB0LWFwaS1zcGVjLmdvb2dsZWNvZGUuY29tL2dpdC9zcGVlY2hhcGkuaHRtbCkK
KworICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2lj
cy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2guaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoR3JhbW1hcjo6U3BlZWNoR3JhbW1hcik6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTcGVlY2hHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaEdyYW1tYXI6OnNyYyk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyOjpzZXRTcmMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoR3JhbW1hcjo6d2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaEdy
YW1tYXI6OnNldFdlaWdodCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1h
ci5pZGw6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyTGlzdDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjppdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tVXJpKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjpTcGVlY2hHcmFtbWFyTGlzdCk6CisgICAgICAgICog
TW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoU3BlZWNoR3JhbW1hckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoR3Jh
bW1hckxpc3Q6Omxlbmd0aCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1h
ckxpc3QuaWRsOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKwogMjAxMi0wMy0wNyAgS2VuaWNo
aSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYlNvY2tldF0g
U2hvdWxkIHJhaXNlIFNZTlRBWF9FUlIgd2hlbiBtZXNzYWdlIGNvbnRhaW5zIHVucGFpcmVkIHN1
cnJvZ2F0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdp
bmRvd1NwZWVjaC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dT
cGVlY2guaWRsCmluZGV4IGRiZmQ5YTc3NWVmMTQzOGE3YWViNTVjNWVmOTE1MjliNmIzODFlYmMu
LjZkMzBiYzZiNWQwODZjOGVjNjBlNzVhMzBlZmMyYzEzOTFjMjhmNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoLmlkbApAQCAtMjksNSAr
MjksNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgU3VwcGxlbWVudGFsPURPTVdpbmRvdwog
ICAgIF0gRE9NV2luZG93U3BlZWNoIHsKICAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWVdIFNwZWVjaFJlY29nbml0aW9uRXJyb3JDb25zdHJ1Y3RvciB3ZWJraXRTcGVlY2hSZWNv
Z25pdGlvbkVycm9yOworICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gU3Bl
ZWNoR3JhbW1hckNvbnN0cnVjdG9yIHdlYmtpdFNwZWVjaEdyYW1tYXI7CisgICAgICAgIGF0dHJp
YnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBTcGVlY2hHcmFtbWFyTGlzdENvbnN0cnVjdG9yIHdl
YmtpdFNwZWVjaEdyYW1tYXJMaXN0OwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3OGEzNWUzM2QyOWJk
ZWM5ODU1NTE5NTFjMTIyYzdkZjJiMDlmMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVD
SCkKKworI2luY2x1ZGUgIlNwZWVjaEdyYW1tYXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXI+IFNwZWVjaEdyYW1tYXI6OmNyZWF0ZSgpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hHcmFtbWFyKTsKK30KKworUGFzc1JlZlB0cjxT
cGVlY2hHcmFtbWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBzcmMsIGRv
dWJsZSB3ZWlnaHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hHcmFtbWFyKHNy
Yywgd2VpZ2h0KSk7Cit9CisKK1NwZWVjaEdyYW1tYXI6OlNwZWVjaEdyYW1tYXIoKQorICAgIDog
bV93ZWlnaHQoMS4wKQoreworfQorCitTcGVlY2hHcmFtbWFyOjpTcGVlY2hHcmFtbWFyKGNvbnN0
IFN0cmluZyYgc3JjLCBkb3VibGUgd2VpZ2h0KQorICAgIDogbV9zcmMoc3JjKQorICAgICwgbV93
ZWlnaHQod2VpZ2h0KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoR3JhbW1hci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3YzViMDEwNDE0ZTJlNzVlNDAzNGQyMjZm
NjJjMDMxMTUzN2U2Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hHcmFtbWFyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU3BlZWNoR3JhbW1hcl9oCisjZGVmaW5lIFNwZWVjaEdyYW1tYXJfaAorCisjaWYgRU5BQkxF
KFNDUklQVEVEX1NQRUVDSCkKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTcGVl
Y2hHcmFtbWFyIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoR3JhbW1hcj4geworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXI+IGNyZWF0ZSgpOyAvLyBGSVhNRTog
VGhlIHNwZWMgaXMgbm90IGNsZWFyIG9uIHdoYXQgdGhlIGNvbnN0cnVjdG9yIHNob3VsZCBsb29r
IGxpa2UuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgc3JjLCBkb3VibGUgd2VpZ2h0KTsKKworICAgIFN0cmluZyBzcmMoKSB7IHJldHVy
biBtX3NyYzsgfQorICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYgc3JjKSB7IG1fc3JjID0g
c3JjOyB9CisKKyAgICBkb3VibGUgd2VpZ2h0KCkgeyByZXR1cm4gbV93ZWlnaHQ7IH0KKyAgICB2
b2lkIHNldFdlaWdodChkb3VibGUgd2VpZ2h0KSB7IG1fd2VpZ2h0ID0gd2VpZ2h0OyB9CisKK3By
aXZhdGU6CisgICAgU3BlZWNoR3JhbW1hcigpOworICAgIFNwZWVjaEdyYW1tYXIoY29uc3QgU3Ry
aW5nJiBzcmMsIGRvdWJsZSB3ZWlnaHQpOworCisgICAgU3RyaW5nIG1fc3JjOworICAgIGRvdWJs
ZSBtX3dlaWdodDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTQ1JJUFRFRF9TUEVFQ0gpCisKKyNlbmRpZiAvLyBTcGVlY2hHcmFtbWFyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzM0MDVlYjk1ODg3ZDE2YWJmNTYxOTMzN2Y1MDU3ODE0MTFkMTk3MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaWRsCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9U0NSSVBURURfU1BFRUNILAorICAgICAgICBDb25zdHJ1Y3Rv
cgorICAgIF0gU3BlZWNoR3JhbW1hciB7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3Jj
OworICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgd2VpZ2h0OworICAgIH07Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWVjMTNmYjhhYzBmMGMyMjlmNWNiMWZiNDJkYmI2N2EyNzE1MjgwOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0
LmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKKworI2luY2x1ZGUgIlNwZWVjaEdyYW1tYXJMaXN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyTGlz
dD4gU3BlZWNoR3JhbW1hckxpc3Q6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTcGVlY2hHcmFtbWFyTGlzdCk7Cit9CisKK1Bhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gU3Bl
ZWNoR3JhbW1hckxpc3Q6Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkgY29uc3QKK3sKKyAgICBp
ZiAoaW5kZXggPj0gbV9ncmFtbWFycy5zaXplKCkpCisgICAgICAgIHJldHVybiAwOyAvLyBGSVhN
RTogVGhyb3cgZXhjZXB0aW9uPworCisgICAgcmV0dXJuIG1fZ3JhbW1hcnNbaW5kZXhdOworfQor
Cit2b2lkIFNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tVXJpKGNvbnN0IFN0cmluZyYgc3JjLCBk
b3VibGUgd2VpZ2h0KQoreworICAgIG1fZ3JhbW1hcnMuYXBwZW5kKFNwZWVjaEdyYW1tYXI6OmNy
ZWF0ZShzcmMsIHdlaWdodCkpOworfQorCit2b2lkIFNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBkb3VibGUgd2VpZ2h0KQoreworICAgIC8vIEZJ
WE1FOiBJcyB0aGlzIHdoYXQgd2UncmUgc3VwcG9zZWQgdG8gZG8/CisgICAgbV9ncmFtbWFycy5h
cHBlbmQoU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKFN0cmluZygiZGF0YToiKSArIHN0cmluZywgd2Vp
Z2h0KSk7Cit9CisKK1NwZWVjaEdyYW1tYXJMaXN0OjpTcGVlY2hHcmFtbWFyTGlzdCgpCit7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTQ1JJUFRFRF9T
UEVFQ0gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hH
cmFtbWFyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1h
ckxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MzBmOGMxYzViODZkOWM1YjA4MTcyNmYzMjAxZTAzMWRmYmY4
YWU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoR3JhbW1hckxpc3QuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTcGVl
Y2hHcmFtbWFyTGlzdF9oCisjZGVmaW5lIFNwZWVjaEdyYW1tYXJMaXN0X2gKKworI2lmIEVOQUJM
RShTQ1JJUFRFRF9TUEVFQ0gpCisKKyNpbmNsdWRlICJTcGVlY2hHcmFtbWFyLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU3BlZWNoR3JhbW1hckxpc3QgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTcGVlY2hHcmFtbWFyTGlzdD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNw
ZWVjaEdyYW1tYXJMaXN0PiBjcmVhdGUoKTsKKworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9ncmFtbWFycy5zaXplKCk7IH0KKyAgICBQYXNzUmVmUHRyPFNwZWVj
aEdyYW1tYXI+IGl0ZW0odW5zaWduZWQgbG9uZykgY29uc3Q7CisKKyAgICB2b2lkIGFkZEZyb21V
cmkoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSB3ZWlnaHQgPSAxLjApOworICAgIHZvaWQgYWRk
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBkb3VibGUgd2VpZ2h0ID0gMS4wKTsKKworcHJpdmF0
ZToKKyAgICBTcGVlY2hHcmFtbWFyTGlzdCgpOworCisgICAgVmVjdG9yPFJlZlB0cjxTcGVlY2hH
cmFtbWFyPiA+IG1fZ3JhbW1hcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQorCisjZW5kaWYgLy8gU3BlZWNoR3JhbW1h
ckxpc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
R3JhbW1hckxpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3Jh
bW1hckxpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1NTUxY2U2NGI4MWY0ZDZiMTI2ZTdiNTJmZjhlZmQ1
M2ZjNmE5OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hHcmFtbWFyTGlzdC5pZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVs
ZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1TQ1JJUFRFRF9T
UEVFQ0gsCisgICAgICAgIENvbnN0cnVjdG9yCisgICAgXSBTcGVlY2hHcmFtbWFyTGlzdCB7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICAgICAg
Z2V0dGVyIFNwZWVjaEdyYW1tYXIgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAg
ICAgdm9pZCBhZGRGcm9tVXJpKGluIERPTVN0cmluZyBzcmMsIGluIFtPcHRpb25hbF0gZmxvYXQg
d2VpZ2h0KTsKKyAgICAgICAgdm9pZCBhZGRGcm9tU3RyaW5nKGluIERPTVN0cmluZyBzdHJpbmcs
IGluIFtPcHRpb25hbF0gZmxvYXQgd2VpZ2h0KTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGRmNzhjZTk4NGRhZjViNzZkNzI3MmZjOGQ4YjZlZTFjYzE2NWY4NTIuLmVkNGQyNDM1Njdm
ZGQ5YWM0OTlkNDc0MmY2NTJkZjRjMjg1NDBkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTc2NCw2
ICs3NjQsOCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b24uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxi
YWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoLmlk
bCcsCisgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5pZGwnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmlkbCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5pZGwnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRE9NV2luZG93U1FMRGF0YWJhc2UuaWRsJywKICAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmlkbCcsCkBAIC0xNDA0LDYg
KzE0MDYsMTAgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNv
bnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5j
cHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmNwcCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwJywKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNmY2OTk4
NWY2MjA5N2EwYzY2MGNiYzc4ODQ3OTQyMTQzZTc0NDBlLi5hYzY0ZTIyYzEwYTAxMTA2NzA1M2Iz
MTc5NTkwNWJjZGFjMjEwNTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDMtMDYgIEhh
bnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVlY2ggSmF2YVNj
cmlwdCBBUEk6IGFkZCBTcGVlY2hHcmFtbWFyIGFuZCBTcGVlY2hHcmFtbWFyTGlzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciBT
cGVlY2hHcmFtbWFyIGFuZCBTcGVlY2hHcmFtbWFyTGlzdC4KKworICAgICAgICAqIGZhc3Qvc3Bl
ZWNoL3NjcmlwdGVkL3NwZWVjaGdyYW1tYXItYmFzaWNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNoZ3JhbW1hci1iYXNpY3MuaHRtbDog
QWRkZWQuCisKIDIwMTItMDMtMDcgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtXZWJTb2NrZXRdIFNob3VsZCByYWlzZSBTWU5UQVhfRVJSIHdoZW4g
bWVzc2FnZSBjb250YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2lj
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFjMjFkZDFlODE0Y2Y2NjhkZTBlMTU4NjAyMDEx
ZmEyM2ViMTk0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL3Nj
cmlwdGVkL3NwZWVjaGdyYW1tYXItYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBA
CitUZXN0cyB0aGUgYmFzaWNzIG9mIFNwZWVjaEdyYW1tYXIgYW5kIFNwZWVjaEdyYW1tYXJMaXN0
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICd3ZWJraXRTcGVlY2hHcmFt
bWFyJyBpbiB3aW5kb3cgaXMgdHJ1ZQorUEFTUyB3ZWJraXRTcGVlY2hHcmFtbWFyID09IG51bGwg
aXMgZmFsc2UKK1BBU1MgJ3dlYmtpdFNwZWVjaEdyYW1tYXJMaXN0JyBpbiB3aW5kb3cgaXMgdHJ1
ZQorUEFTUyB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdCA9PSBudWxsIGlzIGZhbHNlCitQQVNTIGcg
PT0gbnVsbCBpcyBmYWxzZQorUEFTUyBnLndlaWdodCBpcyAxLjAKK1BBU1MgZy5zcmMgaXMgJycK
K1BBU1MgZ3MgPT0gbnVsbCBpcyBmYWxzZQorUEFTUyBncy5sZW5ndGggaXMgMAorUEFTUyBncy5p
dGVtKDApID09IG51bGwgaXMgdHJ1ZQorUEFTUyBncy5sZW5ndGggaXMgMQorUEFTUyBncy5sZW5n
dGggaXMgMgorUEFTUyBncy5pdGVtKDApLnNyYyBpcyAnaHR0cDovL2V4YW1wbGUudGxkL2dyYW1t
YXInCitQQVNTIGdzLml0ZW0oMCkud2VpZ2h0IGlzIDIKK1BBU1MgZ3MuaXRlbSgxKS5zcmMgaXMg
J2RhdGE6Zm9vJworUEFTUyBncy5pdGVtKDEpLndlaWdodCBpcyA0MgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNoL3NjcmlwdGVkL3NwZWVjaGdyYW1tYXItYmFzaWNzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk5NWRjMjEyNGE4NjVmNTYwYTBiYjM2M2NlOGU2YmY5ZmM2YzE3ZDAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFt
bWFyLWJhc2ljcy5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRo
ZSBiYXNpY3Mgb2YgU3BlZWNoR3JhbW1hciBhbmQgU3BlZWNoR3JhbW1hckxpc3QnKTsKKworZnVu
Y3Rpb24gcnVuKCkgeworICAgIC8vIENoZWNrIGF2YWlsYWJpbGl0eSBvZiBjb25zdHJ1Y3RvcnMu
CisgICAgc2hvdWxkQmVUcnVlKCInd2Via2l0U3BlZWNoR3JhbW1hcicgaW4gd2luZG93Iik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgid2Via2l0U3BlZWNoR3JhbW1hciA9PSBudWxsIik7CisgICAgc2hv
dWxkQmVUcnVlKCInd2Via2l0U3BlZWNoR3JhbW1hckxpc3QnIGluIHdpbmRvdyIpOworICAgIHNo
b3VsZEJlRmFsc2UoIndlYmtpdFNwZWVjaEdyYW1tYXJMaXN0ID09IG51bGwiKTsKKworICAgIC8v
IFRlc3QgY3JlYXRpbmcgYSBncmFtbWFyIGV4cGxpY2l0bHkuCisgICAgd2luZG93LmcgPSBuZXcg
d2Via2l0U3BlZWNoR3JhbW1hcigpOworICAgIHNob3VsZEJlRmFsc2UoImcgPT0gbnVsbCIpOwor
ICAgIHNob3VsZEJlKCJnLndlaWdodCIsICIxLjAiKTsKKyAgICBzaG91bGRCZSgiZy5zcmMiLCAi
JyciKTsKKworICAgIC8vIFRlc3QgY3JlYXRpbmcgYSBncmFtbWFyIGxpc3QuCisgICAgd2luZG93
LmdzID0gbmV3IHdlYmtpdFNwZWVjaEdyYW1tYXJMaXN0KCk7CisgICAgc2hvdWxkQmVGYWxzZSgi
Z3MgPT0gbnVsbCIpOworICAgIHNob3VsZEJlKCJncy5sZW5ndGgiLCAiMCIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiZ3MuaXRlbSgwKSA9PSBudWxsIik7IC8vIEZJWE1FOiBTaG91bGQgcHJvYmFibHkg
dGhyb3c/CisgICAgZ3MuYWRkRnJvbVVyaSgiaHR0cDovL2V4YW1wbGUudGxkL2dyYW1tYXIiLCAy
KTsKKyAgICBzaG91bGRCZSgiZ3MubGVuZ3RoIiwgIjEiKTsKKyAgICBncy5hZGRGcm9tU3RyaW5n
KCJmb28iLCA0Mik7CisgICAgc2hvdWxkQmUoImdzLmxlbmd0aCIsICIyIik7CisgICAgc2hvdWxk
QmUoImdzLml0ZW0oMCkuc3JjIiwgIidodHRwOi8vZXhhbXBsZS50bGQvZ3JhbW1hciciKTsKKyAg
ICBzaG91bGRCZSgiZ3MuaXRlbSgwKS53ZWlnaHQiLCAiMiIpOworICAgIHNob3VsZEJlKCJncy5p
dGVtKDEpLnNyYyIsICInZGF0YTpmb28nIik7CisgICAgc2hvdWxkQmUoImdzLml0ZW0oMSkud2Vp
Z2h0IiwgIjQyIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93Lm9ubG9hZCA9
IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130613</attachid>
            <date>2012-03-07 06:32:19 -0800</date>
            <delta_ts>2012-03-08 06:12:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80417-20120307143217.patch</filename>
            <type>text/plain</type>
            <size>21399</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5ZjEwZTUzMTMwNjQ1
NDdkMmUwNTY5YTg3MmI4NjU0OGI5YjRkMS4uZDU0OGY2YjMxMzgyYThmMDdjNmFkYzY3Nzc0M2Mz
OGIwM2QzOGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAzLTA2ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIEphdmFTY3Jp
cHQgQVBJOiBhZGQgU3BlZWNoR3JhbW1hciBhbmQgU3BlZWNoR3JhbW1hckxpc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFNwZWVjaEdy
YW1tYXIgYW5kIFNwZWVjaEdyYW1tYXJMaXN0LgorICAgICAgICAoU3BlYzogaHR0cDovL3NwZWVj
aC1qYXZhc2NyaXB0LWFwaS1zcGVjLmdvb2dsZWNvZGUuY29tL2dpdC9zcGVlY2hhcGkuaHRtbCkK
KworICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2lj
cy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2guaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoR3JhbW1hcjo6U3BlZWNoR3JhbW1hcik6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTcGVlY2hHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaEdyYW1tYXI6OnNyYyk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyOjpzZXRTcmMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoR3JhbW1hcjo6d2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaEdy
YW1tYXI6OnNldFdlaWdodCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1h
ci5pZGw6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyTGlzdDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjppdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tVXJpKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjpTcGVlY2hHcmFtbWFyTGlzdCk6CisgICAgICAgICog
TW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoU3BlZWNoR3JhbW1hckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoR3Jh
bW1hckxpc3Q6Omxlbmd0aCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1h
ckxpc3QuaWRsOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKwogMjAxMi0wMy0wNyAgS2VuaWNo
aSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYlNvY2tldF0g
U2hvdWxkIHJhaXNlIFNZTlRBWF9FUlIgd2hlbiBtZXNzYWdlIGNvbnRhaW5zIHVucGFpcmVkIHN1
cnJvZ2F0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdp
bmRvd1NwZWVjaC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dT
cGVlY2guaWRsCmluZGV4IGRiZmQ5YTc3NWVmMTQzOGE3YWViNTVjNWVmOTE1MjliNmIzODFlYmMu
LjZkMzBiYzZiNWQwODZjOGVjNjBlNzVhMzBlZmMyYzEzOTFjMjhmNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoLmlkbApAQCAtMjksNSAr
MjksNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgU3VwcGxlbWVudGFsPURPTVdpbmRvdwog
ICAgIF0gRE9NV2luZG93U3BlZWNoIHsKICAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWVdIFNwZWVjaFJlY29nbml0aW9uRXJyb3JDb25zdHJ1Y3RvciB3ZWJraXRTcGVlY2hSZWNv
Z25pdGlvbkVycm9yOworICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gU3Bl
ZWNoR3JhbW1hckNvbnN0cnVjdG9yIHdlYmtpdFNwZWVjaEdyYW1tYXI7CisgICAgICAgIGF0dHJp
YnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBTcGVlY2hHcmFtbWFyTGlzdENvbnN0cnVjdG9yIHdl
YmtpdFNwZWVjaEdyYW1tYXJMaXN0OwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYThlYmJiZDFmM2I3
NGEyYzkwY2JiYTdlNTkxNDU1N2U2YzI0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVD
SCkKKworI2luY2x1ZGUgIlNwZWVjaEdyYW1tYXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXI+IFNwZWVjaEdyYW1tYXI6OmNyZWF0ZSgpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hHcmFtbWFyKTsKK30KKworUGFzc1JlZlB0cjxT
cGVlY2hHcmFtbWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUoY29uc3QgS1VSTCYgc3JjLCBkb3Vi
bGUgd2VpZ2h0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlZWNoR3JhbW1hcihzcmMs
IHdlaWdodCkpOworfQorCitTcGVlY2hHcmFtbWFyOjpTcGVlY2hHcmFtbWFyKCkKKyAgICA6IG1f
d2VpZ2h0KDEuMCkKK3sKK30KKworU3BlZWNoR3JhbW1hcjo6U3BlZWNoR3JhbW1hcihjb25zdCBL
VVJMJiBzcmMsIGRvdWJsZSB3ZWlnaHQpCisgICAgOiBtX3NyYyhzcmMpCisgICAgLCBtX3dlaWdo
dCh3ZWlnaHQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTQ1JJUFRFRF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hHcmFtbWFyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hHcmFtbWFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkwODFhZTdkNDgzZmQzZmI4ZmE1MjQwNmRmNDI4
Yjg4Yjc0ZjFlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaEdyYW1tYXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBT
cGVlY2hHcmFtbWFyX2gKKyNkZWZpbmUgU3BlZWNoR3JhbW1hcl9oCisKKyNpZiBFTkFCTEUoU0NS
SVBURURfU1BFRUNIKQorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBTcGVlY2hHcmFtbWFyIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoR3JhbW1h
cj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXI+IGNyZWF0
ZSgpOyAvLyBGSVhNRTogVGhlIHNwZWMgaXMgbm90IGNsZWFyIG9uIHdoYXQgdGhlIGNvbnN0cnVj
dG9yIHNob3VsZCBsb29rIGxpa2UuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoR3JhbW1h
cj4gY3JlYXRlKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdlaWdodCk7CisKKyAgICBLVVJMIHNy
YygpIHsgcmV0dXJuIG1fc3JjOyB9CisgICAgdm9pZCBzZXRTcmMoY29uc3QgU3RyaW5nJiBzcmMp
IHsgbV9zcmMgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgc3JjKTsgfQorCisgICAgZG91YmxlIHdl
aWdodCgpIHsgcmV0dXJuIG1fd2VpZ2h0OyB9CisgICAgdm9pZCBzZXRXZWlnaHQoZG91YmxlIHdl
aWdodCkgeyBtX3dlaWdodCA9IHdlaWdodDsgfQorCitwcml2YXRlOgorICAgIFNwZWVjaEdyYW1t
YXIoKTsKKyAgICBTcGVlY2hHcmFtbWFyKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdlaWdodCk7
CisKKyAgICBLVVJMIG1fc3JjOworICAgIGRvdWJsZSBtX3dlaWdodDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCisKKyNl
bmRpZiAvLyBTcGVlY2hHcmFtbWFyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoR3JhbW1hci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQwZjQyZWFlNjYwZmYwZmViNDcwNDg5
MzQ1ZDNmODQ1MGE1YTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitt
b2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9U0NSSVBU
RURfU1BFRUNILAorICAgICAgICBDb25zdHJ1Y3RvcgorICAgIF0gU3BlZWNoR3JhbW1hciB7Cisg
ICAgICAgIGF0dHJpYnV0ZSBbVVJMXSBET01TdHJpbmcgc3JjOworICAgICAgICBhdHRyaWJ1dGUg
ZmxvYXQgd2VpZ2h0OworICAgIH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDYyZDY3YmQwNTQ3ZjQ3
N2M1OWVmNDllZDA0OGU2ODAxNGJlYWZlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNwcApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNDUklQVEVEX1NQ
RUVDSCkKKworI2luY2x1ZGUgIlNwZWVjaEdyYW1tYXJMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyTGlzdD4gU3BlZWNoR3JhbW1hckxpc3Q6
OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hHcmFtbWFyTGlzdCk7
Cit9CisKK1Bhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gU3BlZWNoR3JhbW1hckxpc3Q6Oml0ZW0o
dW5zaWduZWQgbG9uZyBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPj0gbV9ncmFtbWFy
cy5zaXplKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fZ3JhbW1hcnNbaW5k
ZXhdOworfQorCit2b2lkIFNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tVXJpKGNvbnN0IFN0cmlu
ZyYgc3JjLCBkb3VibGUgd2VpZ2h0KQoreworICAgIG1fZ3JhbW1hcnMuYXBwZW5kKFNwZWVjaEdy
YW1tYXI6OmNyZWF0ZShLVVJMKFBhcnNlZFVSTFN0cmluZywgc3JjKSwgd2VpZ2h0KSk7Cit9CisK
K3ZvaWQgU3BlZWNoR3JhbW1hckxpc3Q6OmFkZEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIGRvdWJsZSB3ZWlnaHQpCit7CisgICAgU3RyaW5nIHVybFN0cmluZyA9IFN0cmluZygiZGF0
YToiKSArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc3RyaW5nKTsKKyAgICBtX2dyYW1t
YXJzLmFwcGVuZChTcGVlY2hHcmFtbWFyOjpjcmVhdGUoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVy
bFN0cmluZyksIHdlaWdodCkpOworfQorCitTcGVlY2hHcmFtbWFyTGlzdDo6U3BlZWNoR3JhbW1h
ckxpc3QoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoU0NSSVBURURfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaEdyYW1tYXJMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMwZjhjMWM1Yjg2ZDljNWIwODE3MjZm
MzIwMWUwMzFkZmJmOGFlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05F
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgU3BlZWNoR3JhbW1hckxpc3RfaAorI2RlZmluZSBTcGVlY2hHcmFtbWFyTGlzdF9o
CisKKyNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQorCisjaW5jbHVkZSAiU3BlZWNoR3JhbW1h
ci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNwZWVjaEdyYW1tYXJMaXN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8U3BlZWNoR3JhbW1hckxpc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyTGlzdD4gY3JlYXRlKCk7CisKKyAgICB1bnNpZ25lZCBs
b25nIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hcnMuc2l6ZSgpOyB9CisgICAgUGFz
c1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBpdGVtKHVuc2lnbmVkIGxvbmcpIGNvbnN0OworCisgICAg
dm9pZCBhZGRGcm9tVXJpKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgd2VpZ2h0ID0gMS4wKTsK
KyAgICB2b2lkIGFkZEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiwgZG91YmxlIHdlaWdodCA9IDEu
MCk7CisKK3ByaXZhdGU6CisgICAgU3BlZWNoR3JhbW1hckxpc3QoKTsKKworICAgIFZlY3RvcjxS
ZWZQdHI8U3BlZWNoR3JhbW1hcj4gPiBtX2dyYW1tYXJzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKKworI2VuZGlmIC8v
IFNwZWVjaEdyYW1tYXJMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTU1MWNlNjRiODFmNGQ2YjEy
NmU3YjUyZmY4ZWZkNTNmYzZhOTkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9u
YWw9U0NSSVBURURfU1BFRUNILAorICAgICAgICBDb25zdHJ1Y3RvcgorICAgIF0gU3BlZWNoR3Jh
bW1hckxpc3QgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CisgICAgICAgIGdldHRlciBTcGVlY2hHcmFtbWFyIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBp
bmRleCk7CisgICAgICAgIHZvaWQgYWRkRnJvbVVyaShpbiBET01TdHJpbmcgc3JjLCBpbiBbT3B0
aW9uYWxdIGZsb2F0IHdlaWdodCk7CisgICAgICAgIHZvaWQgYWRkRnJvbVN0cmluZyhpbiBET01T
dHJpbmcgc3RyaW5nLCBpbiBbT3B0aW9uYWxdIGZsb2F0IHdlaWdodCk7CisgICAgfTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBkZjc4Y2U5ODRkYWY1Yjc2ZDcyNzJmYzhkOGI2ZWUxY2MxNjVmODUy
Li5lZDRkMjQzNTY3ZmRkOWFjNDk5ZDQ3NDJmNjUyZGY0YzI4NTQwZGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC03NjQsNiArNzY0LDggQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9T
aWduYWxpbmdDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL0RPTVdp
bmRvd1NwZWVjaC5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1t
YXIuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5p
ZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3Iu
aWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RPTVdpbmRvd1NRTERhdGFi
YXNlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5pZGwn
LApAQCAtMTQwNCw2ICsxNDA2LDEwIEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaEdyYW1tYXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFt
bWFyLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNw
cCcsCisgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5jcHAnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcCcsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMjZmNjk5ODVmNjIwOTdhMGM2NjBjYmM3ODg0Nzk0MjE0M2U3NDQwZS4uYWM2NGUyMmMx
MGEwMTEwNjcwNTNiMzE3OTU5MDViY2RhYzIxMDU5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTAzLTA2ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
U3BlZWNoIEphdmFTY3JpcHQgQVBJOiBhZGQgU3BlZWNoR3JhbW1hciBhbmQgU3BlZWNoR3JhbW1h
ckxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGEgdGVzdCBmb3IgU3BlZWNoR3JhbW1hciBhbmQgU3BlZWNoR3JhbW1hckxpc3QuCisKKyAgICAg
ICAgKiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3BlZWNoL3NjcmlwdGVkL3NwZWVjaGdyYW1tYXIt
YmFzaWNzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAzLTA3ICBLZW5pY2hpIElzaGliYXNoaSAgPGJh
c2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbV2ViU29ja2V0XSBTaG91bGQgcmFpc2UgU1lO
VEFYX0VSUiB3aGVuIG1lc3NhZ2UgY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNoZ3JhbW1hci1iYXNp
Y3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNo
Z3JhbW1hci1iYXNpY3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhYzIxZGQxZTgxNGNmNjY4
ZGUwZTE1ODYwMjAxMWZhMjNlYjE5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyNSBAQAorVGVzdHMgdGhlIGJhc2ljcyBvZiBTcGVlY2hHcmFtbWFyIGFuZCBTcGVl
Y2hHcmFtbWFyTGlzdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnd2Vi
a2l0U3BlZWNoR3JhbW1hcicgaW4gd2luZG93IGlzIHRydWUKK1BBU1Mgd2Via2l0U3BlZWNoR3Jh
bW1hciA9PSBudWxsIGlzIGZhbHNlCitQQVNTICd3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdCcgaW4g
d2luZG93IGlzIHRydWUKK1BBU1Mgd2Via2l0U3BlZWNoR3JhbW1hckxpc3QgPT0gbnVsbCBpcyBm
YWxzZQorUEFTUyBnID09IG51bGwgaXMgZmFsc2UKK1BBU1MgZy53ZWlnaHQgaXMgMS4wCitQQVNT
IGcuc3JjIGlzICcnCitQQVNTIGdzID09IG51bGwgaXMgZmFsc2UKK1BBU1MgZ3MubGVuZ3RoIGlz
IDAKK1BBU1MgZ3MuaXRlbSgwKSA9PSBudWxsIGlzIHRydWUKK1BBU1MgZ3MubGVuZ3RoIGlzIDEK
K1BBU1MgZ3MubGVuZ3RoIGlzIDIKK1BBU1MgZ3MuaXRlbSgwKS5zcmMgaXMgJ2h0dHA6Ly9leGFt
cGxlLnRsZC9ncmFtbWFyJworUEFTUyBncy5pdGVtKDApLndlaWdodCBpcyAyCitQQVNTIGdzLml0
ZW0oMSkuc3JjIGlzICdkYXRhOmZvbycKK1BBU1MgZ3MuaXRlbSgxKS53ZWlnaHQgaXMgNDIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2lj
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNoZ3JhbW1hci1i
YXNpY3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTVkYzIxMjRhODY1ZjU2MGEwYmIzNjNjZThlNmJmOWZj
NmMxN2QwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
ZWQvc3BlZWNoZ3JhbW1hci1iYXNpY3MuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0
aW9uKCdUZXN0cyB0aGUgYmFzaWNzIG9mIFNwZWVjaEdyYW1tYXIgYW5kIFNwZWVjaEdyYW1tYXJM
aXN0Jyk7CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICAvLyBDaGVjayBhdmFpbGFiaWxpdHkgb2Yg
Y29uc3RydWN0b3JzLgorICAgIHNob3VsZEJlVHJ1ZSgiJ3dlYmtpdFNwZWVjaEdyYW1tYXInIGlu
IHdpbmRvdyIpOworICAgIHNob3VsZEJlRmFsc2UoIndlYmtpdFNwZWVjaEdyYW1tYXIgPT0gbnVs
bCIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ3dlYmtpdFNwZWVjaEdyYW1tYXJMaXN0JyBpbiB3aW5k
b3ciKTsKKyAgICBzaG91bGRCZUZhbHNlKCJ3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdCA9PSBudWxs
Iik7CisKKyAgICAvLyBUZXN0IGNyZWF0aW5nIGEgZ3JhbW1hciBleHBsaWNpdGx5LgorICAgIHdp
bmRvdy5nID0gbmV3IHdlYmtpdFNwZWVjaEdyYW1tYXIoKTsKKyAgICBzaG91bGRCZUZhbHNlKCJn
ID09IG51bGwiKTsKKyAgICBzaG91bGRCZSgiZy53ZWlnaHQiLCAiMS4wIik7CisgICAgc2hvdWxk
QmUoImcuc3JjIiwgIicnIik7CisKKyAgICAvLyBUZXN0IGNyZWF0aW5nIGEgZ3JhbW1hciBsaXN0
LgorICAgIHdpbmRvdy5ncyA9IG5ldyB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdCgpOworICAgIHNo
b3VsZEJlRmFsc2UoImdzID09IG51bGwiKTsKKyAgICBzaG91bGRCZSgiZ3MubGVuZ3RoIiwgIjAi
KTsKKyAgICBzaG91bGRCZVRydWUoImdzLml0ZW0oMCkgPT0gbnVsbCIpOyAvLyBGSVhNRTogU2hv
dWxkIHByb2JhYmx5IHRocm93PworICAgIGdzLmFkZEZyb21VcmkoImh0dHA6Ly9leGFtcGxlLnRs
ZC9ncmFtbWFyIiwgMik7CisgICAgc2hvdWxkQmUoImdzLmxlbmd0aCIsICIxIik7CisgICAgZ3Mu
YWRkRnJvbVN0cmluZygiZm9vIiwgNDIpOworICAgIHNob3VsZEJlKCJncy5sZW5ndGgiLCAiMiIp
OworICAgIHNob3VsZEJlKCJncy5pdGVtKDApLnNyYyIsICInaHR0cDovL2V4YW1wbGUudGxkL2dy
YW1tYXInIik7CisgICAgc2hvdWxkQmUoImdzLml0ZW0oMCkud2VpZ2h0IiwgIjIiKTsKKyAgICBz
aG91bGRCZSgiZ3MuaXRlbSgxKS5zcmMiLCAiJ2RhdGE6Zm9vJyIpOworICAgIHNob3VsZEJlKCJn
cy5pdGVtKDEpLndlaWdodCIsICI0MiIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3dp
bmRvdy5vbmxvYWQgPSBydW47Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130814</attachid>
            <date>2012-03-08 06:12:22 -0800</date>
            <delta_ts>2012-03-08 14:12:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80417-20120308141220.patch</filename>
            <type>text/plain</type>
            <size>24389</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIxOGNjOWIyM2M0ZDI2
ZGIxZjRkMGI1NjBjNzkwMWE4MjMwNjJkOS4uNDNhMWY1ZjliYWE0NzBmY2FkMTJkZjIyZDQ3ZTNh
M2NmNzE4YTY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAzLTA4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIEphdmFTY3Jp
cHQgQVBJOiBhZGQgU3BlZWNoR3JhbW1hciBhbmQgU3BlZWNoR3JhbW1hckxpc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFNwZWVjaEdy
YW1tYXIgYW5kIFNwZWVjaEdyYW1tYXJMaXN0LgorICAgICAgICAoU3BlYzogaHR0cDovL3NwZWVj
aC1qYXZhc2NyaXB0LWFwaS1zcGVjLmdvb2dsZWNvZGUuY29tL2dpdC9zcGVlY2hhcGkuaHRtbCkK
KworICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2lj
cy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2guaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoR3JhbW1hcjo6U3BlZWNoR3JhbW1hcik6CisgICAgICAgICogTW9k
dWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTcGVlY2hHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaEdyYW1tYXI6OnNyYyk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyOjpzZXRTcmMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoR3JhbW1hcjo6d2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaEdy
YW1tYXI6OnNldFdlaWdodCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1h
ci5pZGw6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hHcmFtbWFyTGlzdDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjppdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tVXJpKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaEdyYW1tYXJMaXN0OjpTcGVlY2hHcmFtbWFyTGlzdCk6CisgICAgICAgICog
TW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoU3BlZWNoR3JhbW1hckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoR3Jh
bW1hckxpc3Q6Omxlbmd0aCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1h
ckxpc3QuaWRsOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKwogMjAxMi0wMy0wNiAgSGFucyBX
ZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWVjaCBKYXZhU2NyaXB0
IEFQSTogU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZSwgUmVzdWx0IGFuZCBSZXN1bHRMaXN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVl
Y2guaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoLmlk
bAppbmRleCBkYmZkOWE3NzVlZjE0MzhhN2FlYjU1YzVlZjkxNTI5YjZiMzgxZWJjLi42ZDMwYmM2
YjVkMDg2YzhlYzYwZTc1YTMwZWZjMmMxMzkxYzI4ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2guaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaC5pZGwKQEAgLTI5LDUgKzI5LDcgQEAg
bW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFN1cHBsZW1lbnRhbD1ET01XaW5kb3cKICAgICBdIERP
TVdpbmRvd1NwZWVjaCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yQ29uc3RydWN0b3Igd2Via2l0U3BlZWNoUmVjb2duaXRpb25F
cnJvcjsKKyAgICAgICAgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIFNwZWVjaEdyYW1t
YXJDb25zdHJ1Y3RvciB3ZWJraXRTcGVlY2hHcmFtbWFyOworICAgICAgICBhdHRyaWJ1dGUgW1Y4
RW5hYmxlZEF0UnVudGltZV0gU3BlZWNoR3JhbW1hckxpc3RDb25zdHJ1Y3RvciB3ZWJraXRTcGVl
Y2hHcmFtbWFyTGlzdDsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hHcmFtbWFyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzM2ZTFlNGE5NDE5YTZkZTNkZTlm
NzFkMzliMWMwOTk5YjAwZjZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05F
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCisKKyNp
bmNsdWRlICJTcGVlY2hHcmFtbWFyLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gU3BlZWNoR3JhbW1h
cjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNwZWVjaEdyYW1tYXIpOwor
fQorCitQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXI+IFNwZWVjaEdyYW1tYXI6OmNyZWF0ZShjb25z
dCBLVVJMJiBzcmMsIGRvdWJsZSB3ZWlnaHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
cGVlY2hHcmFtbWFyKHNyYywgd2VpZ2h0KSk7Cit9CisKK3ZvaWQgU3BlZWNoR3JhbW1hcjo6c2V0
U3JjKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0
IFN0cmluZyYgc3JjKQoreworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgbV9zcmMgPSBkb2N1bWVudC0+Y29tcGxl
dGVVUkwoc3JjKTsKK30KKworU3BlZWNoR3JhbW1hcjo6U3BlZWNoR3JhbW1hcigpCisgICAgOiBt
X3dlaWdodCgxLjApCit7Cit9CisKK1NwZWVjaEdyYW1tYXI6OlNwZWVjaEdyYW1tYXIoY29uc3Qg
S1VSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KQorICAgIDogbV9zcmMoc3JjKQorICAgICwgbV93ZWln
aHQod2VpZ2h0KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoU0NSSVBURURfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoR3JhbW1hci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoR3JhbW1hci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMDg4YzE4YjBjOGNiMDFkMzQwN2QxZDI2NmI4
MmNiNmRkMmYyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hHcmFtbWFyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
U3BlZWNoR3JhbW1hcl9oCisjZGVmaW5lIFNwZWVjaEdyYW1tYXJfaAorCisjaWYgRU5BQkxFKFND
UklQVEVEX1NQRUVDSCkKKworI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgU3BlZWNoR3JhbW1h
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaEdyYW1tYXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBjcmVhdGUoKTsgLy8gRklYTUU6IFRoZSBzcGVj
IGlzIG5vdCBjbGVhciBvbiB3aGF0IHRoZSBjb25zdHJ1Y3RvciBzaG91bGQgbG9vayBsaWtlLgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXI+IGNyZWF0ZShjb25zdCBLVVJMJiBz
cmMsIGRvdWJsZSB3ZWlnaHQpOworCisgICAgY29uc3QgS1VSTCYgc3JjKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSBjb25zdCB7IHJldHVybiBtX3NyYzsgfQorICAgIHZvaWQgc2V0U3JjKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHNyYyk7CisKKyAgICBkb3VibGUgd2Vp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV93ZWlnaHQ7IH0KKyAgICB2b2lkIHNldFdlaWdodChkb3Vi
bGUgd2VpZ2h0KSB7IG1fd2VpZ2h0ID0gd2VpZ2h0OyB9CisKK3ByaXZhdGU6CisgICAgU3BlZWNo
R3JhbW1hcigpOworICAgIFNwZWVjaEdyYW1tYXIoY29uc3QgS1VSTCYgc3JjLCBkb3VibGUgd2Vp
Z2h0KTsKKworICAgIEtVUkwgbV9zcmM7CisgICAgZG91YmxlIG1fd2VpZ2h0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkK
KworI2VuZGlmIC8vIFNwZWVjaEdyYW1tYXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hHcmFtbWFyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzkzYWMzYWJlZjkyZmU4NTdl
NDU0OGY3MDg1NTRmZmNjYWU4M2M5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBP
V05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK21vZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1T
Q1JJUFRFRF9TUEVFQ0gsCisgICAgICAgIENvbnN0cnVjdG9yCisgICAgXSBTcGVlY2hHcmFtbWFy
IHsKKyAgICAgICAgYXR0cmlidXRlIFtVUkwsQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gRE9NU3RyaW5nIHNyYzsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0IHdlaWdodDsKKyAgICB9
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3Jh
bW1hckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1h
ckxpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MWRmMjk0OGVhMGQ0MmZkYmYwMjAzYzc1OTUxZmI2ZGMz
ZGYxNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hHcmFtbWFyTGlzdC5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCisKKyNpbmNsdWRlICJT
cGVlY2hHcmFtbWFyTGlzdC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXJMaXN0PiBTcGVlY2hHcmFtbWFy
TGlzdDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNwZWVjaEdyYW1tYXJM
aXN0KTsKK30KKworU3BlZWNoR3JhbW1hciogU3BlZWNoR3JhbW1hckxpc3Q6Oml0ZW0odW5zaWdu
ZWQgbG9uZyBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPj0gbV9ncmFtbWFycy5zaXpl
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fZ3JhbW1hcnNbaW5kZXhdLmdl
dCgpOworfQorCit2b2lkIFNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tVXJpKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgc3JjLCBk
b3VibGUgd2VpZ2h0KQoreworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgbV9ncmFtbWFycy5hcHBlbmQoU3BlZWNo
R3JhbW1hcjo6Y3JlYXRlKGRvY3VtZW50LT5jb21wbGV0ZVVSTChzcmMpLCB3ZWlnaHQpKTsKK30K
Kwordm9pZCBTcGVlY2hHcmFtbWFyTGlzdDo6YWRkRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZywgZG91YmxlIHdlaWdodCkKK3sKKyAgICBTdHJpbmcgdXJsU3RyaW5nID0gU3RyaW5nKCJk
YXRhOmFwcGxpY2F0aW9uL3htbCwiKSArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc3Ry
aW5nKTsKKyAgICBtX2dyYW1tYXJzLmFwcGVuZChTcGVlY2hHcmFtbWFyOjpjcmVhdGUoS1VSTChL
VVJMKCksIHVybFN0cmluZyksIHdlaWdodCkpOworfQorCitTcGVlY2hHcmFtbWFyTGlzdDo6U3Bl
ZWNoR3JhbW1hckxpc3QoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdiNTNkNzU3MDQ3NWM3
MjhjODI2NjExMjI0MWE2OGMzN2VkY2FiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmgKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgU3BlZWNoR3JhbW1hckxpc3RfaAorI2RlZmluZSBTcGVlY2hHcmFt
bWFyTGlzdF9oCisKKyNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQorCisjaW5jbHVkZSAiU3Bl
ZWNoR3JhbW1hci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CisKK2NsYXNzIFNwZWVjaEdyYW1tYXJMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8
U3BlZWNoR3JhbW1hckxpc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVl
Y2hHcmFtbWFyTGlzdD4gY3JlYXRlKCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ3JhbW1hcnMuc2l6ZSgpOyB9CisgICAgU3BlZWNoR3JhbW1hciogaXRl
bSh1bnNpZ25lZCBsb25nKSBjb25zdDsKKworICAgIHZvaWQgYWRkRnJvbVVyaShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSB3ZWlnaHQgPSAxLjApOwor
ICAgIHZvaWQgYWRkRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBkb3VibGUgd2VpZ2h0ID0gMS4w
KTsKKworcHJpdmF0ZToKKyAgICBTcGVlY2hHcmFtbWFyTGlzdCgpOworCisgICAgVmVjdG9yPFJl
ZlB0cjxTcGVlY2hHcmFtbWFyPiA+IG1fZ3JhbW1hcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQorCisjZW5kaWYgLy8g
U3BlZWNoR3JhbW1hckxpc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoR3JhbW1hckxpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YzU1OTk0NDdjYzI5MGVjYjBh
OGE5M2Y0ZTI2ZTdkZTAwMzc1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK21vZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25h
bD1TQ1JJUFRFRF9TUEVFQ0gsCisgICAgICAgIEluZGV4ZWRHZXR0ZXIKKyAgICAgICAgQ29uc3Ry
dWN0b3IsCisgICAgXSBTcGVlY2hHcmFtbWFyTGlzdCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICAgICAgU3BlZWNoR3JhbW1hciBpdGVtKGlu
IFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgYWRkRnJvbVVyaShpbiBET01TdHJpbmcgc3JjLCBpbiBb
T3B0aW9uYWxdIGZsb2F0IHdlaWdodCk7CisgICAgICAgIHZvaWQgYWRkRnJvbVN0cmluZyhpbiBE
T01TdHJpbmcgc3RyaW5nLCBpbiBbT3B0aW9uYWxdIGZsb2F0IHdlaWdodCk7CisgICAgfTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCAwNmI5ZjYxMjZiM2Q5MGVhZmMwZmM2NzdhNmFjOTk2YmY3YWQw
NzdhLi5lZTEyMTI4MDhkNTU1Y2NjNGQ5ZjA3YjkzZGUzNDEwMzE2NGUwZWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC03NjMsNiArNzYzLDggQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9TaWduYWxpbmdDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL0RP
TVdpbmRvd1NwZWVjaC5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaEdy
YW1tYXIuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlz
dC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQWx0
ZXJuYXRpdmUuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkVycm9yLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXN1bHQuaWRsJywKQEAgLTE0MDYsNiArMTQwOCwxMCBAQAogICAgICAgICAgICAgJ01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oJywKKyAgICAgICAgICAgICdN
b2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9z
cGVlY2gvU3BlZWNoR3JhbW1hci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hHcmFtbWFyTGlzdC5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaEdy
YW1tYXJMaXN0LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uQWx0ZXJuYXRpdmUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbkFsdGVybmF0aXZlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uRXJyb3IuY3BwJywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ZGJjNzFjZDY2NjE4ODI4MzVmYWE1
OGQ2OTQ1MDMzZTY1YTdiZjBiLi45NWYyYTkwMGE2ODc0NmM2ZjdjMTJhMmU0MzdmOTVjMTkyNTU1
YTYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDMtMDggIEhhbnMgV2VubmJvcmcgIDxo
YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVlY2ggSmF2YVNjcmlwdCBBUEk6IGFkZCBT
cGVlY2hHcmFtbWFyIGFuZCBTcGVlY2hHcmFtbWFyTGlzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciBTcGVlY2hHcmFtbWFyIGFu
ZCBTcGVlY2hHcmFtbWFyTGlzdC4KKworICAgICAgICAqIGZhc3Qvc3BlZWNoL3NjcmlwdGVkL3Nw
ZWVjaGdyYW1tYXItYmFzaWNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
cGVlY2gvc2NyaXB0ZWQvc3BlZWNoZ3JhbW1hci1iYXNpY3MuaHRtbDogQWRkZWQuCisKIDIwMTIt
MDMtMDggIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Rm9ybXNdIFJlLW9yZ2FuaXplIHRlc3QgZmlsZXMgb2YgbGFiZWwgZWxlbWVudApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNoZ3JhbW1hci1iYXNpY3Mt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNoZ3Jh
bW1hci1iYXNpY3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzFiZWQ2MmYxZTdiMjEwOTVm
NmE5MmVjMDUzY2Q1ZGQ4MmNlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9zY3JpcHRlZC9zcGVlY2hncmFtbWFyLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw1MyBAQAorVGVzdHMgdGhlIGJhc2ljcyBvZiBTcGVlY2hHcmFtbWFyIGFuZCBTcGVlY2hH
cmFtbWFyTGlzdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnd2Via2l0
U3BlZWNoR3JhbW1hcicgaW4gd2luZG93IGlzIHRydWUKK1BBU1Mgd2Via2l0U3BlZWNoR3JhbW1h
ciA9PSBudWxsIGlzIGZhbHNlCitQQVNTICd3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdCcgaW4gd2lu
ZG93IGlzIHRydWUKK1BBU1Mgd2Via2l0U3BlZWNoR3JhbW1hckxpc3QgPT0gbnVsbCBpcyBmYWxz
ZQord2luZG93LmcgPSBuZXcgd2Via2l0U3BlZWNoR3JhbW1hcigpCitQQVNTIGcgPT0gbnVsbCBp
cyBmYWxzZQorUEFTUyBnLndlaWdodCBpcyAxLjAKK1BBU1MgZy5zcmMgaXMgJycKK2cud2VpZ2h0
ID0gMgorUEFTUyBnLndlaWdodCBpcyAyLjAKK2cuc3JjID0gJ2dyYW1tYXIueG1sJworUEFTUyBn
LnNyYyBpcyBiYXNlICsgJ2dyYW1tYXIueG1sJworZy5zcmMgPSAnaHR0cDovL2V4YW1wbGUudGxk
L2dyYW1tYXIueG1sJworUEFTUyBnLnNyYyBpcyAnaHR0cDovL2V4YW1wbGUudGxkL2dyYW1tYXIu
eG1sJworZy5zcmMgPSAnZm9vIGJhcicKK1BBU1MgZy5zcmMgaXMgYmFzZSArICdmb28lMjBiYXIn
Cit3aW5kb3cuZ3MgPSBuZXcgd2Via2l0U3BlZWNoR3JhbW1hckxpc3QoKQorUEFTUyBncyA9PSBu
dWxsIGlzIGZhbHNlCitQQVNTIGdzLmxlbmd0aCBpcyAwCitQQVNTIGdzLml0ZW0oMCkgPT0gbnVs
bCBpcyB0cnVlCitQQVNTIGdzWzBdID09IHVuZGVmaW5lZCBpcyB0cnVlCitQQVNTIGdzLml0ZW0o
LTEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24g
MS4KK1BBU1MgZ3NbLTFdID09IHVuZGVmaW5lZCBpcyB0cnVlCitncy5hZGRGcm9tVXJpKCdncmFt
bWFyJywgMikKK1BBU1MgZ3MubGVuZ3RoIGlzIDEKK1BBU1MgZ3MuaXRlbSgxKSA9PSBudWxsIGlz
IHRydWUKK1BBU1MgZ3NbMV0gPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgZ3MuaXRlbSgtMSkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgor
UEFTUyBnc1stMV0gPT0gdW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgZ3NbMF0gaXMgZ3MuaXRlbSgw
KQorUEFTUyBncy5pdGVtKDApLnNyYyBpcyBiYXNlICsgJ2dyYW1tYXInCitQQVNTIGdzLml0ZW0o
MCkud2VpZ2h0IGlzIDIKK2dzLmFkZEZyb21VcmkoJ2h0dHA6Ly9mb28udGxkL2dyYW1tYXIueG1s
JywgMykKK1BBU1MgZ3MubGVuZ3RoIGlzIDIKK1BBU1MgZ3NbMV0gaXMgZ3MuaXRlbSgxKQorUEFT
UyBncy5pdGVtKDEpLnNyYyBpcyAnaHR0cDovL2Zvby50bGQvZ3JhbW1hci54bWwnCitQQVNTIGdz
Lml0ZW0oMSkud2VpZ2h0IGlzIDMKK2dzLmFkZEZyb21TdHJpbmcoJ2ZvbycsIDQpCitQQVNTIGdz
Lmxlbmd0aCBpcyAzCitQQVNTIGdzWzJdIGlzIGdzLml0ZW0oMikKK1BBU1MgZ3MuaXRlbSgyKS5z
cmMgaXMgJ2RhdGE6YXBwbGljYXRpb24veG1sLCUzQ2dyYW1tYXIlM0Vmb28lM0MvZ3JhbW1hciUz
RScKK1BBU1MgZ3MuaXRlbSgyKS53ZWlnaHQgaXMgNAorUEFTUyBnc1syXS5zcmMgaXMgJ2RhdGE6
YXBwbGljYXRpb24veG1sLCUzQ2dyYW1tYXIlM0Vmb28lM0MvZ3JhbW1hciUzRScKK1BBU1MgZ3Nb
Ml0ud2VpZ2h0IGlzIDQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9zY3JpcHRlZC9z
cGVlY2hncmFtbWFyLWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvc2NyaXB0
ZWQvc3BlZWNoZ3JhbW1hci1iYXNpY3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTg5ODA2NmYxYTcwMzJk
OWEwYTkxYjdlYTNiYzEwZDQ2OTAxNjk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvc2NyaXB0ZWQvc3BlZWNoZ3JhbW1hci1iYXNpY3MuaHRtbApAQCAtMCwwICsx
LDc1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGUgYmFzaWNzIG9mIFNwZWVjaEdyYW1tYXIg
YW5kIFNwZWVjaEdyYW1tYXJMaXN0Jyk7CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICB3aW5kb3cu
YmFzZSA9IGRvY3VtZW50LmJhc2VVUkkuc3Vic3RyaW5nKDAsIGRvY3VtZW50LmJhc2VVUkkubGFz
dEluZGV4T2YoJy8nKSArIDEpOworCisgICAgLy8gQ2hlY2sgYXZhaWxhYmlsaXR5IG9mIGNvbnN0
cnVjdG9ycy4KKyAgICBzaG91bGRCZVRydWUoIid3ZWJraXRTcGVlY2hHcmFtbWFyJyBpbiB3aW5k
b3ciKTsKKyAgICBzaG91bGRCZUZhbHNlKCJ3ZWJraXRTcGVlY2hHcmFtbWFyID09IG51bGwiKTsK
KyAgICBzaG91bGRCZVRydWUoIid3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdCcgaW4gd2luZG93Iik7
CisgICAgc2hvdWxkQmVGYWxzZSgid2Via2l0U3BlZWNoR3JhbW1hckxpc3QgPT0gbnVsbCIpOwor
CisgICAgLy8gVGVzdCBjcmVhdGluZyBhIGdyYW1tYXIgZXhwbGljaXRseS4KKyAgICBldmFsQW5k
TG9nKCJ3aW5kb3cuZyA9IG5ldyB3ZWJraXRTcGVlY2hHcmFtbWFyKCkiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJnID09IG51bGwiKTsKKyAgICBzaG91bGRCZSgiZy53ZWlnaHQiLCAiMS4wIik7Cisg
ICAgc2hvdWxkQmUoImcuc3JjIiwgIicnIik7CisKKyAgICAvLyBUZXN0IHNldHRpbmcgdGhlIGF0
dHJpYnV0ZXMuCisgICAgZXZhbEFuZExvZygiZy53ZWlnaHQgPSAyIik7CisgICAgc2hvdWxkQmUo
Imcud2VpZ2h0IiwgIjIuMCIpOworICAgIGV2YWxBbmRMb2coImcuc3JjID0gJ2dyYW1tYXIueG1s
JyIpOworICAgIHNob3VsZEJlKCJnLnNyYyIsICJiYXNlICsgJ2dyYW1tYXIueG1sJyIpOworICAg
IGV2YWxBbmRMb2coImcuc3JjID0gJ2h0dHA6Ly9leGFtcGxlLnRsZC9ncmFtbWFyLnhtbCciKTsK
KyAgICBzaG91bGRCZSgiZy5zcmMiLCAiJ2h0dHA6Ly9leGFtcGxlLnRsZC9ncmFtbWFyLnhtbCci
KTsKKyAgICBldmFsQW5kTG9nKCJnLnNyYyA9ICdmb28gYmFyJyIpOworICAgIHNob3VsZEJlKCJn
LnNyYyIsICJiYXNlICsgJ2ZvbyUyMGJhciciKTsKKworICAgIC8vIFRlc3QgY3JlYXRpbmcgYSBn
cmFtbWFyIGxpc3QuCisgICAgZXZhbEFuZExvZygid2luZG93LmdzID0gbmV3IHdlYmtpdFNwZWVj
aEdyYW1tYXJMaXN0KCkiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJncyA9PSBudWxsIik7CisgICAg
c2hvdWxkQmUoImdzLmxlbmd0aCIsICIwIik7CisgICAgc2hvdWxkQmVUcnVlKCJncy5pdGVtKDAp
ID09IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoImdzWzBdID09IHVuZGVmaW5lZCIpOworICAg
IHNob3VsZFRocm93KCJncy5pdGVtKC0xKSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ3NbLTFdID09
IHVuZGVmaW5lZCIpOworCisgICAgZXZhbEFuZExvZygiZ3MuYWRkRnJvbVVyaSgnZ3JhbW1hcics
IDIpIik7CisgICAgc2hvdWxkQmUoImdzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmVUcnVl
KCJncy5pdGVtKDEpID09IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoImdzWzFdID09IHVuZGVm
aW5lZCIpOworICAgIHNob3VsZFRocm93KCJncy5pdGVtKC0xKSIpOworICAgIHNob3VsZEJlVHJ1
ZSgiZ3NbLTFdID09IHVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlKCJnc1swXSIsICJncy5pdGVt
KDApIik7CisgICAgc2hvdWxkQmUoImdzLml0ZW0oMCkuc3JjIiwgImJhc2UgKyAnZ3JhbW1hcici
KTsKKyAgICBzaG91bGRCZSgiZ3MuaXRlbSgwKS53ZWlnaHQiLCAiMiIpOworCisgICAgZXZhbEFu
ZExvZygiZ3MuYWRkRnJvbVVyaSgnaHR0cDovL2Zvby50bGQvZ3JhbW1hci54bWwnLCAzKSIpOwor
ICAgIHNob3VsZEJlKCJncy5sZW5ndGgiLCAiMiIpOworICAgIHNob3VsZEJlKCJnc1sxXSIsICJn
cy5pdGVtKDEpIik7CisgICAgc2hvdWxkQmUoImdzLml0ZW0oMSkuc3JjIiwgIidodHRwOi8vZm9v
LnRsZC9ncmFtbWFyLnhtbCciKTsKKyAgICBzaG91bGRCZSgiZ3MuaXRlbSgxKS53ZWlnaHQiLCAi
MyIpOworCisgICAgZXZhbEFuZExvZygiZ3MuYWRkRnJvbVN0cmluZygnPGdyYW1tYXI+Zm9vPC9n
cmFtbWFyPicsIDQpIik7CisgICAgc2hvdWxkQmUoImdzLmxlbmd0aCIsICIzIik7CisgICAgc2hv
dWxkQmUoImdzWzJdIiwgImdzLml0ZW0oMikiKTsKKyAgICBzaG91bGRCZSgiZ3MuaXRlbSgyKS5z
cmMiLCAiJ2RhdGE6YXBwbGljYXRpb24veG1sLCUzQ2dyYW1tYXIlM0Vmb28lM0MvZ3JhbW1hciUz
RSciKTsKKyAgICBzaG91bGRCZSgiZ3MuaXRlbSgyKS53ZWlnaHQiLCAiNCIpOworICAgIHNob3Vs
ZEJlKCJnc1syXS5zcmMiLCAiJ2RhdGE6YXBwbGljYXRpb24veG1sLCUzQ2dyYW1tYXIlM0Vmb28l
M0MvZ3JhbW1hciUzRSciKTsKKyAgICBzaG91bGRCZSgiZ3NbMl0ud2VpZ2h0IiwgIjQiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="133932"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>