<?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>20792</bug_id>
          
          <creation_ts>2008-09-11 23:09:43 -0700</creation_ts>
          <short_desc>Add origin header to POST requests</short_desc>
          <delta_ts>2019-05-02 16:23:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://crypto.stanford.edu/websec/csrf/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Collin Jackson">collinj</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>collinj</cc>
    
    <cc>darin</cc>
    
    <cc>mjs</cc>
    
    <cc>pswag994</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90914</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-09-11 23:09:43 -0700</bug_when>
    <thetext>To prevent CSRF attacks, we should send an Origin header with POST requests that identifies the origin that initiated the request. If the browser cannot determine the origin, the browser sends the value &quot;null&quot;.

== Privacy ==

The Origin header improves on the Referer header by respecting
the user’s privacy:

1. The Origin header includes only the information required to identify the
   principal that initiated the request (typically the scheme, host, and port
   of the active document’s URL). In particular, the Origin header does not
   contain the path or query portions of the URL included in the Referer
   header that invade privacy without providing additional security.

2. The Origin header is sent only for POST requests, whereas the Referer
   header is sent for all requests. Simply following a hyperlink (e.g., from
   a list of search results or from a corporate intranet) does not send the
   Origin header, preventing the majority of accidental leakage of sensitive
   information.

By responding to privacy concerns, the Origin header will likely not be widely
suppressed.

== Server Behavior == 

To use the Origin header as a CSRF defense, servers should behave as follows:

1. All state-modifying requests, including login requests, must be sent using
   the POST method. In particular, state-modifying GET requests must
   be blocked in order to address the forum poster theat model.

2. If the Origin header is present, the server must reject any requests whose
   Origin header contains an undesired value (including null). For example,
   a site could reject all requests whose Origin indicated the request was
   initiated from another site.

== Security Analysis == 

Although the Origin header has a simple design, the use of the header as a CSRF
defense has a number of subtleties.

* Rollback and Suppression. Because a supporting browser will always
  include the Origin header when making POST requests, sites can detect
  that a request was initiated by a supporting browser by observing the
  presence of the header. This design prevents an attacker from making a
  supporting browser appear to be a non-supporting browser. Unlike the
  Referer header, which is absent when suppressed by the browser, the
  Origin header takes on the value null when suppressed by the browser.

* DNS Rebinding. In existing browsers, the Origin header can be
  spoofed for same-site XMLHttpRequests. Sites that rely only on network
  connectivity for authentication should use one of the existing DNS
  rebinding defenses, such as validating the Host header. This 
  requirement is complementary to CSRF protection and also applies to all
  the other existing CSRF defenses.

* Plug-ins. If a site opts into cross-site HTTP requests via crossdomain.xml,
  an attacker can use Flash Player to set the Origin header in cross-site 
  requests. Opting into cross-site HTTP requests also defeats secret token
  validation CSRF defenses because the tokens leak during cross-site HTTP
  requests. To prevent these (and other) attacks, sites should not opt into
  cross-site HTTP requests from untrusted origins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90915</commentid>
    <comment_count>1</comment_count>
      <attachid>23364</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-09-11 23:10:35 -0700</bug_when>
    <thetext>Created attachment 23364
patch

Here is a simple implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90918</commentid>
    <comment_count>2</comment_count>
      <attachid>23364</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-09-12 02:08:06 -0700</bug_when>
    <thetext>Comment on attachment 23364
patch

Removing review flag because this patch doesn&apos;t properly handle HTTPS -&gt; HTTP requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90934</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-09-12 09:36:51 -0700</bug_when>
    <thetext>For reference, here is the Mozilla bug on this topic:

https://bugzilla.mozilla.org/show_bug.cgi?id=446344

Here are Brandon Sterne&apos;s thoughts on the topic:

http://people.mozilla.org/~bsterne/content-security-policy/origin-header-proposal.html

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90940</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-12 10:58:11 -0700</bug_when>
    <thetext>What is the desired behavior for HTTPS -&gt; HTTP requests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90954</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-09-12 12:10:54 -0700</bug_when>
    <thetext>we&apos;d like the header to be like

Origin: https://www.example.com

The current patch shows &quot;null&quot;.  Keep in mind that this case only occurs if the user clicks through the &quot;insecure form submission&quot; dialog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92101</commentid>
    <comment_count>6</comment_count>
      <attachid>23646</attachid>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-09-22 02:00:56 -0700</bug_when>
    <thetext>Created attachment 23646
Updated patch

We updated the patch to attach an Origin header to POST requests even if the referrer is suppressed. We also added some more tests. The origin-header-for-xmlhttprequest.html test shows the Origin header getting attached to XMLHttpRequest GET requests -- I need to investigate whether this is a bug or a feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92291</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-09-22 23:55:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The origin-header-for-xmlhttprequest.html test shows the Origin header getting
&gt; attached to XMLHttpRequest GET requests -- I need to investigate whether this
&gt; is a bug or a feature.

This occurs in the latest nightly without this patch, so it&apos;s a feature.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92298</commentid>
    <comment_count>8</comment_count>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2008-09-23 01:37:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This occurs in the latest nightly without this patch, so it&apos;s a feature.  :)

This patch is currently attaching an Origin header to same-origin GET XMLHttpRequests that&apos;s not already present in the nightly. Cross-origin GET requests are unaffected by this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92439</commentid>
    <comment_count>9</comment_count>
      <attachid>23646</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-23 17:14:40 -0700</bug_when>
    <thetext>Comment on attachment 23646
Updated patch

+        // Don&apos;t send an Origin header for GET or HEAD to avoid privacy issues.

This comment could use a little more information.  What privacy issues future me may wonder?

-    request.setHTTPHeaderField(&quot;Origin&quot;, accessControlOrigin());
+    request.setHTTPHeaderField(&quot;Origin&quot;, m_doc-&gt;securityOrigin()-&gt;toHTTPOrigin());

This can use request .setHTTPOrigin().

-    request.setHTTPHeaderField(&quot;Origin&quot;, accessControlOrigin());
+    request.setHTTPHeaderField(&quot;Origin&quot;, m_doc-&gt;securityOrigin()-&gt;toHTTPOrigin());

As can this.

This doesn&apos;t break sending the origin for XHR does it?  

Otherwise, awesome!  I think one other person should review these changes as well, as I am far from an authority on FrameLoader.  Brady, Anders, Darin, or Maciej?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92492</commentid>
    <comment_count>10</comment_count>
      <attachid>23743</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-09-24 02:04:37 -0700</bug_when>
    <thetext>Created attachment 23743
baseline for XHR origin behavior</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92494</commentid>
    <comment_count>11</comment_count>
      <attachid>23744</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-09-24 02:07:15 -0700</bug_when>
    <thetext>Created attachment 23744
updated patch

Patch updated with Sam&apos;s comments.  Also, I added a bunch of tests for the Origin header behavior for XHR.  I split this into two patches so you can see exactly how this patch changes the behavior.  (The previous patch messed up the XHR behavior a bit, so I tweaked a few things.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92615</commentid>
    <comment_count>12</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-24 16:01:32 -0700</bug_when>
    <thetext>Has this been proposed to the HTTP Working Group or another appropriate standards body? I like the idea but I&apos;d like to make sure we put it on track to being officially placed in the appropriate standard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92650</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-09-24 18:15:12 -0700</bug_when>
    <thetext>We proposed this informally to the webapps working group a number of months ago, which (I think) is how Mozilla got interested in implementing this.  It wasn&apos;t clear which spec would be most appropriate.  The computation of the header value is speced in HTML 5 for postMessage and for use by cross-site XHR.  I doubt the HTTP Working Group want an dependency on HTML 5.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92679</commentid>
    <comment_count>14</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2008-09-25 00:35:26 -0700</bug_when>
    <thetext>It is part of Access Control for Cross-Site Requests and I will make sure it is registered as an official HTTP header in due course. (It won&apos;t be part of the HTTP specification of course, but other specifications can register header names.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93963</commentid>
    <comment_count>15</comment_count>
      <attachid>23744</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-03 13:24:27 -0700</bug_when>
    <thetext>Comment on attachment 23744
updated patch

The biggest problem is that this sprinkles calls to a new function all over the loader classes. I&apos;m concerned that we have to add the addHTTPOriginIfNeeded function call in so many places. It seems to me that will be hard to maintain -- it will be very easy to introduce a security problem by forgetting to add a call to that function. Is there any way to streamline this? I suppose we have the same issue with the referrer, but it&apos;s not even true that these are all the sites that set the referrer!

The loader is already not so great in this respect, but it seems this patch makes it even worse.

+    RefPtr&lt;SecurityOrigin&gt; origin = SecurityOrigin::createEmpty();
+    return origin-&gt;toHTTPOrigin();

The local variable isn&apos;t needed and the code would read more cleanly without it.

+    // Make sure we send the Origin header properly.
+    addHTTPOriginIfNeeded(request, String());

I don&apos;t understand the meaning of the word &quot;properly&quot; in this comment.

+    // will leak the internal host name.  Similar privacy concerns have lead

+        // header.  This is similar to toString(), except that the empty

We normally don&apos;t use two spaces between sentences in comments.

+        RefPtr&lt;SecurityOrigin&gt; emptyOrigin = SecurityOrigin::createEmpty();
+        origin = emptyOrigin-&gt;toHTTPOrigin();

The local variable isn&apos;t needed and the code would read more cleanly without it. Maybe also a helper function named SecurityOrigin::emptyHTTPOrigin() would be good?

+        // SecurityOrigin is represetned as the string &quot;null&quot;.

Typo: &quot;represetned&quot;.

I&apos;m going to say review+ despite my comments and minor concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94168</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-10-05 13:45:54 -0700</bug_when>
    <thetext>Fixed in r37317.  I definitely agree that FrameLoader needs to be reorganized, but it&apos;s a bit too big a project for me to take right now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23364</attachid>
            <date>2008-09-11 23:10:35 -0700</date>
            <delta_ts>2008-09-22 02:00:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>origin-header.patch</filename>
            <type>text/plain</type>
            <size>11170</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSAyNDU4NDUzMjMzMmI5YjIyMzllZGY4OTliZGU5Mjk5ZDZlOGM2OTNlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogVGh1LCAxMSBTZXAgMjAwOCAyMzowMTozNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFdlYkNv
cmU6CgoyMDA4LTA5LTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CgogICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBTZW5kIHRoZSBPcmlnaW4gd2l0
aCBQT1NUIHJlcXVlc3RzLiAgU2VydmVycyBjYW4gdXNlIHRoaXMgaGVhZGVyIHRvCiAgICAgICAg
ZGVmZW5kIGFnYWluc3QgQ1NSRi4KCiAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkv
b3JpZ2luLWhlYWRlci1mb3ItZ2V0Lmh0bWwKICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9vcmlnaW4taGVhZGVyLWZvci1wb3N0Lmh0bWwKCiAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNU
b1JlcXVlc3QpOgogICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0
KToKICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJdGVtKToKICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgoKTGF5b3VUZXN0cwoKMjAwOC0w
OS0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgoKICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgVGVzdCB0aGF0IHdlJ3JlIHNlbmRpbmcgdGhlIE9y
aWdpbiBoZWFkZXIgZm9yIFBPU1QgcmVxdWVzdHMgYnV0IG5vdAogICAgICAgIGZvciBHRVQgcmVx
dWVzdHMuICBUaGlzIGJhbGFuY2VzIHRoZSBwcml2YWN5IGNvbmNlcm5zIHRoYXQgY2F1c2UKICAg
ICAgICBmaXJld2FsbCBhZG1pbnMgdG8gYmxvY2sgdGhlIFJlZmVyZXIgaGVhZGVyIHdpdGggdGhl
IHVzZWZ1bG5lc3Mgb2YKICAgICAgICB0aGUgaGVhZGVyIHRvIGJsb2NrIENTUkYuCgogICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW4taGVhZGVyLWZvci1nZXQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luLWhlYWRlci1mb3It
Z2V0Lmh0bWw6IEFkZGVkLgogICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW4taGVh
ZGVyLWZvci1wb3N0LWV4cGVjdGVkLnR4dDogQWRkZWQuCiAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L29yaWdpbi1oZWFkZXItZm9yLXBvc3QuaHRtbDogQWRkZWQuCiAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpOiBBZGRlZC4KLS0tCiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUg
KysrKysrKwogLi4uL3NlY3VyaXR5L29yaWdpbi1oZWFkZXItZm9yLWdldC1leHBlY3RlZC50eHQg
ICAgfCAgICAzICsKIC4uLi9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbi1oZWFkZXItZm9yLWdl
dC5odG1sIHwgICA0MiArKysrKysrKysrKysrKysrKysrKwogLi4uL3NlY3VyaXR5L29yaWdpbi1o
ZWFkZXItZm9yLXBvc3QtZXhwZWN0ZWQudHh0ICAgfCAgICAzICsKIC4uLi90ZXN0cy9zZWN1cml0
eS9vcmlnaW4taGVhZGVyLWZvci1wb3N0Lmh0bWwgICAgIHwgICA0MiArKysrKysrKysrKysrKysr
KysrKwogLi4uL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL3ByaW50LW9yaWdpbi5jZ2kg
fCAgICA3ICsrKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDE2ICsrKysrKysKIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCAgICAg
ICAgICAgICAgICAgICAgIHwgICAxNiArKysrKystLQogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuaCAgICAgfCAgICA0ICstCiA5IGZpbGVzIGNoYW5nZWQsIDE0
MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luLWhlYWRlci1mb3ItZ2V0LWV4cGVjdGVk
LnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
b3JpZ2luLWhlYWRlci1mb3ItZ2V0Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbi1oZWFkZXItZm9yLXBvc3QtZXhwZWN0ZWQudHh0
CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmln
aW4taGVhZGVyLWZvci1wb3N0Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDc1NSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpCgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgy
NGUzODIuLmUxNTk5NDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOC0wOS0xMSAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3QgdGhhdCB3ZSdyZSBzZW5kaW5nIHRoZSBPcmlnaW4gaGVh
ZGVyIGZvciBQT1NUIHJlcXVlc3RzIGJ1dCBub3QKKyAgICAgICAgZm9yIEdFVCByZXF1ZXN0cy4g
IFRoaXMgYmFsYW5jZXMgdGhlIHByaXZhY3kgY29uY2VybnMgdGhhdCBjYXVzZQorICAgICAgICBm
aXJld2FsbCBhZG1pbnMgdG8gYmxvY2sgdGhlIFJlZmVyZXIgaGVhZGVyIHdpdGggdGhlIHVzZWZ1
bG5lc3Mgb2YKKyAgICAgICAgdGhlIGhlYWRlciB0byBibG9jayBDU1JGLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW4taGVhZGVyLWZvci1nZXQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbi1oZWFkZXItZm9yLWdl
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbi1oZWFk
ZXItZm9yLXBvc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L29yaWdpbi1oZWFkZXItZm9yLXBvc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvcHJpbnQtb3JpZ2luLmNnaTogQWRkZWQuCisKIDIw
MDgtMDktMTEgIEtldmluIE1jQ3VsbG91Z2ggIDxrbWNjdWxsb3VnaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgYW5kIFRpbS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luLWhlYWRlci1mb3ItZ2V0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luLWhlYWRlci1mb3ItZ2V0LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTc4ZWM0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW4t
aGVhZGVyLWZvci1nZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCisKK0hUVFBfT1JJ
R0lOOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW4t
aGVhZGVyLWZvci1nZXQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3Jp
Z2luLWhlYWRlci1mb3ItZ2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMmUyZGE0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvb3JpZ2luLWhlYWRlci1mb3ItZ2V0Lmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoCisgICAgICAgIGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOworfQorCit2YXIgaWZyYW1lTG9hZENvdW50ID0g
MDsKK2Z1bmN0aW9uIGlmcmFtZUxvYWRlZCgpIHsKKyAgICArK2lmcmFtZUxvYWRDb3VudDsKKyAg
ICAvLyBJZ25vcmUgdGhlIGZpcnN0IGxvYWQgb2YgYWJvdXQ6YmxhbmsKKyAgICBpZiAoaWZyYW1l
TG9hZENvdW50ID4gMSkgeworICAgICAgICBsb2coZnJhbWVzWzBdLmRvY3VtZW50LmJvZHkuZmly
c3RDaGlsZC5pbm5lckhUTUwpOworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IH0KK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0aGVGb3JtJykuc3VibWl0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGlmcmFtZSBzcmM9ImFib3V0OmJsYW5rIiBuYW1lPSJ0aGVGcmFtZSIKKyAgICAgICAg
b25sb2FkPSJpZnJhbWVMb2FkZWQoKSI+PC9pZnJhbWU+Cis8Zm9ybSBpZD0idGhlRm9ybSIKKyAg
ICAgIGFjdGlvbj0icmVzb3VyY2VzL3ByaW50LW9yaWdpbi5jZ2kiCisgICAgICBtZXRob2Q9IkdF
VCIKKyAgICAgIHRhcmdldD0idGhlRnJhbWUiPgorPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9
IlN1Ym1pdCI+Cis8L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj4KKzwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmln
aW4taGVhZGVyLWZvci1wb3N0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvb3JpZ2luLWhlYWRlci1mb3ItcG9zdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFlN2I2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luLWhlYWRlci1mb3ItcG9zdC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzIEBACisKKworSFRUUF9PUklHSU46IGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW4t
aGVhZGVyLWZvci1wb3N0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29y
aWdpbi1oZWFkZXItZm9yLXBvc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40NTRjMWRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9vcmlnaW4taGVhZGVyLWZvci1wb3N0Lmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykgeworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoCisgICAgICAg
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOworfQorCit2YXIgaWZyYW1lTG9hZENvdW50
ID0gMDsKK2Z1bmN0aW9uIGlmcmFtZUxvYWRlZCgpIHsKKyAgICArK2lmcmFtZUxvYWRDb3VudDsK
KyAgICAvLyBJZ25vcmUgdGhlIGZpcnN0IGxvYWQgb2YgYWJvdXQ6YmxhbmsKKyAgICBpZiAoaWZy
YW1lTG9hZENvdW50ID4gMSkgeworICAgICAgICBsb2coZnJhbWVzWzBdLmRvY3VtZW50LmJvZHku
Zmlyc3RDaGlsZC5pbm5lckhUTUwpOworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIH0KK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0aGVGb3JtJykuc3VibWl0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGlmcmFtZSBzcmM9ImFib3V0OmJsYW5rIiBuYW1lPSJ0aGVGcmFtZSIKKyAgICAg
ICAgb25sb2FkPSJpZnJhbWVMb2FkZWQoKSI+PC9pZnJhbWU+Cis8Zm9ybSBpZD0idGhlRm9ybSIK
KyAgICAgIGFjdGlvbj0icmVzb3VyY2VzL3ByaW50LW9yaWdpbi5jZ2kiCisgICAgICBtZXRob2Q9
IlBPU1QiCisgICAgICB0YXJnZXQ9InRoZUZyYW1lIj4KKzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZh
bHVlPSJTdWJtaXQiPgorPC9mb3JtPgorPGRpdiBpZD0iY29uc29sZSI+Cis8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cmVzb3VyY2VzL3ByaW50LW9yaWdpbi5jZ2kgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAuLmY4OGIwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpCkBAIC0wLDAgKzEsNyBAQAor
IyEvdXNyL2Jpbi9wZXJsIC13VAordXNlIHN0cmljdDsKKworcHJpbnQgIkNvbnRlbnQtVHlwZTog
dGV4dC9wbGFpblxuIjsKK3ByaW50ICJDYWNoZS1Db250cm9sOiBuby1zdG9yZVxuXG4iOworCitw
cmludCAiSFRUUF9PUklHSU46ICIgLiAkRU5WeyJIVFRQX09SSUdJTiJ9IC4gIlxuIjsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI2N2Jk
NC4uZjNjYmFmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAwOC0wOS0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNlbmQgdGhlIE9yaWdpbiB3aXRoIFBPU1QgcmVxdWVzdHMuICBTZXJ2ZXJzIGNhbiB1
c2UgdGhpcyBoZWFkZXIgdG8KKyAgICAgICAgZGVmZW5kIGFnYWluc3QgQ1NSRi4KKworICAgICAg
ICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW4taGVhZGVyLWZvci1nZXQuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW4taGVhZGVyLWZvci1wb3N0
Lmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oOgorCiAyMDA4LTA5LTExICBLZXZpbiBNY0N1bGxvdWdoICA8a21jY3Vs
bG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIGFuZCBUaW0uCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMzU1MDdhNi4uNThjYjdhOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtMzM5OSw2ICszMzk5LDE2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmFkZEV4dHJh
RmllbGRzVG9SZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBtYWluUmVzCiAg
ICAgCiAgICAgaWYgKG1haW5SZXNvdXJjZSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQWNjZXB0
KCJhcHBsaWNhdGlvbi94bWwsYXBwbGljYXRpb24veGh0bWwreG1sLHRleHQvaHRtbDtxPTAuOSx0
ZXh0L3BsYWluO3E9MC44LGltYWdlL3BuZywqLyo7cT0wLjUiKTsKKworICAgIC8vIEF0dGFjaCB0
aGUgT3JpZ2luIGhlYWRlciB0byBoZWxwIHNlcnZlcnMgZGVmZW5kIGFnYWluc3QgQ1NSRi4KKyAg
ICBpZiAocmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIgJiYgcmVxdWVzdC5odHRwTWV0aG9k
KCkgIT0gIkhFQUQiKSB7CisgICAgICAgIC8vIFJvdW5kLXRyaXAgdGhyb3VnaCBhIFNlY3VyaXR5
T3JpZ2luIHRvIGNhbm5vbmljYWxpemUgaGVhZGVyLgorICAgICAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
cmVxdWVzdC5odHRwUmVmZXJyZXIoKSk7CisgICAgICAgIFN0cmluZyBvcmlnaW4gPSBzZWN1cml0
eU9yaWdpbi0+dG9TdHJpbmcoKTsKKyAgICAgICAgaWYgKG9yaWdpbi5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBvcmlnaW4gPSAibnVsbCI7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE9yaWdpbihv
cmlnaW4pOworICAgIH0KIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0dGVkTG9hZChEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQpAQCAtMzQy
OCwxMyArMzQzOCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBpblJlcXVlc3QsIGNvbnN0IFN0cmluZwogICAgIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUgPSBpblJlcXVlc3QuaHR0cENvbnRlbnRUeXBlKCk7CiAKICAgICBSZXNv
dXJjZVJlcXVlc3Qgd29ya2luZ1Jlc291cmNlUmVxdWVzdCh1cmwpOyAgICAKLSAgICBhZGRFeHRy
YUZpZWxkc1RvUmVxdWVzdCh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCB0cnVlLCB0cnVlKTsKLQog
ICAgIGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICB3b3JraW5nUmVzb3VyY2VSZXF1
ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVz
dC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRI
VFRQQm9keShmb3JtRGF0YSk7CiAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQQ29u
dGVudFR5cGUoY29udGVudFR5cGUpOworICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHdvcmtp
bmdSZXNvdXJjZVJlcXVlc3QsIHRydWUsIHRydWUpOwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBh
Y3Rpb24odXJsLCBGcmFtZUxvYWRUeXBlU3RhbmRhcmQsIHRydWUsIGV2ZW50KTsKIApAQCAtNDI4
OSw4ICs0Mjk4LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0qIGl0
ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpCiAgICAgICAgIGlmICghaW5QYWdlQ2FjaGUpIHsK
ICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGl0ZW1VUkwpOwogCi0gICAgICAg
ICAgICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChyZXF1ZXN0LCB0cnVlLCBmb3JtRGF0YSk7Ci0K
ICAgICAgICAgICAgIC8vIElmIHRoaXMgd2FzIGEgcmVwb3N0IHRoYXQgZmFpbGVkIHRoZSBwYWdl
IGNhY2hlLCB3ZSBtaWdodCB0cnkgdG8gcmVwb3N0IHRoZSBmb3JtLgogICAgICAgICAgICAgTmF2
aWdhdGlvbkFjdGlvbiBhY3Rpb247CiAgICAgICAgICAgICBpZiAoZm9ybURhdGEpIHsKQEAgLTQz
NDEsNiArNDM0OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJdGVtKEhpc3RvcnlJdGVtKiBp
dGVtLCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKQogICAgICAgICAgICAgICAgIGFjdGlvbiA9IE5h
dmlnYXRpb25BY3Rpb24oaXRlbU9yaWdpbmFsVVJMLCBsb2FkVHlwZSwgZmFsc2UpOwogICAgICAg
ICAgICAgfQogCisgICAgICAgICAgICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChyZXF1ZXN0LCB0
cnVlLCBmb3JtRGF0YSk7CiAgICAgICAgICAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVx
dWVzdCwgYWN0aW9uLCBsb2FkVHlwZSwgMCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCBhZmEyMGY2Li43
ZjZiYzMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmgKQEAgLTc3LDcgKzc3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJp
bmcgaHR0cFJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gaHR0cEhlYWRlckZpZWxkKCJSZWZlcmVy
Iik7IH0KICAgICAgICAgdm9pZCBzZXRIVFRQUmVmZXJyZXIoY29uc3QgU3RyaW5nJiBodHRwUmVm
ZXJyZXIpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJSZWZlcmVyIiwgaHR0cFJlZmVycmVyKTsgfQog
ICAgICAgICB2b2lkIGNsZWFySFRUUFJlZmVycmVyKCkgeyBtX2h0dHBIZWFkZXJGaWVsZHMucmVt
b3ZlKCJSZWZlcmVyIik7IH0KLSAgICAgICAgCisKKyAgICAgICAgdm9pZCBzZXRIVFRQT3JpZ2lu
KGNvbnN0IFN0cmluZyYgaHR0cE9yaWdpbikgeyBzZXRIVFRQSGVhZGVyRmllbGQoIk9yaWdpbiIs
IGh0dHBPcmlnaW4pOyB9CisKICAgICAgICAgU3RyaW5nIGh0dHBVc2VyQWdlbnQoKSBjb25zdCB7
IHJldHVybiBodHRwSGVhZGVyRmllbGQoIlVzZXItQWdlbnQiKTsgfQogICAgICAgICB2b2lkIHNl
dEhUVFBVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBodHRwVXNlckFnZW50KSB7IHNldEhUVFBIZWFk
ZXJGaWVsZCgiVXNlci1BZ2VudCIsIGh0dHBVc2VyQWdlbnQpOyB9CiAKLS0gCjEuNi4wLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23646</attachid>
            <date>2008-09-22 02:00:56 -0700</date>
            <delta_ts>2008-09-24 02:07:15 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>origin.patch</filename>
            <type>text/plain</type>
            <size>27862</size>
            <attacher name="Collin Jackson">collinj</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjc2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMDgtMDktMjIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBBdHRhY2ggdGhlIE9yaWdpbiBoZWFkZXIgdG8gUE9TVCByZXF1ZXN0cyB0
byBoZWxwIGRlZmVuZCBhZ2FpbnN0CisgICAgICAgIGNyb3NzLXNpdGUgcmVxdWVzdCBmb3JnZXJ5
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc5
MgorCisgICAgICAgIENvbGxpbiBKYWNrc29uIDxjb2xsaW5qQHdlYmtpdC5vcmc+IGFsc28gY29u
dHJpYnV0ZWQgdG8gdGhpcyBwYXRjaC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIv
b3JpZ2luLWhlYWRlci1mb3ItZGF0YS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1lbXB0eS5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZv
ci1nZXQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFk
ZXIvb3JpZ2luLWhlYWRlci1mb3ItaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItcG9zdC5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Om91dGdv
aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkSXRlbSk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxv
YWRlci9sb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpIb3N0OjpzZXJ2ZVBl
bmRpbmdSZXF1ZXN0cyk6CisgICAgICAgICogcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnRvSFRUUE9yaWdpbik6CisgICAgICAg
ICogcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dEJhc2U6Omh0dHBPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6c2V0SFRUUE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNl
OjpjbGVhckhUVFBPcmlnaW4pOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6bWFrZVNpbXBsZUNyb3NzU2l0ZUFjY2Vz
c1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6Om1ha2VDcm9zc1Np
dGVBY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6aGFuZGxlQXN5bmNocm9ub3VzUHJlZmxpZ2h0UmVzdWx0KToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2VQcmVmbGlnaHQpOgorICAg
ICAgICAKIDIwMDgtMDktMjIgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBhIHJlZ3Jlc3Npb24gaW4gV2luZG93cyBzY3JvbGxiYXIgcGFpbnRpbmcuICAoQWxz
byBmaXggdGhlIHNhbWUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAJKHJldmlzaW9uIDM2NzYwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNiArMzA0LDcgQEAgc3RhdGljIEZyYW1lKiBj
cmVhdGVXaW5kb3coRXhlY1N0YXRlKiBleAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0Owog
CiAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIoYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5vdXRn
b2luZ1JlZmVycmVyKCkpOworICAgIHJlcXVlc3Quc2V0SFRUUE9yaWdpbihhY3RpdmVGcmFtZS0+
bG9hZGVyKCktPm91dGdvaW5nT3JpZ2luKCkpOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVS
ZXF1ZXN0KHJlcXVlc3QsIGZyYW1lTmFtZSk7CiAKICAgICAvLyBGSVhNRTogSXQncyBtdWNoIGJl
dHRlciBmb3IgY2xpZW50IEFQSSBpZiBhIG5ldyB3aW5kb3cgc3RhcnRzIHdpdGggYSBVUkwsIGhl
cmUgd2hlcmUgd2UKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDM2NzYwKQor
KysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAs
NiArMzMwLDcgQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjpjcmVhdGVXaW5kb3coRnJhbWVMbwogICAg
IC8vIEZJWE1FOiBTZXR0aW5nIHRoZSByZWZlcnJlciBzaG91bGQgYmUgdGhlIGNhbGxlcidzIHJl
c3BvbnNpYmlsaXR5LgogICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdFdpdGhSZWZlcnJlciA9
IHJlcXVlc3Q7CiAgICAgcmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3QoKS5zZXRI
VFRQUmVmZXJyZXIobV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICByZXF1ZXN0V2l0aFJlZmVycmVy
LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBPcmlnaW4ob3V0Z29pbmdPcmlnaW4oKSk7CiAKICAg
ICBQYWdlKiBvbGRQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghb2xkUGFnZSkKQEAg
LTM5OSw2ICs0MDAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBGcmFt
CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBjb3B5ID0gcmVxdWVzdDsKICAgICBpZiAoY29weS5yZXNv
dXJjZVJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKS5pc0VtcHR5KCkpCiAgICAgICAgIGNvcHkucmVz
b3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1fb3V0Z29pbmdSZWZlcnJlcik7CisgICAg
Y29weS5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQT3JpZ2luKG91dGdvaW5nT3JpZ2luKCkpOwog
CiAgICAgbG9hZEZyYW1lUmVxdWVzdFdpdGhGb3JtQW5kVmFsdWVzKGNvcHksIGxvY2tIaXN0b3J5
LCBldmVudCwgMCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKSk7CiB9CkBAIC01NDUsNiArNTQ3
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFyKgogCiAgICAgaWYg
KCFtX291dGdvaW5nUmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICBmcmFtZVJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1fb3V0Z29pbmdSZWZlcnJlcik7CisgICAg
ZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBPcmlnaW4ob3V0Z29pbmdPcmln
aW4oKSk7CiAKICAgICBmcmFtZVJlcXVlc3Quc2V0RnJhbWVOYW1lKHRhcmdldC5pc0VtcHR5KCkg
PyBtX2ZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVGFyZ2V0KCkgOiB0YXJnZXQpOwogCkBAIC0xNzg0
LDYgKzE3ODcsMTUgQEAgU3RyaW5nIEZyYW1lTG9hZGVyOjpvdXRnb2luZ1JlZmVycmVyKCkgYwog
ICAgIHJldHVybiBtX291dGdvaW5nUmVmZXJyZXI7CiB9CiAKK1N0cmluZyBGcmFtZUxvYWRlcjo6
b3V0Z29pbmdPcmlnaW4oKSBjb25zdAoreworICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpKQor
ICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9I
VFRQT3JpZ2luKCk7CisKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVFbXB0eSgpOworICAgIHJldHVybiBvcmlnaW4tPnRvSFRUUE9yaWdp
bigpOworfQorCiBGcmFtZSogRnJhbWVMb2FkZXI6Om9wZW5lcigpCiB7CiAgICAgcmV0dXJuIG1f
b3BlbmVyOwpAQCAtMjEyNCw4ICsyMTM2LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
Y29uc3QgS1VSTCYgbmUKICAgICBib29sIGlzRm9ybVN1Ym1pc3Npb24gPSBmb3JtU3RhdGU7CiAg
ICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKLSAgICBpZiAoIXJlZmVy
cmVyLmlzRW1wdHkoKSkKKyAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkgewogICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CisgICAgICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gcmVmZXJyZXJPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhyZWZlcnJlcik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE9yaWdpbihyZWZlcnJlck9yaWdp
bi0+dG9IVFRQT3JpZ2luKCkpOworICAgIH0KICAgICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChy
ZXF1ZXN0LCB0cnVlLCBldmVudCB8fCBpc0Zvcm1TdWJtaXNzaW9uKTsKICAgICBpZiAobmV3TG9h
ZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJlbG9hZCkKICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBv
bGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7CkBAIC0zNDA1LDYgKzM0MjAsMTkgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlcwogICAgIAogICAgIGlmIChtYWlu
UmVzb3VyY2UpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEFjY2VwdCgiYXBwbGljYXRpb24veG1s
LGFwcGxpY2F0aW9uL3hodG1sK3htbCx0ZXh0L2h0bWw7cT0wLjksdGV4dC9wbGFpbjtxPTAuOCxp
bWFnZS9wbmcsKi8qO3E9MC41Iik7CisKKyAgICAvLyBNYWtlIHN1cmUgd2Ugc2VuZCB0aGUgT3Jp
Z2luIGhlYWRlciBwcm9wZXJseS4KKyAgICBpZiAocmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gIkdF
VCIgfHwgcmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gIkhFQUQiKSB7CisgICAgICAgIC8vIERvbid0
IHNlbmQgYW4gT3JpZ2luIGhlYWRlciBmb3IgR0VUIG9yIEhFQUQgdG8gYXZvaWQgcHJpdmFjeSBp
c3N1ZXMuCisgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQT3JpZ2luKCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gRm9yIG90aGVyIG1ldGhvZHMsIGFsd2F5cyBzZW5kIGFuIE9yaWdpbiBoZWFk
ZXIgc28gdGhlIHNlcnZlciBrbm93cworICAgICAgICAvLyB3ZSBzdXBwb3J0IHRoaXMgZmVhdHVy
ZS4KKyAgICAgICAgaWYgKHJlcXVlc3QuaHR0cE9yaWdpbigpLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBlbXB0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVFbXB0eSgpOworICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQT3JpZ2luKGVtcHR5
T3JpZ2luLT50b0hUVFBPcmlnaW4oKSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgRnJh
bWVMb2FkZXI6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTM0MzIsMTUgKzM0NjAsMTcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IAogICAgIGNvbnN0IEtVUkwmIHVybCA9IGluUmVx
dWVzdC51cmwoKTsKICAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaW5SZXF1ZXN0Lmh0
dHBCb2R5KCk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IGluUmVxdWVzdC5odHRw
Q29udGVudFR5cGUoKTsKKyAgICBTdHJpbmcgb3JpZ2luID0gaW5SZXF1ZXN0Lmh0dHBPcmlnaW4o
KTsKIAogICAgIFJlc291cmNlUmVxdWVzdCB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0KHVybCk7ICAg
IAotICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIHRy
dWUsIHRydWUpOwogCiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIHdvcmtp
bmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKKyAgICB3b3JraW5n
UmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBPcmlnaW4ob3JpZ2luKTsKICAgICB3b3JraW5nUmVzb3Vy
Y2VSZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKICAgICB3b3JraW5nUmVzb3VyY2VSZXF1
ZXN0LnNldEhUVFBCb2R5KGZvcm1EYXRhKTsKICAgICB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LnNl
dEhUVFBDb250ZW50VHlwZShjb250ZW50VHlwZSk7CisgICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVl
c3Qod29ya2luZ1Jlc291cmNlUmVxdWVzdCwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICBOYXZpZ2F0aW9u
QWN0aW9uIGFjdGlvbih1cmwsIEZyYW1lTG9hZFR5cGVTdGFuZGFyZCwgdHJ1ZSwgZXZlbnQpOwog
CkBAIC0zNDgyLDYgKzM1MTIsNyBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTCiAgICAgCiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIGluaXRp
YWxSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CisgICAgaW5pdGlhbFJlcXVlc3Qu
c2V0SFRUUE9yaWdpbihvdXRnb2luZ09yaWdpbigpKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQogICAgICAgICBpbml0aWFsUmVxdWVzdC5zZXRNYWluRG9jdW1lbnRV
UkwocGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0
KCkudXJsKCkpOwpAQCAtNDI5NSw4ICs0MzI2LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEl0
ZW0oSGlzdG9yeUl0ZW0qIAogICAgICAgICBpZiAoIWluUGFnZUNhY2hlKSB7CiAgICAgICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChpdGVtVVJMKTsKIAotICAgICAgICAgICAgYWRkRXh0
cmFGaWVsZHNUb1JlcXVlc3QocmVxdWVzdCwgdHJ1ZSwgZm9ybURhdGEpOwotCiAgICAgICAgICAg
ICAvLyBJZiB0aGlzIHdhcyBhIHJlcG9zdCB0aGF0IGZhaWxlZCB0aGUgcGFnZSBjYWNoZSwgd2Ug
bWlnaHQgdHJ5IHRvIHJlcG9zdCB0aGUgZm9ybS4KICAgICAgICAgICAgIE5hdmlnYXRpb25BY3Rp
b24gYWN0aW9uOwogICAgICAgICAgICAgaWYgKGZvcm1EYXRhKSB7CkBAIC00MzA3LDYgKzQzMzYs
OCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkSXRlbShIaXN0b3J5SXRlbSogCiAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIoaXRlbS0+Zm9ybVJlZmVycmVyKCkpOwogICAg
ICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEpOwogICAgICAgICAgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKGl0ZW0tPmZvcm1Db250ZW50VHlwZSgpKTsK
KyAgICAgICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoaXRlbS0+Zm9ybVJlZmVycmVyKCkpOwor
ICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE9yaWdpbihzZWN1cml0eU9yaWdpbi0+dG9I
VFRQT3JpZ2luKCkpOwogICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2xpZ2h0
IGhhY2sgdG8gdGVzdCBpZiB0aGUgTlNVUkwgY2FjaGUgY29udGFpbnMgdGhlIHBhZ2Ugd2UncmUg
Z29pbmcgdG8uCiAgICAgICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBrbm93IHRoaXMgYmVmb3Jl
IHRhbGtpbmcgdG8gdGhlIHBvbGljeSBkZWxlZ2F0ZSwgc2luY2UgaXQgYWZmZWN0cyB3aGV0aGVy
IApAQCAtNDM0Nyw2ICs0Mzc4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9y
eUl0ZW0qIAogICAgICAgICAgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24oaXRlbU9y
aWdpbmFsVVJMLCBsb2FkVHlwZSwgZmFsc2UpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAg
ICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChyZXF1ZXN0LCB0cnVlLCBmb3JtRGF0YSk7CiAgICAg
ICAgICAgICBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBsb2FkVHlw
ZSwgMCk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9u
IDM2NzYwKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTkzLDYgKzE5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc1Jl
bG9hZGluZygpIGNvbnN0OwogICAgICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKICAgICAg
ICAgU3RyaW5nIG91dGdvaW5nUmVmZXJyZXIoKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIG91dGdv
aW5nT3JpZ2luKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgbG9hZEVtcHR5RG9jdW1lbnRTeW5jaHJv
bm91c2x5KCk7CiAKICAgICAgICAgRG9jdW1lbnRMb2FkZXIqIGFjdGl2ZURvY3VtZW50TG9hZGVy
KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biAzNjc2MCkKKysrIFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQCBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBT
dWJyZXNvdXJjCiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICBl
bHNlIGlmICghcmVxdWVzdC5odHRwUmVmZXJyZXIoKSkKICAgICAgICAgbmV3UmVxdWVzdC5zZXRI
VFRQUmVmZXJyZXIoZmwtPm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgbmV3UmVxdWVzdC5zZXRI
VFRQT3JpZ2luKGZsLT5vdXRnb2luZ09yaWdpbigpKTsKIAogICAgIC8vIFVzZSB0aGUgb3JpZ2lu
YWwgcmVxdWVzdCdzIGNhY2hlIHBvbGljeSBmb3IgdHdvIHJlYXNvbnM6CiAgICAgLy8gMS4gRm9y
IFBPU1QgcmVxdWVzdHMsIHdlIG11dGF0ZSB0aGUgY2FjaGUgcG9saWN5IGZvciB0aGUgbWFpbiBy
ZXNvdXJjZSwKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gMzY3NjApCisrKyBXZWJDb3JlL2xv
YWRlci9sb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjM5LDYgKzI0MCw3IEBAIHZvaWQgTG9hZGVy
OjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cygKICAgICAgICAgaWYgKChyZWZlcnJlci5wcm90
b2NvbElzKCJodHRwIikgfHwgcmVmZXJyZXIucHJvdG9jb2xJcygiaHR0cHMiKSkgJiYgcmVmZXJy
ZXIucGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlZmVycmVyLnNldFBhdGgoIi8iKTsK
ICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlci5zdHJpbmco
KSk7CisgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQT3JpZ2luKGRvY0xvYWRlci0+ZG9j
KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvSFRUUE9yaWdpbigpKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChyZXNvdXJjZUlzQ2FjaGVWYWxpZGF0b3IpIHsKICAgICAgICAgICAgIENhY2hlZFJlc291
cmNlKiByZXNvdXJjZVRvUmV2YWxpZGF0ZSA9IHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnJl
c291cmNlVG9SZXZhbGlkYXRlKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3Jp
Z2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNw
cAkocmV2aXNpb24gMzY3NjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCwxNSBAQCBTdHJpbmcgU2VjdXJpdHlPcmln
aW46OnRvU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwog
fQogCitTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvSFRUUE9yaWdpbigpIGNvbnN0Cit7CisgICAg
U3RyaW5nIG9yaWdpbiA9IHRvU3RyaW5nKCk7CisgICAgaWYgKG9yaWdpbi5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiAibnVsbCI7CisKKyAgICByZXR1cm4gb3JpZ2luOworfQorCiBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmIG9yaWdpblN0cmluZykKIHsKICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShLVVJMKG9yaWdpblN0cmluZykpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0
eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4u
aAkocmV2aXNpb24gMzY3NjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBTZWN1cml0eU9yaWdpbiBpcyByZXByZXNlbnRlZCB3aXRoIHRoZSBudWxsIHN0
cmluZy4KICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKKyAgICAgICAgLy8gQ29u
dmVydCB0aGlzIFNlY3VyaXR5T3JpZ2luIGludG8gYSBzdHJpbmcgZm9yIHVzZSBpbiB0aGUgSFRU
UCBPcmlnaW4KKyAgICAgICAgLy8gaGVhZGVyLiAgVGhpcyBpcyBzaW1pbGFyIHRvIHRvU3RyaW5n
KCksIGV4Y2VwdCB0aGF0IHRoZSBlbXB0eQorICAgICAgICAvLyBTZWN1cml0eU9yaWdpbiBpcyBy
ZXByZXNldG5lZCBhcyB0aGUgc3RyaW5nICJudWxsIi4KKyAgICAgICAgU3RyaW5nIHRvSFRUUE9y
aWdpbigpIGNvbnN0OworCiAgICAgICAgIC8vIFNlcmlhbGl6ZSB0aGUgc2VjdXJpdHkgb3JpZ2lu
IGZvciBzdG9yYWdlIGluIHRoZSBkYXRhYmFzZS4gVGhpcyBmb3JtYXQgaXMKICAgICAgICAgLy8g
ZGVwcmVjYXRlZCBhbmQgc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgY29tcGF0aWJpbGl0eSB3aXRo
IG9sZCBkYXRhYmFzZXM7CiAgICAgICAgIC8vIHVzZSB0b1N0cmluZygpIGFuZCBjcmVhdGVGcm9t
U3RyaW5nKCkgaW5zdGVhZC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuaAkocmV2aXNpb24gMzY3NjApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3
OCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SFRUUFJlZmVycmVy
KGNvbnN0IFN0cmluZyYgaHR0cFJlZmVycmVyKSB7IHNldEhUVFBIZWFkZXJGaWVsZCgiUmVmZXJl
ciIsIGh0dHBSZWZlcnJlcik7IH0KICAgICAgICAgdm9pZCBjbGVhckhUVFBSZWZlcnJlcigpIHsg
bV9odHRwSGVhZGVyRmllbGRzLnJlbW92ZSgiUmVmZXJlciIpOyB9CiAgICAgICAgIAorICAgICAg
ICBTdHJpbmcgaHR0cE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGh0dHBIZWFkZXJGaWVsZCgiT3Jp
Z2luIik7IH0KKyAgICAgICAgdm9pZCBzZXRIVFRQT3JpZ2luKGNvbnN0IFN0cmluZyYgaHR0cE9y
aWdpbikgeyBzZXRIVFRQSGVhZGVyRmllbGQoIk9yaWdpbiIsIGh0dHBPcmlnaW4pOyB9CisgICAg
ICAgIHZvaWQgY2xlYXJIVFRQT3JpZ2luKCkgeyBtX2h0dHBIZWFkZXJGaWVsZHMucmVtb3ZlKCJP
cmlnaW4iKTsgfQorCiAgICAgICAgIFN0cmluZyBodHRwVXNlckFnZW50KCkgY29uc3QgeyByZXR1
cm4gaHR0cEhlYWRlckZpZWxkKCJVc2VyLUFnZW50Iik7IH0KICAgICAgICAgdm9pZCBzZXRIVFRQ
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgaHR0cFVzZXJBZ2VudCkgeyBzZXRIVFRQSGVhZGVyRmll
bGQoIlVzZXItQWdlbnQiLCBodHRwVXNlckFnZW50KTsgfQogCkluZGV4OiBXZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCShyZXZpc2lvbiAzNjc2MCkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTY2LDE0ICs1NjYsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjptYWtlQ3Jvc3NTaXRlQWNjZXNzCiAgICAgICAgIG1ha2VDcm9zc1NpdGVBY2Nlc3NSZXF1ZXN0
V2l0aFByZWZsaWdodChlYyk7CiB9CiAKLVN0cmluZyBYTUxIdHRwUmVxdWVzdDo6YWNjZXNzQ29u
dHJvbE9yaWdpbigpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIGFjY2Vzc0NvbnRyb2xPcmlnaW4gPSBt
X2RvYy0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKLSAgICBpZiAoYWNjZXNzQ29udHJv
bE9yaWdpbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAibnVsbCI7Ci0gICAgcmV0dXJuIGFj
Y2Vzc0NvbnRyb2xPcmlnaW47Ci19Ci0KIHZvaWQgWE1MSHR0cFJlcXVlc3Q6Om1ha2VTaW1wbGVD
cm9zc1NpdGVBY2Nlc3NSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChp
c1NpbXBsZUNyb3NzU2l0ZUFjY2Vzc1JlcXVlc3QoKSk7CkBAIC01ODUsNyArNTc3LDcgQEAgdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6bWFrZVNpbXBsZUNyb3NzU2l0ZQogICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKG1fbWV0aG9kKTsKICAg
ICByZXF1ZXN0LnNldEFsbG93SFRUUENvb2tpZXMobV9pbmNsdWRlQ3JlZGVudGlhbHMpOwotICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJPcmlnaW4iLCBhY2Nlc3NDb250cm9sT3JpZ2lu
KCkpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJPcmlnaW4iLCBtX2RvYy0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9IVFRQT3JpZ2luKCkpOwogCiAgICAgaWYgKG1fcmVxdWVzdEhlYWRl
cnMuc2l6ZSgpID4gMCkKICAgICAgICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGRzKG1fcmVx
dWVzdEhlYWRlcnMpOwpAQCAtNjE2LDcgKzYwOCw3IEBAIHN0YXRpYyBib29sIGNhblNraXBQcmVs
aWdodChQcmVmbGlnaHRSZXMKIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6bWFrZUNyb3NzU2l0ZUFj
Y2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFN0cmlu
ZyBvcmlnaW4gPSBhY2Nlc3NDb250cm9sT3JpZ2luKCk7CisgICAgU3RyaW5nIG9yaWdpbiA9IG1f
ZG9jLT5zZWN1cml0eU9yaWdpbigpLT50b0hUVFBPcmlnaW4oKTsKICAgICBLVVJMIHVybCA9IG1f
dXJsOwogICAgIHVybC5zZXRVc2VyKFN0cmluZygpKTsKICAgICB1cmwuc2V0UGFzcyhTdHJpbmco
KSk7CkBAIC03MDQsNyArNjk2LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6aGFuZGxlQXN5bmNo
cm9ub3VzUAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5z
ZXRIVFRQTWV0aG9kKG1fbWV0aG9kKTsKICAgICByZXF1ZXN0LnNldEFsbG93SFRUUENvb2tpZXMo
bV9pbmNsdWRlQ3JlZGVudGlhbHMpOwotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJP
cmlnaW4iLCBhY2Nlc3NDb250cm9sT3JpZ2luKCkpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKCJPcmlnaW4iLCBtX2RvYy0+c2VjdXJpdHlPcmlnaW4oKS0+dG9IVFRQT3JpZ2luKCkp
OwogCiAgICAgaWYgKG1fcmVxdWVzdEhlYWRlcnMuc2l6ZSgpID4gMCkKICAgICAgICAgcmVxdWVz
dC5hZGRIVFRQSGVhZGVyRmllbGRzKG1fcmVxdWVzdEhlYWRlcnMpOwpAQCAtMTIyOCw3ICsxMjIw
LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlUAogICAgIGlmICgh
cGFyc2VBY2Nlc3NDb250cm9sTWF4QWdlKHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQWNjZXNz
LUNvbnRyb2wtTWF4LUFnZSIpLCBleHBpcnlEZWx0YSkpCiAgICAgICAgIGV4cGlyeURlbHRhID0g
NTsKIAotICAgIGFwcGVuZFByZWZsaWdodFJlc3VsdENhY2hlRW50cnkoYWNjZXNzQ29udHJvbE9y
aWdpbigpLCBtX3VybCwgZXhwaXJ5RGVsdGEsIG1faW5jbHVkZUNyZWRlbnRpYWxzLCBtZXRob2Rz
LnJlbGVhc2UoKSwgaGVhZGVycy5yZWxlYXNlKCkpOworICAgIGFwcGVuZFByZWZsaWdodFJlc3Vs
dENhY2hlRW50cnkobV9kb2MtPnNlY3VyaXR5T3JpZ2luKCktPnRvSFRUUE9yaWdpbigpLCBtX3Vy
bCwgZXhwaXJ5RGVsdGEsIG1faW5jbHVkZUNyZWRlbnRpYWxzLCBtZXRob2RzLnJlbGVhc2UoKSwg
aGVhZGVycy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpyZWNlaXZlZENh
bmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBjaGFsbGVuZ2UpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNjc2MCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDA4LTA5LTIyICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBu
ZXcgT3JpZ2luIGhlYWRlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA3OTIKKworICAgICAgICBDb2xsaW4gSmFja3NvbiA8Y29sbGluakB3ZWJr
aXQub3JnPiBhbHNvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcGF0Y2guCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29y
aWdpbkhlYWRlcjogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5I
ZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWRh
dGEuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFk
ZXIvb3JpZ2luLWhlYWRlci1mb3ItZW1wdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1lbXB0
eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRl
ci9vcmlnaW4taGVhZGVyLWZvci1nZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1nZXQuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3Jp
Z2luLWhlYWRlci1mb3ItaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1odHRwcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmln
aW4taGVhZGVyLWZvci1wb3N0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItcG9zdC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4t
aGVhZGVyLWZvci14bWxodHRwcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLXhtbGh0
dHByZXF1ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvb3Jp
Z2luSGVhZGVyL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9vcmlnaW5IZWFkZXIvcmVzb3VyY2VzL29yaWdpbi1oZWFkZXItcG9zdC10by1odHRwLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL3Jlc291
cmNlcy9wcmludC1vcmlnaW4uY2dpOiBBZGRlZC4KKwogMjAwOC0wOS0yMSAgR2Fib3IgTG9raSAg
PGxva2lAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGFuZCB0d2Vha2VkIGJ5
IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmln
aW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZGF0YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhl
YWRlci1mb3ItZGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1kYXRhLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorSFRUUF9PUklHSU46IG51bGwK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdp
bi1oZWFkZXItZm9yLWRhdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1kYXRhLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRl
ci9vcmlnaW4taGVhZGVyLWZvci1kYXRhLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9Cit3aW5kb3cubG9jYXRpb24gPSAn
ZGF0YTp0ZXh0L2h0bWwsXAorPGZvcm0gYWN0aW9uPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvb3JpZ2luSGVhZGVyL3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpIlwKKyAgICAgIG1l
dGhvZD0iUE9TVCI+XAorPC9mb3JtPlwKKzxzY3JpcHQ+ZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0
KCk7PC9zY3InICsgJ2lwdD4nOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4K
KzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWRhdGEuaHRtbApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck5hbWU6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWVtcHR5LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdp
bkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1lbXB0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4t
aGVhZGVyLWZvci1lbXB0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAK
K0hUVFBfT1JJR0lOOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWVtcHR5Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5I
ZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZW1wdHkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9y
LWVtcHR5Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRv
d3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NX
aGVuQ29tcGxldGUodHJ1ZSk7Cit9Cit3aW5kb3cubmFtZSA9ICdvcGVuZXInOwordyA9IHdpbmRv
dy5vcGVuKCIiKTsKK3cuZG9jdW1lbnQub3BlbigpOwordy5kb2N1bWVudC53cml0ZSgnXAorPGZv
cm0gYWN0aW9uPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL3Jl
c291cmNlcy9wcmludC1vcmlnaW4uY2dpIlwKKyAgICAgIHRhcmdldD0ib3BlbmVyIlwKKyAgICAg
IG1ldGhvZD0iUE9TVCI+XAorPC9mb3JtPlwKKzxzY3JpcHQ+ZG9jdW1lbnQuZm9ybXNbMF0uc3Vi
bWl0KCk7PC9zY3InICsgJ2lwdD4nKTsKK3cuZG9jdW1lbnQuY2xvc2UoKTsKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVy
LWZvci1lbXB0eS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2lu
LWhlYWRlci1mb3ItZ2V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1nZXQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZ2V0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSBAQAorSFRUUF9PUklHSU46CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1nZXQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRl
ci9vcmlnaW4taGVhZGVyLWZvci1nZXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWdldC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxmb3JtIGFjdGlvbj0icmVz
b3VyY2VzL3ByaW50LW9yaWdpbi5jZ2kiCisgICAgICBtZXRob2Q9IkdFVCI+Cis8L2Zvcm0+Cis8
c2NyaXB0PmRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1nZXQuaHRtbApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6
IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWh0dHBzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRl
ci9vcmlnaW4taGVhZGVyLWZvci1odHRwcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVy
LWZvci1odHRwcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK0hUVFBf
T1JJR0lOOiBodHRwczovLzEyNy4wLjAuMTo4NDQzCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1odHRwcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVy
L29yaWdpbi1oZWFkZXItZm9yLWh0dHBzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1odHRw
cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworfQord2luZG93LmxvY2F0aW9uID0gImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMv
c2VjdXJpdHkvb3JpZ2luSGVhZGVyL3Jlc291cmNlcy9vcmlnaW4taGVhZGVyLXBvc3QtdG8taHR0
cC5odG1sIjsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdp
bkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1odHRwcy5odG1sCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3Zu
OmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItcG9zdC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3Jp
Z2luLWhlYWRlci1mb3ItcG9zdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1w
b3N0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorSFRUUF9PUklHSU46
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItcG9zdC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1o
ZWFkZXItZm9yLXBvc3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLXBvc3QuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Zm9ybSBhY3Rpb249InJlc291cmNlcy9w
cmludC1vcmlnaW4uY2dpIgorICAgICAgbWV0aG9kPSJQT1NUIj4KKzwvZm9ybT4KKzxzY3JpcHQ+
ZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2lu
SGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLXBvc3QuaHRtbApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjpl
eGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
b3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLXhtbGh0dHByZXF1ZXN0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhl
YWRlci9vcmlnaW4taGVhZGVyLWZvci14bWxodHRwcmVxdWVzdC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9v
cmlnaW4taGVhZGVyLWZvci14bWxodHRwcmVxdWVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNiBAQAorR0VUIHJlc291cmNlcy9wcmludC1vcmlnaW4uY2dpIC0tPiBIVFRQ
X09SSUdJTjogaHR0cDovLzEyNy4wLjAuMTo4MDAwIAorUE9TVCByZXNvdXJjZXMvcHJpbnQtb3Jp
Z2luLmNnaSAtLT4gSFRUUF9PUklHSU46IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCAKK0RFTEVURSBy
ZXNvdXJjZXMvcHJpbnQtb3JpZ2luLmNnaSAtLT4gSFRUUF9PUklHSU46IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCAKK0dFVCBodHRwczovLzEyNy4wLjAuMTo4NDQzL3NlY3VyaXR5L29yaWdpbkhlYWRl
ci9yZXNvdXJjZXMvcHJpbnQtb3JpZ2luLmNnaSAtLT4gSFRUUF9PUklHSU46IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCAKK1BPU1QgaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9zZWN1cml0eS9vcmlnaW5I
ZWFkZXIvcmVzb3VyY2VzL3ByaW50LW9yaWdpbi5jZ2kgLS0+IEhUVFBfT1JJR0lOOiBodHRwOi8v
MTI3LjAuMC4xOjgwMDAgCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
b3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLXhtbGh0dHByZXF1ZXN0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3Jp
Z2luLWhlYWRlci1mb3IteG1saHR0cHJlcXVlc3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9y
LXhtbGh0dHByZXF1ZXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KK2Z1bmN0aW9uIHJlcXVl
c3QobWV0aG9kLCB1cmwpIHsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cisg
ICAgeGhyLm9wZW4obWV0aG9kLCB1cmwsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAg
ICBkb2N1bWVudC53cml0ZShtZXRob2QgKyAiICIgKyB1cmwgKyAiIC0tPiAiICsgeGhyLnJlc3Bv
bnNlVGV4dCArICI8YnIvPiIpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQ+CityZXF1ZXN0KCJHRVQiLCAicmVzb3VyY2VzL3ByaW50LW9yaWdpbi5jZ2kiKTsKK3JlcXVl
c3QoIlBPU1QiLCAicmVzb3VyY2VzL3ByaW50LW9yaWdpbi5jZ2kiKTsKK3JlcXVlc3QoIkRFTEVU
RSIsICJyZXNvdXJjZXMvcHJpbnQtb3JpZ2luLmNnaSIpOworcmVxdWVzdCgiR0VUIiwgImh0dHBz
Oi8vMTI3LjAuMC4xOjg0NDMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL3Jlc291cmNlcy9wcmludC1v
cmlnaW4uY2dpIik7CityZXF1ZXN0KCJQT1NUIiwgImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvc2Vj
dXJpdHkvb3JpZ2luSGVhZGVyL3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpIik7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvb3JpZ2luSGVhZGVyL3Jlc291cmNlcy9vcmlnaW4taGVhZGVyLXBvc3QtdG8taHR0cC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVh
ZGVyL3Jlc291cmNlcy9vcmlnaW4taGVhZGVyLXBvc3QtdG8taHR0cC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvcmVzb3Vy
Y2VzL29yaWdpbi1oZWFkZXItcG9zdC10by1odHRwLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNCBAQAorPGZvcm0gYWN0aW9uPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvb3Jp
Z2luSGVhZGVyL3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpIgorICAgICAgbWV0aG9kPSJQT1NU
Ij4KKzwvZm9ybT4KKzxzY3JpcHQ+ZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7PC9zY3JpcHQ+
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29y
aWdpbkhlYWRlci9yZXNvdXJjZXMvb3JpZ2luLWhlYWRlci1wb3N0LXRvLWh0dHAuaHRtbApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk5hbWU6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVh
ZGVyL3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvcmVzb3VyY2VzL3ByaW50LW9yaWdp
bi5jZ2kJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QK
K3VzZSBzdHJpY3Q7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvaHRtbFxuIjsKK3ByaW50
ICJBY2Nlc3MtQ29udHJvbC1PcmlnaW46ICpcbiI7CitwcmludCAiQ2FjaGUtQ29udHJvbDogbm8t
c3RvcmVcblxuIjsKKworcHJpbnQgIkhUVFBfT1JJR0lOOiAiIC4gJEVOVnsiSFRUUF9PUklHSU4i
fSAuICJcbiI7CitwcmludCA8PERPTkUKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKzwvc2NyaXB0PgorRE9ORQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvcmVzb3VyY2VzL3ByaW50LW9yaWdp
bi5jZ2kKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKCg==
</data>
<flag name="review"
          id="10633"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23743</attachid>
            <date>2008-09-24 02:04:37 -0700</date>
            <delta_ts>2008-09-24 02:04:37 -0700</delta_ts>
            <desc>baseline for XHR origin behavior</desc>
            <filename>xhr-baseline.patch</filename>
            <type>text/plain</type>
            <size>13523</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSAyYjgwMjNkZTA2ZWZkNTYwZmRkYjcyMjkzYWYwNGVjZTdmOTA0YzVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogV2VkLCAyNCBTZXAgMjAwOCAwMDoyMToxNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFhIUiBi
YXNlbGluZQoKLS0tCiAuLi5pZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tZ2V0LWFzeW5jLWV4cGVj
dGVkLnR4dCB8ICAgIDQgKysrCiAuLi4vb3JpZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tZ2V0LWFz
eW5jLmh0bWwgICAgICB8ICAgMjQgKysrKysrKysrKysrKysrKysrKysKIC4uLnJpZ2luLWhlYWRl
ci1jcm9zcy1vcmlnaW4tZ2V0LXN5bmMtZXhwZWN0ZWQudHh0IHwgICAgNCArKysKIC4uLi9vcmln
aW4taGVhZGVyLWNyb3NzLW9yaWdpbi1nZXQtc3luYy5odG1sICAgICAgIHwgICAxOCArKysrKysr
KysrKysrKysKIC4uLmdpbi1oZWFkZXItY3Jvc3Mtb3JpZ2luLXBvc3QtYXN5bmMtZXhwZWN0ZWQu
dHh0IHwgICAgNCArKysKIC4uLi9vcmlnaW4taGVhZGVyLWNyb3NzLW9yaWdpbi1wb3N0LWFzeW5j
Lmh0bWwgICAgIHwgICAyNCArKysrKysrKysrKysrKysrKysrKwogLi4uaWdpbi1oZWFkZXItY3Jv
c3Mtb3JpZ2luLXBvc3Qtc3luYy1leHBlY3RlZC50eHQgfCAgICA0ICsrKwogLi4uL29yaWdpbi1o
ZWFkZXItY3Jvc3Mtb3JpZ2luLXBvc3Qtc3luYy5odG1sICAgICAgfCAgIDE4ICsrKysrKysrKysr
KysrKwogLi4ucmlnaW4taGVhZGVyLXNhbWUtb3JpZ2luLWdldC1hc3luYy1leHBlY3RlZC50eHQg
fCAgICA0ICsrKwogLi4uL29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tZ2V0LWFzeW5jLmh0bWwg
ICAgICAgfCAgIDI0ICsrKysrKysrKysrKysrKysrKysrCiAuLi5vcmlnaW4taGVhZGVyLXNhbWUt
b3JpZ2luLWdldC1zeW5jLWV4cGVjdGVkLnR4dCB8ICAgIDQgKysrCiAuLi4vb3JpZ2luLWhlYWRl
ci1zYW1lLW9yaWdpbi1nZXQtc3luYy5odG1sICAgICAgICB8ICAgMTggKysrKysrKysrKysrKysr
CiAuLi5pZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LWFzeW5jLWV4cGVjdGVkLnR4dCB8ICAg
IDQgKysrCiAuLi4vb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LWFzeW5jLmh0bWwgICAg
ICB8ICAgMjQgKysrKysrKysrKysrKysrKysrKysKIC4uLnJpZ2luLWhlYWRlci1zYW1lLW9yaWdp
bi1wb3N0LXN5bmMtZXhwZWN0ZWQudHh0IHwgICAgNCArKysKIC4uLi9vcmlnaW4taGVhZGVyLXNh
bWUtb3JpZ2luLXBvc3Qtc3luYy5odG1sICAgICAgIHwgICAxOCArKysrKysrKysrKysrKysKIDE2
IGZpbGVzIGNoYW5nZWQsIDIwMCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2lu
LWhlYWRlci1jcm9zcy1vcmlnaW4tZ2V0LWFzeW5jLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUg
MTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRl
ci1jcm9zcy1vcmlnaW4tZ2V0LWFzeW5jLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItY3Jvc3Mtb3JpZ2lu
LWdldC1zeW5jLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tZ2V0LXN5
bmMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tcG9zdC1hc3luYy1leHBlY3RlZC50
eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L29yaWdpbi1oZWFkZXItY3Jvc3Mtb3JpZ2luLXBvc3QtYXN5bmMuaHRtbAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhl
YWRlci1jcm9zcy1vcmlnaW4tcG9zdC1zeW5jLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1j
cm9zcy1vcmlnaW4tcG9zdC1zeW5jLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tZ2V0
LWFzeW5jLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1nZXQtYXN5bmMu
aHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1nZXQtc3luYy1leHBlY3RlZC50eHQKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29y
aWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tZ2V0LXN5bmMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1l
LW9yaWdpbi1wb3N0LWFzeW5jLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdp
bi1wb3N0LWFzeW5jLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tcG9zdC1zeW5jLWV4
cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LXN5bmMuaHRtbAoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhl
YWRlci1jcm9zcy1vcmlnaW4tZ2V0LWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tZ2V0LWFz
eW5jLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWY5
YTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9vcmlnaW4taGVhZGVyLWNyb3NzLW9yaWdpbi1nZXQtYXN5bmMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorUEFTUzogQ3Jvc3MtZG9tYWluIGFjY2VzcyBhbGxvd2VkLgorSFRUUF9P
UklHSU46IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMAorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tZ2V0
LWFzeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdp
bi1oZWFkZXItY3Jvc3Mtb3JpZ2luLWdldC1hc3luYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjUzZmJkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItY3Jvc3Mtb3JpZ2luLWdldC1h
c3luYy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGJvZHk+Cis8cHJlIGlkPSJjb25z
b2xlIj48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKTsKK3hoci5vcGVuKCdHRVQnLCAnaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1hY2Nl
c3MtY29udHJvbC1vcmlnaW4taGVhZGVyLmNnaScsIHRydWUpOworeGhyLm9ubG9hZCA9IGZ1bmN0
aW9uICgpIHsKKyAgICBsb2coeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQoreGhyLnNlbmQobnVsbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhl
YWRlci1jcm9zcy1vcmlnaW4tZ2V0LXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLWNyb3NzLW9yaWdpbi1nZXQtc3lu
Yy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVmOWE1
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3Qvb3JpZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tZ2V0LXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorUEFTUzogQ3Jvc3MtZG9tYWluIGFjY2VzcyBhbGxvd2VkLgorSFRUUF9PUklH
SU46IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMAorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tZ2V0LXN5
bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhl
YWRlci1jcm9zcy1vcmlnaW4tZ2V0LXN5bmMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jODRhM2VlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLWNyb3NzLW9yaWdpbi1nZXQtc3luYy5o
dG1sCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPGJvZHk+Cis8cHJlIGlkPSJjb25zb2xlIj48
L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobWVzc2FnZSArICdcbicpKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciB4aHIgPSBu
ZXcgWE1MSHR0cFJlcXVlc3QoKTsKK3hoci5vcGVuKCdHRVQnLCAnaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1h
Y2Nlc3MtY29udHJvbC1vcmlnaW4taGVhZGVyLmNnaScsIGZhbHNlKTsKK3hoci5zZW5kKG51bGwp
OworbG9nKHhoci5yZXNwb25zZVRleHQpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1o
ZWFkZXItY3Jvc3Mtb3JpZ2luLXBvc3QtYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLWNyb3NzLW9yaWdpbi1wb3N0
LWFzeW5jLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
NWY5YTVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9vcmlnaW4taGVhZGVyLWNyb3NzLW9yaWdpbi1wb3N0LWFzeW5jLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQgQEAKK1BBU1M6IENyb3NzLWRvbWFpbiBhY2Nlc3MgYWxsb3dlZC4KK0hU
VFBfT1JJR0lOOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAKKworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItY3Jvc3Mtb3JpZ2lu
LXBvc3QtYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
b3JpZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tcG9zdC1hc3luYy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjN2FmMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItY3Jvc3Mtb3JpZ2lu
LXBvc3QtYXN5bmMuaHRtbApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxib2R5PgorPHByZSBp
ZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cit4aHIub3BlbignUE9TVCcsICdodHRwOi8vbG9jYWxo
b3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFs
bG93LWFjY2Vzcy1jb250cm9sLW9yaWdpbi1oZWFkZXIuY2dpJywgdHJ1ZSk7Cit4aHIub25sb2Fk
ID0gZnVuY3Rpb24gKCkgeworICAgIGxvZyh4aHIucmVzcG9uc2VUZXh0KTsKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9Cit4aHIuc2VuZChudWxsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9v
cmlnaW4taGVhZGVyLWNyb3NzLW9yaWdpbi1wb3N0LXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLWNyb3NzLW9yaWdp
bi1wb3N0LXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg1ZjlhNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItY3Jvc3Mtb3JpZ2luLXBvc3Qtc3luYy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitQQVNTOiBDcm9zcy1kb21haW4gYWNjZXNzIGFsbG93ZWQu
CitIVFRQX09SSUdJTjogaHR0cDovLzEyNy4wLjAuMTo4MDAwCisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLWNyb3NzLW9y
aWdpbi1wb3N0LXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3Qvb3JpZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tcG9zdC1zeW5jLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmZWM4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1jcm9zcy1vcmln
aW4tcG9zdC1zeW5jLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPGh0bWw+Cis8Ym9keT4KKzxwcmUg
aWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgJ1xuJykpOworfQorCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KwordmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworeGhyLm9wZW4oJ1BPU1QnLCAnaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9hY2Nlc3MtY29udHJv
bC1iYXNpYy1hbGxvdy1hY2Nlc3MtY29udHJvbC1vcmlnaW4taGVhZGVyLmNnaScsIGZhbHNlKTsK
K3hoci5zZW5kKG51bGwpOworbG9nKHhoci5yZXNwb25zZVRleHQpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tZ2V0LWFzeW5jLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1l
LW9yaWdpbi1nZXQtYXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjUyZGIxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tZ2V0LWFzeW5jLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1BBU1M6IENyb3NzLWRvbWFpbiBhY2Nlc3MgYWxs
b3dlZC4KK0hUVFBfT1JJR0lOOiAKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tZ2V0LWFzeW5jLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXIt
c2FtZS1vcmlnaW4tZ2V0LWFzeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMDNlNmRhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1nZXQtYXN5bmMuaHRtbApA
QCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxib2R5PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1l
c3NhZ2UgKyAnXG4nKSk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7Cit4aHIub3BlbignR0VUJywgJ3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1h
bGxvdy1hY2Nlc3MtY29udHJvbC1vcmlnaW4taGVhZGVyLmNnaScsIHRydWUpOworeGhyLm9ubG9h
ZCA9IGZ1bmN0aW9uICgpIHsKKyAgICBsb2coeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQoreGhyLnNlbmQobnVsbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
b3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1nZXQtc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4t
Z2V0LXN5bmMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjUyZGIxYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tZ2V0LXN5bmMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorUEFTUzogQ3Jvc3MtZG9tYWluIGFjY2VzcyBhbGxvd2VkLgorSFRU
UF9PUklHSU46IAorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1nZXQtc3luYy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLXNhbWUtb3JpZ2lu
LWdldC1zeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNjNjk3
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1nZXQtc3luYy5odG1sCkBAIC0wLDAgKzEsMTgg
QEAKKzxodG1sPgorPGJvZHk+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25z
b2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICdcbicp
KTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KTsKK3hoci5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93
LWFjY2Vzcy1jb250cm9sLW9yaWdpbi1oZWFkZXIuY2dpJywgZmFsc2UpOworeGhyLnNlbmQobnVs
bCk7Citsb2coeGhyLnJlc3BvbnNlVGV4dCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2lu
LWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0
LWFzeW5jLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
MmRiMWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9vcmlnaW4taGVhZGVyLXNhbWUtb3JpZ2luLXBvc3QtYXN5bmMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorUEFTUzogQ3Jvc3MtZG9tYWluIGFjY2VzcyBhbGxvd2VkLgorSFRU
UF9PUklHSU46IAorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LWFzeW5jLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmln
aW4tcG9zdC1hc3luYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIx
OWY0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tcG9zdC1hc3luYy5odG1sCkBAIC0wLDAg
KzEsMjQgQEAKKzxodG1sPgorPGJvZHk+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSAr
ICdcbicpKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
K3hoci5vcGVuKCdQT1NUJywgJ3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1h
Y2Nlc3MtY29udHJvbC1vcmlnaW4taGVhZGVyLmNnaScsIHRydWUpOworeGhyLm9ubG9hZCA9IGZ1
bmN0aW9uICgpIHsKKyAgICBsb2coeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQoreGhyLnNlbmQobnVsbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2lu
LWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLXNhbWUtb3JpZ2luLXBvc3Qt
c3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJk
YjFiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LXN5bmMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorUEFTUzogQ3Jvc3MtZG9tYWluIGFjY2VzcyBhbGxvd2VkLgorSFRUUF9P
UklHSU46IAorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LXN5bmMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1w
b3N0LXN5bmMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjE0YWEw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9vcmlnaW4taGVhZGVyLXNhbWUtb3JpZ2luLXBvc3Qtc3luYy5odG1sCkBAIC0wLDAgKzEsMTgg
QEAKKzxodG1sPgorPGJvZHk+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25z
b2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICdcbicp
KTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KTsKK3hoci5vcGVuKCdQT1NUJywgJ3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxv
dy1hY2Nlc3MtY29udHJvbC1vcmlnaW4taGVhZGVyLmNnaScsIGZhbHNlKTsKK3hoci5zZW5kKG51
bGwpOworbG9nKHhoci5yZXNwb25zZVRleHQpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Ci0tIAoxLjYuMC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23744</attachid>
            <date>2008-09-24 02:07:15 -0700</date>
            <delta_ts>2008-10-03 13:24:27 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>origin-v3.patch</filename>
            <type>text/plain</type>
            <size>29473</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSA4M2Y3ZjUxZWM2NGUyN2JhOWQ5YTRhZjVjYzBlNjMyOTI3ODM1OGRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogVHVlLCAyMyBTZXAgMjAwOCAyMjo0MToyNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIG9yaWdp
biBwYXRjaCB2MwoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMjcgKysrKysrKysrCiAuLi4vb3JpZ2luLWhlYWRlci1mb3ItZGF0YS1l
eHBlY3RlZC50eHQgICAgICAgICAgICB8ICAgIDEgKwogLi4uL29yaWdpbkhlYWRlci9vcmlnaW4t
aGVhZGVyLWZvci1kYXRhLmh0bWwgICAgICAgfCAgIDE3ICsrKysrKwogLi4uL29yaWdpbi1oZWFk
ZXItZm9yLWVtcHR5LWV4cGVjdGVkLnR4dCAgICAgICAgICAgfCAgICAxICsKIC4uLi9vcmlnaW5I
ZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZW1wdHkuaHRtbCAgICAgIHwgICAyNCArKysrKysrKwog
Li4uL29yaWdpbi1oZWFkZXItZm9yLWdldC1leHBlY3RlZC50eHQgICAgICAgICAgICAgfCAgICAx
ICsKIC4uLi9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZ2V0Lmh0bWwgICAgICAgIHwg
ICAxNiArKysrKysKIC4uLi9vcmlnaW4taGVhZGVyLWZvci1odHRwcy1leHBlY3RlZC50eHQgICAg
ICAgICAgIHwgICAgMSArCiAuLi4vb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWh0dHBz
Lmh0bWwgICAgICB8ICAgMTMgKysrKysKIC4uLi9vcmlnaW4taGVhZGVyLWZvci1wb3N0LWV4cGVj
dGVkLnR4dCAgICAgICAgICAgIHwgICAgMSArCiAuLi4vb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFk
ZXItZm9yLXBvc3QuaHRtbCAgICAgICB8ICAgMTYgKysrKysrCiAuLi4vcmVzb3VyY2VzL29yaWdp
bi1oZWFkZXItcG9zdC10by1odHRwLmh0bWwgICAgICB8ICAgIDQgKysKIC4uLi9vcmlnaW5IZWFk
ZXIvcmVzb3VyY2VzL3ByaW50LW9yaWdpbi5jZ2kgICAgICAgIHwgICAxNCArKysrKwogLi4uaWdp
bi1oZWFkZXItc2FtZS1vcmlnaW4tcG9zdC1hc3luYy1leHBlY3RlZC50eHQgfCAgICAyICstCiAu
Li5yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tcG9zdC1zeW5jLWV4cGVjdGVkLnR4dCB8ICAgIDIg
Ky0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICA0OCArKysrKysrKysrKysrKysrCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
ICAgICAgICAgICAgICAgICAgICAgfCAgIDU3ICsrKysrKysrKysrKysrKysrKy0tCiBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwICAgICAgICAgICAgICAgfCAgICAxICsK
IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
MiArCiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcCAgICAgICAgICAgICAgICB8
ICAgIDkgKysrCiBXZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmggICAgICAgICAgICAg
ICAgICB8ICAgIDUgKysKIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmggICAgIHwgICAgNCArKwogV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwICAgICAg
ICAgICAgICAgICAgICAgfCAgIDE2ICsrLS0tLQogMjUgZmlsZXMgY2hhbmdlZCwgMjY3IGluc2Vy
dGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWRhdGEt
ZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZGF0YS5odG1sCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIv
b3JpZ2luLWhlYWRlci1mb3ItZW1wdHktZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRl
ci1mb3ItZW1wdHkuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWdldC1leHBlY3RlZC50
eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29y
aWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1nZXQuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFk
ZXItZm9yLWh0dHBzLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWh0dHBz
Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1wb3N0LWV4cGVjdGVkLnR4dAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVy
L29yaWdpbi1oZWFkZXItZm9yLXBvc3QuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL3Jlc291cmNlcy9vcmlnaW4taGVh
ZGVyLXBvc3QtdG8taHR0cC5odG1sCiBjcmVhdGUgbW9kZSAxMDA3NTUgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvcmVzb3VyY2VzL3ByaW50LW9yaWdpbi5jZ2kK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggN2I0NDEwMS4uM2RmMDBhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDA4LTA5
LTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVGVzdHMgZm9y
IHRoZSBuZXcgT3JpZ2luIGhlYWRlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3OTIKKworICAgICAgICBDb2xsaW4gSmFja3NvbiA8Y29sbGlu
akB3ZWJraXQub3JnPiBhbHNvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcGF0Y2guCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L29yaWdpbkhlYWRlcjogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9v
cmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXIt
Zm9yLWRhdGEuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9vcmln
aW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZW1wdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZv
ci1lbXB0eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdp
bkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1nZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1n
ZXQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFk
ZXIvb3JpZ2luLWhlYWRlci1mb3ItaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1odHRw
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRl
ci9vcmlnaW4taGVhZGVyLWZvci1wb3N0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItcG9zdC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9v
cmlnaW4taGVhZGVyLWZvci14bWxodHRwcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9y
LXhtbGh0dHByZXF1ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvb3JpZ2luSGVhZGVyL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9vcmlnaW5IZWFkZXIvcmVzb3VyY2VzL29yaWdpbi1oZWFkZXItcG9zdC10by1odHRw
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVy
L3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpOiBBZGRlZC4KKwogMjAwOC0wOS0yMyAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVh
ZGVyL29yaWdpbi1oZWFkZXItZm9yLWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZGF0YS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYxYTZmZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVh
ZGVyL29yaWdpbi1oZWFkZXItZm9yLWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK0hU
VFBfT1JJR0lOOiBudWxsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1kYXRh
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdhMWRkMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVy
L29yaWdpbi1oZWFkZXItZm9yLWRhdGEuaHRtbApAQCAtMCwwICsxLDE3IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQord2luZG93LmxvY2F0aW9uID0gJ2RhdGE6dGV4dC9odG1s
LFwKKzxmb3JtIGFjdGlvbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L29yaWdpbkhl
YWRlci9yZXNvdXJjZXMvcHJpbnQtb3JpZ2luLmNnaSJcCisgICAgICBtZXRob2Q9IlBPU1QiPlwK
KzwvZm9ybT5cCis8c2NyaXB0PmRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOzwvc2NyJyArICdp
cHQ+JzsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmln
aW4taGVhZGVyLWZvci1lbXB0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1lbXB0eS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI0NWNlMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29y
aWdpbi1oZWFkZXItZm9yLWVtcHR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitIVFRQX09S
SUdJTjogaHR0cDovLzEyNy4wLjAuMTo4MDAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1lbXB0eS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhl
YWRlci1mb3ItZW1wdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
YzFmMTYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZW1wdHkuaHRtbApAQCAtMCwwICsxLDI0
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2xv
c2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworfQord2luZG93Lm5hbWUgPSAn
b3BlbmVyJzsKK3cgPSB3aW5kb3cub3BlbigiIik7Cit3LmRvY3VtZW50Lm9wZW4oKTsKK3cuZG9j
dW1lbnQud3JpdGUoJ1wKKzxmb3JtIGFjdGlvbj0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L29yaWdpbkhlYWRlci9yZXNvdXJjZXMvcHJpbnQtb3JpZ2luLmNnaSJcCisgICAgICB0YXJn
ZXQ9Im9wZW5lciJcCisgICAgICBtZXRob2Q9IlBPU1QiPlwKKzwvZm9ybT5cCis8c2NyaXB0PmRv
Y3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOzwvc2NyJyArICdpcHQ+Jyk7Cit3LmRvY3VtZW50LmNs
b3NlKCk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3Jp
Z2luLWhlYWRlci1mb3ItZ2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWdldC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk5ZTZkMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdp
bi1oZWFkZXItZm9yLWdldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorSFRUUF9PUklHSU46
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRl
ci9vcmlnaW4taGVhZGVyLWZvci1nZXQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWdldC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOWFkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZv
ci1nZXQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxmb3JtIGFjdGlvbj0icmVzb3VyY2Vz
L3ByaW50LW9yaWdpbi5jZ2kiCisgICAgICBtZXRob2Q9IkdFVCI+Cis8L2Zvcm0+Cis8c2NyaXB0
PmRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9v
cmlnaW4taGVhZGVyLWZvci1odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZvci1odHRwcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EwMjk0MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVy
L29yaWdpbi1oZWFkZXItZm9yLWh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitIVFRQ
X09SSUdJTjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdp
bi1oZWFkZXItZm9yLWh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOTM1MGRmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLWh0dHBzLmh0bWwKQEAgLTAsMCAr
MSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KK3dpbmRvdy5sb2NhdGlv
biA9ICJodHRwczovLzEyNy4wLjAuMTo4NDQzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9yZXNvdXJj
ZXMvb3JpZ2luLWhlYWRlci1wb3N0LXRvLWh0dHAuaHRtbCI7Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItcG9zdC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmln
aW4taGVhZGVyLWZvci1wb3N0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40YjQ1Y2UwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItcG9zdC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSBAQAorSFRUUF9PUklHSU46IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIv
b3JpZ2luLWhlYWRlci1mb3ItcG9zdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItcG9zdC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzN2EyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9vcmlnaW4taGVhZGVyLWZv
ci1wb3N0Lmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8Zm9ybSBhY3Rpb249InJlc291cmNl
cy9wcmludC1vcmlnaW4uY2dpIgorICAgICAgbWV0aG9kPSJQT1NUIj4KKzwvZm9ybT4KKzxzY3Jp
cHQ+ZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVy
L3Jlc291cmNlcy9vcmlnaW4taGVhZGVyLXBvc3QtdG8taHR0cC5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvcmVzb3VyY2VzL29yaWdpbi1oZWFkZXIt
cG9zdC10by1odHRwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBl
MTdhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
b3JpZ2luSGVhZGVyL3Jlc291cmNlcy9vcmlnaW4taGVhZGVyLXBvc3QtdG8taHR0cC5odG1sCkBA
IC0wLDAgKzEsNCBAQAorPGZvcm0gYWN0aW9uPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvb3JpZ2luSGVhZGVyL3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpIgorICAgICAgbWV0aG9k
PSJQT1NUIj4KKzwvZm9ybT4KKzxzY3JpcHQ+ZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdp
bkhlYWRlci9yZXNvdXJjZXMvcHJpbnQtb3JpZ2luLmNnaSBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL3Jlc291cmNlcy9wcmludC1vcmlnaW4uY2dpCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZlMzEyNGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L29yaWdpbkhlYWRlci9yZXNvdXJjZXMv
cHJpbnQtb3JpZ2luLmNnaQpAQCAtMCwwICsxLDE0IEBACisjIS91c3IvYmluL3BlcmwgLXdUCit1
c2Ugc3RyaWN0OworCitwcmludCAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcbiI7CitwcmludCAi
QWNjZXNzLUNvbnRyb2wtT3JpZ2luOiAqXG4iOworcHJpbnQgIkNhY2hlLUNvbnRyb2w6IG5vLXN0
b3JlXG5cbiI7CisKK3ByaW50ICJIVFRQX09SSUdJTjogIiAuICRFTlZ7IkhUVFBfT1JJR0lOIn0g
LiAiXG4iOworcHJpbnQgPDxET05FCis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cis8L3NjcmlwdD4KK0RPTkUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LWFzeW5jLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2lu
LWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LWFzeW5jLWV4cGVjdGVkLnR4dAppbmRleCA1MmRiMWIz
Li44NWY5YTVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tcG9zdC1hc3luYy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLXNh
bWUtb3JpZ2luLXBvc3QtYXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogUEFTUzog
Q3Jvc3MtZG9tYWluIGFjY2VzcyBhbGxvd2VkLgotSFRUUF9PUklHSU46IAorSFRUUF9PUklHSU46
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMAogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LXN5bmMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmln
aW4taGVhZGVyLXNhbWUtb3JpZ2luLXBvc3Qtc3luYy1leHBlY3RlZC50eHQKaW5kZXggNTJkYjFi
My4uODVmOWE1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9vcmlnaW4taGVhZGVyLXNhbWUtb3JpZ2luLXBvc3Qtc3luYy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLXNh
bWUtb3JpZ2luLXBvc3Qtc3luYy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiBQQVNTOiBD
cm9zcy1kb21haW4gYWNjZXNzIGFsbG93ZWQuCi1IVFRQX09SSUdJTjogCitIVFRQX09SSUdJTjog
aHR0cDovLzEyNy4wLjAuMTo4MDAwCiAKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNzEwOTFlLi5lOGM4NzJjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBA
CisyMDA4LTA5LTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
QXR0YWNoIHRoZSBPcmlnaW4gaGVhZGVyIHRvIFBPU1QgcmVxdWVzdHMgdG8gaGVscCBkZWZlbmQg
YWdhaW5zdAorICAgICAgICBjcm9zcy1zaXRlIHJlcXVlc3QgZm9yZ2VyeS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3OTIKKworICAgICAgICBD
b2xsaW4gSmFja3NvbiA8Y29sbGluakB3ZWJraXQub3JnPiBhbHNvIGNvbnRyaWJ1dGVkIHRvIHRo
aXMgcGF0Y2guCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFkZXIt
Zm9yLWRhdGEuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9vcmlnaW5I
ZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZW1wdHkuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9zZWN1cml0eS9vcmlnaW5IZWFkZXIvb3JpZ2luLWhlYWRlci1mb3ItZ2V0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvb3JpZ2luSGVhZGVyL29yaWdpbi1oZWFk
ZXItZm9yLWh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvb3Jp
Z2luSGVhZGVyL29yaWdpbi1oZWFkZXItZm9yLXBvc3QuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRv
dyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnVybFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRG
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvdXRnb2luZ09yaWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6YWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZEl0ZW0pOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVzdHMp
OgorICAgICAgICAqIHBsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjp0b0hUVFBPcmlnaW4pOgorICAgICAgICAqIHBsYXRmb3JtL1Nl
Y3VyaXR5T3JpZ2luLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRwT3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBPcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y2xlYXJIVFRQT3Jp
Z2luKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6Om1ha2VTaW1wbGVDcm9zc1NpdGVBY2Nlc3NSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjptYWtlQ3Jvc3NTaXRlQWNjZXNzUmVxdWVz
dFdpdGhQcmVmbGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmhhbmRs
ZUFzeW5jaHJvbm91c1ByZWZsaWdodFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KToKKyAgICAgICAgCisKIDIwMDgt
MDktMjMgIE1hdHQgTGlsZWsgIDx3ZWJraXRAbWF0dGxpbGVrLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cAppbmRleCA0YWU0MzkzLi43NmY1Y2NkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCkBAIC0zMDQsNiArMzA0LDcgQEAgc3RhdGljIEZyYW1lKiBjcmVhdGVXaW5kb3co
RXhlY1N0YXRlKiBleGVjLCBGcmFtZSogb3BlbmVyRnJhbWUsIGNvbnN0IFN0cmluZyYgdXIKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKIAogICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVy
KGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKTsKKyAgICBGcmFtZUxv
YWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIGFjdGl2ZUZyYW1lLT5sb2FkZXIo
KS0+b3V0Z29pbmdPcmlnaW4oKSk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZVJlcXVlc3Qo
cmVxdWVzdCwgZnJhbWVOYW1lKTsKIAogICAgIC8vIEZJWE1FOiBJdCdzIG11Y2ggYmV0dGVyIGZv
ciBjbGllbnQgQVBJIGlmIGEgbmV3IHdpbmRvdyBzdGFydHMgd2l0aCBhIFVSTCwgaGVyZSB3aGVy
ZSB3ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDBmNmI5Y2MuLjI1NTA1ZGQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTMzMCw2ICszMzAsNyBAQCBGcmFtZSogRnJhbWVMb2FkZXI6OmNy
ZWF0ZVdpbmRvdyhGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJGb3JGcmFtZUxvb2t1cCwgY29uc3Qg
RgogICAgIC8vIEZJWE1FOiBTZXR0aW5nIHRoZSByZWZlcnJlciBzaG91bGQgYmUgdGhlIGNhbGxl
cidzIHJlc3BvbnNpYmlsaXR5LgogICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdFdpdGhSZWZl
cnJlciA9IHJlcXVlc3Q7CiAgICAgcmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3Qo
KS5zZXRIVFRQUmVmZXJyZXIobV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICBhZGRIVFRQT3JpZ2lu
SWZOZWVkZWQocmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3QoKSwgb3V0Z29pbmdP
cmlnaW4oKSk7CiAKICAgICBQYWdlKiBvbGRQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlm
ICghb2xkUGFnZSkKQEAgLTM5OSw2ICs0MDAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxl
Y3RlZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBFdmVudCogZXZlbnQsIGJvbwog
ICAgIEZyYW1lTG9hZFJlcXVlc3QgY29weSA9IHJlcXVlc3Q7CiAgICAgaWYgKGNvcHkucmVzb3Vy
Y2VSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCkuaXNFbXB0eSgpKQogICAgICAgICBjb3B5LnJlc291
cmNlUmVxdWVzdCgpLnNldEhUVFBSZWZlcnJlcihtX291dGdvaW5nUmVmZXJyZXIpOworICAgIGFk
ZEhUVFBPcmlnaW5JZk5lZWRlZChjb3B5LnJlc291cmNlUmVxdWVzdCgpLCBvdXRnb2luZ09yaWdp
bigpKTsKIAogICAgIGxvYWRGcmFtZVJlcXVlc3RXaXRoRm9ybUFuZFZhbHVlcyhjb3B5LCBsb2Nr
SGlzdG9yeSwgZXZlbnQsIDAsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCkpOwogfQpAQCAtNTc0
LDYgKzU3Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oY29uc3QgY2hhciogYWN0
aW9uLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxGCiAgICAgfQogCiAgICAgZnJhbWVS
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldFVSTCh1KTsKKyAgICBhZGRIVFRQT3JpZ2luSWZO
ZWVkZWQoZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBvdXRnb2luZ09yaWdpbigpKTsK
IAogICAgIHN1Ym1pdEZvcm0oZnJhbWVSZXF1ZXN0LCBldmVudCk7CiB9CkBAIC0xNzg0LDYgKzE3
ODcsMTUgQEAgU3RyaW5nIEZyYW1lTG9hZGVyOjpvdXRnb2luZ1JlZmVycmVyKCkgY29uc3QKICAg
ICByZXR1cm4gbV9vdXRnb2luZ1JlZmVycmVyOwogfQogCitTdHJpbmcgRnJhbWVMb2FkZXI6Om91
dGdvaW5nT3JpZ2luKCkgY29uc3QKK3sKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvSFRU
UE9yaWdpbigpOworCisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRW1wdHkoKTsKKyAgICByZXR1cm4gb3JpZ2luLT50b0hUVFBPcmlnaW4o
KTsKK30KKwogRnJhbWUqIEZyYW1lTG9hZGVyOjpvcGVuZXIoKQogewogICAgIHJldHVybiBtX29w
ZW5lcjsKQEAgLTIxMjQsOCArMjEzNiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNv
bnN0IEtVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaQogICAg
IGJvb2wgaXNGb3JtU3VibWlzc2lvbiA9IGZvcm1TdGF0ZTsKICAgICAKICAgICBSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdChuZXdVUkwpOwotICAgIGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKQorICAg
IGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVy
cmVyKHJlZmVycmVyKTsKKyAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZWZlcnJlck9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHJlZmVycmVyKTsKKyAgICAg
ICAgYWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHJlZmVycmVyT3JpZ2luLT50b0hUVFBP
cmlnaW4oKSk7CisgICAgfQogICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVlc3QsIHRy
dWUsIGV2ZW50IHx8IGlzRm9ybVN1Ym1pc3Npb24pOwogICAgIGlmIChuZXdMb2FkVHlwZSA9PSBG
cmFtZUxvYWRUeXBlUmVsb2FkKQogICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9h
ZElnbm9yaW5nQ2FjaGVEYXRhKTsKQEAgLTM0MDUsNiArMzQyMCwzNiBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJv
b2wgbWFpblJlcwogICAgIAogICAgIGlmIChtYWluUmVzb3VyY2UpCiAgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUEFjY2VwdCgiYXBwbGljYXRpb24veG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCx0ZXh0
L2h0bWw7cT0wLjksdGV4dC9wbGFpbjtxPTAuOCxpbWFnZS9wbmcsKi8qO3E9MC41Iik7CisKKyAg
ICAvLyBNYWtlIHN1cmUgd2Ugc2VuZCB0aGUgT3JpZ2luIGhlYWRlciBwcm9wZXJseS4KKyAgICBh
ZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgU3RyaW5nKCkpOworfQorCit2b2lkIEZyYW1l
TG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
dHJpbmcgb3JpZ2luKQoreworICAgIGlmICghcmVxdWVzdC5odHRwT3JpZ2luKCkuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47ICAvLyBSZXF1ZXN0IGFscmVhZHkgaGFzIGFuIE9yaWdpbiBoZWFk
ZXIuCisKKyAgICAvLyBEb24ndCBzZW5kIGFuIE9yaWdpbiBoZWFkZXIgZm9yIEdFVCBvciBIRUFE
IHRvIGF2b2lkIHByaXZhY3kgaXNzdWVzLgorICAgIC8vIEZvciBleGFtcGxlLCBpZiBhbiBpbnRy
YW5ldCBwYWdlIGhhcyBhIGh5cGVybGluayB0byBhbiBleHRlcm5hbCB3ZWIKKyAgICAvLyBzaXRl
LCB3ZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIE9yaWdpbiBvZiB0aGUgcmVxdWVzdCBiZWNh
dXNlIGl0CisgICAgLy8gd2lsbCBsZWFrIHRoZSBpbnRlcm5hbCBob3N0IG5hbWUuICBTaW1pbGFy
IHByaXZhY3kgY29uY2VybnMgaGF2ZSBsZWFkCisgICAgLy8gdG8gdGhlIHdpZGVzcHJlYWQgc3Vw
cHJlc3Npb24gb2YgdGhlIFJlZmVyZXIgaGVhZGVyIGF0IHRoZSBuZXR3b3JrCisgICAgLy8gbGF5
ZXIuCisgICAgaWYgKHJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJHRVQiIHx8IHJlcXVlc3QuaHR0
cE1ldGhvZCgpID09ICJIRUFEIikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRm9yIG5vbi1H
RVQgYW5kIG5vbi1IRUFEIG1ldGhvZHMsIGFsd2F5cyBzZW5kIGFuIE9yaWdpbiBoZWFkZXIgc28g
dGhlCisgICAgLy8gc2VydmVyIGtub3dzIHdlIHN1cHBvcnQgdGhpcyBmZWF0dXJlLgorCisgICAg
aWYgKG9yaWdpbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSWYgd2UgZG9uJ3Qga25vdyB3aGF0
IG9yaWdpbiBoZWFkZXIgdG8gYXR0YWNoLCB3ZSBhdHRhY2ggdGhlIHZhbHVlCisgICAgICAgIC8v
IGZvciBhbiBlbXB0eSBvcmlnaW4uCisgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gZW1w
dHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRW1wdHkoKTsKKyAgICAgICAgb3JpZ2lu
ID0gZW1wdHlPcmlnaW4tPnRvSFRUUE9yaWdpbigpOworICAgIH0KKworICAgIHJlcXVlc3Quc2V0
SFRUUE9yaWdpbihvcmlnaW4pOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXR0ZWRMb2Fk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCkBA
IC0zNDMyLDE1ICszNDc3LDE3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIGluUmVxdWVzdCwgY29uc3QgU3RyaW5nCiAgICAgY29uc3Qg
S1VSTCYgdXJsID0gaW5SZXF1ZXN0LnVybCgpOwogICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURh
dGEgPSBpblJlcXVlc3QuaHR0cEJvZHkoKTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
ID0gaW5SZXF1ZXN0Lmh0dHBDb250ZW50VHlwZSgpOworICAgIFN0cmluZyBvcmlnaW4gPSBpblJl
cXVlc3QuaHR0cE9yaWdpbigpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHdvcmtpbmdSZXNvdXJj
ZVJlcXVlc3QodXJsKTsgICAgCi0gICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3Qod29ya2luZ1Jl
c291cmNlUmVxdWVzdCwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHko
KSkKICAgICAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJy
ZXIpOworICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE9yaWdpbihvcmlnaW4pOwog
ICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwogICAgIHdv
cmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEpOwogICAgIHdvcmtpbmdS
ZXNvdXJjZVJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKKyAgICBhZGRF
eHRyYUZpZWxkc1RvUmVxdWVzdCh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCB0cnVlLCB0cnVlKTsK
IAogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKHVybCwgRnJhbWVMb2FkVHlwZVN0YW5kYXJk
LCB0cnVlLCBldmVudCk7CiAKQEAgLTM0ODIsNiArMzUyOSw3IEBAIHVuc2lnbmVkIGxvbmcgRnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1CiAgICAgCiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIGluaXRp
YWxSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CisgICAgYWRkSFRUUE9yaWdpbklm
TmVlZGVkKGluaXRpYWxSZXF1ZXN0LCBvdXRnb2luZ09yaWdpbigpKTsKIAogICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICBpbml0aWFsUmVxdWVzdC5zZXRNYWlu
RG9jdW1lbnRVUkwocGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigp
LT5yZXF1ZXN0KCkudXJsKCkpOwpAQCAtNDI5NSw4ICs0MzQzLDYgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpCiAg
ICAgICAgIGlmICghaW5QYWdlQ2FjaGUpIHsKICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KGl0ZW1VUkwpOwogCi0gICAgICAgICAgICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChy
ZXF1ZXN0LCB0cnVlLCBmb3JtRGF0YSk7Ci0KICAgICAgICAgICAgIC8vIElmIHRoaXMgd2FzIGEg
cmVwb3N0IHRoYXQgZmFpbGVkIHRoZSBwYWdlIGNhY2hlLCB3ZSBtaWdodCB0cnkgdG8gcmVwb3N0
IHRoZSBmb3JtLgogICAgICAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb247CiAgICAgICAg
ICAgICBpZiAoZm9ybURhdGEpIHsKQEAgLTQzMDcsNiArNDM1Myw4IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKQog
ICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGl0ZW0tPmZvcm1SZWZlcnJl
cigpKTsKICAgICAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KGZvcm1EYXRhKTsKICAg
ICAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShpdGVtLT5mb3JtQ29udGVu
dFR5cGUoKSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0tPmZvcm1SZWZl
cnJlcigpKTsKKyAgICAgICAgICAgICAgICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwg
c2VjdXJpdHlPcmlnaW4tPnRvSFRUUE9yaWdpbigpKTsKICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFNsaWdodCBoYWNrIHRvIHRlc3QgaWYgdGhlIE5TVVJMIGNhY2hlIGNvbnRh
aW5zIHRoZSBwYWdlIHdlJ3JlIGdvaW5nIHRvLgogICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQg
dG8ga25vdyB0aGlzIGJlZm9yZSB0YWxraW5nIHRvIHRoZSBwb2xpY3kgZGVsZWdhdGUsIHNpbmNl
IGl0IGFmZmVjdHMgd2hldGhlciAKQEAgLTQzNDcsNiArNDM5NSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKQog
ICAgICAgICAgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24oaXRlbU9yaWdpbmFsVVJM
LCBsb2FkVHlwZSwgZmFsc2UpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBhZGRFeHRy
YUZpZWxkc1RvUmVxdWVzdChyZXF1ZXN0LCB0cnVlLCBmb3JtRGF0YSk7CiAgICAgICAgICAgICBs
b2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgYWN0aW9uLCBsb2FkVHlwZSwgMCk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
IGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCA4MGI2ZWJiLi5lZGI1OTI4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTE5Myw2ICsxOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgaXNSZWxvYWRpbmcoKSBjb25zdDsKICAgICAgICAgU3RyaW5nIHJlZmVy
cmVyKCkgY29uc3Q7CiAgICAgICAgIFN0cmluZyBvdXRnb2luZ1JlZmVycmVyKCkgY29uc3Q7Cisg
ICAgICAgIFN0cmluZyBvdXRnb2luZ09yaWdpbigpIGNvbnN0OwogICAgICAgICB2b2lkIGxvYWRF
bXB0eURvY3VtZW50U3luY2hyb25vdXNseSgpOwogCiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBh
Y3RpdmVEb2N1bWVudExvYWRlcigpIGNvbnN0OwpAQCAtMjc3LDYgKzI3OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkZXRhY2hDaGlsZHJlbigpOwogCiAgICAgICAgIHZv
aWQgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBpc01haW5S
ZXNvdXJjZSwgYm9vbCBhbHdheXNGcm9tUmVxdWVzdCk7CisgICAgICAgIHN0YXRpYyB2b2lkIGFk
ZEhUVFBPcmlnaW5JZk5lZWRlZChSZXNvdXJjZVJlcXVlc3QmLCBTdHJpbmcgb3JpZ2luKTsKIAog
ICAgICAgICBGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBhODViN2ViLi5iZmY0OGIyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05Myw2ICs5Myw3IEBAIFBhc3NSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBTdWJy
ZXNvdXJjCiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICBlbHNl
IGlmICghcmVxdWVzdC5odHRwUmVmZXJyZXIoKSkKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQ
UmVmZXJyZXIoZmwtPm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgRnJhbWVMb2FkZXI6OmFkZEhU
VFBPcmlnaW5JZk5lZWRlZChuZXdSZXF1ZXN0LCBmbC0+b3V0Z29pbmdPcmlnaW4oKSk7CiAKICAg
ICAvLyBVc2UgdGhlIG9yaWdpbmFsIHJlcXVlc3QncyBjYWNoZSBwb2xpY3kgZm9yIHR3byByZWFz
b25zOgogICAgIC8vIDEuIEZvciBQT1NUIHJlcXVlc3RzLCB3ZSBtdXRhdGUgdGhlIGNhY2hlIHBv
bGljeSBmb3IgdGhlIG1haW4gcmVzb3VyY2UsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9s
b2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAppbmRleCBiZjU3MTZmLi4yNDQy
ZDIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL2xvYWRlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlN1YnJl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0yMzksNiArMjQwLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZl
UGVuZGluZ1JlcXVlc3RzKFJlcXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5kaW5nLCBib29sJiBzZXIK
ICAgICAgICAgaWYgKChyZWZlcnJlci5wcm90b2NvbElzKCJodHRwIikgfHwgcmVmZXJyZXIucHJv
dG9jb2xJcygiaHR0cHMiKSkgJiYgcmVmZXJyZXIucGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJlZmVycmVyLnNldFBhdGgoIi8iKTsKICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhU
VFBSZWZlcnJlcihyZWZlcnJlci5zdHJpbmcoKSk7CisgICAgICAgIEZyYW1lTG9hZGVyOjphZGRI
VFRQT3JpZ2luSWZOZWVkZWQocmVzb3VyY2VSZXF1ZXN0LCBkb2NMb2FkZXItPmRvYygpLT5zZWN1
cml0eU9yaWdpbigpLT50b0hUVFBPcmlnaW4oKSk7CiAgICAgICAgIAogICAgICAgICBpZiAocmVz
b3VyY2VJc0NhY2hlVmFsaWRhdG9yKSB7CiAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2VUb1JldmFsaWRhdGUgPSByZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT5yZXNvdXJjZVRv
UmV2YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdp
bi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA4MjRmYTg4
Li42N2JlZjdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjIwLDYgKzIy
MCwxNSBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwogfQogCitTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRv
SFRUUE9yaWdpbigpIGNvbnN0Cit7CisgICAgU3RyaW5nIG9yaWdpbiA9IHRvU3RyaW5nKCk7Cisg
ICAgaWYgKG9yaWdpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAibnVsbCI7CisKKyAgICBy
ZXR1cm4gb3JpZ2luOworfQorCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKIHsKICAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKG9yaWdpblN0cmluZykpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IGY3NjA2MmUuLjU5ZmYyYzEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vU2VjdXJpdHlPcmlnaW4uaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L1NlY3VyaXR5T3JpZ2luLmgKQEAgLTEwNiw2ICsxMDYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAvLyBTZWN1cml0eU9yaWdpbiBpcyByZXByZXNlbnRlZCB3aXRoIHRoZSBudWxs
IHN0cmluZy4KICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKKyAgICAgICAgLy8g
Q29udmVydCB0aGlzIFNlY3VyaXR5T3JpZ2luIGludG8gYSBzdHJpbmcgZm9yIHVzZSBpbiB0aGUg
SFRUUCBPcmlnaW4KKyAgICAgICAgLy8gaGVhZGVyLiAgVGhpcyBpcyBzaW1pbGFyIHRvIHRvU3Ry
aW5nKCksIGV4Y2VwdCB0aGF0IHRoZSBlbXB0eQorICAgICAgICAvLyBTZWN1cml0eU9yaWdpbiBp
cyByZXByZXNldG5lZCBhcyB0aGUgc3RyaW5nICJudWxsIi4KKyAgICAgICAgU3RyaW5nIHRvSFRU
UE9yaWdpbigpIGNvbnN0OworCiAgICAgICAgIC8vIFNlcmlhbGl6ZSB0aGUgc2VjdXJpdHkgb3Jp
Z2luIGZvciBzdG9yYWdlIGluIHRoZSBkYXRhYmFzZS4gVGhpcyBmb3JtYXQgaXMKICAgICAgICAg
Ly8gZGVwcmVjYXRlZCBhbmQgc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgY29tcGF0aWJpbGl0eSB3
aXRoIG9sZCBkYXRhYmFzZXM7CiAgICAgICAgIC8vIHVzZSB0b1N0cmluZygpIGFuZCBjcmVhdGVG
cm9tU3RyaW5nKCkgaW5zdGVhZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oCmluZGV4IGFmYTIwZjYuLjMyYTMzODQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtNzgsNiArNzgsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEhUVFBSZWZlcnJlcihjb25zdCBT
dHJpbmcmIGh0dHBSZWZlcnJlcikgeyBzZXRIVFRQSGVhZGVyRmllbGQoIlJlZmVyZXIiLCBodHRw
UmVmZXJyZXIpOyB9CiAgICAgICAgIHZvaWQgY2xlYXJIVFRQUmVmZXJyZXIoKSB7IG1faHR0cEhl
YWRlckZpZWxkcy5yZW1vdmUoIlJlZmVyZXIiKTsgfQogICAgICAgICAKKyAgICAgICAgU3RyaW5n
IGh0dHBPcmlnaW4oKSBjb25zdCB7IHJldHVybiBodHRwSGVhZGVyRmllbGQoIk9yaWdpbiIpOyB9
CisgICAgICAgIHZvaWQgc2V0SFRUUE9yaWdpbihjb25zdCBTdHJpbmcmIGh0dHBPcmlnaW4pIHsg
c2V0SFRUUEhlYWRlckZpZWxkKCJPcmlnaW4iLCBodHRwT3JpZ2luKTsgfQorICAgICAgICB2b2lk
IGNsZWFySFRUUE9yaWdpbigpIHsgbV9odHRwSGVhZGVyRmllbGRzLnJlbW92ZSgiT3JpZ2luIik7
IH0KKwogICAgICAgICBTdHJpbmcgaHR0cFVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIGh0dHBI
ZWFkZXJGaWVsZCgiVXNlci1BZ2VudCIpOyB9CiAgICAgICAgIHZvaWQgc2V0SFRUUFVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIGh0dHBVc2VyQWdlbnQpIHsgc2V0SFRUUEhlYWRlckZpZWxkKCJVc2Vy
LUFnZW50IiwgaHR0cFVzZXJBZ2VudCk7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDRi
NGJjOTYuLjJhZmEzOGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTU2NiwxNCArNTY2LDYg
QEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6bWFrZUNyb3NzU2l0ZUFjY2Vzc1JlcXVlc3QoRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIG1ha2VDcm9zc1NpdGVBY2Nlc3NSZXF1ZXN0V2l0aFByZWZs
aWdodChlYyk7CiB9CiAKLVN0cmluZyBYTUxIdHRwUmVxdWVzdDo6YWNjZXNzQ29udHJvbE9yaWdp
bigpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIGFjY2Vzc0NvbnRyb2xPcmlnaW4gPSBtX2RvYy0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKLSAgICBpZiAoYWNjZXNzQ29udHJvbE9yaWdpbi5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAibnVsbCI7Ci0gICAgcmV0dXJuIGFjY2Vzc0NvbnRy
b2xPcmlnaW47Ci19Ci0KIHZvaWQgWE1MSHR0cFJlcXVlc3Q6Om1ha2VTaW1wbGVDcm9zc1NpdGVB
Y2Nlc3NSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChpc1NpbXBsZUNy
b3NzU2l0ZUFjY2Vzc1JlcXVlc3QoKSk7CkBAIC01ODUsNyArNTc3LDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6bWFrZVNpbXBsZUNyb3NzU2l0ZUFjY2Vzc1JlcXVlc3QoRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKICAgICByZXF1ZXN0LnNldEhU
VFBNZXRob2QobV9tZXRob2QpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dIVFRQQ29va2llcyhtX2lu
Y2x1ZGVDcmVkZW50aWFscyk7Ci0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIk9yaWdp
biIsIGFjY2Vzc0NvbnRyb2xPcmlnaW4oKSk7CisgICAgcmVxdWVzdC5zZXRIVFRQT3JpZ2luKG1f
ZG9jLT5zZWN1cml0eU9yaWdpbigpLT50b0hUVFBPcmlnaW4oKSk7CiAKICAgICBpZiAobV9yZXF1
ZXN0SGVhZGVycy5zaXplKCkgPiAwKQogICAgICAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVs
ZHMobV9yZXF1ZXN0SGVhZGVycyk7CkBAIC02MTYsNyArNjA4LDcgQEAgc3RhdGljIGJvb2wgY2Fu
U2tpcFByZWxpZ2h0KFByZWZsaWdodFJlc3VsdENhY2hlOjppdGVyYXRvciBjYWNoZUl0LCBib29s
IGluY2x1ZGUKIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6bWFrZUNyb3NzU2l0ZUFjY2Vzc1JlcXVl
c3RXaXRoUHJlZmxpZ2h0KEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFN0cmluZyBvcmlnaW4g
PSBhY2Nlc3NDb250cm9sT3JpZ2luKCk7CisgICAgU3RyaW5nIG9yaWdpbiA9IG1fZG9jLT5zZWN1
cml0eU9yaWdpbigpLT50b0hUVFBPcmlnaW4oKTsKICAgICBLVVJMIHVybCA9IG1fdXJsOwogICAg
IHVybC5zZXRVc2VyKFN0cmluZygpKTsKICAgICB1cmwuc2V0UGFzcyhTdHJpbmcoKSk7CkBAIC03
MDQsNyArNjk2LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6aGFuZGxlQXN5bmNocm9ub3VzUHJl
ZmxpZ2h0UmVzdWx0KCkKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogICAgIHJl
cXVlc3Quc2V0SFRUUE1ldGhvZChtX21ldGhvZCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0hUVFBD
b29raWVzKG1faW5jbHVkZUNyZWRlbnRpYWxzKTsKLSAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJG
aWVsZCgiT3JpZ2luIiwgYWNjZXNzQ29udHJvbE9yaWdpbigpKTsKKyAgICByZXF1ZXN0LnNldEhU
VFBPcmlnaW4obV9kb2MtPnNlY3VyaXR5T3JpZ2luKCktPnRvSFRUUE9yaWdpbigpKTsKIAogICAg
IGlmIChtX3JlcXVlc3RIZWFkZXJzLnNpemUoKSA+IDApCiAgICAgICAgIHJlcXVlc3QuYWRkSFRU
UEhlYWRlckZpZWxkcyhtX3JlcXVlc3RIZWFkZXJzKTsKQEAgLTEyMjgsNyArMTIyMCw3IEBAIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZVByZWZsaWdodChTdWJyZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291CiAgICAgaWYgKCFwYXJzZUFjY2Vzc0NvbnRyb2xNYXhBZ2Uo
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJBY2Nlc3MtQ29udHJvbC1NYXgtQWdlIiksIGV4cGly
eURlbHRhKSkKICAgICAgICAgZXhwaXJ5RGVsdGEgPSA1OwogCi0gICAgYXBwZW5kUHJlZmxpZ2h0
UmVzdWx0Q2FjaGVFbnRyeShhY2Nlc3NDb250cm9sT3JpZ2luKCksIG1fdXJsLCBleHBpcnlEZWx0
YSwgbV9pbmNsdWRlQ3JlZGVudGlhbHMsIG1ldGhvZHMucmVsZWFzZSgpLCBoZWFkZXJzLnJlbGVh
c2UoKSk7CisgICAgYXBwZW5kUHJlZmxpZ2h0UmVzdWx0Q2FjaGVFbnRyeShtX2RvYy0+c2VjdXJp
dHlPcmlnaW4oKS0+dG9IVFRQT3JpZ2luKCksIG1fdXJsLCBleHBpcnlEZWx0YSwgbV9pbmNsdWRl
Q3JlZGVudGlhbHMsIG1ldGhvZHMucmVsZWFzZSgpLCBoZWFkZXJzLnJlbGVhc2UoKSk7CiB9CiAK
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9h
ZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKLS0gCjEuNi4w
LjEKCg==
</data>
<flag name="review"
          id="10671"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>