<?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>43702</bug_id>
          
          <creation_ts>2010-08-08 20:11:48 -0700</creation_ts>
          <short_desc>&lt;video&gt; element does not resize correctly</short_desc>
          <delta_ts>2011-01-24 12:19:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>51249</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ademar</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>261964</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-08 20:11:48 -0700</bug_when>
    <thetext>According to the HTML5 spec, a &lt;video&gt; element&apos;s intrinsic size is:

  + the intrinsic width/height of a video element&apos;s playback area is the intrinsic width/height of the video resource, if that is available
  + otherwise it is the intrinsic width/height of the poster frame, if that is available; 
  + otherwise it is 300/155 CSS pixels

In WebKit a newly opened &lt;video&gt; element follows this rule, but if the &apos;poster&apos; or &apos;src&apos; attribute is changed, and the url fails to load the element will not be sized correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261965</commentid>
    <comment_count>1</comment_count>
      <attachid>63857</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-08 20:16:06 -0700</bug_when>
    <thetext>Created attachment 63857
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261966</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-08 20:17:43 -0700</bug_when>
    <thetext>Attachment 63857 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/html/HTMLVideoElement.cpp:111:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261987</commentid>
    <comment_count>3</comment_count>
      <attachid>63857</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-08 23:39:27 -0700</bug_when>
    <thetext>Comment on attachment 63857
proposed patch

&gt; +#if !ENABLE(PLUGIN_PROXY_FOR_VIDEO)
&gt; +    // Reset the intrinsic size in case we are loading a new movie.
&gt; +    if (renderer() &amp;&amp; renderer()-&gt;isVideo())
&gt; +        toRenderVideo(renderer())-&gt;videoSizeChanged();
&gt; +#endif
&gt; +    
&gt;      if (renderer())
&gt;          renderer()-&gt;updateFromElement();

Why do we need a new function that&apos;s video-element specific? Why can&apos;t RenderVideo do this in an override of updateFromElement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262213</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-09 10:30:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 63857 [details])
&gt; &gt; +#if !ENABLE(PLUGIN_PROXY_FOR_VIDEO)
&gt; &gt; +    // Reset the intrinsic size in case we are loading a new movie.
&gt; &gt; +    if (renderer() &amp;&amp; renderer()-&gt;isVideo())
&gt; &gt; +        toRenderVideo(renderer())-&gt;videoSizeChanged();
&gt; &gt; +#endif
&gt; &gt; +    
&gt; &gt;      if (renderer())
&gt; &gt;          renderer()-&gt;updateFromElement();
&gt; 
&gt; Why do we need a new function that&apos;s video-element specific? Why can&apos;t RenderVideo do this 
&gt; in an override of updateFromElement?

Excellent point, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262255</commentid>
    <comment_count>5</comment_count>
      <attachid>63913</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-09 11:58:42 -0700</bug_when>
    <thetext>Created attachment 63913
revised patch

RenderVideo::videoSizeChanged removed completely, updateFromElement now resets the intrinsic size when necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262256</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-09 11:59:48 -0700</bug_when>
    <thetext>Attachment 63913 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/html/HTMLVideoElement.cpp:111:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262257</commentid>
    <comment_count>7</comment_count>
      <attachid>63913</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-09 12:02:35 -0700</bug_when>
    <thetext>Comment on attachment 63913
revised patch

&gt;          }
&gt; +        else {

Else should go on the same line as the closing brace to match the usual WebKit style.

&gt; +void RenderVideo::updateIntrinsicSize()
&gt;  {
&gt; +    IntSize size = calculateIntrinsicSize();
&gt; +
&gt; +    // Never set the element size to zero when in a media document.
&gt; +    if (size.isEmpty() &amp;&amp; node()-&gt;ownerDocument() &amp;&amp; node()-&gt;ownerDocument()-&gt;isMediaDocument())
&gt;          return;
&gt; +
&gt;      if (size != intrinsicSize()) {
&gt;          setIntrinsicSize(size);
&gt;          setPrefWidthsDirty(true);
&gt;          setNeedsLayout(true);
&gt;      }
&gt;  }

Looks good. I would have used an early return style instead of nesting the work inside an if statement.

&gt; +        if (errorOccurred())
&gt; +            setIntrinsicSize(defaultSize());

Could you just call updateIntrinsicSize here instead of explicitly setting the size to default?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262295</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-09 13:31:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64997, with all of Darin&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339182</commentid>
    <comment_count>9</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2011-01-24 12:19:10 -0800</bug_when>
    <thetext>Revision r64997 cherry-picked into qtwebkit-2.2 with commit 68a63b1 &lt;http://gitorious.org/webkit/qtwebkit/commit/68a63b1&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63857</attachid>
            <date>2010-08-08 20:16:06 -0700</date>
            <delta_ts>2010-08-09 11:58:42 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch_2.txt</filename>
            <type>text/plain</type>
            <size>23892</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDk2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgtMDggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzAyCisgICAgICAg
IDx2aWRlbz4gZWxlbWVudCBkb2VzIG5vdCByZXNpemUgY29ycmVjdGx5CisKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bG9hZFJlc291cmNlKTogVGVsbCB0aGUgcmVuZGVyZXIgdGhhdCB0aGUgdmlkZW8gc2l6
ZSBoYXMgY2hhbmdlZAorICAgICAgICBzbyBpdCByZWNhbGN1bGF0ZXMgdGhlIGludHJpbnNpYyBz
aXplLgorCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogQ2xlYXIgdGhl
IGltYWdlIGxvYWRlciBhbmQgY2FjaGVkIGltYWdlIHdoZW4gCisgICAgICAgIHRoZSAncG9zdGVy
JyBhdHRyaWJ1dGUgaXMgY2hhbmdlZCBhbmQgd2UgYXJlbid0IGRpc3BsYXlpbmcgYSBwb3N0ZXIu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKTogQ2FsY3VsYXRlIGluaXRpYWwgaW50cmluc2lj
IHNpemUgd2l0aCBjYWxjdWxhdGVJbnRyaW5zaWNTaXplLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlkZW86OnZpZGVvU2l6ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZGVvOjpjYWxjdWxhdGVJbnRyaW5zaWNTaXplKTogTmV3LCBjYWxjdWxhdGUgc2l6ZSBh
Y2NvcmRpbmcgdG8gY3VycmVudCBzcGVjLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86
OmltYWdlQ2hhbmdlZCk6IFJlc2V0IGludHJpbnNpYyBzaXplIHRvIGRlZmF1bHQgd2hlbiBwb3N0
ZXIgZmFpbHMgdG8gbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjp1cGRhdGVQ
bGF5ZXIpOiBDYWxsIHZpZGVvU2l6ZUNoYW5nZWQgd2hlbiBwbGF5ZXIgaXMgTlVMTCBhbmQgd2Ug
YXJlbid0CisgICAgICAgIGRpc3BsYXlpbmcgYSBwb3N0ZXIgc28gd2UgcmVzZXQgc2l6ZSB3aGVu
IGEgbW92aWUgZmFpbHMgdG8gbG9hZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8u
aDoKKwogMjAxMC0wOC0wOCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KIAogICAgICAgICBbd3hdIEJ1aWxkIGZpeCwgYWRkIG1lbWJlciBuZWVkZWQgdG8gY29tcGls
ZSBNYWMtc3BlY2lmaWMgZm9udCBjb2RlLgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkocmV2aXNpb24gNjQ4OTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY3MCw2ICs2NzAsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojpsb2FkUmVzb3VyY2UoY29ucwogICAgIC8vIHRoZXkgYXJlIGF2YWlsYWJsZS4KICAgICB1cGRh
dGVEaXNwbGF5U3RhdGUoKTsKIAorI2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykK
KyAgICAvLyBSZXNldCB0aGUgaW50cmluc2ljIHNpemUgaW4gY2FzZSB3ZSBhcmUgbG9hZGluZyBh
IG5ldyBtb3ZpZS4KKyAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1ZpZGVvKCkp
CisgICAgICAgIHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIoKSktPnZpZGVvU2l6ZUNoYW5nZWQoKTsK
KyNlbmRpZgorICAgIAogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51
cGRhdGVGcm9tRWxlbWVudCgpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAko
cmV2aXNpb24gNjQ4OTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMiwxMyArMTAyLDE5IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgLy8gRm9yY2UgYSBwb3N0ZXIgcmVjYWxjIGJ5IHNl
dHRpbmcgbV9kaXNwbGF5TW9kZSB0byBVbmtub3duIGRpcmVjdGx5IGJlZm9yZSBjYWxsaW5nIHVw
ZGF0ZURpc3BsYXlTdGF0ZS4KICAgICAgICAgSFRNTE1lZGlhRWxlbWVudDo6c2V0RGlzcGxheU1v
ZGUoVW5rbm93bik7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwotICAgICAgICBpZiAo
c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsKICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9G
T1JfVklERU8pCisgICAgICAgIGlmIChzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAg
ICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2Fk
ZXIuc2V0KG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwogICAgICAgICAgICAgbV9pbWFnZUxv
YWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKLSNlbmRpZgog
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKG1faW1hZ2VMb2FkZXIp
CisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5jbGVhcigpOworICAgICAgICAgICAgaWYg
KHJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+
c2V0Q2FjaGVkSW1hZ2UoMCk7IAorICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2UgaWYgKGF0
dHJOYW1lID09IHdpZHRoQXR0cikKICAgICAgICAgYWRkQ1NTTGVuZ3RoKGF0dHIsIENTU1Byb3Bl
cnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGhlaWdo
dEF0dHIpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCShyZXZpc2lvbiA2NDg5NikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsMjUgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIFJlbmRlclZpZGVvOjpS
ZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50KiB2aWRlbykKICAgICA6IFJlbmRlck1lZGlhKHZp
ZGVvKQogewotICAgIGlmICh2aWRlby0+cGxheWVyKCkgJiYgdmlkZW8tPnJlYWR5U3RhdGUoKSA+
PSBIVE1MVmlkZW9FbGVtZW50OjpIQVZFX01FVEFEQVRBKQotICAgICAgICBzZXRJbnRyaW5zaWNT
aXplKHZpZGVvLT5wbGF5ZXIoKS0+bmF0dXJhbFNpemUoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IC8vIFdoZW4gdGhlIG5hdHVyYWwgc2l6ZSBvZiB0aGUgdmlkZW8gaXMgdW5hdmFpbGFibGUsIHdl
IHVzZSB0aGUgcHJvdmlkZWQKLSAgICAgICAgLy8gd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVz
IG9mIHRoZSB2aWRlbyBlbGVtZW50IGFzIHRoZSBpbnRyaW5zaWMgc2l6ZSB1bnRpbAotICAgICAg
ICAvLyBiZXR0ZXIgdmFsdWVzIGJlY29tZSBhdmFpbGFibGUuIElmIHRoZXNlIGF0dHJpYnV0ZXMg
YXJlIG5vdCBzZXQsIHdlIGZhbGwgYmFjawotICAgICAgICAvLyB0byBhIGRlZmF1bHQgdmlkZW8g
c2l6ZSAoMzAweDE1MCkuCi0gICAgICAgIGlmICh2aWRlby0+aGFzQXR0cmlidXRlKHdpZHRoQXR0
cikgJiYgdmlkZW8tPmhhc0F0dHJpYnV0ZShoZWlnaHRBdHRyKSkKLSAgICAgICAgICAgIHNldElu
dHJpbnNpY1NpemUoSW50U2l6ZSh2aWRlby0+d2lkdGgoKSwgdmlkZW8tPmhlaWdodCgpKSk7Ci0g
ICAgICAgIGVsc2UgaWYgKHZpZGVvLT5vd25lckRvY3VtZW50KCkgJiYgdmlkZW8tPm93bmVyRG9j
dW1lbnQoKS0+aXNNZWRpYURvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIC8vIFZpZGVvIGluIHN0
YW5kYWxvbmUgbWVkaWEgZG9jdW1lbnRzIHNob3VsZCBub3QgdXNlIHRoZSBkZWZhdWx0IDMwMHgx
NTAKLSAgICAgICAgICAgIC8vIHNpemUgc2luY2UgdGhleSBhbHNvIGhhdmUgYXVkaW8gdGhyb3du
IGF0IHRoZW0uIEJ5IHNldHRpbmcgdGhlIGludHJpbnNpYwotICAgICAgICAgICAgLy8gc2l6ZSB0
byAzMDB4MSB0aGUgdmlkZW8gd2lsbCByZXNpemUgaXRzZWxmIGluIHRoZXNlIGNhc2VzLCBhbmQg
YXVkaW8gd2lsbAotICAgICAgICAgICAgLy8gaGF2ZSB0aGUgY29ycmVjdCBoZWlnaHQgKGl0IG5l
ZWRzIHRvIGJlID4gMCBmb3IgY29udHJvbHMgdG8gcmVuZGVyIHByb3Blcmx5KS4KLSAgICAgICAg
ICAgIHNldEludHJpbnNpY1NpemUoSW50U2l6ZShkZWZhdWx0U2l6ZSgpLndpZHRoKCksIDEpKTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRJbnRyaW5zaWNTaXplKGRl
ZmF1bHRTaXplKCkpOwotICAgIH0KKyAgICBzZXRJbnRyaW5zaWNTaXplKGNhbGN1bGF0ZUludHJp
bnNpY1NpemUoKSk7CiB9CiAKIFJlbmRlclZpZGVvOjp+UmVuZGVyVmlkZW8oKQpAQCAtOTUsMjIg
Kzc3LDQ3IEBAIHZvaWQgUmVuZGVyVmlkZW86OmludHJpbnNpY1NpemVDaGFuZ2VkKCkKICAgICB2
aWRlb1NpemVDaGFuZ2VkKCk7IAogfQogCi0KIHZvaWQgUmVuZGVyVmlkZW86OnZpZGVvU2l6ZUNo
YW5nZWQoKQogewotICAgIGlmICghcGxheWVyKCkpCisgICAgaWYgKG5vZGUoKS0+b3duZXJEb2N1
bWVudCgpICYmIG5vZGUoKS0+b3duZXJEb2N1bWVudCgpLT5pc01lZGlhRG9jdW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIEludFNpemUgc2l6ZSA9IHBsYXllcigpLT5uYXR1cmFsU2l6ZSgp
OwotICAgIGlmIChzaXplLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobm9kZSgpLT5vd25lckRv
Y3VtZW50KCkgJiYgbm9kZSgpLT5vd25lckRvY3VtZW50KCktPmlzTWVkaWFEb2N1bWVudCgpKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAKKyAgICBJbnRTaXplIHNpemUgPSBjYWxj
dWxhdGVJbnRyaW5zaWNTaXplKCk7CiAgICAgaWYgKHNpemUgIT0gaW50cmluc2ljU2l6ZSgpKSB7
CiAgICAgICAgIHNldEludHJpbnNpY1NpemUoc2l6ZSk7CiAgICAgICAgIHNldFByZWZXaWR0aHNE
aXJ0eSh0cnVlKTsKICAgICAgICAgc2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgfQogfQorICAg
IAorSW50U2l6ZSBSZW5kZXJWaWRlbzo6Y2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpCit7CisgICAg
SFRNTFZpZGVvRWxlbWVudCogdmlkZW8gPSB2aWRlb0VsZW1lbnQoKTsKKyAgICAKKyAgICAvLyBT
cGVjIHRleHQgZnJvbSA0LjguNgorICAgIC8vCisgICAgLy8gVGhlIGludHJpbnNpYyB3aWR0aCBv
ZiBhIHZpZGVvIGVsZW1lbnQncyBwbGF5YmFjayBhcmVhIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGgg
CisgICAgLy8gb2YgdGhlIHZpZGVvIHJlc291cmNlLCBpZiB0aGF0IGlzIGF2YWlsYWJsZTsgb3Ro
ZXJ3aXNlIGl0IGlzIHRoZSBpbnRyaW5zaWMgCisgICAgLy8gd2lkdGggb2YgdGhlIHBvc3RlciBm
cmFtZSwgaWYgdGhhdCBpcyBhdmFpbGFibGU7IG90aGVyd2lzZSBpdCBpcyAzMDAgQ1NTIHBpeGVs
cy4KKyAgICAvLworICAgIC8vIFRoZSBpbnRyaW5zaWMgaGVpZ2h0IG9mIGEgdmlkZW8gZWxlbWVu
dCdzIHBsYXliYWNrIGFyZWEgaXMgdGhlIGludHJpbnNpYyBoZWlnaHQgCisgICAgLy8gb2YgdGhl
IHZpZGVvIHJlc291cmNlLCBpZiB0aGF0IGlzIGF2YWlsYWJsZTsgb3RoZXJ3aXNlIGl0IGlzIHRo
ZSBpbnRyaW5zaWMgCisgICAgLy8gaGVpZ2h0IG9mIHRoZSBwb3N0ZXIgZnJhbWUsIGlmIHRoYXQg
aXMgYXZhaWxhYmxlOyBvdGhlcndpc2UgaXQgaXMgMTUwIENTUyBwaXhlbHMuCisgICAgCisgICAg
aWYgKHBsYXllcigpICYmIHZpZGVvLT5yZWFkeVN0YXRlKCkgPj0gSFRNTFZpZGVvRWxlbWVudDo6
SEFWRV9NRVRBREFUQSkKKyAgICAgICAgcmV0dXJuIHBsYXllcigpLT5uYXR1cmFsU2l6ZSgpOwor
CisgICAgaWYgKHZpZGVvLT5zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSAmJiAhbV9jYWNoZWRJ
bWFnZVNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbV9jYWNoZWRJbWFnZVNpemU7CisK
KyAgICAvLyBXaGVuIHRoZSBuYXR1cmFsIHNpemUgb2YgdGhlIHZpZGVvIGlzIHVuYXZhaWxhYmxl
LCB3ZSB1c2UgdGhlIHByb3ZpZGVkCisgICAgLy8gd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVz
IG9mIHRoZSB2aWRlbyBlbGVtZW50IGFzIHRoZSBpbnRyaW5zaWMgc2l6ZSB1bnRpbAorICAgIC8v
IGJldHRlciB2YWx1ZXMgYmVjb21lIGF2YWlsYWJsZS4gCisgICAgaWYgKHZpZGVvLT5oYXNBdHRy
aWJ1dGUod2lkdGhBdHRyKSAmJiB2aWRlby0+aGFzQXR0cmlidXRlKGhlaWdodEF0dHIpKQorICAg
ICAgICByZXR1cm4gSW50U2l6ZSh2aWRlby0+d2lkdGgoKSwgdmlkZW8tPmhlaWdodCgpKTsKKwor
ICAgIHJldHVybiBkZWZhdWx0U2l6ZSgpOworfQogCiB2b2lkIFJlbmRlclZpZGVvOjppbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyIG5ld0ltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQogewpA
QCAtMTE5LDggKzEyNiwxMSBAQCB2b2lkIFJlbmRlclZpZGVvOjppbWFnZUNoYW5nZWQoV3JhcHBl
ZEltCiAgICAgLy8gQ2FjaGUgdGhlIGltYWdlIGludHJpbnNpYyBzaXplIHNvIHdlIGNhbiBjb250
aW51ZSB0byB1c2UgaXQgdG8gZHJhdyB0aGUgaW1hZ2UgY29ycmVjdGx5CiAgICAgLy8gZXZlbiBh
ZnRlciB3ZSBrbm93IHRoZSB2aWRlbyBpbnRyaXNpYyBzaXplIGJ1dCBhcmVuJ3QgYWJsZSB0byBk
cmF3IHZpZGVvIGZyYW1lcyB5ZXQKICAgICAvLyAod2UgZG9uJ3Qgd2FudCB0byBzY2FsZSB0aGUg
cG9zdGVyIHRvIHRoZSB2aWRlbyBzaXplKS4KLSAgICBpZiAodmlkZW9FbGVtZW50KCktPnNob3Vs
ZERpc3BsYXlQb3N0ZXJJbWFnZSgpKQorICAgIGlmICh2aWRlb0VsZW1lbnQoKS0+c2hvdWxkRGlz
cGxheVBvc3RlckltYWdlKCkpIHsKKyAgICAgICAgaWYgKGVycm9yT2NjdXJyZWQoKSkKKyAgICAg
ICAgICAgIHNldEludHJpbnNpY1NpemUoZGVmYXVsdFNpemUoKSk7CiAgICAgICAgIG1fY2FjaGVk
SW1hZ2VTaXplID0gaW50cmluc2ljU2l6ZSgpOworICAgIH0KIH0KIAogSW50UmVjdCBSZW5kZXJW
aWRlbzo6dmlkZW9Cb3goKSBjb25zdApAQCAtMjA3LDggKzIxNywxMiBAQCB2b2lkIFJlbmRlclZp
ZGVvOjp1cGRhdGVGcm9tRWxlbWVudCgpCiB2b2lkIFJlbmRlclZpZGVvOjp1cGRhdGVQbGF5ZXIo
KQogewogICAgIE1lZGlhUGxheWVyKiBtZWRpYVBsYXllciA9IHBsYXllcigpOwotICAgIGlmICgh
bWVkaWFQbGF5ZXIpCisgICAgaWYgKCFtZWRpYVBsYXllcikgeworICAgICAgICAvLyBJZiBubyBw
bGF5ZXIgYW5kIG5vIHBvc3RlciwgbWFrZSBzdXJlIHdlIHJlc2V0IHRoZSBzaXplIGJhY2sgdG8g
dGhlIGRlZmF1bHQuCisgICAgICAgIGlmICghdmlkZW9FbGVtZW50KCktPnNob3VsZERpc3BsYXlQ
b3N0ZXJJbWFnZSgpKQorICAgICAgICAgICAgdmlkZW9TaXplQ2hhbmdlZCgpOwogICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIGlmICghdmlkZW9FbGVtZW50KCktPmluQWN0aXZlRG9jdW1lbnQo
KSkgewogICAgICAgICBtZWRpYVBsYXllci0+c2V0VmlzaWJsZShmYWxzZSk7CiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAkocmV2aXNpb24gNjQ4OTYpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1
Nyw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVu
dCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCk7Cisg
ICAgSW50U2l6ZSBjYWxjdWxhdGVJbnRyaW5zaWNTaXplKCk7CiAgICAgdmlydHVhbCB2b2lkIGlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKTsKIAogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJWaWRlbyI7
IH0KQEAgLTcxLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGludCBjYWxjUmVwbGFj
ZWRXaWR0aChib29sIGluY2x1ZGVNYXhXaWR0aCA9IHRydWUpIGNvbnN0OwogICAgIHZpcnR1YWwg
aW50IGNhbGNSZXBsYWNlZEhlaWdodCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IG1pbmltdW1S
ZXBsYWNlZEhlaWdodCgpIGNvbnN0OwotICAgIAorCiAgICAgaW50IGNhbGNBc3BlY3RSYXRpb1dp
ZHRoKCkgY29uc3Q7CiAgICAgaW50IGNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0OwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2NDk2MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA4LTA4ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzcw
MgorICAgICAgICA8dmlkZW8+IGVsZW1lbnQgZG9lcyBub3QgcmVzaXplIGNvcnJlY3RseQorCisg
ICAgICAgICogbWVkaWEvdmlkZW8tcG9zdGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRp
YS92aWRlby1wb3N0ZXIuaHRtbDoKKyAgICAgICAgKiBtZWRpYS92aWRlby1zaXplLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBtZWRpYS92aWRlby1zaXplLmh0bWw6CisKIDIwMTAtMDgtMDggIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHRl
c3QgZXhwZWN0YXRpb24gdXBkYXRlCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1wb3N0
ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBv
c3Rlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY0ODk2KQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tcG9zdGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwzOCBA
QAorVGVzdCA8dmlkZW8+IGVsZW1lbnQgd2l0aCBhbmQgd2l0aG91dCBhIHBvc3Rlci4KIAotU2V0
ICdwb3N0ZXInIHRvICdjb250ZW50L2dyZWVuYm94LnBuZycuCitUZXN0aW5nIHBvc3RlciBudWxs
LCB3aXRoICd3aWR0aCcgYW5kICdoZWlnaHQnIGF0dHJpYnV0ZXMuCitFWFBFQ1RFRCAodmlkZW8u
Z2V0QXR0cmlidXRlKCdwb3N0ZXInKSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAocmVsYXRpdmVV
UkwodmlkZW8ucG9zdGVyKSA9PSAnJykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRXaWR0aCA9
PSAnMzIwJykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRIZWlnaHQgPT0gJzI0MCcpIE9LCisK
K1NldHRpbmcgcG9zdGVyIHRvICJjb250ZW50L2dyZWVuYm94LnBuZyIKK1Rlc3RpbmcgMjV4MjUg
cG9zdGVyICdjb250ZW50L2dyZWVuYm94LnBuZycsIHNpemUgc2hvdWxkIGVxdWFsIGltYWdlIHNp
emUuCiBFWFBFQ1RFRCAodmlkZW8uZ2V0QXR0cmlidXRlKCdwb3N0ZXInKSA9PSAnY29udGVudC9n
cmVlbmJveC5wbmcnKSBPSwogRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLnBvc3RlcikgPT0g
J2NvbnRlbnQvZ3JlZW5ib3gucG5nJykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRXaWR0aCA9
PSAnMjUnKSBPSworRVhQRUNURUQgKHZpZGVvLmNsaWVudEhlaWdodCA9PSAnMjUnKSBPSwogCi1T
ZXQgJ3Bvc3RlcicgdG8gJycuCitTZXR0aW5nIHBvc3RlciB0byAiIgorVGVzdGluZyBwb3N0ZXIg
JycsIHdpdGggTk8gJ3dpZHRoJyBvciAnaGVpZ2h0JyBhdHRyaWJ1dGVzIHNvIHNpemUgc2hvdWxk
IGJlIDx2aWRlbz4gZGVmYXVsdC4KIEVYUEVDVEVEICh2aWRlby5nZXRBdHRyaWJ1dGUoJ3Bvc3Rl
cicpID09ICcnKSBPSwogRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZpZGVvLnBvc3RlcikgPT0gJ3Zp
ZGVvLXBvc3Rlci5odG1sJykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRXaWR0aCA9PSAnMzAw
JykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRIZWlnaHQgPT0gJzE1MCcpIE9LCiAKLVNldCAn
cG9zdGVyJyB0byAnY29udGVudC9hYmUucG5nJy4KK1NldHRpbmcgcG9zdGVyIHRvICJjb250ZW50
L2FiZS5wbmciCitUZXN0aW5nIDc2eDEwMyBwb3N0ZXIgJ2NvbnRlbnQvYWJlLnBuZycsIHNpemUg
c2hvdWxkIGVxdWFsIGltYWdlIHNpemUuCiBFWFBFQ1RFRCAodmlkZW8uZ2V0QXR0cmlidXRlKCdw
b3N0ZXInKSA9PSAnY29udGVudC9hYmUucG5nJykgT0sKIEVYUEVDVEVEIChyZWxhdGl2ZVVSTCh2
aWRlby5wb3N0ZXIpID09ICdjb250ZW50L2FiZS5wbmcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNs
aWVudFdpZHRoID09ICc3NicpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2xpZW50SGVpZ2h0ID09ICcx
MDMnKSBPSworCitTZXR0aW5nIHBvc3RlciB0byAiY29udGVudC9ib2d1cy5wbmciCitUZXN0aW5n
IDMwMHgxNTAgcG9zdGVyICdjb250ZW50L2JvZ3VzLnBuZycsIGludmFsaWQgdXJsIHNvIHNpemUg
c2hvdWxkIHJldmVydCB0byA8dmlkZW8+IGRlZmF1bHQuCitFWFBFQ1RFRCAodmlkZW8uZ2V0QXR0
cmlidXRlKCdwb3N0ZXInKSA9PSAnY29udGVudC9ib2d1cy5wbmcnKSBPSworRVhQRUNURUQgKHJl
bGF0aXZlVVJMKHZpZGVvLnBvc3RlcikgPT0gJ2NvbnRlbnQvYm9ndXMucG5nJykgT0sKK0VYUEVD
VEVEICh2aWRlby5jbGllbnRXaWR0aCA9PSAnMzAwJykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGll
bnRIZWlnaHQgPT0gJzE1MCcpIE9LCiAKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXBvc3Rlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXBvc3Rlci5odG1sCShyZXZpc2lvbiA2NDg5NikKKysrIExheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXBvc3Rlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5ICsxLDEwMiBAQAogPGh0
bWw+CiAgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT4mbHQ7dmlkZW8mZ3Q7IGVsZW1lbnQgd2l0
aCBwb3N0ZXIgc2l6ZSB0ZXN0PC90aXRsZT4KICAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVz
dC5qcz48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBwb3N0ZXJJ
bmZvID0gCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY3VycmVudDowLAorICAgICAg
ICAgICAgICAgIHBvc3RlcnM6IAorICAgICAgICAgICAgICAgIFsgCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiIsIHdpdGggJ3dpZHRo
JyBhbmQgJ2hlaWdodCcgYXR0cmlidXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICB1cmw6
bnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZmxlY3RlZFVybDoiIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRoOjMyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdo
dDoyNDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246Iiwgc2l6ZSBzaG91bGQgZXF1YWwgaW1h
Z2Ugc2l6ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ImNvbnRlbnQvZ3JlZW5ib3gu
cG5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOjI1LAorICAgICAgICAgICAgICAg
ICAgICAgICAgaGVpZ2h0OjI1CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiIsIHdpdGggTk8g
J3dpZHRoJyBvciAnaGVpZ2h0JyBhdHRyaWJ1dGVzIHNvIHNpemUgc2hvdWxkIGJlICZsdDt2aWRl
byZndDsgZGVmYXVsdCIsCisgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICByZWZsZWN0ZWRVcmw6InZpZGVvLXBvc3Rlci5odG1sIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoOjMwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhl
aWdodDoxNTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246Iiwgc2l6ZSBzaG91bGQgZXF1YWwg
aW1hZ2Ugc2l6ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ImNvbnRlbnQvYWJlLnBu
ZyIsCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDo3NiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGhlaWdodDoxMDMKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IiwgaW52YWxpZCB1
cmwgc28gc2l6ZSBzaG91bGQgcmV2ZXJ0IHRvICZsdDt2aWRlbyZndDsgZGVmYXVsdCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICB1cmw6ImNvbnRlbnQvYm9ndXMucG5nIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHdpZHRoOjMwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDox
NTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICB9OwogCi0gICAgICAgICAgICBmdW5jdGlvbiB0ZXN0UG9zdGVyKHVybCkKKyAgICAgICAgICAg
IGZ1bmN0aW9uIG9wZW5OZXh0UG9zdGVyKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmdldEF0dHJpYnV0ZSgncG9zdGVyJykiLCB1cmwpOwotICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVVUkwodmlkZW8ucG9zdGVyKSIsIHVy
bCk7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBp
ZiAocG9zdGVySW5mby5jdXJyZW50ID49IHBvc3RlckluZm8ucG9zdGVycy5sZW5ndGgpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2
YXIgdXJsID0gcG9zdGVySW5mby5wb3N0ZXJzW3Bvc3RlckluZm8uY3VycmVudF0udXJsOworICAg
ICAgICAgICAgICAgIHZhciBkZXNjID0gIjxiPlNldHRpbmcgcG9zdGVyIHRvIDxlbT5cIiIrIHVy
bCArICJcIjwvZW0+PC9iPiI7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGRlc2MpOwor
ICAgICAgICAgICAgICAgIHZpZGVvLnBvc3RlciA9IHVybDsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KHRlc3RQb3N0ZXIsIDEwMCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQorCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0UG9z
dGVyKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7
CisgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoOwor
ICAgICAgICAgICAgICAgIHZhciBwb3N0ZXIgPSBwb3N0ZXJJbmZvLnBvc3RlcnNbcG9zdGVySW5m
by5jdXJyZW50XTsKIAotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPjxpPlNldCAn
cG9zdGVyJyB0byAnY29udGVudC9ncmVlbmJveC5wbmcnLjwiICsgIi9pPiIpOwotICAgICAgICAg
ICAgICAgIHRlc3RQb3N0ZXIoJ2NvbnRlbnQvZ3JlZW5ib3gucG5nJyk7CisgICAgICAgICAgICAg
ICAgdmFyIHNpemUgPSBwb3N0ZXIudXJsID8gKCIgIiArIHBvc3Rlci53aWR0aCArICJ4IiArIHBv
c3Rlci5oZWlnaHQpIDogIiI7CisgICAgICAgICAgICAgICAgdmFyIHVybFN0ciA9IHR5cGVvZihw
b3N0ZXIudXJsKSA9PSAic3RyaW5nIiA/ICgiJyIgKyBwb3N0ZXIudXJsICsgIiciKSA6ICdudWxs
JzsKKyAgICAgICAgICAgICAgICB2YXIgZGVzYyA9ICI8Yj5UZXN0aW5nIiArIHNpemUgKyAiIHBv
c3RlciA8ZW0+IisgdXJsU3RyICsgIjwvZW0+IiArIHBvc3Rlci5kZXNjcmlwdGlvbiArICIuPC9i
PiI7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGRlc2MpOworCisgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5nZXRBdHRyaWJ1dGUoJ3Bvc3RlcicpIiwgcG9zdGVyLnVy
bCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5wb3N0
ZXIpIiwgcG9zdGVyLmhhc093blByb3BlcnR5KCJyZWZsZWN0ZWRVcmwiKSA/IHBvc3Rlci5yZWZs
ZWN0ZWRVcmwgOiBwb3N0ZXIudXJsKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLmNsaWVudFdpZHRoIiwgcG9zdGVyLndpZHRoKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLmNsaWVudEhlaWdodCIsIHBvc3Rlci5oZWlnaHQpOworCisgICAgICAgICAg
ICAgICAgLy8gUmVtb3ZlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGVzIGlmIHByZXNlbnQKKyAgICAg
ICAgICAgICAgICBpZiAodmlkZW8ud2lkdGgpCisgICAgICAgICAgICAgICAgICAgIHZpZGVvLnJl
bW92ZUF0dHJpYnV0ZSgnd2lkdGgnKTsKKyAgICAgICAgICAgICAgICBpZiAodmlkZW8uaGVpZ2h0
KQorICAgICAgICAgICAgICAgICAgICB2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ2hlaWdodCcpOwog
Ci0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+PGk+U2V0ICdwb3N0ZXInIHRvICcn
LjwiICsgIi9pPiIpOwotICAgICAgICAgICAgICAgIHZpZGVvLnNldEF0dHJpYnV0ZSgncG9zdGVy
JywgJycpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uZ2V0QXR0cmlidXRl
KCdwb3N0ZXInKSIsICcnKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZl
VVJMKHZpZGVvLnBvc3RlcikiLCAndmlkZW8tcG9zdGVyLmh0bWwnKTsKLQotICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiPGJyPjxpPlNldCAncG9zdGVyJyB0byAnY29udGVudC9hYmUucG5n
Jy48IiArICIvaT4iKTsKLSAgICAgICAgICAgICAgICB2aWRlby5zZXRBdHRyaWJ1dGUoJ3Bvc3Rl
cicsICdjb250ZW50L2FiZS5wbmcnKTsKLSAgICAgICAgICAgICAgICB0ZXN0UG9zdGVyKCdjb250
ZW50L2FiZS5wbmcnKTsKKyAgICAgICAgICAgICAgICBwb3N0ZXJJbmZvLmN1cnJlbnQrKzsKKyAg
ICAgICAgICAgICAgICBvcGVuTmV4dFBvc3RlcigpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5k
TWVkaWFFbGVtZW50KCk7CiAKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJycpOwotICAg
ICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UG9zdGVyKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KIAogICAgIDxib2R5
IG9ubG9hZD0ic2V0VGltZW91dCh0ZXN0LCAxMDApIj4KIAotICAgICAgICA8dmlkZW8gcG9zdGVy
PSJjb250ZW50L2dyZWVuYm94LnBuZyIgY29udHJvbHM+PC92aWRlbz4KKyAgICAgICAgPHZpZGVv
IGNvbnRyb2xzIHdpZHRoPTMyMCBoZWlnaHQ9MjQwPjwvdmlkZW8+CisgICAgICAgIDxwPlRlc3Qg
Jmx0O3ZpZGVvJmd0OyBlbGVtZW50IHdpdGggYW5kIHdpdGhvdXQgYSBwb3N0ZXIuPC9wPgogCiAg
ICAgPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2l6ZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2l6ZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDY0ODk2KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
c2l6ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSwzOCBAQAorVGVzdCA8
dmlkZW8+IGVsZW1lbnQgc2l6ZSB3aXRoIGFuZCB3aXRob3V0ICdzcmMnIGFuZCAncG9zdGVyJyBh
dHRyaWJ1dGVzLgorCitUZXN0aW5nIG1vdmllIHdpdGggbm8gJ3NyYycgYW5kIG5vICdwb3N0ZXIn
LCB3aXRoICd3aWR0aCcgYW5kICdoZWlnaHQnIGF0dHJpYnV0ZXMuCitFWFBFQ1RFRCAodmlkZW8u
Y2xpZW50V2lkdGggPT0gJzY0MCcpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2xpZW50SGVpZ2h0ID09
ICc0ODAnKSBPSworRVhQRUNURUQgKHZpZGVvLnZpZGVvV2lkdGggPT0gJzAnKSBPSworRVhQRUNU
RUQgKHZpZGVvLnZpZGVvSGVpZ2h0ID09ICcwJykgT0sKKworUmVtb3ZpbmcgJ3dpZHRoJyBhbmQg
J2hlaWdodCcgYXR0cmlidXRlcy4KK1Rlc3RpbmcgbW92aWUgd2l0aCBubyAnc3JjJyBhbmQgbm8g
J3Bvc3RlcicsIHdpdGggTk8gJ3dpZHRoJyBhbmQgJ2hlaWdodCcgYXR0cmlidXRlcywgc2hvdWxk
IGJlIGRlZmF1bHQgc2l6ZS4KK0VYUEVDVEVEICh2aWRlby5jbGllbnRXaWR0aCA9PSAnMzAwJykg
T0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRIZWlnaHQgPT0gJzE1MCcpIE9LCitFWFBFQ1RFRCAo
dmlkZW8udmlkZW9XaWR0aCA9PSAnMCcpIE9LCitFWFBFQ1RFRCAodmlkZW8udmlkZW9IZWlnaHQg
PT0gJzAnKSBPSworCitTZXR0aW5nICdwb3N0ZXInIHRvICJjb250ZW50L2FiZS5wbmciCitUZXN0
aW5nIG1vdmllIHdpdGggJ3Bvc3RlcicgYnV0IG5vICdzcmMnLCBzaG91bGQgYmUgaW1hZ2Ugc2l6
ZS4KK0VYUEVDVEVEICh2aWRlby5jbGllbnRXaWR0aCA9PSAnNzYnKSBPSworRVhQRUNURUQgKHZp
ZGVvLmNsaWVudEhlaWdodCA9PSAnMTAzJykgT0sKK0VYUEVDVEVEICh2aWRlby52aWRlb1dpZHRo
ID09ICcwJykgT0sKK0VYUEVDVEVEICh2aWRlby52aWRlb0hlaWdodCA9PSAnMCcpIE9LCisKK1Nl
dHRpbmcgJ3NyYycgdG8gImNvbnRlbnQvdGVzdC5bZXh0ZW5zaW9uXSIgCitUZXN0aW5nIG1vdmll
IHdpdGggJ3Bvc3RlcicgYW5kICdzcmMnLCBzaG91bGQgYmUgPHZpZGVvPiBzaXplLgorRVhQRUNU
RUQgKHZpZGVvLmNsaWVudFdpZHRoID09ICczMjAnKSBPSworRVhQRUNURUQgKHZpZGVvLmNsaWVu
dEhlaWdodCA9PSAnMjQwJykgT0sKK0VYUEVDVEVEICh2aWRlby52aWRlb1dpZHRoID09ICczMjAn
KSBPSworRVhQRUNURUQgKHZpZGVvLnZpZGVvSGVpZ2h0ID09ICcyNDAnKSBPSworCitTZXR0aW5n
ICdzcmMnIHRvICJjb250ZW50L2JvZ3VzLltleHRlbnNpb25dIiAncG9zdGVyJyB0byAiY29udGVu
dC9ncmVlbmJveC5wbmciCitUZXN0aW5nIG1vdmllIHdpdGggJ3Bvc3RlcicgYW5kIGludmFsaWQg
J3NyYycsIHNob3VsZCBiZSBpbWFnZSBzaXplLgorRVhQRUNURUQgKHZpZGVvLmNsaWVudFdpZHRo
ID09ICcyNScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2xpZW50SGVpZ2h0ID09ICcyNScpIE9LCiBF
WFBFQ1RFRCAodmlkZW8udmlkZW9XaWR0aCA9PSAnMCcpIE9LCiBFWFBFQ1RFRCAodmlkZW8udmlk
ZW9IZWlnaHQgPT0gJzAnKSBPSwotRVZFTlQobG9hZGVkbWV0YWRhdGEpCi1FWFBFQ1RFRCAodmlk
ZW8udmlkZW9XaWR0aCA+ICcwJykgT0sKLUVYUEVDVEVEICh2aWRlby52aWRlb0hlaWdodCA+ICcw
JykgT0sKKwogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2l6
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNpemUuaHRtbAko
cmV2aXNpb24gNjQ4OTYpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zaXplLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMTI2IEBACi08dmlkZW8gY29udHJvbHM+PC92aWRlbz4K
LTxzY3JpcHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz12aWRlby10
ZXN0LmpzPjwvc2NyaXB0PgotPHNjcmlwdD4KLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnZpZGVv
V2lkdGgiLCAwLCAiPT0iKTsKLSAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnZpZGVvSGVpZ2h0Iiwg
MCwgIj09Iik7Ci0KLSAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRlZG1ldGFkYXRhJywgZnVuY3Rpb24g
KCkgeyAKLSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby52aWRlb1dpZHRoIiwgMCwgIj4iKTsK
LSAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby52aWRlb0hlaWdodCIsIDAsICI+Iik7Ci0gICAg
ICAgIGVuZFRlc3QoKTsKLSAgICB9ICk7Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRp
dGxlPiZsdDt2aWRlbyZndDsgZWxlbWVudCBzaXplIGFuZCByZXNpemUgdGVzdDwvdGl0bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CiAKLSAgICB2aWRlby5zcmMgPSBmaW5kTWVk
aWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKTsKLTwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICAgICAgdmFyIG1vdmllSW5mbyA9IAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGN1cnJlbnQ6MCwKKyAgICAgICAgICAgICAgICBtb3ZpZXM6IAorICAgICAgICAg
ICAgICAgIFsgCisgICAgICAgICAgICAgICAgICAgIHsgICAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNyYzpudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGVyOm51bGwsCisgICAg
ICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoibm8gJ3NyYycgYW5kIG5vICdwb3N0ZXIn
LCB3aXRoICd3aWR0aCcgYW5kICdoZWlnaHQnIGF0dHJpYnV0ZXMiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgd2lkdGg6NjQwLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OjQ4MCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvV2lkdGg6MCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZpZGVvSGVpZ2h0OjAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgc3JjOm51bGwsCisgICAgICAgICAg
ICAgICAgICAgICAgICBwb3N0ZXI6bnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uOiJubyAnc3JjJyBhbmQgbm8gJ3Bvc3RlcicsIHdpdGggTk8gJ3dpZHRoJyBhbmQgJ2hl
aWdodCcgYXR0cmlidXRlcywgc2hvdWxkIGJlIGRlZmF1bHQgc2l6ZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICB3aWR0aDozMDAsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6MTUw
LAorICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9XaWR0aDowLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdmlkZW9IZWlnaHQ6MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmM6bnVsbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHBvc3RlcjoiY29udGVudC9hYmUucG5nIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc2NyaXB0aW9uOiIncG9zdGVyJyBidXQgbm8gICdzcmMnLCBzaG91bGQgYmUg
aW1hZ2Ugc2l6ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDo3NiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGhlaWdodDoxMDMsCisgICAgICAgICAgICAgICAgICAgICAgICB2aWRl
b1dpZHRoOjAsCisgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0hlaWdodDowCisgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNyYzoiY29udGVudC90ZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rl
cjoiY29udGVudC9hYmUucG5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9u
OiIncG9zdGVyJyBhbmQgICdzcmMnLCBzaG91bGQgYmUgJmx0O3ZpZGVvJmd0OyBzaXplIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOjMyMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGhlaWdodDoyNDAsCisgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1dpZHRoOjMyMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSGVpZ2h0OjI0MAorICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmM6
ImNvbnRlbnQvYm9ndXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGVyOiJjb250ZW50
L2dyZWVuYm94LnBuZyIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoiJ3Bv
c3RlcicgYW5kIGludmFsaWQgJ3NyYycsIHNob3VsZCBiZSBpbWFnZSBzaXplIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRoOjI1LAorICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
OjI1LAorICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9XaWR0aDowLAorICAgICAgICAgICAg
ICAgICAgICAgICAgdmlkZW9IZWlnaHQ6MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHNldHVw
TmV4dENvbmZpZ3VyYXRpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7CisgICAgICAgICAgICAgICAgaWYgKG1vdmllSW5mby5jdXJyZW50ID49IG1v
dmllSW5mby5tb3ZpZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgdmFyIG1vdmllID0gbW92aWVJbmZvLm1vdmllc1tt
b3ZpZUluZm8uY3VycmVudF07CisgICAgICAgICAgICAgICAgaWYgKG1vdmllLnNyYyB8fCBtb3Zp
ZS5wb3N0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSAiPGI+U2V0dGluZyAi
OworICAgICAgICAgICAgICAgICAgICBpZiAobW92aWUuc3JjICYmIHJlbGF0aXZlVVJMKHZpZGVv
LnNyYykgIT0gbW92aWUuc3JjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2aWRlby5zcmMg
PSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsIG1vdmllLnNyYyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkZXNjICs9ICInc3JjJyB0byA8ZW0+XCIiKyBtb3ZpZS5zcmMgKyAiLltleHRlbnNpb25d
XCI8L2VtPiAiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlm
IChtb3ZpZS5wb3N0ZXIgJiYgcmVsYXRpdmVVUkwodmlkZW8ucG9zdGVyKSAhPSBtb3ZpZS5wb3N0
ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvLnBvc3RlciA9IG1vdmllLnBvc3Rl
cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MgKz0gIidwb3N0ZXInIHRvIDxlbT5cIiIr
IG1vdmllLnBvc3RlciArICJcIjwvZW0+IjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoZGVzYyArICI8L2I+Iik7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGVz
IGlmIHByZXNlbnQKKyAgICAgICAgICAgICAgICBpZiAodmlkZW8ud2lkdGggfHwgdmlkZW8uaGVp
Z2h0KSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGI+UmVtb3ZpbmcgJ3dp
ZHRoJyBhbmQgJ2hlaWdodCcgYXR0cmlidXRlcy48L2I+Iik7CisgICAgICAgICAgICAgICAgICAg
IHZpZGVvLnJlbW92ZUF0dHJpYnV0ZSgnd2lkdGgnKTsKKyAgICAgICAgICAgICAgICAgICAgdmlk
ZW8ucmVtb3ZlQXR0cmlidXRlKCdoZWlnaHQnKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBpZiAoIW1vdmllLnNyYyB8fCBtb3ZpZS5zcmMuaW5kZXhPZignYm9ndXMnKSA+
PSAwKQorICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRlc3RNb3ZpZSwgMTAwKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdGVzdE1vdmllKCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lk
dGg7CisgICAgICAgICAgICAgICAgdmFyIG1vdmllID0gbW92aWVJbmZvLm1vdmllc1ttb3ZpZUlu
Zm8uY3VycmVudF07CisKKyAgICAgICAgICAgICAgICB2YXIgZGVzYyA9ICI8Yj5UZXN0aW5nIG1v
dmllIHdpdGggIiArIG1vdmllLmRlc2NyaXB0aW9uICsgIi48L2I+IjsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoZGVzYyk7CisKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLmNsaWVudFdpZHRoIiwgbW92aWUud2lkdGgpOworICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uY2xpZW50SGVpZ2h0IiwgbW92aWUuaGVpZ2h0KTsKKyAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnZpZGVvV2lkdGgiLCBtb3ZpZS52aWRlb1dpZHRoKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnZpZGVvSGVpZ2h0IiwgbW92aWUudmlk
ZW9IZWlnaHQpOworCisgICAgICAgICAgICAgICAgbW92aWVJbmZvLmN1cnJlbnQrKzsKKyAgICAg
ICAgICAgICAgICBzZXR1cE5leHRDb25maWd1cmF0aW9uKCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0TW92aWUoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25s
b2FkPSJzZXRUaW1lb3V0KHRlc3QsIDEwMCkiPgorCisgICAgICAgIDx2aWRlbyBjb250cm9scyB3
aWR0aD02NDAgaGVpZ2h0PTQ4MCBvbmxvYWRlZG1ldGFkYXRhPSJ0ZXN0TW92aWUoKSI+PC92aWRl
bz4KKyAgICAgICAgPHA+VGVzdCAmbHQ7dmlkZW8mZ3Q7IGVsZW1lbnQgc2l6ZSB3aXRoIGFuZCB3
aXRob3V0ICdzcmMnIGFuZCAncG9zdGVyJyBhdHRyaWJ1dGVzLjwvcD4KKworICAgIDwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63913</attachid>
            <date>2010-08-09 11:58:42 -0700</date>
            <delta_ts>2010-09-20 06:37:31 -0700</delta_ts>
            <desc>revised patch</desc>
            <filename>patch_3.txt</filename>
            <type>text/plain</type>
            <size>25984</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDk5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMDgtMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzAyCisgICAgICAg
IDx2aWRlbz4gZWxlbWVudCBkb2VzIG5vdCByZXNpemUgY29ycmVjdGx5CisKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c2V0UmVhZHlTdGF0ZSk6IFJlbmRlclZpZGVvOjp2aWRlb1NpemVDaGFuZ2VkIGlzIGdv
bmUsIGp1c3QgdXNlCisgICAgICAgIHVwZGF0ZUZyb21FbGVtZW50IGluc3RlYWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJT
aXplQ2hhbmdlZCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKTogQ2xlYXIgdGhlIGltYWdlIGxvYWRlciBhbmQgY2FjaGVkIGltYWdlIHdoZW4gCisgICAg
ICAgIHRoZSAncG9zdGVyJyBhdHRyaWJ1dGUgaXMgY2hhbmdlZCBhbmQgd2UgYXJlbid0IGRpc3Bs
YXlpbmcgYSBwb3N0ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZGVvOjppbnRyaW5zaWNTaXplQ2hhbmdlZCk6IHZpZGVvU2l6ZUNoYW5n
ZWQgLT4gdXBkYXRlSW50cmluc2ljU2l6ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVv
Ojp1cGRhdGVJbnRyaW5zaWNTaXplKTogUmVuYW1lZCBmcm9tIHZpZGVvU2l6ZUNoYW5nZWQsIGNh
bGN1bGF0ZSBpbml0aWFsIAorICAgICAgICBpbnRyaW5zaWMgc2l6ZSB3aXRoIGNhbGN1bGF0ZUlu
dHJpbnNpY1NpemUKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpjYWxjdWxhdGVJbnRy
aW5zaWNTaXplKTogTmV3LCBjYWxjdWxhdGUgc2l6ZSBhY2NvcmRpbmcgdG8gY3VycmVudCBzcGVj
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OmltYWdlQ2hhbmdlZCk6IFJlc2V0IGlu
dHJpbnNpYyBzaXplIHRvIGRlZmF1bHQgd2hlbiBwb3N0ZXIgZmFpbHMgdG8gbG9hZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjp1cGRhdGVQbGF5ZXIpOiBDYWxsIHVwZGF0ZUludHJp
bnNpY1NpemUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmg6IFJlbmFtZWQgdmlk
ZW9TaXplQ2hhbmdlZCB0byB1cGRhdGVJbnRyaW5zaWNTaXplIGFuZCBtYWtlIHByaXZhdGUuCisK
IDIwMTAtMDgtMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2NDk5My4KSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0OTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MTAsMTIgKzkxMCw4IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWQKICAgICBpZiAobV9yZWFkeVN0YXRl
ID49IEhBVkVfTUVUQURBVEEgJiYgb2xkU3RhdGUgPCBIQVZFX01FVEFEQVRBKSB7CiAgICAgICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpOwogICAgICAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50KTsKLQotI2lm
ICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkg
JiYgcmVuZGVyZXIoKS0+aXNWaWRlbygpKSB7Ci0gICAgICAgICAgICB0b1JlbmRlclZpZGVvKHJl
bmRlcmVyKCkpLT52aWRlb1NpemVDaGFuZ2VkKCk7Ci0gICAgICAgIH0KLSNlbmRpZiAgICAgICAg
CisgICAgICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRl
RnJvbUVsZW1lbnQoKTsKICAgICAgICAgbV9kZWxheWluZ1RoZUxvYWRFdmVudCA9IGZhbHNlOwog
ICAgICAgICBtX3BsYXllci0+c2VlaygwKTsKICAgICB9CkBAIC0xNTc5LDEzICsxNTc1LDggQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckR1cmF0aQogewogICAgIGJlZ2luUHJv
Y2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFt
ZXMoKS5kdXJhdGlvbmNoYW5nZUV2ZW50KTsKLSNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1Jf
VklERU8pCi0gICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICBpZiAocmVuZGVyZXIoKSkKICAgICAg
ICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVy
KCktPmlzVmlkZW8oKSkKLSAgICAgICAgICAgIHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIoKSktPnZp
ZGVvU2l6ZUNoYW5nZWQoKTsKLSAgICB9Ci0jZW5kaWYgICAgICAgIAogICAgIGVuZFByb2Nlc3Np
bmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKQEAgLTE2MjIsMTAgKzE2MTMsOCBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVwYWluCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogewogICAgIGJlZ2luUHJv
Y2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKLSNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9G
T1JfVklERU8pCi0gICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNWaWRlbygpKQot
ICAgICAgICB0b1JlbmRlclZpZGVvKHJlbmRlcmVyKCkpLT52aWRlb1NpemVDaGFuZ2VkKCk7Ci0j
ZW5kaWYgICAgICAgIAorICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlcigpLT51
cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNr
KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0OTg1
KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsMTMgKzEwMiwxOSBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmliCiAgICAgICAgIC8vIEZvcmNlIGEgcG9zdGVyIHJlY2FsYyBieSBzZXR0aW5nIG1fZGlzcGxh
eU1vZGUgdG8gVW5rbm93biBkaXJlY3RseSBiZWZvcmUgY2FsbGluZyB1cGRhdGVEaXNwbGF5U3Rh
dGUuCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6OnNldERpc3BsYXlNb2RlKFVua25vd24pOwog
ICAgICAgICB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKLSAgICAgICAgaWYgKHNob3VsZERpc3BsYXlQ
b3N0ZXJJbWFnZSgpKSB7CiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAg
ICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsKICAgICAgICAgICAgIGlmICgh
bV9pbWFnZUxvYWRlcikKICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnNldChuZXcgSFRN
TEltYWdlTG9hZGVyKHRoaXMpKTsKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZy
b21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7Ci0jZW5kaWYKICAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtX2ltYWdlTG9hZGVyKQorICAgICAgICAgICAg
ICAgIG1faW1hZ2VMb2FkZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQor
ICAgICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPnNldENhY2hlZEltYWdl
KDApOyAKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0
aEF0dHIpCiAgICAgICAgIGFkZENTU0xlbmd0aChhdHRyLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRy
LT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBoZWlnaHRBdHRyKQpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAkocmV2aXNpb24gNjQ5ODUpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWRlby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDI1ICs1MCw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBSZW5kZXJWaWRlbzo6UmVuZGVyVmlkZW8oSFRN
TFZpZGVvRWxlbWVudCogdmlkZW8pCiAgICAgOiBSZW5kZXJNZWRpYSh2aWRlbykKIHsKLSAgICBp
ZiAodmlkZW8tPnBsYXllcigpICYmIHZpZGVvLT5yZWFkeVN0YXRlKCkgPj0gSFRNTFZpZGVvRWxl
bWVudDo6SEFWRV9NRVRBREFUQSkKLSAgICAgICAgc2V0SW50cmluc2ljU2l6ZSh2aWRlby0+cGxh
eWVyKCktPm5hdHVyYWxTaXplKCkpOwotICAgIGVsc2UgewotICAgICAgICAvLyBXaGVuIHRoZSBu
YXR1cmFsIHNpemUgb2YgdGhlIHZpZGVvIGlzIHVuYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIHByb3Zp
ZGVkCi0gICAgICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlcyBvZiB0aGUgdmlkZW8g
ZWxlbWVudCBhcyB0aGUgaW50cmluc2ljIHNpemUgdW50aWwKLSAgICAgICAgLy8gYmV0dGVyIHZh
bHVlcyBiZWNvbWUgYXZhaWxhYmxlLiBJZiB0aGVzZSBhdHRyaWJ1dGVzIGFyZSBub3Qgc2V0LCB3
ZSBmYWxsIGJhY2sKLSAgICAgICAgLy8gdG8gYSBkZWZhdWx0IHZpZGVvIHNpemUgKDMwMHgxNTAp
LgotICAgICAgICBpZiAodmlkZW8tPmhhc0F0dHJpYnV0ZSh3aWR0aEF0dHIpICYmIHZpZGVvLT5o
YXNBdHRyaWJ1dGUoaGVpZ2h0QXR0cikpCi0gICAgICAgICAgICBzZXRJbnRyaW5zaWNTaXplKElu
dFNpemUodmlkZW8tPndpZHRoKCksIHZpZGVvLT5oZWlnaHQoKSkpOwotICAgICAgICBlbHNlIGlm
ICh2aWRlby0+b3duZXJEb2N1bWVudCgpICYmIHZpZGVvLT5vd25lckRvY3VtZW50KCktPmlzTWVk
aWFEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICAvLyBWaWRlbyBpbiBzdGFuZGFsb25lIG1lZGlh
IGRvY3VtZW50cyBzaG91bGQgbm90IHVzZSB0aGUgZGVmYXVsdCAzMDB4MTUwCi0gICAgICAgICAg
ICAvLyBzaXplIHNpbmNlIHRoZXkgYWxzbyBoYXZlIGF1ZGlvIHRocm93biBhdCB0aGVtLiBCeSBz
ZXR0aW5nIHRoZSBpbnRyaW5zaWMKLSAgICAgICAgICAgIC8vIHNpemUgdG8gMzAweDEgdGhlIHZp
ZGVvIHdpbGwgcmVzaXplIGl0c2VsZiBpbiB0aGVzZSBjYXNlcywgYW5kIGF1ZGlvIHdpbGwKLSAg
ICAgICAgICAgIC8vIGhhdmUgdGhlIGNvcnJlY3QgaGVpZ2h0IChpdCBuZWVkcyB0byBiZSA+IDAg
Zm9yIGNvbnRyb2xzIHRvIHJlbmRlciBwcm9wZXJseSkuCi0gICAgICAgICAgICBzZXRJbnRyaW5z
aWNTaXplKEludFNpemUoZGVmYXVsdFNpemUoKS53aWR0aCgpLCAxKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgc2V0SW50cmluc2ljU2l6ZShkZWZhdWx0U2l6ZSgpKTsK
LSAgICB9CisgICAgc2V0SW50cmluc2ljU2l6ZShjYWxjdWxhdGVJbnRyaW5zaWNTaXplKCkpOwog
fQogCiBSZW5kZXJWaWRlbzo6flJlbmRlclZpZGVvKCkKQEAgLTkyLDI1ICs3NCw1OSBAQCB2b2lk
IFJlbmRlclZpZGVvOjppbnRyaW5zaWNTaXplQ2hhbmdlZCgpCiB7CiAgICAgaWYgKHZpZGVvRWxl
bWVudCgpLT5zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkKICAgICAgICAgUmVuZGVyTWVkaWE6
OmludHJpbnNpY1NpemVDaGFuZ2VkKCk7Ci0gICAgdmlkZW9TaXplQ2hhbmdlZCgpOyAKKyAgICB1
cGRhdGVJbnRyaW5zaWNTaXplKCk7IAogfQogCi0KLXZvaWQgUmVuZGVyVmlkZW86OnZpZGVvU2l6
ZUNoYW5nZWQoKQordm9pZCBSZW5kZXJWaWRlbzo6dXBkYXRlSW50cmluc2ljU2l6ZSgpCiB7Ci0g
ICAgaWYgKCFwbGF5ZXIoKSkKKyAgICBJbnRTaXplIHNpemUgPSBjYWxjdWxhdGVJbnRyaW5zaWNT
aXplKCk7CisKKyAgICAvLyBOZXZlciBzZXQgdGhlIGVsZW1lbnQgc2l6ZSB0byB6ZXJvIHdoZW4g
aW4gYSBtZWRpYSBkb2N1bWVudC4KKyAgICBpZiAoc2l6ZS5pc0VtcHR5KCkgJiYgbm9kZSgpLT5v
d25lckRvY3VtZW50KCkgJiYgbm9kZSgpLT5vd25lckRvY3VtZW50KCktPmlzTWVkaWFEb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm47Ci0gICAgSW50U2l6ZSBzaXplID0gcGxheWVyKCktPm5hdHVy
YWxTaXplKCk7Ci0gICAgaWYgKHNpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChub2RlKCkt
Pm93bmVyRG9jdW1lbnQoKSAmJiBub2RlKCktPm93bmVyRG9jdW1lbnQoKS0+aXNNZWRpYURvY3Vt
ZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQorCiAgICAgaWYgKHNpemUgIT0gaW50
cmluc2ljU2l6ZSgpKSB7CiAgICAgICAgIHNldEludHJpbnNpY1NpemUoc2l6ZSk7CiAgICAgICAg
IHNldFByZWZXaWR0aHNEaXJ0eSh0cnVlKTsKICAgICAgICAgc2V0TmVlZHNMYXlvdXQodHJ1ZSk7
CiAgICAgfQogfQorICAgIAorSW50U2l6ZSBSZW5kZXJWaWRlbzo6Y2FsY3VsYXRlSW50cmluc2lj
U2l6ZSgpCit7CisgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW8gPSB2aWRlb0VsZW1lbnQoKTsK
KyAgICAKKyAgICAvLyBTcGVjIHRleHQgZnJvbSA0LjguNgorICAgIC8vCisgICAgLy8gVGhlIGlu
dHJpbnNpYyB3aWR0aCBvZiBhIHZpZGVvIGVsZW1lbnQncyBwbGF5YmFjayBhcmVhIGlzIHRoZSBp
bnRyaW5zaWMgd2lkdGggCisgICAgLy8gb2YgdGhlIHZpZGVvIHJlc291cmNlLCBpZiB0aGF0IGlz
IGF2YWlsYWJsZTsgb3RoZXJ3aXNlIGl0IGlzIHRoZSBpbnRyaW5zaWMgCisgICAgLy8gd2lkdGgg
b2YgdGhlIHBvc3RlciBmcmFtZSwgaWYgdGhhdCBpcyBhdmFpbGFibGU7IG90aGVyd2lzZSBpdCBp
cyAzMDAgQ1NTIHBpeGVscy4KKyAgICAvLworICAgIC8vIFRoZSBpbnRyaW5zaWMgaGVpZ2h0IG9m
IGEgdmlkZW8gZWxlbWVudCdzIHBsYXliYWNrIGFyZWEgaXMgdGhlIGludHJpbnNpYyBoZWlnaHQg
CisgICAgLy8gb2YgdGhlIHZpZGVvIHJlc291cmNlLCBpZiB0aGF0IGlzIGF2YWlsYWJsZTsgb3Ro
ZXJ3aXNlIGl0IGlzIHRoZSBpbnRyaW5zaWMgCisgICAgLy8gaGVpZ2h0IG9mIHRoZSBwb3N0ZXIg
ZnJhbWUsIGlmIHRoYXQgaXMgYXZhaWxhYmxlOyBvdGhlcndpc2UgaXQgaXMgMTUwIENTUyBwaXhl
bHMuCisgICAgCisgICAgaWYgKHBsYXllcigpICYmIHZpZGVvLT5yZWFkeVN0YXRlKCkgPj0gSFRN
TFZpZGVvRWxlbWVudDo6SEFWRV9NRVRBREFUQSkKKyAgICAgICAgcmV0dXJuIHBsYXllcigpLT5u
YXR1cmFsU2l6ZSgpOworCisgICAgaWYgKHZpZGVvLT5zaG91bGREaXNwbGF5UG9zdGVySW1hZ2Uo
KSAmJiAhbV9jYWNoZWRJbWFnZVNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbV9jYWNo
ZWRJbWFnZVNpemU7CisKKyAgICAvLyBXaGVuIHRoZSBuYXR1cmFsIHNpemUgb2YgdGhlIHZpZGVv
IGlzIHVuYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIHByb3ZpZGVkCisgICAgLy8gd2lkdGggYW5kIGhl
aWdodCBhdHRyaWJ1dGVzIG9mIHRoZSB2aWRlbyBlbGVtZW50IGFzIHRoZSBpbnRyaW5zaWMgc2l6
ZSB1bnRpbAorICAgIC8vIGJldHRlciB2YWx1ZXMgYmVjb21lIGF2YWlsYWJsZS4gCisgICAgaWYg
KHZpZGVvLT5oYXNBdHRyaWJ1dGUod2lkdGhBdHRyKSAmJiB2aWRlby0+aGFzQXR0cmlidXRlKGhl
aWdodEF0dHIpKQorICAgICAgICByZXR1cm4gSW50U2l6ZSh2aWRlby0+d2lkdGgoKSwgdmlkZW8t
PmhlaWdodCgpKTsKKworICAgIC8vIDx2aWRlbz4gaW4gc3RhbmRhbG9uZSBtZWRpYSBkb2N1bWVu
dHMgc2hvdWxkIG5vdCB1c2UgdGhlIGRlZmF1bHQgMzAweDE1MAorICAgIC8vIHNpemUgc2luY2Ug
dGhleSBhbHNvIGhhdmUgYXVkaW8tb25seSBmaWxlcy4gQnkgc2V0dGluZyB0aGUgaW50cmluc2lj
CisgICAgLy8gc2l6ZSB0byAzMDB4MSB0aGUgdmlkZW8gd2lsbCByZXNpemUgaXRzZWxmIGluIHRo
ZXNlIGNhc2VzLCBhbmQgYXVkaW8gd2lsbAorICAgIC8vIGhhdmUgdGhlIGNvcnJlY3QgaGVpZ2h0
IChpdCBuZWVkcyB0byBiZSA+IDAgZm9yIGNvbnRyb2xzIHRvIHJlbmRlciBwcm9wZXJseSkuCisg
ICAgaWYgKHZpZGVvLT5vd25lckRvY3VtZW50KCkgJiYgdmlkZW8tPm93bmVyRG9jdW1lbnQoKS0+
aXNNZWRpYURvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBJbnRTaXplKGRlZmF1bHRTaXplKCku
d2lkdGgoKSwgMSk7CisKKyAgICByZXR1cm4gZGVmYXVsdFNpemUoKTsKK30KIAogdm9pZCBSZW5k
ZXJWaWRlbzo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50
UmVjdCogcmVjdCkKIHsKQEAgLTExOSw4ICsxMzUsMTEgQEAgdm9pZCBSZW5kZXJWaWRlbzo6aW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbQogICAgIC8vIENhY2hlIHRoZSBpbWFnZSBpbnRyaW5zaWMgc2l6
ZSBzbyB3ZSBjYW4gY29udGludWUgdG8gdXNlIGl0IHRvIGRyYXcgdGhlIGltYWdlIGNvcnJlY3Rs
eQogICAgIC8vIGV2ZW4gYWZ0ZXIgd2Uga25vdyB0aGUgdmlkZW8gaW50cmlzaWMgc2l6ZSBidXQg
YXJlbid0IGFibGUgdG8gZHJhdyB2aWRlbyBmcmFtZXMgeWV0CiAgICAgLy8gKHdlIGRvbid0IHdh
bnQgdG8gc2NhbGUgdGhlIHBvc3RlciB0byB0aGUgdmlkZW8gc2l6ZSkuCi0gICAgaWYgKHZpZGVv
RWxlbWVudCgpLT5zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkKKyAgICBpZiAodmlkZW9FbGVt
ZW50KCktPnNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7CisgICAgICAgIGlmIChlcnJvck9j
Y3VycmVkKCkpCisgICAgICAgICAgICBzZXRJbnRyaW5zaWNTaXplKGRlZmF1bHRTaXplKCkpOwog
ICAgICAgICBtX2NhY2hlZEltYWdlU2l6ZSA9IGludHJpbnNpY1NpemUoKTsKKyAgICB9CiB9CiAK
IEludFJlY3QgUmVuZGVyVmlkZW86OnZpZGVvQm94KCkgY29uc3QKQEAgLTIwNiw5ICsyMjUsMTIg
QEAgdm9pZCBSZW5kZXJWaWRlbzo6dXBkYXRlRnJvbUVsZW1lbnQoKQogCiB2b2lkIFJlbmRlclZp
ZGVvOjp1cGRhdGVQbGF5ZXIoKQogeworICAgIHVwZGF0ZUludHJpbnNpY1NpemUoKTsKKwogICAg
IE1lZGlhUGxheWVyKiBtZWRpYVBsYXllciA9IHBsYXllcigpOwogICAgIGlmICghbWVkaWFQbGF5
ZXIpCiAgICAgICAgIHJldHVybjsKKwogICAgIGlmICghdmlkZW9FbGVtZW50KCktPmluQWN0aXZl
RG9jdW1lbnQoKSkgewogICAgICAgICBtZWRpYVBsYXllci0+c2V0VmlzaWJsZShmYWxzZSk7CiAg
ICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAkocmV2aXNpb24gNjQ5
ODUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw2IEBAIHB1YmxpYzoKICAgICBSZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50
Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyVmlkZW8oKTsKIAotICAgIHZvaWQgdmlkZW9TaXplQ2hh
bmdlZCgpOwogICAgIEludFJlY3QgdmlkZW9Cb3goKSBjb25zdDsKIAogICAgIHN0YXRpYyBJbnRT
aXplIGRlZmF1bHRTaXplKCk7CkBAIC01Nyw2ICs1Niw5IEBAIHByaXZhdGU6CiAgICAgaW5saW5l
IEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2
b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCk7CisgICAgSW50U2l6ZSBjYWxjdWxhdGVJbnRyaW5z
aWNTaXplKCk7CisgICAgdm9pZCB1cGRhdGVJbnRyaW5zaWNTaXplKCk7CisKICAgICB2aXJ0dWFs
IHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopOwogCiAg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRl
clZpZGVvIjsgfQpAQCAtNzEsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgaW50IGNh
bGNSZXBsYWNlZFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoID0gdHJ1ZSkgY29uc3Q7CiAgICAg
dmlydHVhbCBpbnQgY2FsY1JlcGxhY2VkSGVpZ2h0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQg
bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Q7Ci0gICAgCisKICAgICBpbnQgY2FsY0FzcGVj
dFJhdGlvV2lkdGgoKSBjb25zdDsKICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvSGVpZ2h0KCkgY29u
c3Q7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0OTk1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDgtMDkgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzNzAyCisgICAgICAgIDx2aWRlbz4gZWxlbWVudCBkb2VzIG5vdCByZXNpemUgY29ycmVj
dGx5CisKKyAgICAgICAgKiBtZWRpYS92aWRlby1wb3N0ZXItZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIG1lZGlhL3ZpZGVvLXBvc3Rlci5odG1sOgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNpemUt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXNpemUuaHRtbDoKKwogMjAxMC0w
OC0wOSAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGNo
cm9taXVtIHRlc3QgcmVzdWx0cy4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXBvc3Rl
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tcG9z
dGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjQ5ODUpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92
aWRlby1wb3N0ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDM4IEBA
CitUZXN0IDx2aWRlbz4gZWxlbWVudCB3aXRoIGFuZCB3aXRob3V0IGEgcG9zdGVyLgogCi1TZXQg
J3Bvc3RlcicgdG8gJ2NvbnRlbnQvZ3JlZW5ib3gucG5nJy4KK1Rlc3RpbmcgcG9zdGVyIG51bGws
IHdpdGggJ3dpZHRoJyBhbmQgJ2hlaWdodCcgYXR0cmlidXRlcy4KK0VYUEVDVEVEICh2aWRlby5n
ZXRBdHRyaWJ1dGUoJ3Bvc3RlcicpID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChyZWxhdGl2ZVVS
TCh2aWRlby5wb3N0ZXIpID09ICcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNsaWVudFdpZHRoID09
ICczMjAnKSBPSworRVhQRUNURUQgKHZpZGVvLmNsaWVudEhlaWdodCA9PSAnMjQwJykgT0sKKwor
U2V0dGluZyBwb3N0ZXIgdG8gImNvbnRlbnQvZ3JlZW5ib3gucG5nIgorVGVzdGluZyAyNXgyNSBw
b3N0ZXIgJ2NvbnRlbnQvZ3JlZW5ib3gucG5nJywgc2l6ZSBzaG91bGQgZXF1YWwgaW1hZ2Ugc2l6
ZS4KIEVYUEVDVEVEICh2aWRlby5nZXRBdHRyaWJ1dGUoJ3Bvc3RlcicpID09ICdjb250ZW50L2dy
ZWVuYm94LnBuZycpIE9LCiBFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8ucG9zdGVyKSA9PSAn
Y29udGVudC9ncmVlbmJveC5wbmcnKSBPSworRVhQRUNURUQgKHZpZGVvLmNsaWVudFdpZHRoID09
ICcyNScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2xpZW50SGVpZ2h0ID09ICcyNScpIE9LCiAKLVNl
dCAncG9zdGVyJyB0byAnJy4KK1NldHRpbmcgcG9zdGVyIHRvICIiCitUZXN0aW5nIHBvc3RlciAn
Jywgd2l0aCBOTyAnd2lkdGgnIG9yICdoZWlnaHQnIGF0dHJpYnV0ZXMgc28gc2l6ZSBzaG91bGQg
YmUgPHZpZGVvPiBkZWZhdWx0LgogRVhQRUNURUQgKHZpZGVvLmdldEF0dHJpYnV0ZSgncG9zdGVy
JykgPT0gJycpIE9LCiBFWFBFQ1RFRCAocmVsYXRpdmVVUkwodmlkZW8ucG9zdGVyKSA9PSAndmlk
ZW8tcG9zdGVyLmh0bWwnKSBPSworRVhQRUNURUQgKHZpZGVvLmNsaWVudFdpZHRoID09ICczMDAn
KSBPSworRVhQRUNURUQgKHZpZGVvLmNsaWVudEhlaWdodCA9PSAnMTUwJykgT0sKIAotU2V0ICdw
b3N0ZXInIHRvICdjb250ZW50L2FiZS5wbmcnLgorU2V0dGluZyBwb3N0ZXIgdG8gImNvbnRlbnQv
YWJlLnBuZyIKK1Rlc3RpbmcgNzZ4MTAzIHBvc3RlciAnY29udGVudC9hYmUucG5nJywgc2l6ZSBz
aG91bGQgZXF1YWwgaW1hZ2Ugc2l6ZS4KIEVYUEVDVEVEICh2aWRlby5nZXRBdHRyaWJ1dGUoJ3Bv
c3RlcicpID09ICdjb250ZW50L2FiZS5wbmcnKSBPSwogRVhQRUNURUQgKHJlbGF0aXZlVVJMKHZp
ZGVvLnBvc3RlcikgPT0gJ2NvbnRlbnQvYWJlLnBuZycpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2xp
ZW50V2lkdGggPT0gJzc2JykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRIZWlnaHQgPT0gJzEw
MycpIE9LCisKK1NldHRpbmcgcG9zdGVyIHRvICJjb250ZW50L2JvZ3VzLnBuZyIKK1Rlc3Rpbmcg
MzAweDE1MCBwb3N0ZXIgJ2NvbnRlbnQvYm9ndXMucG5nJywgaW52YWxpZCB1cmwgc28gc2l6ZSBz
aG91bGQgcmV2ZXJ0IHRvIDx2aWRlbz4gZGVmYXVsdC4KK0VYUEVDVEVEICh2aWRlby5nZXRBdHRy
aWJ1dGUoJ3Bvc3RlcicpID09ICdjb250ZW50L2JvZ3VzLnBuZycpIE9LCitFWFBFQ1RFRCAocmVs
YXRpdmVVUkwodmlkZW8ucG9zdGVyKSA9PSAnY29udGVudC9ib2d1cy5wbmcnKSBPSworRVhQRUNU
RUQgKHZpZGVvLmNsaWVudFdpZHRoID09ICczMDAnKSBPSworRVhQRUNURUQgKHZpZGVvLmNsaWVu
dEhlaWdodCA9PSAnMTUwJykgT0sKIAogRU5EIE9GIFRFU1QKIApJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tcG9zdGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tcG9zdGVyLmh0bWwJKHJldmlzaW9uIDY0OTg1KQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tcG9zdGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzEsMTAyIEBACiA8aHRt
bD4KICAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPiZsdDt2aWRlbyZndDsgZWxlbWVudCB3aXRo
IHBvc3RlciBzaXplIHRlc3Q8L3RpdGxlPgogICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0
LmpzPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHBvc3Rlcklu
Zm8gPSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50OjAsCisgICAgICAg
ICAgICAgICAgcG9zdGVyczogCisgICAgICAgICAgICAgICAgWyAKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246Iiwgd2l0aCAnd2lkdGgn
IGFuZCAnaGVpZ2h0JyBhdHRyaWJ1dGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVybDpu
dWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVmbGVjdGVkVXJsOiIiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgd2lkdGg6MzIwLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
OjI0MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoiLCBzaXplIHNob3VsZCBlcXVhbCBpbWFn
ZSBzaXplIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVybDoiY29udGVudC9ncmVlbmJveC5w
bmciLAorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6MjUsCisgICAgICAgICAgICAgICAg
ICAgICAgICBoZWlnaHQ6MjUKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246Iiwgd2l0aCBOTyAn
d2lkdGgnIG9yICdoZWlnaHQnIGF0dHJpYnV0ZXMgc28gc2l6ZSBzaG91bGQgYmUgJmx0O3ZpZGVv
Jmd0OyBkZWZhdWx0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVybDoiIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlZmxlY3RlZFVybDoidmlkZW8tcG9zdGVyLmh0bWwiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgd2lkdGg6MzAwLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVp
Z2h0OjE1MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoiLCBzaXplIHNob3VsZCBlcXVhbCBp
bWFnZSBzaXplIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVybDoiY29udGVudC9hYmUucG5n
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOjc2LAorICAgICAgICAgICAgICAgICAg
ICAgICAgaGVpZ2h0OjEwMworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoiLCBpbnZhbGlkIHVy
bCBzbyBzaXplIHNob3VsZCByZXZlcnQgdG8gJmx0O3ZpZGVvJmd0OyBkZWZhdWx0IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVybDoiY29udGVudC9ib2d1cy5wbmciLAorICAgICAgICAgICAg
ICAgICAgICAgICAgd2lkdGg6MzAwLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OjE1
MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
IH07CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RQb3N0ZXIodXJsKQorICAgICAgICAgICAg
ZnVuY3Rpb24gb3Blbk5leHRQb3N0ZXIoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8uZ2V0QXR0cmlidXRlKCdwb3N0ZXInKSIsIHVybCk7Ci0gICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWxhdGl2ZVVSTCh2aWRlby5wb3N0ZXIpIiwgdXJs
KTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGlm
IChwb3N0ZXJJbmZvLmN1cnJlbnQgPj0gcG9zdGVySW5mby5wb3N0ZXJzLmxlbmd0aCkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZh
ciB1cmwgPSBwb3N0ZXJJbmZvLnBvc3RlcnNbcG9zdGVySW5mby5jdXJyZW50XS51cmw7CisgICAg
ICAgICAgICAgICAgdmFyIGRlc2MgPSAiPGI+U2V0dGluZyBwb3N0ZXIgdG8gPGVtPlwiIisgdXJs
ICsgIlwiPC9lbT48L2I+IjsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoZGVzYyk7Cisg
ICAgICAgICAgICAgICAgdmlkZW8ucG9zdGVyID0gdXJsOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQodGVzdFBvc3RlciwgMTAwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RQb3N0
ZXIoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsK
KyAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7Cisg
ICAgICAgICAgICAgICAgdmFyIHBvc3RlciA9IHBvc3RlckluZm8ucG9zdGVyc1twb3N0ZXJJbmZv
LmN1cnJlbnRdOwogCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+PGk+U2V0ICdw
b3N0ZXInIHRvICdjb250ZW50L2dyZWVuYm94LnBuZycuPCIgKyAiL2k+Iik7Ci0gICAgICAgICAg
ICAgICAgdGVzdFBvc3RlcignY29udGVudC9ncmVlbmJveC5wbmcnKTsKKyAgICAgICAgICAgICAg
ICB2YXIgc2l6ZSA9IHBvc3Rlci51cmwgPyAoIiAiICsgcG9zdGVyLndpZHRoICsgIngiICsgcG9z
dGVyLmhlaWdodCkgOiAiIjsKKyAgICAgICAgICAgICAgICB2YXIgdXJsU3RyID0gdHlwZW9mKHBv
c3Rlci51cmwpID09ICJzdHJpbmciID8gKCInIiArIHBvc3Rlci51cmwgKyAiJyIpIDogJ251bGwn
OworICAgICAgICAgICAgICAgIHZhciBkZXNjID0gIjxiPlRlc3RpbmciICsgc2l6ZSArICIgcG9z
dGVyIDxlbT4iKyB1cmxTdHIgKyAiPC9lbT4iICsgcG9zdGVyLmRlc2NyaXB0aW9uICsgIi48L2I+
IjsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoZGVzYyk7CisKKyAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmdldEF0dHJpYnV0ZSgncG9zdGVyJykiLCBwb3N0ZXIudXJs
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlbGF0aXZlVVJMKHZpZGVvLnBvc3Rl
cikiLCBwb3N0ZXIuaGFzT3duUHJvcGVydHkoInJlZmxlY3RlZFVybCIpID8gcG9zdGVyLnJlZmxl
Y3RlZFVybCA6IHBvc3Rlci51cmwpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlk
ZW8uY2xpZW50V2lkdGgiLCBwb3N0ZXIud2lkdGgpOworICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uY2xpZW50SGVpZ2h0IiwgcG9zdGVyLmhlaWdodCk7CisKKyAgICAgICAgICAg
ICAgICAvLyBSZW1vdmUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMgaWYgcHJlc2VudAorICAgICAg
ICAgICAgICAgIGlmICh2aWRlby53aWR0aCkKKyAgICAgICAgICAgICAgICAgICAgdmlkZW8ucmVt
b3ZlQXR0cmlidXRlKCd3aWR0aCcpOworICAgICAgICAgICAgICAgIGlmICh2aWRlby5oZWlnaHQp
CisgICAgICAgICAgICAgICAgICAgIHZpZGVvLnJlbW92ZUF0dHJpYnV0ZSgnaGVpZ2h0Jyk7CiAK
LSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48aT5TZXQgJ3Bvc3RlcicgdG8gJycu
PCIgKyAiL2k+Iik7Ci0gICAgICAgICAgICAgICAgdmlkZW8uc2V0QXR0cmlidXRlKCdwb3N0ZXIn
LCAnJyk7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5nZXRBdHRyaWJ1dGUo
J3Bvc3RlcicpIiwgJycpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVsYXRpdmVV
UkwodmlkZW8ucG9zdGVyKSIsICd2aWRlby1wb3N0ZXIuaHRtbCcpOwotCi0gICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCI8YnI+PGk+U2V0ICdwb3N0ZXInIHRvICdjb250ZW50L2FiZS5wbmcn
LjwiICsgIi9pPiIpOwotICAgICAgICAgICAgICAgIHZpZGVvLnNldEF0dHJpYnV0ZSgncG9zdGVy
JywgJ2NvbnRlbnQvYWJlLnBuZycpOwotICAgICAgICAgICAgICAgIHRlc3RQb3N0ZXIoJ2NvbnRl
bnQvYWJlLnBuZycpOworICAgICAgICAgICAgICAgIHBvc3RlckluZm8uY3VycmVudCsrOworICAg
ICAgICAgICAgICAgIG9wZW5OZXh0UG9zdGVyKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRN
ZWRpYUVsZW1lbnQoKTsKIAotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7Ci0gICAg
ICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIHRlc3RQb3N0ZXIoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogCiAgICAgPGJvZHkg
b25sb2FkPSJzZXRUaW1lb3V0KHRlc3QsIDEwMCkiPgogCi0gICAgICAgIDx2aWRlbyBwb3N0ZXI9
ImNvbnRlbnQvZ3JlZW5ib3gucG5nIiBjb250cm9scz48L3ZpZGVvPgorICAgICAgICA8dmlkZW8g
Y29udHJvbHMgd2lkdGg9MzIwIGhlaWdodD0yNDA+PC92aWRlbz4KKyAgICAgICAgPHA+VGVzdCAm
bHQ7dmlkZW8mZ3Q7IGVsZW1lbnQgd2l0aCBhbmQgd2l0aG91dCBhIHBvc3Rlci48L3A+CiAKICAg
ICA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zaXplLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zaXplLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNjQ5ODUpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1z
aXplLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDM4IEBACitUZXN0IDx2
aWRlbz4gZWxlbWVudCBzaXplIHdpdGggYW5kIHdpdGhvdXQgJ3NyYycgYW5kICdwb3N0ZXInIGF0
dHJpYnV0ZXMuCisKK1Rlc3RpbmcgbW92aWUgd2l0aCBubyAnc3JjJyBhbmQgbm8gJ3Bvc3Rlcics
IHdpdGggJ3dpZHRoJyBhbmQgJ2hlaWdodCcgYXR0cmlidXRlcy4KK0VYUEVDVEVEICh2aWRlby5j
bGllbnRXaWR0aCA9PSAnNjQwJykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRIZWlnaHQgPT0g
JzQ4MCcpIE9LCitFWFBFQ1RFRCAodmlkZW8udmlkZW9XaWR0aCA9PSAnMCcpIE9LCitFWFBFQ1RF
RCAodmlkZW8udmlkZW9IZWlnaHQgPT0gJzAnKSBPSworCitSZW1vdmluZyAnd2lkdGgnIGFuZCAn
aGVpZ2h0JyBhdHRyaWJ1dGVzLgorVGVzdGluZyBtb3ZpZSB3aXRoIG5vICdzcmMnIGFuZCBubyAn
cG9zdGVyJywgd2l0aCBOTyAnd2lkdGgnIGFuZCAnaGVpZ2h0JyBhdHRyaWJ1dGVzLCBzaG91bGQg
YmUgZGVmYXVsdCBzaXplLgorRVhQRUNURUQgKHZpZGVvLmNsaWVudFdpZHRoID09ICczMDAnKSBP
SworRVhQRUNURUQgKHZpZGVvLmNsaWVudEhlaWdodCA9PSAnMTUwJykgT0sKK0VYUEVDVEVEICh2
aWRlby52aWRlb1dpZHRoID09ICcwJykgT0sKK0VYUEVDVEVEICh2aWRlby52aWRlb0hlaWdodCA9
PSAnMCcpIE9LCisKK1NldHRpbmcgJ3Bvc3RlcicgdG8gImNvbnRlbnQvYWJlLnBuZyIKK1Rlc3Rp
bmcgbW92aWUgd2l0aCAncG9zdGVyJyBidXQgbm8gJ3NyYycsIHNob3VsZCBiZSBpbWFnZSBzaXpl
LgorRVhQRUNURUQgKHZpZGVvLmNsaWVudFdpZHRoID09ICc3NicpIE9LCitFWFBFQ1RFRCAodmlk
ZW8uY2xpZW50SGVpZ2h0ID09ICcxMDMnKSBPSworRVhQRUNURUQgKHZpZGVvLnZpZGVvV2lkdGgg
PT0gJzAnKSBPSworRVhQRUNURUQgKHZpZGVvLnZpZGVvSGVpZ2h0ID09ICcwJykgT0sKKworU2V0
dGluZyAnc3JjJyB0byAiY29udGVudC90ZXN0LltleHRlbnNpb25dIiAKK1Rlc3RpbmcgbW92aWUg
d2l0aCAncG9zdGVyJyBhbmQgJ3NyYycsIHNob3VsZCBiZSA8dmlkZW8+IHNpemUuCitFWFBFQ1RF
RCAodmlkZW8uY2xpZW50V2lkdGggPT0gJzMyMCcpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2xpZW50
SGVpZ2h0ID09ICcyNDAnKSBPSworRVhQRUNURUQgKHZpZGVvLnZpZGVvV2lkdGggPT0gJzMyMCcp
IE9LCitFWFBFQ1RFRCAodmlkZW8udmlkZW9IZWlnaHQgPT0gJzI0MCcpIE9LCisKK1NldHRpbmcg
J3NyYycgdG8gImNvbnRlbnQvYm9ndXMuW2V4dGVuc2lvbl0iICdwb3N0ZXInIHRvICJjb250ZW50
L2dyZWVuYm94LnBuZyIKK1Rlc3RpbmcgbW92aWUgd2l0aCAncG9zdGVyJyBhbmQgaW52YWxpZCAn
c3JjJywgc2hvdWxkIGJlIGltYWdlIHNpemUuCitFWFBFQ1RFRCAodmlkZW8uY2xpZW50V2lkdGgg
PT0gJzI1JykgT0sKK0VYUEVDVEVEICh2aWRlby5jbGllbnRIZWlnaHQgPT0gJzI1JykgT0sKIEVY
UEVDVEVEICh2aWRlby52aWRlb1dpZHRoID09ICcwJykgT0sKIEVYUEVDVEVEICh2aWRlby52aWRl
b0hlaWdodCA9PSAnMCcpIE9LCi1FVkVOVChsb2FkZWRtZXRhZGF0YSkKLUVYUEVDVEVEICh2aWRl
by52aWRlb1dpZHRoID4gJzAnKSBPSwotRVhQRUNURUQgKHZpZGVvLnZpZGVvSGVpZ2h0ID4gJzAn
KSBPSworCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zaXpl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2l6ZS5odG1sCShy
ZXZpc2lvbiA2NDk4NSkKKysrIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNpemUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwxNSArMSwxMjkgQEAKLTx2aWRlbyBjb250cm9scz48L3ZpZGVvPgot
PHNjcmlwdCBzcmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPXZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+Ci08c2NyaXB0PgotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udmlkZW9X
aWR0aCIsIDAsICI9PSIpOwotICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udmlkZW9IZWlnaHQiLCAw
LCAiPT0iKTsKLQotICAgIHdhaXRGb3JFdmVudCgnbG9hZGVkbWV0YWRhdGEnLCBmdW5jdGlvbiAo
KSB7IAotICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnZpZGVvV2lkdGgiLCAwLCAiPiIpOwot
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnZpZGVvSGVpZ2h0IiwgMCwgIj4iKTsKLSAgICAg
ICAgZW5kVGVzdCgpOwotICAgIH0gKTsKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0
bGU+Jmx0O3ZpZGVvJmd0OyBlbGVtZW50IHNpemUgYW5kIHJlc2l6ZSB0ZXN0PC90aXRsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dCBzcmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KIAotICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRp
YUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpOwotPC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgICAgICB2YXIgbW92aWVJbmZvID0gCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY3VycmVudDowLAorICAgICAgICAgICAgICAgIG1vdmllczogCisgICAgICAgICAg
ICAgICAgWyAKKyAgICAgICAgICAgICAgICAgICAgeyAgIAorICAgICAgICAgICAgICAgICAgICAg
ICAgc3JjOm51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3N0ZXI6bnVsbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiJubyAnc3JjJyBhbmQgbm8gJ3Bvc3Rlcics
IHdpdGggJ3dpZHRoJyBhbmQgJ2hlaWdodCcgYXR0cmlidXRlcyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aDo2NDAsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6NDgwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9XaWR0aDowLAorICAgICAgICAgICAgICAgICAg
ICAgICAgdmlkZW9IZWlnaHQ6MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcmM6bnVsbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBvc3RlcjpudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3Jp
cHRpb246Im5vICdzcmMnIGFuZCBubyAncG9zdGVyJywgd2l0aCBOTyAnd2lkdGgnIGFuZCAnaGVp
Z2h0JyBhdHRyaWJ1dGVzLCBzaG91bGQgYmUgZGVmYXVsdCBzaXplIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHdpZHRoOjMwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDoxNTAs
CisgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1dpZHRoOjAsCisgICAgICAgICAgICAgICAg
ICAgICAgICB2aWRlb0hlaWdodDowCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyYzpudWxsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgcG9zdGVyOiJjb250ZW50L2FiZS5wbmciLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb246Iidwb3N0ZXInIGJ1dCBubyAgJ3NyYycsIHNob3VsZCBiZSBp
bWFnZSBzaXplIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOjc2LAorICAgICAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0OjEwMywKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVv
V2lkdGg6MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSGVpZ2h0OjAKKyAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc3JjOiJjb250ZW50L3Rlc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGVy
OiJjb250ZW50L2FiZS5wbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246
Iidwb3N0ZXInIGFuZCAgJ3NyYycsIHNob3VsZCBiZSAmbHQ7dmlkZW8mZ3Q7IHNpemUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgd2lkdGg6MzIwLAorICAgICAgICAgICAgICAgICAgICAgICAg
aGVpZ2h0OjI0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvV2lkdGg6MzIwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgdmlkZW9IZWlnaHQ6MjQwCisgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyYzoi
Y29udGVudC9ib2d1cyIsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3N0ZXI6ImNvbnRlbnQv
Z3JlZW5ib3gucG5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiIncG9z
dGVyJyBhbmQgaW52YWxpZCAnc3JjJywgc2hvdWxkIGJlIGltYWdlIHNpemUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgd2lkdGg6MjUsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6
MjUsCisgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1dpZHRoOjAsCisgICAgICAgICAgICAg
ICAgICAgICAgICB2aWRlb0hlaWdodDowCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc2V0dXBO
ZXh0Q29uZmlndXJhdGlvbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBpZiAobW92aWVJbmZvLmN1cnJlbnQgPj0gbW92
aWVJbmZvLm1vdmllcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgbW92aWUgPSBtb3ZpZUluZm8ubW92aWVzW21v
dmllSW5mby5jdXJyZW50XTsKKyAgICAgICAgICAgICAgICBpZiAobW92aWUuc3JjIHx8IG1vdmll
LnBvc3RlcikgeworICAgICAgICAgICAgICAgICAgICB2YXIgZGVzYyA9ICI8Yj5TZXR0aW5nICI7
CisgICAgICAgICAgICAgICAgICAgIGlmIChtb3ZpZS5zcmMgJiYgcmVsYXRpdmVVUkwodmlkZW8u
c3JjKSAhPSBtb3ZpZS5zcmMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9
IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgbW92aWUuc3JjKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc2MgKz0gIidzcmMnIHRvIDxlbT5cIiIrIG1vdmllLnNyYyArICIuW2V4dGVuc2lvbl1c
IjwvZW0+ICI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYg
KG1vdmllLnBvc3RlciAmJiByZWxhdGl2ZVVSTCh2aWRlby5wb3N0ZXIpICE9IG1vdmllLnBvc3Rl
cikgeworICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW8ucG9zdGVyID0gbW92aWUucG9zdGVy
OworICAgICAgICAgICAgICAgICAgICAgICAgZGVzYyArPSAiJ3Bvc3RlcicgdG8gPGVtPlwiIisg
bW92aWUucG9zdGVyICsgIlwiPC9lbT4iOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShkZXNjICsgIjwvYj4iKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMg
aWYgcHJlc2VudAorICAgICAgICAgICAgICAgIGlmICh2aWRlby53aWR0aCB8fCB2aWRlby5oZWln
aHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8Yj5SZW1vdmluZyAnd2lk
dGgnIGFuZCAnaGVpZ2h0JyBhdHRyaWJ1dGVzLjwvYj4iKTsKKyAgICAgICAgICAgICAgICAgICAg
dmlkZW8ucmVtb3ZlQXR0cmlidXRlKCd3aWR0aCcpOworICAgICAgICAgICAgICAgICAgICB2aWRl
by5yZW1vdmVBdHRyaWJ1dGUoJ2hlaWdodCcpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGlmICghbW92aWUuc3JjIHx8IG1vdmllLnNyYy5pbmRleE9mKCdib2d1cycpID49
IDApCisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdE1vdmllLCAxMDApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0TW92aWUoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChtb3ZpZUluZm8uY3VycmVudCA+PSBtb3ZpZUluZm8u
bW92aWVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICAgICAgdmFyIHRlbXAgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoOworICAgICAgICAgICAg
ICAgIHZhciBtb3ZpZSA9IG1vdmllSW5mby5tb3ZpZXNbbW92aWVJbmZvLmN1cnJlbnRdOworCisg
ICAgICAgICAgICAgICAgdmFyIGRlc2MgPSAiPGI+VGVzdGluZyBtb3ZpZSB3aXRoICIgKyBtb3Zp
ZS5kZXNjcmlwdGlvbiArICIuPC9iPiI7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGRl
c2MpOworCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jbGllbnRXaWR0aCIs
IG1vdmllLndpZHRoKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmNsaWVu
dEhlaWdodCIsIG1vdmllLmhlaWdodCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2
aWRlby52aWRlb1dpZHRoIiwgbW92aWUudmlkZW9XaWR0aCk7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby52aWRlb0hlaWdodCIsIG1vdmllLnZpZGVvSGVpZ2h0KTsKKworICAg
ICAgICAgICAgICAgIG1vdmllSW5mby5jdXJyZW50Kys7CisgICAgICAgICAgICAgICAgc2V0dXBO
ZXh0Q29uZmlndXJhdGlvbigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biB0ZXN0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50
KCk7CisgICAgICAgICAgICAgICAgdGVzdE1vdmllKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0ic2V0VGltZW91dCh0
ZXN0LCAxMDApIj4KKworICAgICAgICA8dmlkZW8gY29udHJvbHMgd2lkdGg9NjQwIGhlaWdodD00
ODAgb25sb2FkZWRtZXRhZGF0YT0idGVzdE1vdmllKCkiPjwvdmlkZW8+CisgICAgICAgIDxwPlRl
c3QgJmx0O3ZpZGVvJmd0OyBlbGVtZW50IHNpemUgd2l0aCBhbmQgd2l0aG91dCAnc3JjJyBhbmQg
J3Bvc3RlcicgYXR0cmlidXRlcy48L3A+CisKKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>