<?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>8210</bug_id>
          
          <creation_ts>2006-04-05 22:13:51 -0700</creation_ts>
          <short_desc>Conditional XMLHttpRequest gets should pass 304 responses unchanged</short_desc>
          <delta_ts>2006-07-04 09:43:36 -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>XML</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://goolamabbas.org/cget/cget.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuf Goolamabbas">yusufg</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ian</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>38680</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuf Goolamabbas">yusufg</who>
    <bug_when>2006-04-05 22:13:51 -0700</bug_when>
    <thetext>i, I was trying to write a simple ajaxy application to learn Mochikit. The URL
above calls some simple JS functions which get a static file periodically and
print the HTTP status response code. I have setup mod_expires headers which send outs Cache-Control: max-age=3 for the xml file delivered from the URL above

I use the If-Modified-Since and If-None-Match header fields to simulate a
conditional get. The expectation is that the the alert window will show 200 the
first time and then 304 subsequently. This behaviour is demonstrated with
Internet Explorer 6.0/Windows and Firefox 1.0.7 on MacOSX. However if I use
Safari 2.0.3 and the latest nightly build on MacOSX 10.4.6 I am only shown &apos;200&apos; in the alert box on the first time and then on subsequent call outs. 

I also see similar behaviour as Safari on Firefox 1.5.0.1 on Windows XP/2000
However, if I change the pref network.http.use-cache from true to false. Firefox behaves as expected (alert shows &apos;200&apos; the first time and then &apos;304&apos; subsequently)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38686</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-04-06 03:30:08 -0700</bug_when>
    <thetext>With stock 10.4.6 Safari, I&apos;m getting an alert saying &quot;200&quot; every 8-9 seconds. The reason is that NSURLConnection catches the 304 response and translates it into a 200 one (with a full cached response body and other headers, of course).

I am getting exactly the same results from Mac Firefox 1.5.

If you issue a conditional request the response for which is not cached, the behavior is incorrect, see bug 7385. However, normally caching is performed automatically and transparently, so you needn&apos;t specify the conditional headers at all.

So, this doesn&apos;t look like a bug to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38849</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuf Goolamabbas">yusufg</who>
    <bug_when>2006-04-09 20:25:14 -0700</bug_when>
    <thetext>even if caching is done, I am sending out a Cache-Control: max-age=3 response thus after 3 seconds the response should expire and Safari (or NSURLConnection) should ask for the file again with the appropiate Request headers to the server</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38864</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-04-10 04:13:03 -0700</bug_when>
    <thetext>(In reply to comment #2)

  Yes, that&apos;s the behavior I am seeing. It might be skewed by an HTTP proxy I&apos;m behind, so please attach a tcpdump or tcpflow output if you are getting different results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39888</commentid>
    <comment_count>4</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2006-04-19 18:44:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/4504276&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48058</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuf Goolamabbas">yusufg</who>
    <bug_when>2006-07-02 18:12:00 -0700</bug_when>
    <thetext>Just to let you know that I had filed a similar bug with Firefox and it was fixed recently (was marked as a blocker for FF 2.0)

https://bugzilla.mozilla.org/show_bug.cgi?id=331825</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48062</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-07-02 21:36:34 -0700</bug_when>
    <thetext>Thank you for for the b.m.o reference, it&apos;s now clear what we are doing wrong:

&quot;304 Not Modified responses that are a result of a UA-generated conditional request MUST be presented as 200 OK responses with the appropriate content. Such UAs MUST allow authors to override automatic cache validation by setting request headers (e.g., If-None-Match, If-Modified-Since), in which case 304 Not Modified responses MUST be passed through.&quot;

It is the second part (overriding the automatic cache) that is not supported. It would good to know the reasoning behind this requirement, but in any case, we should definitely follow the spec and Firefox here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48094</commentid>
    <comment_count>7</comment_count>
      <attachid>9171</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-07-03 10:54:14 -0700</bug_when>
    <thetext>Created attachment 9171
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48095</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-07-03 11:01:20 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=9171) [edit]
&gt; proposed fix 

Be careful when applying this patch if you use svn-apply.  It doesn&apos;t handle property value changes on text file diffs very well (it actually includes the property change text in the contents of the new file).  If you file a bug about this, please copy me on it.  :)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48112</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-07-03 15:09:29 -0700</bug_when>
    <thetext>I&apos;m a little unclear about this. If the cache override behavior is specific to the XMLHttpRequest object, as the spec leads me to believe, why make the change for all WebKit requests? If the behavior should apply to all network requests, isn&apos;t this an issue for NSURLConnection to resolve?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48117</commentid>
    <comment_count>10</comment_count>
      <attachid>9171</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-03 17:48:37 -0700</bug_when>
    <thetext>Comment on attachment 9171
proposed fix

I think that _web_isConditionalRequest would be more efficient if it called valueForHTTPHeaderField: instead of keyEnumerator. It&apos;s almost going out of its way to be slow!

Also, why not return BOOL rather than bool since it&apos;s a Objective-C method?

Otherwise, looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48145</commentid>
    <comment_count>11</comment_count>
      <attachid>9186</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-07-03 21:44:38 -0700</bug_when>
    <thetext>Created attachment 9186
proposed fix

(In reply to comment #9)
The WebKit side doesn&apos;t have a separate code path for XHR-initiated requests (which is probably good), but other requests we are making do not carry manually set conditional headers, so they are not affected. I am not sure if bypassing the cache for all conditional requests is necessarily the expected behavior for NSURLConnection.

(In reply to comment #10)
&gt; (From update of attachment 9171 [edit])
&gt; I think that _web_isConditionalRequest would be more efficient if it called
&gt; valueForHTTPHeaderField: instead of keyEnumerator. It&apos;s almost going out of its
&gt; way to be slow!

  I am not sure if this change makes it much faster (probably depends on the internal implementation of valueForHTTPHeaderField:), but the resulting code definitely looks better, thank you!

&gt; Also, why not return BOOL rather than bool since it&apos;s a Objective-C method?

Oops, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48154</commentid>
    <comment_count>12</comment_count>
      <attachid>9186</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-07-03 23:46:49 -0700</bug_when>
    <thetext>Comment on attachment 9186
proposed fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48177</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-07-04 09:43:36 -0700</bug_when>
    <thetext>Committed revision 15150.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9171</attachid>
            <date>2006-07-03 10:54:14 -0700</date>
            <delta_ts>2006-07-03 21:44:38 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>8210r1_patch.txt</filename>
            <type>text/plain</type>
            <size>14884</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY2FjaGUtb3ZlcnJp
ZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvY2FjaGUtb3ZlcnJpZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1vdmVycmlkZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKK1Rlc3RzIGZvciBidWcgODIx
MCAtIENvbmRpdGlvbmFsIFhNTEh0dHBSZXF1ZXN0IGdldHMgc2hvdWxkIHBhc3MgMzA0IHJlc3Bv
bnNlcyB1bmNoYW5nZWQuCisKK0ZldGNoaW5nIHRoZSByZXNvdXJjZSBvbmNlIHRvIGNhY2hlIHRo
ZSByZXNwb25zZS4uLgorQXV0b21hdGljYWxseSBjYWNoZWQgcmVzcG9uc2UgYm9keSBpcyBjb3Jy
ZWN0OyBzdGF0dXMgPSAyMDAKK0lmLU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlOiBzdGF0dXMgPSAz
MDQKK0lmLU1PRElGSUVELVNpbmNlIG92ZXJyaWRlOiBzdGF0dXMgPSAzMDQKK0lmLU1vZGlmaWVk
LVNpbmNlIG92ZXJyaWRlIChtb2RpZmllZCk6IHN0YXR1cyA9IDIwMAorSWYtVW5tb2RpZmllZC1T
aW5jZSBvdmVycmlkZTogc3RhdHVzID0gMjAwCitJZi1Vbm1vZGlmaWVkLVNpbmNlIG92ZXJyaWRl
IChtb2RpZmllZCk6IHN0YXR1cyA9IDQxMgorSWYtTWF0Y2ggb3ZlcnJpZGU6IHN0YXR1cyA9IDIw
MAorSWYtTWF0Y2ggb3ZlcnJpZGUgKG5vbmUgbWF0Y2gpOiBzdGF0dXMgPSA0MTIKK0lmLU5vbmUt
TWF0Y2ggb3ZlcnJpZGU6IHN0YXR1cyA9IDMwNAorSWYtTm9uZS1NYXRjaCBvdmVycmlkZSAobm9u
ZSBtYXRjaCk6IHN0YXR1cyA9IDIwMAorSWYtUmFuZ2Ugb3ZlcnJpZGU6IHN0YXR1cyA9IDIwNgor
SWYtUmFuZ2Ugb3ZlcnJpZGUgKG5vbmUgbWF0Y2gpOiBzdGF0dXMgPSAyMDAKK0lmLU1vZGlmaWVk
LVNpbmNlIG92ZXJyaWRlICh1bmNhY2hlZCByZXNwb25zZSk6IHN0YXR1cyA9IDMwNAorYXN5bmM6
IEF1dG9tYXRpY2FsbHkgY2FjaGVkIHJlc3BvbnNlIGJvZHkgaXMgY29ycmVjdDsgc3RhdHVzID0g
MjAwCithc3luYzogSWYtTW9kaWZpZWQtU2luY2Ugb3ZlcnJpZGU6IHN0YXR1cyA9IDMwNAorYXN5
bmM6IElmLU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlIChtb2RpZmllZCk6IHN0YXR1cyA9IDIwMAor
YXN5bmM6IElmLVVubW9kaWZpZWQtU2luY2Ugb3ZlcnJpZGU6IHN0YXR1cyA9IDIwMAorYXN5bmM6
IElmLVVubW9kaWZpZWQtU2luY2Ugb3ZlcnJpZGUgKG1vZGlmaWVkKTogc3RhdHVzID0gNDEyCith
c3luYzogSWYtTWF0Y2ggb3ZlcnJpZGU6IHN0YXR1cyA9IDIwMAorYXN5bmM6IElmLU1hdGNoIG92
ZXJyaWRlIChub25lIG1hdGNoKTogc3RhdHVzID0gNDEyCithc3luYzogSWYtTm9uZS1NYXRjaCBv
dmVycmlkZTogc3RhdHVzID0gMzA0Cithc3luYzogSWYtTm9uZS1NYXRjaCBvdmVycmlkZSAobm9u
ZSBtYXRjaCk6IHN0YXR1cyA9IDIwMAorYXN5bmM6IElmLVJhbmdlIG92ZXJyaWRlOiBzdGF0dXMg
PSAyMDYKK2FzeW5jOiBJZi1SYW5nZSBvdmVycmlkZSAobm9uZSBtYXRjaCk6IHN0YXR1cyA9IDIw
MAorYXN5bmM6IElmLU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlICh1bmNhY2hlZCByZXNwb25zZSk6
IHN0YXR1cyA9IDMwNAorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2NhY2hlLW92ZXJyaWRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1vdmVycmlkZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1vdmVycmlkZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyMSBAQAor77u/PGh0bWw+Cis8Ym9keT4KKzxwPlRl
c3RzIGZvciA8YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyMTAiPiBidWcgODIxMDwvYT4gLSAKK0NvbmRpdGlvbmFsIFhNTEh0dHBSZXF1ZXN0
IGdldHMgc2hvdWxkIHBhc3MgMzA0IHJlc3BvbnNlcyB1bmNoYW5nZWQuPC9wPgorPHNjcmlwdD4K
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICAKKyAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAgICAKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
KyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsK
KyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdl
KSk7CisgICAgICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQor
CisgICAgLy8gc3luYworICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICByZXEub3Bl
bigiR0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCBmYWxzZSk7CisgICAgbG9nKCJGZXRjaGlu
ZyB0aGUgcmVzb3VyY2Ugb25jZSB0byBjYWNoZSB0aGUgcmVzcG9uc2UuLi4iKTsKKyAgICByZXEu
c2VuZChudWxsKTsKKyAgICBsYXN0TW9kaWZpZWQgPSByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIkxh
c3QtTW9kaWZpZWQiKTsKKyAgICBlVGFnID0gcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJFVGFnIik7
CisgICAgCisgICAgcmVxLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVwbHkueG1sIiwgZmFsc2Up
OworICAgIHJlcS5zZW5kKG51bGwpOworICAgIGlmIChyZXEucmVzcG9uc2VUZXh0ID09ICc8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dzLTEyNTEiPz5cbjxub2RlPtCf0YDQvtCy
0LXRgNC60LA8L25vZGU+XG4nKQorICAgICAgICBsb2coIkF1dG9tYXRpY2FsbHkgY2FjaGVkIHJl
c3BvbnNlIGJvZHkgaXMgY29ycmVjdDsgc3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOworICAgIGVs
c2UKKyAgICAgICAgbG9nKCJBdXRvbWF0aWNhbGx5IGNhY2hlZCByZXNwb25zZSBib2R5IGlzIGRp
ZmZlcmVudCBmcm9tIHRoZSBleHBlY3RlZCBvbmU7IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsK
KworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNlKTsKKyAg
ICByZXEuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLCBsYXN0TW9kaWZpZWQp
OworICAgIHJlcS5zZW5kKG51bGwpOworICAgIGxvZygiSWYtTW9kaWZpZWQtU2luY2Ugb3ZlcnJp
ZGU6IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsKKworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVz
b3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNlKTsKKyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiSWYt
TU9ESUZJRUQtU2luY2UiLCBsYXN0TW9kaWZpZWQpOworICAgIHJlcS5zZW5kKG51bGwpOworICAg
IGxvZygiSWYtTU9ESUZJRUQtU2luY2Ugb3ZlcnJpZGU6IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVz
KTsKKworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNlKTsK
KyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLCAiVHVlLCAwMSBK
YW4gMTk4MCAwMTowMDowMCBHTVQiKTsKKyAgICByZXEuc2VuZChudWxsKTsKKyAgICBsb2coIklm
LU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlIChtb2RpZmllZCk6IHN0YXR1cyA9ICIgKyByZXEuc3Rh
dHVzKTsKKworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNl
KTsKKyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiSWYtVW5tb2RpZmllZC1TaW5jZSIsIGxhc3RN
b2RpZmllZCk7CisgICAgcmVxLnNlbmQobnVsbCk7CisgICAgbG9nKCJJZi1Vbm1vZGlmaWVkLVNp
bmNlIG92ZXJyaWRlOiBzdGF0dXMgPSAiICsgcmVxLnN0YXR1cyk7CisKKyAgICByZXEub3Blbigi
R0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCBmYWxzZSk7CisgICAgcmVxLnNldFJlcXVlc3RI
ZWFkZXIoIklmLVVubW9kaWZpZWQtU2luY2UiLCAiVHVlLCAwMSBKYW4gMTk4MCAwMTowMDowMCBH
TVQiKTsKKyAgICByZXEuc2VuZChudWxsKTsKKyAgICBsb2coIklmLVVubW9kaWZpZWQtU2luY2Ug
b3ZlcnJpZGUgKG1vZGlmaWVkKTogc3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOworCisgICAgcmVx
Lm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVwbHkueG1sIiwgZmFsc2UpOworICAgIHJlcS5zZXRS
ZXF1ZXN0SGVhZGVyKCJJZi1NYXRjaCIsIGVUYWcpOworICAgIHJlcS5zZW5kKG51bGwpOworICAg
IGxvZygiSWYtTWF0Y2ggb3ZlcnJpZGU6IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsKKworICAg
IHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNlKTsKKyAgICByZXEu
c2V0UmVxdWVzdEhlYWRlcigiSWYtTWF0Y2giLCAieHl6enkiKTsKKyAgICByZXEuc2VuZChudWxs
KTsKKyAgICBsb2coIklmLU1hdGNoIG92ZXJyaWRlIChub25lIG1hdGNoKTogc3RhdHVzID0gIiAr
IHJlcS5zdGF0dXMpOworCisgICAgcmVxLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVwbHkueG1s
IiwgZmFsc2UpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwgZVRh
Zyk7CisgICAgcmVxLnNlbmQobnVsbCk7CisgICAgbG9nKCJJZi1Ob25lLU1hdGNoIG92ZXJyaWRl
OiBzdGF0dXMgPSAiICsgcmVxLnN0YXR1cyk7CisKKyAgICByZXEub3BlbigiR0VUIiwgInJlc291
cmNlcy9yZXBseS54bWwiLCBmYWxzZSk7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLU5v
bmUtTWF0Y2giLCAieHl6enkiKTsKKyAgICByZXEuc2VuZChudWxsKTsKKyAgICBsb2coIklmLU5v
bmUtTWF0Y2ggb3ZlcnJpZGUgKG5vbmUgbWF0Y2gpOiBzdGF0dXMgPSAiICsgcmVxLnN0YXR1cyk7
CisKKyAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCBmYWxzZSk7Cisg
ICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLVJhbmdlIiwgZVRhZyk7CisgICAgcmVxLnNldFJl
cXVlc3RIZWFkZXIoIlJhbmdlIiwgImJ5dGVzPTUyLTYwIik7CisgICAgcmVxLnNlbmQobnVsbCk7
CisgICAgbG9nKCJJZi1SYW5nZSBvdmVycmlkZTogc3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOwor
CisgICAgcmVxLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVwbHkueG1sIiwgZmFsc2UpOworICAg
IHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1SYW5nZSIsICJ4eXp6eSIpOworICAgIHJlcS5zZXRS
ZXF1ZXN0SGVhZGVyKCJSYW5nZSIsICJieXRlcz01Mi02MCIpOworICAgIHJlcS5zZW5kKG51bGwp
OworICAgIGxvZygiSWYtUmFuZ2Ugb3ZlcnJpZGUgKG5vbmUgbWF0Y2gpOiBzdGF0dXMgPSAiICsg
cmVxLnN0YXR1cyk7CisKKyAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy8zMDQucGwiLCBm
YWxzZSk7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIiwgIlR1
ZSwgMDEgSmFuIDE5ODAgMDE6MDA6MDAgR01UIik7CisgICAgcmVxLnNlbmQobnVsbCk7CisgICAg
bG9nKCJJZi1Nb2RpZmllZC1TaW5jZSBvdmVycmlkZSAodW5jYWNoZWQgcmVzcG9uc2UpOiBzdGF0
dXMgPSAiICsgcmVxLnN0YXR1cyk7CisKKyAgICAvLyBhc3luYworICAgIHZhciBhc3luY1N0ZXAg
PSAxOworCisgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NTdGF0ZUNoYW5nZTsK
KyAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCB0cnVlKTsKKyAgICBy
ZXEuc2VuZChudWxsKTsKKworICAgIGZ1bmN0aW9uIHByb2Nlc3NTdGF0ZUNoYW5nZSgpIHsKKyAg
ICAKKyAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0KXsKKyAgICAgICAgICBpZiAoYXN5bmNT
dGVwID09IDEpIHsKKyAgICAgICAgICAgIGFzeW5jU3RlcCA9IDI7CisgICAgICAgICAgICBpZiAo
cmVxLnJlc3BvbnNlVGV4dCA9PSAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93
cy0xMjUxIj8+XG48bm9kZT7Qn9GA0L7QstC10YDQutCwPC9ub2RlPlxuJykKKyAgICAgICAgICAg
ICAgICBsb2coImFzeW5jOiBBdXRvbWF0aWNhbGx5IGNhY2hlZCByZXNwb25zZSBib2R5IGlzIGNv
cnJlY3Q7IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBsb2coImFzeW5jOiBBdXRvbWF0aWNhbGx5IGNhY2hlZCByZXNwb25zZSBib2R5
IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBleHBlY3RlZCBvbmU7IHN0YXR1cyA9ICIgKyByZXEuc3Rh
dHVzKTsKKworICAgICAgICAgICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAg
ICAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gcHJvY2Vzc1N0YXRlQ2hhbmdlOworICAgICAg
ICAgICAgcmVxLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVwbHkueG1sIiwgdHJ1ZSk7CisgICAg
ICAgICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLCBsYXN0TW9k
aWZpZWQpOworICAgICAgICAgICAgcmVxLnNlbmQobnVsbCk7CisgICAgICAgICAgfSBlbHNlIGlm
IChhc3luY1N0ZXAgPT0gMikgeworICAgICAgICAgICAgYXN5bmNTdGVwID0gMzsKKyAgICAgICAg
ICAgIGxvZygiYXN5bmM6IElmLU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlOiBzdGF0dXMgPSAiICsg
cmVxLnN0YXR1cyk7CisKKyAgICAgICAgICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwor
ICAgICAgICAgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NTdGF0ZUNoYW5nZTsK
KyAgICAgICAgICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIHRydWUp
OworICAgICAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIiwg
IlR1ZSwgMDEgSmFuIDE5ODAgMDE6MDA6MDAgR01UIik7CisgICAgICAgICAgICByZXEuc2VuZChu
dWxsKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGFzeW5jU3RlcCA9PSAzKSB7CisgICAgICAgICAg
ICBhc3luY1N0ZXAgPSA0OworICAgICAgICAgICAgbG9nKCJhc3luYzogSWYtTW9kaWZpZWQtU2lu
Y2Ugb3ZlcnJpZGUgKG1vZGlmaWVkKTogc3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOworCisgICAg
ICAgICAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgICAgIHJlcS5vbnJl
YWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNzU3RhdGVDaGFuZ2U7CisgICAgICAgICAgICByZXEub3Bl
bigiR0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCB0cnVlKTsKKyAgICAgICAgICAgIHJlcS5z
ZXRSZXF1ZXN0SGVhZGVyKCJJZi1Vbm1vZGlmaWVkLVNpbmNlIiwgbGFzdE1vZGlmaWVkKTsKKyAg
ICAgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICAgIH0gZWxzZSBpZiAoYXN5bmNTdGVw
ID09IDQpIHsKKyAgICAgICAgICAgIGFzeW5jU3RlcCA9IDU7CisgICAgICAgICAgICBsb2coImFz
eW5jOiBJZi1Vbm1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlOiBzdGF0dXMgPSAiICsgcmVxLnN0YXR1
cyk7CisKKyAgICAgICAgICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICAg
ICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NTdGF0ZUNoYW5nZTsKKyAgICAgICAg
ICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIHRydWUpOworICAgICAg
ICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLVVubW9kaWZpZWQtU2luY2UiLCAiVHVlLCAw
MSBKYW4gMTk4MCAwMTowMDowMCBHTVQiKTsKKyAgICAgICAgICAgIHJlcS5zZW5kKG51bGwpOwor
ICAgICAgICAgIH0gZWxzZSBpZiAoYXN5bmNTdGVwID09IDUpIHsKKyAgICAgICAgICAgIGFzeW5j
U3RlcCA9IDY7CisgICAgICAgICAgICBsb2coImFzeW5jOiBJZi1Vbm1vZGlmaWVkLVNpbmNlIG92
ZXJyaWRlIChtb2RpZmllZCk6IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsKKworICAgICAgICAg
ICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAgICAgICByZXEub25yZWFkeXN0
YXRlY2hhbmdlID0gcHJvY2Vzc1N0YXRlQ2hhbmdlOworICAgICAgICAgICAgcmVxLm9wZW4oIkdF
VCIsICJyZXNvdXJjZXMvcmVwbHkueG1sIiwgdHJ1ZSk7CisgICAgICAgICAgICByZXEuc2V0UmVx
dWVzdEhlYWRlcigiSWYtTWF0Y2giLCBlVGFnKTsKKyAgICAgICAgICAgIHJlcS5zZW5kKG51bGwp
OworICAgICAgICAgIH0gZWxzZSBpZiAoYXN5bmNTdGVwID09IDYpIHsKKyAgICAgICAgICAgIGFz
eW5jU3RlcCA9IDc7CisgICAgICAgICAgICBsb2coImFzeW5jOiBJZi1NYXRjaCBvdmVycmlkZTog
c3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOworCisgICAgICAgICAgICByZXEgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKKyAgICAgICAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNz
U3RhdGVDaGFuZ2U7CisgICAgICAgICAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXBs
eS54bWwiLCB0cnVlKTsKKyAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1NYXRj
aCIsICJ4eXp6eSIpOworICAgICAgICAgICAgcmVxLnNlbmQobnVsbCk7CisgICAgICAgICAgfSBl
bHNlIGlmIChhc3luY1N0ZXAgPT0gNykgeworICAgICAgICAgICAgYXN5bmNTdGVwID0gODsKKyAg
ICAgICAgICAgIGxvZygiYXN5bmM6IElmLU1hdGNoIG92ZXJyaWRlIChub25lIG1hdGNoKTogc3Rh
dHVzID0gIiArIHJlcS5zdGF0dXMpOworCisgICAgICAgICAgICByZXEgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKKyAgICAgICAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNzU3Rh
dGVDaGFuZ2U7CisgICAgICAgICAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXBseS54
bWwiLCB0cnVlKTsKKyAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1h
dGNoIiwgZVRhZyk7CisgICAgICAgICAgICByZXEuc2VuZChudWxsKTsKKyAgICAgICAgICB9IGVs
c2UgaWYgKGFzeW5jU3RlcCA9PSA4KSB7CisgICAgICAgICAgICBhc3luY1N0ZXAgPSA5OworICAg
ICAgICAgICAgbG9nKCJhc3luYzogSWYtTm9uZS1NYXRjaCBvdmVycmlkZTogc3RhdHVzID0gIiAr
IHJlcS5zdGF0dXMpOworCisgICAgICAgICAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
KyAgICAgICAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNzU3RhdGVDaGFuZ2U7
CisgICAgICAgICAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCB0cnVl
KTsKKyAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwgInh5
enp5Iik7CisgICAgICAgICAgICByZXEuc2VuZChudWxsKTsKKyAgICAgICAgICB9IGVsc2UgaWYg
KGFzeW5jU3RlcCA9PSA5KSB7CisgICAgICAgICAgICBhc3luY1N0ZXAgPSAxMDsKKyAgICAgICAg
ICAgIGxvZygiYXN5bmM6IElmLU5vbmUtTWF0Y2ggb3ZlcnJpZGUgKG5vbmUgbWF0Y2gpOiBzdGF0
dXMgPSAiICsgcmVxLnN0YXR1cyk7CisKKyAgICAgICAgICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworICAgICAgICAgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NTdGF0
ZUNoYW5nZTsKKyAgICAgICAgICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5Lnht
bCIsIHRydWUpOworICAgICAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLVJhbmdlIiwg
ZVRhZyk7CisgICAgICAgICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCAiYnl0ZXM9
NTItNTkiKTsKKyAgICAgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICAgIH0gZWxzZSBp
ZiAoYXN5bmNTdGVwID09IDEwKSB7CisgICAgICAgICAgICBhc3luY1N0ZXAgPSAxMTsKKyAgICAg
ICAgICAgIGxvZygiYXN5bmM6IElmLVJhbmdlIG92ZXJyaWRlOiBzdGF0dXMgPSAiICsgcmVxLnN0
YXR1cyk7CisKKyAgICAgICAgICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAg
ICAgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NTdGF0ZUNoYW5nZTsKKyAgICAg
ICAgICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIHRydWUpOworICAg
ICAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLVJhbmdlIiwgInh5enp5Iik7CisgICAg
ICAgICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCAiYnl0ZXM9NTItNTkiKTsKKyAg
ICAgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICAgIH0gZWxzZSBpZiAoYXN5bmNTdGVw
ID09IDExKSB7CisgICAgICAgICAgICBhc3luY1N0ZXAgPSAxMjsKKyAgICAgICAgICAgIGxvZygi
YXN5bmM6IElmLVJhbmdlIG92ZXJyaWRlIChub25lIG1hdGNoKTogc3RhdHVzID0gIiArIHJlcS5z
dGF0dXMpOworCisgICAgICAgICAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAg
ICAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNzU3RhdGVDaGFuZ2U7CisgICAg
ICAgICAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy8zMDQucGwiLCB0cnVlKTsKKyAgICAg
ICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsICJUdWUsIDAx
IEphbiAxOTgwIDAxOjAwOjAwIEdNVCIpOworICAgICAgICAgICAgcmVxLnNlbmQobnVsbCk7Cisg
ICAgICAgICAgfSBlbHNlIGlmIChhc3luY1N0ZXAgPT0gMTIpIHsKKyAgICAgICAgICAgIGxvZygi
YXN5bmM6IElmLU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlICh1bmNhY2hlZCByZXNwb25zZSk6IHN0
YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzLzMwNC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy8zMDQucGwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy8zMDQucGwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNSBAQAorIyEvdXNyL2Jpbi9wZXJsCisjIFNpbXBsZSBzY3JpcHQgdG8gZ2VuZXJh
dGUgYSAzMDQgSFRUUCBzdGF0dXMKKworcHJpbnQgIlN0YXR1czogMzA0IE5vdCBNb2RpZmllZFxy
XG4iOworcHJpbnQgIlxyXG4iOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvMzA0LnBsCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogV2ViS2l0L01pc2MvV2ViTlNVUkxSZXF1ZXN0
RXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L01pc2MvV2ViTlNVUkxSZXF1ZXN0RXh0cmFz
LmgJKHJldmlzaW9uIDE1MTM3KQorKysgV2ViS2l0L01pc2MvV2ViTlNVUkxSZXF1ZXN0RXh0cmFz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogLSAoTlNTdHJpbmcgKilfd2Vi
X0hUVFBSZWZlcnJlcjsKIC0gKE5TU3RyaW5nICopX3dlYl9IVFRQQ29udGVudFR5cGU7Ci0KKy0g
KGJvb2wpX3dlYl9pc0NvbmRpdGlvbmFsUmVxdWVzdDsKIEBlbmQKIAogQGludGVyZmFjZSBOU011
dGFibGVVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3RFeHRyYXMpCkluZGV4OiBXZWJLaXQvTWlz
Yy9XZWJOU1VSTFJlcXVlc3RFeHRyYXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvTWlzYy9XZWJO
U1VSTFJlcXVlc3RFeHRyYXMubQkocmV2aXNpb24gMTUxMzcpCisrKyBXZWJLaXQvTWlzYy9XZWJO
U1VSTFJlcXVlc3RFeHRyYXMubQkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMjEgQEAKICAg
ICByZXR1cm4gW3NlbGYgdmFsdWVGb3JIVFRQSGVhZGVyRmllbGQ6V2ViQ29udGVudFR5cGVdOwog
fQogCistIChib29sKV93ZWJfaXNDb25kaXRpb25hbFJlcXVlc3QKK3sKKyAgICBOU0VudW1lcmF0
b3IgKmUgPSBbW3NlbGYgYWxsSFRUUEhlYWRlckZpZWxkc10ga2V5RW51bWVyYXRvcl07CisgICAg
TlNTdHJpbmcgKmtleTsKKyAgICB3aGlsZSAoKGtleSA9IChOU1N0cmluZyAqKVtlIG5leHRPYmpl
Y3RdKSAhPSBuaWwpIHsKKyAgICAgICAgaWYgKE5TT3JkZXJlZFNhbWUgPT0gW2tleSBjYXNlSW5z
ZW5zaXRpdmVDb21wYXJlOkAiSWYtTWF0Y2giXSB8fAorICAgICAgICAgICAgTlNPcmRlcmVkU2Ft
ZSA9PSBba2V5IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJJZi1Nb2RpZmllZC1TaW5jZSJdIHx8
CisgICAgICAgICAgICBOU09yZGVyZWRTYW1lID09IFtrZXkgY2FzZUluc2Vuc2l0aXZlQ29tcGFy
ZTpAIklmLU5vbmUtTWF0Y2giXSB8fAorICAgICAgICAgICAgTlNPcmRlcmVkU2FtZSA9PSBba2V5
IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJJZi1SYW5nZSJdIHx8CisgICAgICAgICAgICBOU09y
ZGVyZWRTYW1lID09IFtrZXkgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAIklmLVVubW9kaWZpZWQt
U2luY2UiXSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIEBlbmQKIAogCkluZGV4OiBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVC
cmlkZ2UubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVCcmlk
Z2UubQkocmV2aXNpb24gMTUxMzcpCisrKyBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVC
cmlkZ2UubQkod29ya2luZyBjb3B5KQpAQCAtNTczLDcgKzU3MywxMCBAQCBOU1N0cmluZyAqV2Vi
UGx1Z2luQ29udGFpbmVyS2V5ID0gICBAIldlCiAgICAgICAgIFtyZXF1ZXN0IGFkZFZhbHVlOlty
ZXF1ZXN0SGVhZGVycyBvYmplY3RGb3JLZXk6a2V5XSBmb3JIVFRQSGVhZGVyRmllbGQ6a2V5XTsK
ICAgICB9CiAgICAgCi0gICAgW3JlcXVlc3Qgc2V0Q2FjaGVQb2xpY3k6W1tbc2VsZiBkYXRhU291
cmNlXSByZXF1ZXN0XSBjYWNoZVBvbGljeV1dOworICAgIGlmIChbcmVxdWVzdCBfd2ViX2lzQ29u
ZGl0aW9uYWxSZXF1ZXN0XSkKKyAgICAgICAgW3JlcXVlc3Qgc2V0Q2FjaGVQb2xpY3k6TlNVUkxS
ZXF1ZXN0UmVsb2FkSWdub3JpbmdDYWNoZURhdGFdOworICAgIGVsc2UKKyAgICAgICAgW3JlcXVl
c3Qgc2V0Q2FjaGVQb2xpY3k6W1tbc2VsZiBkYXRhU291cmNlXSByZXF1ZXN0XSBjYWNoZVBvbGlj
eV1dOwogICAgIGlmICghaGlkZVJlZmVycmVyKQogICAgICAgICBbcmVxdWVzdCBfd2ViX3NldEhU
VFBSZWZlcnJlcjpbc2VsZiByZWZlcnJlcl1dOwogICAgIApJbmRleDogV2ViS2l0L1dlYkNvcmVT
dXBwb3J0L1dlYlN1YnJlc291cmNlTG9hZGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYkNv
cmVTdXBwb3J0L1dlYlN1YnJlc291cmNlTG9hZGVyLm0JKHJldmlzaW9uIDE1MTM3KQorKysgV2Vi
S2l0L1dlYkNvcmVTdXBwb3J0L1dlYlN1YnJlc291cmNlTG9hZGVyLm0JKHdvcmtpbmcgY29weSkK
QEAgLTgxLDcgKzgxLDEwIEBACiAgICAgLy8gMi4gRGVsZWdhdGVzIHRoYXQgbW9kaWZ5IHRoZSBj
YWNoZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91bGQKICAgICAvLyAgICBub3Qg
YWZmZWN0IGFueSBvdGhlciByZXNvdXJjZXMuIFN1Y2ggY2hhbmdlcyBuZWVkIHRvIGJlIGRvbmUK
ICAgICAvLyAgICBwZXIgcmVxdWVzdC4KLSAgICBbbmV3UmVxdWVzdCBzZXRDYWNoZVBvbGljeTpb
W3NvdXJjZSBfb3JpZ2luYWxSZXF1ZXN0XSBjYWNoZVBvbGljeV1dOworICAgIGlmIChbbmV3UmVx
dWVzdCBfd2ViX2lzQ29uZGl0aW9uYWxSZXF1ZXN0XSkKKyAgICAgICAgW25ld1JlcXVlc3Qgc2V0
Q2FjaGVQb2xpY3k6TlNVUkxSZXF1ZXN0UmVsb2FkSWdub3JpbmdDYWNoZURhdGFdOworICAgIGVs
c2UKKyAgICAgICAgW25ld1JlcXVlc3Qgc2V0Q2FjaGVQb2xpY3k6W1tzb3VyY2UgX29yaWdpbmFs
UmVxdWVzdF0gY2FjaGVQb2xpY3ldXTsKICAgICBbbmV3UmVxdWVzdCBfd2ViX3NldEhUVFBSZWZl
cnJlcjpyZWZlcnJlcl07CiAgICAgCiAgICAgW1tzb3VyY2Ugd2ViRnJhbWVdIF9hZGRFeHRyYUZp
ZWxkc1RvUmVxdWVzdDpuZXdSZXF1ZXN0IG1haW5SZXNvdXJjZTpOTyBhbHdheXNGcm9tUmVxdWVz
dDpOT107Cg==
</data>
<flag name="review"
          id="2748"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9186</attachid>
            <date>2006-07-03 21:44:38 -0700</date>
            <delta_ts>2006-07-03 23:46:49 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>8210r2_patch.txt</filename>
            <type>text/plain</type>
            <size>14630</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY2FjaGUtb3ZlcnJp
ZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvY2FjaGUtb3ZlcnJpZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1vdmVycmlkZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKK1Rlc3RzIGZvciBidWcgODIx
MCAtIENvbmRpdGlvbmFsIFhNTEh0dHBSZXF1ZXN0IGdldHMgc2hvdWxkIHBhc3MgMzA0IHJlc3Bv
bnNlcyB1bmNoYW5nZWQuCisKK0ZldGNoaW5nIHRoZSByZXNvdXJjZSBvbmNlIHRvIGNhY2hlIHRo
ZSByZXNwb25zZS4uLgorQXV0b21hdGljYWxseSBjYWNoZWQgcmVzcG9uc2UgYm9keSBpcyBjb3Jy
ZWN0OyBzdGF0dXMgPSAyMDAKK0lmLU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlOiBzdGF0dXMgPSAz
MDQKK0lmLU1PRElGSUVELVNpbmNlIG92ZXJyaWRlOiBzdGF0dXMgPSAzMDQKK0lmLU1vZGlmaWVk
LVNpbmNlIG92ZXJyaWRlIChtb2RpZmllZCk6IHN0YXR1cyA9IDIwMAorSWYtVW5tb2RpZmllZC1T
aW5jZSBvdmVycmlkZTogc3RhdHVzID0gMjAwCitJZi1Vbm1vZGlmaWVkLVNpbmNlIG92ZXJyaWRl
IChtb2RpZmllZCk6IHN0YXR1cyA9IDQxMgorSWYtTWF0Y2ggb3ZlcnJpZGU6IHN0YXR1cyA9IDIw
MAorSWYtTWF0Y2ggb3ZlcnJpZGUgKG5vbmUgbWF0Y2gpOiBzdGF0dXMgPSA0MTIKK0lmLU5vbmUt
TWF0Y2ggb3ZlcnJpZGU6IHN0YXR1cyA9IDMwNAorSWYtTm9uZS1NYXRjaCBvdmVycmlkZSAobm9u
ZSBtYXRjaCk6IHN0YXR1cyA9IDIwMAorSWYtUmFuZ2Ugb3ZlcnJpZGU6IHN0YXR1cyA9IDIwNgor
SWYtUmFuZ2Ugb3ZlcnJpZGUgKG5vbmUgbWF0Y2gpOiBzdGF0dXMgPSAyMDAKK0lmLU1vZGlmaWVk
LVNpbmNlIG92ZXJyaWRlICh1bmNhY2hlZCByZXNwb25zZSk6IHN0YXR1cyA9IDMwNAorYXN5bmM6
IEF1dG9tYXRpY2FsbHkgY2FjaGVkIHJlc3BvbnNlIGJvZHkgaXMgY29ycmVjdDsgc3RhdHVzID0g
MjAwCithc3luYzogSWYtTW9kaWZpZWQtU2luY2Ugb3ZlcnJpZGU6IHN0YXR1cyA9IDMwNAorYXN5
bmM6IElmLU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlIChtb2RpZmllZCk6IHN0YXR1cyA9IDIwMAor
YXN5bmM6IElmLVVubW9kaWZpZWQtU2luY2Ugb3ZlcnJpZGU6IHN0YXR1cyA9IDIwMAorYXN5bmM6
IElmLVVubW9kaWZpZWQtU2luY2Ugb3ZlcnJpZGUgKG1vZGlmaWVkKTogc3RhdHVzID0gNDEyCith
c3luYzogSWYtTWF0Y2ggb3ZlcnJpZGU6IHN0YXR1cyA9IDIwMAorYXN5bmM6IElmLU1hdGNoIG92
ZXJyaWRlIChub25lIG1hdGNoKTogc3RhdHVzID0gNDEyCithc3luYzogSWYtTm9uZS1NYXRjaCBv
dmVycmlkZTogc3RhdHVzID0gMzA0Cithc3luYzogSWYtTm9uZS1NYXRjaCBvdmVycmlkZSAobm9u
ZSBtYXRjaCk6IHN0YXR1cyA9IDIwMAorYXN5bmM6IElmLVJhbmdlIG92ZXJyaWRlOiBzdGF0dXMg
PSAyMDYKK2FzeW5jOiBJZi1SYW5nZSBvdmVycmlkZSAobm9uZSBtYXRjaCk6IHN0YXR1cyA9IDIw
MAorYXN5bmM6IElmLU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlICh1bmNhY2hlZCByZXNwb25zZSk6
IHN0YXR1cyA9IDMwNAorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2NhY2hlLW92ZXJyaWRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1vdmVycmlkZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1vdmVycmlkZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyMSBAQAor77u/PGh0bWw+Cis8Ym9keT4KKzxwPlRl
c3RzIGZvciA8YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyMTAiPiBidWcgODIxMDwvYT4gLSAKK0NvbmRpdGlvbmFsIFhNTEh0dHBSZXF1ZXN0
IGdldHMgc2hvdWxkIHBhc3MgMzA0IHJlc3BvbnNlcyB1bmNoYW5nZWQuPC9wPgorPHNjcmlwdD4K
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICAKKyAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAgICAKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
KyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsK
KyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdl
KSk7CisgICAgICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQor
CisgICAgLy8gc3luYworICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICByZXEub3Bl
bigiR0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCBmYWxzZSk7CisgICAgbG9nKCJGZXRjaGlu
ZyB0aGUgcmVzb3VyY2Ugb25jZSB0byBjYWNoZSB0aGUgcmVzcG9uc2UuLi4iKTsKKyAgICByZXEu
c2VuZChudWxsKTsKKyAgICBsYXN0TW9kaWZpZWQgPSByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIkxh
c3QtTW9kaWZpZWQiKTsKKyAgICBlVGFnID0gcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJFVGFnIik7
CisgICAgCisgICAgcmVxLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVwbHkueG1sIiwgZmFsc2Up
OworICAgIHJlcS5zZW5kKG51bGwpOworICAgIGlmIChyZXEucmVzcG9uc2VUZXh0ID09ICc8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dzLTEyNTEiPz5cbjxub2RlPtCf0YDQvtCy
0LXRgNC60LA8L25vZGU+XG4nKQorICAgICAgICBsb2coIkF1dG9tYXRpY2FsbHkgY2FjaGVkIHJl
c3BvbnNlIGJvZHkgaXMgY29ycmVjdDsgc3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOworICAgIGVs
c2UKKyAgICAgICAgbG9nKCJBdXRvbWF0aWNhbGx5IGNhY2hlZCByZXNwb25zZSBib2R5IGlzIGRp
ZmZlcmVudCBmcm9tIHRoZSBleHBlY3RlZCBvbmU7IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsK
KworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNlKTsKKyAg
ICByZXEuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLCBsYXN0TW9kaWZpZWQp
OworICAgIHJlcS5zZW5kKG51bGwpOworICAgIGxvZygiSWYtTW9kaWZpZWQtU2luY2Ugb3ZlcnJp
ZGU6IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsKKworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVz
b3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNlKTsKKyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiSWYt
TU9ESUZJRUQtU2luY2UiLCBsYXN0TW9kaWZpZWQpOworICAgIHJlcS5zZW5kKG51bGwpOworICAg
IGxvZygiSWYtTU9ESUZJRUQtU2luY2Ugb3ZlcnJpZGU6IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVz
KTsKKworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNlKTsK
KyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLCAiVHVlLCAwMSBK
YW4gMTk4MCAwMTowMDowMCBHTVQiKTsKKyAgICByZXEuc2VuZChudWxsKTsKKyAgICBsb2coIklm
LU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlIChtb2RpZmllZCk6IHN0YXR1cyA9ICIgKyByZXEuc3Rh
dHVzKTsKKworICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNl
KTsKKyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiSWYtVW5tb2RpZmllZC1TaW5jZSIsIGxhc3RN
b2RpZmllZCk7CisgICAgcmVxLnNlbmQobnVsbCk7CisgICAgbG9nKCJJZi1Vbm1vZGlmaWVkLVNp
bmNlIG92ZXJyaWRlOiBzdGF0dXMgPSAiICsgcmVxLnN0YXR1cyk7CisKKyAgICByZXEub3Blbigi
R0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCBmYWxzZSk7CisgICAgcmVxLnNldFJlcXVlc3RI
ZWFkZXIoIklmLVVubW9kaWZpZWQtU2luY2UiLCAiVHVlLCAwMSBKYW4gMTk4MCAwMTowMDowMCBH
TVQiKTsKKyAgICByZXEuc2VuZChudWxsKTsKKyAgICBsb2coIklmLVVubW9kaWZpZWQtU2luY2Ug
b3ZlcnJpZGUgKG1vZGlmaWVkKTogc3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOworCisgICAgcmVx
Lm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVwbHkueG1sIiwgZmFsc2UpOworICAgIHJlcS5zZXRS
ZXF1ZXN0SGVhZGVyKCJJZi1NYXRjaCIsIGVUYWcpOworICAgIHJlcS5zZW5kKG51bGwpOworICAg
IGxvZygiSWYtTWF0Y2ggb3ZlcnJpZGU6IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsKKworICAg
IHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIGZhbHNlKTsKKyAgICByZXEu
c2V0UmVxdWVzdEhlYWRlcigiSWYtTWF0Y2giLCAieHl6enkiKTsKKyAgICByZXEuc2VuZChudWxs
KTsKKyAgICBsb2coIklmLU1hdGNoIG92ZXJyaWRlIChub25lIG1hdGNoKTogc3RhdHVzID0gIiAr
IHJlcS5zdGF0dXMpOworCisgICAgcmVxLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVwbHkueG1s
IiwgZmFsc2UpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwgZVRh
Zyk7CisgICAgcmVxLnNlbmQobnVsbCk7CisgICAgbG9nKCJJZi1Ob25lLU1hdGNoIG92ZXJyaWRl
OiBzdGF0dXMgPSAiICsgcmVxLnN0YXR1cyk7CisKKyAgICByZXEub3BlbigiR0VUIiwgInJlc291
cmNlcy9yZXBseS54bWwiLCBmYWxzZSk7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLU5v
bmUtTWF0Y2giLCAieHl6enkiKTsKKyAgICByZXEuc2VuZChudWxsKTsKKyAgICBsb2coIklmLU5v
bmUtTWF0Y2ggb3ZlcnJpZGUgKG5vbmUgbWF0Y2gpOiBzdGF0dXMgPSAiICsgcmVxLnN0YXR1cyk7
CisKKyAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCBmYWxzZSk7Cisg
ICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLVJhbmdlIiwgZVRhZyk7CisgICAgcmVxLnNldFJl
cXVlc3RIZWFkZXIoIlJhbmdlIiwgImJ5dGVzPTUyLTYwIik7CisgICAgcmVxLnNlbmQobnVsbCk7
CisgICAgbG9nKCJJZi1SYW5nZSBvdmVycmlkZTogc3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOwor
CisgICAgcmVxLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVwbHkueG1sIiwgZmFsc2UpOworICAg
IHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1SYW5nZSIsICJ4eXp6eSIpOworICAgIHJlcS5zZXRS
ZXF1ZXN0SGVhZGVyKCJSYW5nZSIsICJieXRlcz01Mi02MCIpOworICAgIHJlcS5zZW5kKG51bGwp
OworICAgIGxvZygiSWYtUmFuZ2Ugb3ZlcnJpZGUgKG5vbmUgbWF0Y2gpOiBzdGF0dXMgPSAiICsg
cmVxLnN0YXR1cyk7CisKKyAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy8zMDQucGwiLCBm
YWxzZSk7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIiwgIlR1
ZSwgMDEgSmFuIDE5ODAgMDE6MDA6MDAgR01UIik7CisgICAgcmVxLnNlbmQobnVsbCk7CisgICAg
bG9nKCJJZi1Nb2RpZmllZC1TaW5jZSBvdmVycmlkZSAodW5jYWNoZWQgcmVzcG9uc2UpOiBzdGF0
dXMgPSAiICsgcmVxLnN0YXR1cyk7CisKKyAgICAvLyBhc3luYworICAgIHZhciBhc3luY1N0ZXAg
PSAxOworCisgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NTdGF0ZUNoYW5nZTsK
KyAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCB0cnVlKTsKKyAgICBy
ZXEuc2VuZChudWxsKTsKKworICAgIGZ1bmN0aW9uIHByb2Nlc3NTdGF0ZUNoYW5nZSgpIHsKKyAg
ICAKKyAgICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0KXsKKyAgICAgICAgICBpZiAoYXN5bmNT
dGVwID09IDEpIHsKKyAgICAgICAgICAgIGFzeW5jU3RlcCA9IDI7CisgICAgICAgICAgICBpZiAo
cmVxLnJlc3BvbnNlVGV4dCA9PSAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93
cy0xMjUxIj8+XG48bm9kZT7Qn9GA0L7QstC10YDQutCwPC9ub2RlPlxuJykKKyAgICAgICAgICAg
ICAgICBsb2coImFzeW5jOiBBdXRvbWF0aWNhbGx5IGNhY2hlZCByZXNwb25zZSBib2R5IGlzIGNv
cnJlY3Q7IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBsb2coImFzeW5jOiBBdXRvbWF0aWNhbGx5IGNhY2hlZCByZXNwb25zZSBib2R5
IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBleHBlY3RlZCBvbmU7IHN0YXR1cyA9ICIgKyByZXEuc3Rh
dHVzKTsKKworICAgICAgICAgICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAg
ICAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gcHJvY2Vzc1N0YXRlQ2hhbmdlOworICAgICAg
ICAgICAgcmVxLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVwbHkueG1sIiwgdHJ1ZSk7CisgICAg
ICAgICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLCBsYXN0TW9k
aWZpZWQpOworICAgICAgICAgICAgcmVxLnNlbmQobnVsbCk7CisgICAgICAgICAgfSBlbHNlIGlm
IChhc3luY1N0ZXAgPT0gMikgeworICAgICAgICAgICAgYXN5bmNTdGVwID0gMzsKKyAgICAgICAg
ICAgIGxvZygiYXN5bmM6IElmLU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlOiBzdGF0dXMgPSAiICsg
cmVxLnN0YXR1cyk7CisKKyAgICAgICAgICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwor
ICAgICAgICAgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NTdGF0ZUNoYW5nZTsK
KyAgICAgICAgICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIHRydWUp
OworICAgICAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIiwg
IlR1ZSwgMDEgSmFuIDE5ODAgMDE6MDA6MDAgR01UIik7CisgICAgICAgICAgICByZXEuc2VuZChu
dWxsKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKGFzeW5jU3RlcCA9PSAzKSB7CisgICAgICAgICAg
ICBhc3luY1N0ZXAgPSA0OworICAgICAgICAgICAgbG9nKCJhc3luYzogSWYtTW9kaWZpZWQtU2lu
Y2Ugb3ZlcnJpZGUgKG1vZGlmaWVkKTogc3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOworCisgICAg
ICAgICAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgICAgIHJlcS5vbnJl
YWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNzU3RhdGVDaGFuZ2U7CisgICAgICAgICAgICByZXEub3Bl
bigiR0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCB0cnVlKTsKKyAgICAgICAgICAgIHJlcS5z
ZXRSZXF1ZXN0SGVhZGVyKCJJZi1Vbm1vZGlmaWVkLVNpbmNlIiwgbGFzdE1vZGlmaWVkKTsKKyAg
ICAgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICAgIH0gZWxzZSBpZiAoYXN5bmNTdGVw
ID09IDQpIHsKKyAgICAgICAgICAgIGFzeW5jU3RlcCA9IDU7CisgICAgICAgICAgICBsb2coImFz
eW5jOiBJZi1Vbm1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlOiBzdGF0dXMgPSAiICsgcmVxLnN0YXR1
cyk7CisKKyAgICAgICAgICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICAg
ICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NTdGF0ZUNoYW5nZTsKKyAgICAgICAg
ICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIHRydWUpOworICAgICAg
ICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLVVubW9kaWZpZWQtU2luY2UiLCAiVHVlLCAw
MSBKYW4gMTk4MCAwMTowMDowMCBHTVQiKTsKKyAgICAgICAgICAgIHJlcS5zZW5kKG51bGwpOwor
ICAgICAgICAgIH0gZWxzZSBpZiAoYXN5bmNTdGVwID09IDUpIHsKKyAgICAgICAgICAgIGFzeW5j
U3RlcCA9IDY7CisgICAgICAgICAgICBsb2coImFzeW5jOiBJZi1Vbm1vZGlmaWVkLVNpbmNlIG92
ZXJyaWRlIChtb2RpZmllZCk6IHN0YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsKKworICAgICAgICAg
ICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgICAgICAgICByZXEub25yZWFkeXN0
YXRlY2hhbmdlID0gcHJvY2Vzc1N0YXRlQ2hhbmdlOworICAgICAgICAgICAgcmVxLm9wZW4oIkdF
VCIsICJyZXNvdXJjZXMvcmVwbHkueG1sIiwgdHJ1ZSk7CisgICAgICAgICAgICByZXEuc2V0UmVx
dWVzdEhlYWRlcigiSWYtTWF0Y2giLCBlVGFnKTsKKyAgICAgICAgICAgIHJlcS5zZW5kKG51bGwp
OworICAgICAgICAgIH0gZWxzZSBpZiAoYXN5bmNTdGVwID09IDYpIHsKKyAgICAgICAgICAgIGFz
eW5jU3RlcCA9IDc7CisgICAgICAgICAgICBsb2coImFzeW5jOiBJZi1NYXRjaCBvdmVycmlkZTog
c3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOworCisgICAgICAgICAgICByZXEgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKKyAgICAgICAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNz
U3RhdGVDaGFuZ2U7CisgICAgICAgICAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXBs
eS54bWwiLCB0cnVlKTsKKyAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1NYXRj
aCIsICJ4eXp6eSIpOworICAgICAgICAgICAgcmVxLnNlbmQobnVsbCk7CisgICAgICAgICAgfSBl
bHNlIGlmIChhc3luY1N0ZXAgPT0gNykgeworICAgICAgICAgICAgYXN5bmNTdGVwID0gODsKKyAg
ICAgICAgICAgIGxvZygiYXN5bmM6IElmLU1hdGNoIG92ZXJyaWRlIChub25lIG1hdGNoKTogc3Rh
dHVzID0gIiArIHJlcS5zdGF0dXMpOworCisgICAgICAgICAgICByZXEgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKKyAgICAgICAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNzU3Rh
dGVDaGFuZ2U7CisgICAgICAgICAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXBseS54
bWwiLCB0cnVlKTsKKyAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1h
dGNoIiwgZVRhZyk7CisgICAgICAgICAgICByZXEuc2VuZChudWxsKTsKKyAgICAgICAgICB9IGVs
c2UgaWYgKGFzeW5jU3RlcCA9PSA4KSB7CisgICAgICAgICAgICBhc3luY1N0ZXAgPSA5OworICAg
ICAgICAgICAgbG9nKCJhc3luYzogSWYtTm9uZS1NYXRjaCBvdmVycmlkZTogc3RhdHVzID0gIiAr
IHJlcS5zdGF0dXMpOworCisgICAgICAgICAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
KyAgICAgICAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNzU3RhdGVDaGFuZ2U7
CisgICAgICAgICAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9yZXBseS54bWwiLCB0cnVl
KTsKKyAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIiwgInh5
enp5Iik7CisgICAgICAgICAgICByZXEuc2VuZChudWxsKTsKKyAgICAgICAgICB9IGVsc2UgaWYg
KGFzeW5jU3RlcCA9PSA5KSB7CisgICAgICAgICAgICBhc3luY1N0ZXAgPSAxMDsKKyAgICAgICAg
ICAgIGxvZygiYXN5bmM6IElmLU5vbmUtTWF0Y2ggb3ZlcnJpZGUgKG5vbmUgbWF0Y2gpOiBzdGF0
dXMgPSAiICsgcmVxLnN0YXR1cyk7CisKKyAgICAgICAgICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworICAgICAgICAgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NTdGF0
ZUNoYW5nZTsKKyAgICAgICAgICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5Lnht
bCIsIHRydWUpOworICAgICAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLVJhbmdlIiwg
ZVRhZyk7CisgICAgICAgICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCAiYnl0ZXM9
NTItNTkiKTsKKyAgICAgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICAgIH0gZWxzZSBp
ZiAoYXN5bmNTdGVwID09IDEwKSB7CisgICAgICAgICAgICBhc3luY1N0ZXAgPSAxMTsKKyAgICAg
ICAgICAgIGxvZygiYXN5bmM6IElmLVJhbmdlIG92ZXJyaWRlOiBzdGF0dXMgPSAiICsgcmVxLnN0
YXR1cyk7CisKKyAgICAgICAgICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAg
ICAgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NTdGF0ZUNoYW5nZTsKKyAgICAg
ICAgICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3JlcGx5LnhtbCIsIHRydWUpOworICAg
ICAgICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIklmLVJhbmdlIiwgInh5enp5Iik7CisgICAg
ICAgICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCAiYnl0ZXM9NTItNTkiKTsKKyAg
ICAgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICAgIH0gZWxzZSBpZiAoYXN5bmNTdGVw
ID09IDExKSB7CisgICAgICAgICAgICBhc3luY1N0ZXAgPSAxMjsKKyAgICAgICAgICAgIGxvZygi
YXN5bmM6IElmLVJhbmdlIG92ZXJyaWRlIChub25lIG1hdGNoKTogc3RhdHVzID0gIiArIHJlcS5z
dGF0dXMpOworCisgICAgICAgICAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAg
ICAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBwcm9jZXNzU3RhdGVDaGFuZ2U7CisgICAg
ICAgICAgICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy8zMDQucGwiLCB0cnVlKTsKKyAgICAg
ICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsICJUdWUsIDAx
IEphbiAxOTgwIDAxOjAwOjAwIEdNVCIpOworICAgICAgICAgICAgcmVxLnNlbmQobnVsbCk7Cisg
ICAgICAgICAgfSBlbHNlIGlmIChhc3luY1N0ZXAgPT0gMTIpIHsKKyAgICAgICAgICAgIGxvZygi
YXN5bmM6IElmLU1vZGlmaWVkLVNpbmNlIG92ZXJyaWRlICh1bmNhY2hlZCByZXNwb25zZSk6IHN0
YXR1cyA9ICIgKyByZXEuc3RhdHVzKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzLzMwNC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy8zMDQucGwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy8zMDQucGwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNSBAQAorIyEvdXNyL2Jpbi9wZXJsCisjIFNpbXBsZSBzY3JpcHQgdG8gZ2VuZXJh
dGUgYSAzMDQgSFRUUCBzdGF0dXMKKworcHJpbnQgIlN0YXR1czogMzA0IE5vdCBNb2RpZmllZFxy
XG4iOworcHJpbnQgIlxyXG4iOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvMzA0LnBsCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOmV4ZWN1dGFibGUKICAgKyAqCgpJbmRleDogV2ViS2l0L01pc2MvV2ViTlNVUkxSZXF1ZXN0
RXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L01pc2MvV2ViTlNVUkxSZXF1ZXN0RXh0cmFz
LmgJKHJldmlzaW9uIDE1MTM3KQorKysgV2ViS2l0L01pc2MvV2ViTlNVUkxSZXF1ZXN0RXh0cmFz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogLSAoTlNTdHJpbmcgKilfd2Vi
X0hUVFBSZWZlcnJlcjsKIC0gKE5TU3RyaW5nICopX3dlYl9IVFRQQ29udGVudFR5cGU7Ci0KKy0g
KEJPT0wpX3dlYl9pc0NvbmRpdGlvbmFsUmVxdWVzdDsKIEBlbmQKIAogQGludGVyZmFjZSBOU011
dGFibGVVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3RFeHRyYXMpCkluZGV4OiBXZWJLaXQvTWlz
Yy9XZWJOU1VSTFJlcXVlc3RFeHRyYXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvTWlzYy9XZWJO
U1VSTFJlcXVlc3RFeHRyYXMubQkocmV2aXNpb24gMTUxMzcpCisrKyBXZWJLaXQvTWlzYy9XZWJO
U1VSTFJlcXVlc3RFeHRyYXMubQkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTcgQEAKICAg
ICByZXR1cm4gW3NlbGYgdmFsdWVGb3JIVFRQSGVhZGVyRmllbGQ6V2ViQ29udGVudFR5cGVdOwog
fQogCistIChCT09MKV93ZWJfaXNDb25kaXRpb25hbFJlcXVlc3QKK3sKKyAgICBpZiAoW3NlbGYg
dmFsdWVGb3JIVFRQSGVhZGVyRmllbGQ6QCJJZi1NYXRjaCJdIHx8CisgICAgICAgIFtzZWxmIHZh
bHVlRm9ySFRUUEhlYWRlckZpZWxkOkAiSWYtTW9kaWZpZWQtU2luY2UiXSB8fAorICAgICAgICBb
c2VsZiB2YWx1ZUZvckhUVFBIZWFkZXJGaWVsZDpAIklmLU5vbmUtTWF0Y2giXSB8fAorICAgICAg
ICBbc2VsZiB2YWx1ZUZvckhUVFBIZWFkZXJGaWVsZDpAIklmLVJhbmdlIl0gfHwKKyAgICAgICAg
W3NlbGYgdmFsdWVGb3JIVFRQSGVhZGVyRmllbGQ6QCJJZi1Vbm1vZGlmaWVkLVNpbmNlIl0pCisg
ICAgICAgIHJldHVybiBZRVM7CisgICAgcmV0dXJuIE5POworfQorCiBAZW5kCiAKIApJbmRleDog
V2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLm0JKHJldmlzaW9uIDE1MTM3KQorKysg
V2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLm0JKHdvcmtpbmcgY29weSkKQEAg
LTU3Myw3ICs1NzMsMTAgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9ICAgQCJX
ZQogICAgICAgICBbcmVxdWVzdCBhZGRWYWx1ZTpbcmVxdWVzdEhlYWRlcnMgb2JqZWN0Rm9yS2V5
OmtleV0gZm9ySFRUUEhlYWRlckZpZWxkOmtleV07CiAgICAgfQogICAgIAotICAgIFtyZXF1ZXN0
IHNldENhY2hlUG9saWN5OltbW3NlbGYgZGF0YVNvdXJjZV0gcmVxdWVzdF0gY2FjaGVQb2xpY3ld
XTsKKyAgICBpZiAoW3JlcXVlc3QgX3dlYl9pc0NvbmRpdGlvbmFsUmVxdWVzdF0pCisgICAgICAg
IFtyZXF1ZXN0IHNldENhY2hlUG9saWN5Ok5TVVJMUmVxdWVzdFJlbG9hZElnbm9yaW5nQ2FjaGVE
YXRhXTsKKyAgICBlbHNlCisgICAgICAgIFtyZXF1ZXN0IHNldENhY2hlUG9saWN5OltbW3NlbGYg
ZGF0YVNvdXJjZV0gcmVxdWVzdF0gY2FjaGVQb2xpY3ldXTsKICAgICBpZiAoIWhpZGVSZWZlcnJl
cikKICAgICAgICAgW3JlcXVlc3QgX3dlYl9zZXRIVFRQUmVmZXJyZXI6W3NlbGYgcmVmZXJyZXJd
XTsKICAgICAKSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJTdWJyZXNvdXJjZUxvYWRl
ci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJTdWJyZXNvdXJjZUxv
YWRlci5tCShyZXZpc2lvbiAxNTEzNykKKysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJTdWJy
ZXNvdXJjZUxvYWRlci5tCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSwxMCBAQAogICAgIC8v
IDIuIERlbGVnYXRlcyB0aGF0IG1vZGlmeSB0aGUgY2FjaGUgcG9saWN5IHVzaW5nIHdpbGxTZW5k
UmVxdWVzdDogc2hvdWxkCiAgICAgLy8gICAgbm90IGFmZmVjdCBhbnkgb3RoZXIgcmVzb3VyY2Vz
LiBTdWNoIGNoYW5nZXMgbmVlZCB0byBiZSBkb25lCiAgICAgLy8gICAgcGVyIHJlcXVlc3QuCi0g
ICAgW25ld1JlcXVlc3Qgc2V0Q2FjaGVQb2xpY3k6W1tzb3VyY2UgX29yaWdpbmFsUmVxdWVzdF0g
Y2FjaGVQb2xpY3ldXTsKKyAgICBpZiAoW25ld1JlcXVlc3QgX3dlYl9pc0NvbmRpdGlvbmFsUmVx
dWVzdF0pCisgICAgICAgIFtuZXdSZXF1ZXN0IHNldENhY2hlUG9saWN5Ok5TVVJMUmVxdWVzdFJl
bG9hZElnbm9yaW5nQ2FjaGVEYXRhXTsKKyAgICBlbHNlCisgICAgICAgIFtuZXdSZXF1ZXN0IHNl
dENhY2hlUG9saWN5Oltbc291cmNlIF9vcmlnaW5hbFJlcXVlc3RdIGNhY2hlUG9saWN5XV07CiAg
ICAgW25ld1JlcXVlc3QgX3dlYl9zZXRIVFRQUmVmZXJyZXI6cmVmZXJyZXJdOwogICAgIAogICAg
IFtbc291cmNlIHdlYkZyYW1lXSBfYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3Q6bmV3UmVxdWVzdCBt
YWluUmVzb3VyY2U6Tk8gYWx3YXlzRnJvbVJlcXVlc3Q6Tk9dOwo=
</data>
<flag name="review"
          id="2757"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>