<?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>33571</bug_id>
          
          <creation_ts>2010-01-12 20:06:07 -0800</creation_ts>
          <short_desc>History traversals to a new document do not get the popstate event</short_desc>
          <delta_ts>2010-01-22 00:36:17 -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>Page Loading</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>180083</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-01-12 20:06:07 -0800</bug_when>
    <thetext>History traversals to a new document do not get the popstate event.

In http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#the-history-interface in section 6.11.9 step 10 the spec states:

&quot;If the specified entry is a state object or the first entry for a Document, the user agent must activate that entry.&quot;

The *only* session history traversal that does *not* meet these requirements are fragment scrolls without state objects.  Basically the spec is saying that any time you go back or forward any number of steps and the resulting navigation creates a new document, you should get a popstate event (even if the state object is null).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180086</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-01-12 20:34:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/7536748&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181464</commentid>
    <comment_count>2</comment_count>
      <attachid>46729</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-01-15 20:03:49 -0800</bug_when>
    <thetext>Created attachment 46729
Patch v1

After transitioning to committed, set a pending state object in the FrameLoader based on the current history item.  It will then pass it on to any new Document that is later created for this Frame load.

Previous layout tests are updated to cover the new behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181524</commentid>
    <comment_count>3</comment_count>
      <attachid>46729</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-16 10:43:25 -0800</bug_when>
    <thetext>Comment on attachment 46729
Patch v1

Are there security implications to letting these state objects cross document boundaries? What prevents them from crossing security origin boundaries?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181534</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-01-16 11:15:21 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 46729 [details])
&gt; Are there security implications to letting these state objects cross document
&gt; boundaries? What prevents them from crossing security origin boundaries?

My understanding of the HTML 5 structured clone algorithm in general and SerializedScriptValues more specifically is that they are safe to be used in this manner.  Certainly that the push/replaceState() API uses them in this manner implies that is the case.

Note that when a script does a push/replaceState() with a URL argument, they cannot change the URL outside of their security origin, so even when a new document later takes hold of the cloned object there&apos;s still some semblance of same-origin based security.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181535</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-01-16 11:23:07 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/53361</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181718</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-17 20:48:13 -0800</bug_when>
    <thetext>Perhaps it would be nicer to store the pending state object on the DocumentLoader so that it doesn&apos;t have to exist on both FrameLoader and Document?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181726</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-01-17 21:25:40 -0800</bug_when>
    <thetext>I didn&apos;t consider that approach because the Frame-&gt;Document and FrameLoader-&gt;DocumentLoader relationships are (sadly) not the same, and not updated at the same times.

While it is possible your suggest would end up working out, I can imagine at least a few scenarios where it might not be safe or correct.  I&apos;m not convinced it&apos;s worth the effort to verify that would be sound (largely because the patch has already landed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183529</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-22 00:36:17 -0800</bug_when>
    <thetext>&gt; While it is possible your suggest would end up working out, I can imagine at
&gt; least a few scenarios where it might not be safe or correct.  I&apos;m not convinced
&gt; it&apos;s worth the effort to verify that would be sound (largely because the patch
&gt; has already landed).

Really?  It seems unfortunate to have two places where we store a pending state object.  I&apos;ll file a bug about this so we don&apos;t forget about it.

https://bugs.webkit.org/show_bug.cgi?id=33992

It&apos;d be great if you could share those problematic scenarios.  Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46729</attachid>
            <date>2010-01-15 20:03:49 -0800</date>
            <delta_ts>2010-01-16 10:43:25 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19224</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzM1NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDEtMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NTM2NzQ4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMzNTcxCisgICAgICAgIEhpc3RvcnkgdHJhdmVyc2FscyB0byBhIG5ldyBkb2N1
bWVudCBkbyBub3QgZ2V0IHRoZSBwb3BzdGF0ZSBldmVudAorCisgICAgICAgIFN0YXRlIG9iamVj
dHMgbm93IGxpdmUtb24gaW4gdGhlaXIgSGlzdG9yeUl0ZW0gaW5kZWZpbml0ZWx5LgorICAgICAg
ICBUaGlzIG1lYW5zIGFueSBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbiBtaWdodCByZXN1bHQgaW4g
YSBwb3BzdGF0ZSBldmVudCwgbm90IGp1c3QgdG8gCisgICAgICAgIHByZS1leGlzdGluZyBkb2N1
bWVudHMgYXMgd2FzIHByZXZpb3VzbHkgdGhlIGNhc2UuCisKKyAgICAgICAgKiBoaXN0b3J5L0hp
c3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpkb2N1bWVudERl
dGFjaGVkKTogU3RhdGUgb2JqZWN0cyBhcmUgaGVsZCBiZXlvbmQgRG9jdW1lbnQgbGlmZXRpbWUu
CisgICAgICAgCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpiZWdpbik6IElmIHRoZXJlIGlzIGEgcGVuZGluZyBzdGF0ZSBv
YmplY3QgZm9yIHRoaXMgRnJhbWUgbG9hZCwgcGFzcyBpdAorICAgICAgICAgIG9uIHRvIHRoZSBE
b2N1bWVudCBhZnRlciB0aGUgRG9jdW1lbnQgaXMgY3JlYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQpOiBJZiB0aGUgY3VycmVudCBoaXN0
b3J5IGl0ZW0gaGFzIGEgc3RhdGUgb2JqZWN0LAorICAgICAgICAgIHNldCBpdCBhcyB0aGUgRnJh
bWVMb2FkJ3MgcGVuZGluZyBzdGF0ZSBvYmplY3QuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmg6CisgICAgICAgIAorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpnb1RvSXRlbSk6IFJlbW92ZSBhIG5vdy1pbnZhbGlkIEFTU0VSVC4KKwogMjAx
MC0wMS0xNSAgQ2Fyb2wgU3phYm8gIDxjYXJvbC5zemFib0Bub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0
ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJl
dmlzaW9uIDUzMzU1KQorKysgV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw2IEBAIHZvaWQgSGlzdG9yeUl0ZW06OmRvY3VtZW50RGV0
YWNoZWQoRG9jdW0KIHsKICAgICBBU1NFUlRfVU5VU0VEKGRvY3VtZW50LCBtX2RvY3VtZW50ID09
IGRvY3VtZW50KTsKICAgICBtX2RvY3VtZW50ID0gMDsKLSAgICBtX3N0YXRlT2JqZWN0ID0gMDsK
IH0KIAogdm9pZCBIaXN0b3J5SXRlbTo6YWRkQ2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IGNoaWxkKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNTMzNTUpCisr
KyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNyw2
ICs4MzcsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YmVnaW4oY29uc3QgS1VSTCYgdXJsLAogICAg
IGRvY3VtZW50LT5zZXRVUkwobV9VUkwpOwogICAgIG1fZnJhbWUtPnNldERvY3VtZW50KGRvY3Vt
ZW50KTsKIAorICAgIGlmIChtX3BlbmRpbmdTdGF0ZU9iamVjdCkgeworICAgICAgICBkb2N1bWVu
dC0+c3RhdGVQb3BwZWQobV9wZW5kaW5nU3RhdGVPYmplY3QuZ2V0KCkpOworICAgICAgICBtX3Bl
bmRpbmdTdGF0ZU9iamVjdC5jbGVhcigpOworICAgIH0KKyAgICAKICAgICBpZiAobV9kZWNvZGVy
KQogICAgICAgICBkb2N1bWVudC0+c2V0RGVjb2RlcihtX2RlY29kZXIuZ2V0KCkpOwogICAgIGlm
IChmb3JjZWRTZWN1cml0eU9yaWdpbikKQEAgLTI1MjgsMTAgKzI1MzMsMTMgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKAogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5
cGVCYWNrOgogICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVCYWNrV01MRGVja05vdEFjY2Vzc2li
bGU6CiAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZDoKLSAgICAg
ICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAocGFn
ZS0+YmFja0ZvcndhcmRMaXN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeSgpLT51
cGRhdGVGb3JCYWNrRm9yd2FyZE5hdmlnYXRpb24oKTsKIAorICAgICAgICAgICAgICAgICAgICBp
ZiAoaGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9w
ZW5kaW5nU3RhdGVPYmplY3QgPSBoaXN0b3J5KCktPmN1cnJlbnRJdGVtKCktPnN0YXRlT2JqZWN0
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gQ3Jl
YXRlIGEgZG9jdW1lbnQgdmlldyBmb3IgdGhpcyBkb2N1bWVudCwgb3IgdXNlZCB0aGUgY2FjaGVk
IHZpZXcuCiAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZWRQYWdlKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBEb2N1bWVudExvYWRlciogY2FjaGVkRG9jdW1lbnRMb2FkZXIgPSBjYWNo
ZWRQYWdlLT5kb2N1bWVudExvYWRlcigpOwpAQCAtMjU0Miw2ICsyNTUwLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVkKAogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT50cmFuc2l0aW9uVG9Db21taXR0
ZWRGb3JOZXdQYWdlKCk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBGcmFtZUxvYWRUeXBlUmVsb2FkOgpJbmRleDog
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA1MzM1NSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2ICs0ODMsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc0NvbXBsZXRlOwogICAgIGJvb2wgbV9pc0xvYWRpbmdNYWluUmVzb3VyY2U7CiAK
KyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3BlbmRpbmdTdGF0ZU9iamVjdDsK
KwogICAgIEtVUkwgbV9VUkw7CiAgICAgS1VSTCBtX3dvcmtpbmdVUkw7CiAKSW5kZXg6IFdlYkNv
cmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJl
dmlzaW9uIDUzMzU1KQorKysgV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yODksMTMgKzI4OSw2IEBAIHZvaWQgUGFnZTo6Z29CYWNrT3JGb3J3YXJkKGludCBkaXN0YW5j
ZSkKIAogdm9pZCBQYWdlOjpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlw
ZSB0eXBlKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAvLyBJZiB3ZSdyZSBuYXZpZ2F0
aW5nIHRvIGFuIGl0ZW0gd2l0aCBoaXN0b3J5IHN0YXRlIGZvciBhIERvY3VtZW50IG90aGVyIHRo
YW4gdGhlCi0gICAgLy8gY3VycmVudCBEb2N1bWVudCwgdGhlIG5ldyBEb2N1bWVudCBoYWQgYmV0
dGVyIGJlIGluIHRoZSBwYWdlIGNhY2hlLgotICAgIGlmIChpdGVtLT5zdGF0ZU9iamVjdCgpICYm
IGl0ZW0tPmRvY3VtZW50KCkgIT0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIEFT
U0VSVChpdGVtLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKTsKLSNlbmRpZgotCiAgICAgLy8g
QWJvcnQgYW55IGN1cnJlbnQgbG9hZCB1bmxlc3Mgd2UncmUgbmF2aWdhdGluZyB0aGUgY3VycmVu
dCBkb2N1bWVudCB0byBhIG5ldyBzdGF0ZSBvYmplY3QKICAgICBpZiAoIWl0ZW0tPnN0YXRlT2Jq
ZWN0KCkgfHwgaXRlbS0+ZG9jdW1lbnQoKSAhPSBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKSkgewog
ICAgICAgICAvLyBEZWZpbmUgd2hhdCB0byBkbyB3aXRoIGFueSBvcGVuIGRhdGFiYXNlIGNvbm5l
Y3Rpb25zLiBCeSBkZWZhdWx0IHdlIHN0b3AgdGhlbSBhbmQgdGVybWluYXRlIHRoZSBkYXRhYmFz
ZSB0aHJlYWQuCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzM1NSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTAxLTE1ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUzNjc0OD4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU3MQorICAgICAgICBIaXN0b3J5IHRy
YXZlcnNhbHMgdG8gYSBuZXcgZG9jdW1lbnQgZG8gbm90IGdldCB0aGUgcG9wc3RhdGUgZXZlbnQK
KworICAgICAgICBVcGRhdGVkIGV4aXN0aW5nIHRlc3RzIHRvIG1hdGNoIG5ldyBjb3JyZWN0IGJl
aGF2aW9yLgorCisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRl
c3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2xvYWRl
ci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFn
bWVudC1zY3JvbGwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdtZW50LXNjcm9s
bC5odG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0
cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sOgorCiAyMDEwLTAxLTE1ICBDYXJvbCBTemFibyAgPGNh
cm9sLnN6YWJvQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0
cm95ZWQtbmF2aWdhdGUtYmFjay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1i
YWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTMzNTUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2stZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIyICsxLDE4IEBACiBtYWluIGZyYW1lIC0gaGFz
IDEgb251bmxvYWQgaGFuZGxlcihzKQotQUxFUlQ6IEhpc3RvcnkgbGVuZ3RoIGlzIDIKIEFMRVJU
OiBTdGF0ZSBwb3BwZWQgLSBGaXJzdEVudHJ5ICh0eXBlIHN0cmluZykKIEFMRVJUOiBTdGF0ZSBw
b3BwZWQgLSBTZWNvbmRFbnRyeSAodHlwZSBzdHJpbmcpCiBBTEVSVDogTmF2aWdhdGluZyBiYWNr
Li4uCiBtYWluIGZyYW1lIC0gaGFzIDEgb251bmxvYWQgaGFuZGxlcihzKQotQUxFUlQ6IEhpc3Rv
cnkgbGVuZ3RoIGlzIDMKLUFMRVJUOiBMYXN0IHBhdGggY29tcG9uZW50IG9mIGxvY2F0aW9uIGlz
IGRvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWw/U2Vjb25kRW50cnlTaG91bGRO
ZXZlckJlUmVhY3RpdmF0ZWQKK0FMRVJUOiBMYXN0IHBhdGggY29tcG9uZW50IG9mIGxvY2F0aW9u
IGlzIGRvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWw/U2Vjb25kRW50cnlXaWxs
TGF0ZXJCZVJlYWN0aXZhdGVkCitBTEVSVDogU3RhdGUgcG9wcGVkIC0gU2Vjb25kRW50cnlXaWxs
TGF0ZXJCZVJlYWN0aXZhdGVkICh0eXBlIHN0cmluZykKIG1haW4gZnJhbWUgLSBoYXMgMSBvbnVu
bG9hZCBoYW5kbGVyKHMpCi1BTEVSVDogSGlzdG9yeSBsZW5ndGggaXMgMwotQUxFUlQ6IExhc3Qg
cGF0aCBjb21wb25lbnQgb2YgbG9jYXRpb24gaXMgZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRl
LWJhY2suaHRtbD9GaXJzdEVudHJ5U2hvdWxkTmV2ZXJCZVJlYWN0aXZhdGVkCi1BTEVSVDogVGVz
dCBjb21wbGV0ZWQKK0FMRVJUOiBMYXN0IHBhdGggY29tcG9uZW50IG9mIGxvY2F0aW9uIGlzIGRv
Y3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWw/Rmlyc3RFbnRyeVdpbGxMYXRlckJl
UmVhY3RpdmF0ZWQKK0FMRVJUOiBTdGF0ZSBwb3BwZWQgLSBGaXJzdEVudHJ5V2lsbExhdGVyQmVS
ZWFjdGl2YXRlZCAodHlwZSBzdHJpbmcpCitBTEVSVDogVGVzdCBjb21wbGV0ZQogVGhpcyB0ZXN0
OgotLUJ1aWxkcyB1cCBhIGxpc3Qgb2Ygc3RhdGUgb2JqZWN0IGVudHJpZXMuCistQnVpbGRzIHVw
IGEgbGlzdCBvZiBzdGF0ZSBvYmplY3QgZW50cmllcyB3aXRoIGZyYWdtZW50IFVSTHMuCiAtTmF2
aWdhdGVzIHRocm91Z2ggdGhlbSB0byB2ZXJpZnkgdGhhdCB0aGUgcG9wc3RhdGUgZXZlbnQgaXMg
ZmlyZWQuCiAtTmF2aWdhdGVzIGF3YXkgdG8gYSBuZXcgZG9jdW1lbnQsIHdpdGggdGhlIG9sZCBk
b2N1bWVudCBiZWluZyBkZXN0cm95ZWQuCi0tTmF2aWdhdGVzIGJhY2sgdG8gdGhlIHN0YXRlIG9i
amVjdCBlbnRyaWVzIGFuZCB2ZXJpZmllcyB0aGUgcG9wc3RhdGUgZXZlbnQgaXMgbm90IGZpcmVk
LgorLU5hdmlnYXRlcyBiYWNrIHRvIHRoZSBzdGF0ZSBvYmplY3QgZW50cmllcyBhbmQgdmVyaWZp
ZXMgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGZpcmVkIGV2ZW4gb24gdGhlIG5ldyBkb2N1bWVudHMu
CiAKLUhpc3RvcnkgbGVuZ3RoIGlzIDMKLUxhc3QgcGF0aCBjb21wb25lbnQgb2YgbG9jYXRpb24g
aXMgZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbD9GaXJzdEVudHJ5U2hvdWxk
TmV2ZXJCZVJlYWN0aXZhdGVkCi1UZXN0IGNvbXBsZXRlZAogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2st
d2l0aC1mcmFnbWVudC1zY3JvbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUt
YmFjay13aXRoLWZyYWdtZW50LXNjcm9sbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUzMzU1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3ll
ZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyMyArMSwyMCBAQAogbWFpbiBmcmFtZSAtIGhhcyAxIG9udW5sb2FkIGhh
bmRsZXIocykKLUFMRVJUOiBIaXN0b3J5IGxlbmd0aCBpcyAyCitBTEVSVDogTE9BREVECiBBTEVS
VDogU3RhdGUgcG9wcGVkIC0gRmlyc3RFbnRyeSAodHlwZSBzdHJpbmcpCiBBTEVSVDogaGFzaENo
YW5nZWQgLSBMYXN0IHBhdGggY29tcG9uZW50IG9mIGxvY2F0aW9uIGlzIGRvY3VtZW50LWRlc3Ry
b3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwjRmlyc3RFbnRyeQog
QUxFUlQ6IFN0YXRlIHBvcHBlZCAtIFNlY29uZEVudHJ5ICh0eXBlIHN0cmluZykKIEFMRVJUOiBo
YXNoQ2hhbmdlZCAtIExhc3QgcGF0aCBjb21wb25lbnQgb2YgbG9jYXRpb24gaXMgZG9jdW1lbnQt
ZGVzdHJveWVkLW5hdmlnYXRlLWJhY2std2l0aC1mcmFnbWVudC1zY3JvbGwuaHRtbCNTZWNvbmRF
bnRyeQogQUxFUlQ6IE5hdmlnYXRpbmcgYmFjay4uLgogbWFpbiBmcmFtZSAtIGhhcyAxIG9udW5s
b2FkIGhhbmRsZXIocykKLUFMRVJUOiBIaXN0b3J5IGxlbmd0aCBpcyAzCi1BTEVSVDogTGFzdCBw
YXRoIGNvbXBvbmVudCBvZiBsb2NhdGlvbiBpcyBkb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUt
YmFjay13aXRoLWZyYWdtZW50LXNjcm9sbC5odG1sI1NlY29uZEVudHJ5U2hvdWxkTmV2ZXJCZVJl
YWN0aXZhdGVkCi1BTEVSVDogaGFzaENoYW5nZWQgLSBMYXN0IHBhdGggY29tcG9uZW50IG9mIGxv
Y2F0aW9uIGlzIGRvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21lbnQt
c2Nyb2xsLmh0bWwjRmlyc3RFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZAotQUxFUlQ6IFRl
c3QgY29tcGxldGVkCitBTEVSVDogTE9BREVECitBTEVSVDogTGFzdCBwYXRoIGNvbXBvbmVudCBv
ZiBsb2NhdGlvbiBpcyBkb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdt
ZW50LXNjcm9sbC5odG1sI1NlY29uZEVudHJ5V2lsbExhdGVyQmVSZWFjdGl2YXRlZAorQUxFUlQ6
IFN0YXRlIHBvcHBlZCAtIFNlY29uZEVudHJ5V2lsbExhdGVyQmVSZWFjdGl2YXRlZCAodHlwZSBz
dHJpbmcpCitBTEVSVDogU3RhdGUgcG9wcGVkIC0gRmlyc3RFbnRyeVdpbGxMYXRlckJlUmVhY3Rp
dmF0ZWQgKHR5cGUgc3RyaW5nKQorQUxFUlQ6IGhhc2hDaGFuZ2VkIC0gTGFzdCBwYXRoIGNvbXBv
bmVudCBvZiBsb2NhdGlvbiBpcyBkb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay13aXRo
LWZyYWdtZW50LXNjcm9sbC5odG1sI0ZpcnN0RW50cnlXaWxsTGF0ZXJCZVJlYWN0aXZhdGVkCitB
TEVSVDogVGVzdCBjb21wbGV0ZQogVGhpcyB0ZXN0OgotLUJ1aWxkcyB1cCBhIGxpc3Qgb2Ygc3Rh
dGUgb2JqZWN0IGVudHJpZXMgd2l0aCBmcmFnbWVudCBVUkwuCistQnVpbGRzIHVwIGEgbGlzdCBv
ZiBzdGF0ZSBvYmplY3QgZW50cmllcyB3aXRoIGZyYWdtZW50IFVSTHMuCiAtTmF2aWdhdGVzIHRo
cm91Z2ggdGhlbSB0byB2ZXJpZnkgdGhhdCB0aGUgcG9wc3RhdGUgYW5kIGhhc2hjaGFuZ2VkIGV2
ZW50cyBhcmUgZmlyZWQuCiAtTmF2aWdhdGVzIGF3YXkgdG8gYSBuZXcgZG9jdW1lbnQsIHdpdGgg
dGhlIG9sZCBkb2N1bWVudCBiZWluZyBkZXN0cm95ZWQuCi0tTmF2aWdhdGVzIGJhY2sgdG8gdGhl
IHN0YXRlIG9iamVjdCBlbnRyaWVzIGFuZCB2ZXJpZmllcyB0aGUgcG9wc3RhdGUgZXZlbnQgaXMg
bm90IGZpcmVkLgotCi1IaXN0b3J5IGxlbmd0aCBpcyAzCi1MYXN0IHBhdGggY29tcG9uZW50IG9m
IGxvY2F0aW9uIGlzIGRvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLXdpdGgtZnJhZ21l
bnQtc2Nyb2xsLmh0bWwjU2Vjb25kRW50cnlTaG91bGROZXZlckJlUmVhY3RpdmF0ZWQKLWhhc2hD
aGFuZ2VkIC0gTGFzdCBwYXRoIGNvbXBvbmVudCBvZiBsb2NhdGlvbiBpcyBkb2N1bWVudC1kZXN0
cm95ZWQtbmF2aWdhdGUtYmFjay13aXRoLWZyYWdtZW50LXNjcm9sbC5odG1sI0ZpcnN0RW50cnlT
aG91bGROZXZlckJlUmVhY3RpdmF0ZWQKLVRlc3QgY29tcGxldGVkCistTmF2aWdhdGVzIGJhY2sg
dG8gdGhlIHN0YXRlIG9iamVjdCBlbnRyaWVzIGFuZCB2ZXJpZmllcyB0aGUgcG9wc3RhdGUgZXZl
bnQgaXMgZmlyZWQgZXZlbiBvbiB0aGUgbmV3IGRvY3VtZW50cy4KIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1i
YWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNr
LXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwJKHJldmlzaW9uIDUzMzU1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1i
YWNrLXdpdGgtZnJhZ21lbnQtc2Nyb2xsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOTMgKzks
NzIgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAotZnVuY3Rpb24gbG9nKHR4dCkKLXsKLSAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJUZXh0ICs9IHR4dCArICJc
biI7Ci0gICAgLy8gYWxlcnQgdGhlIG1lc3NhZ2VzIGFsc28gc28gRHVtcFJlbmRlclRyZWUgY2Fu
IGNhcHR1cmUgYW5kIGxvZyBtZXNzYWdlcyBhY3Jvc3MgbXVsdGlwbGUgZG9jdW1lbnRzLgotICAg
IGFsZXJ0KHR4dCk7Ci19Ci0KLWZ1bmN0aW9uIGVuZFRlc3QobXNnKQotewotICAgIGxvZyhtc2cp
OwotICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwot
fQotCiBmdW5jdGlvbiBsYXN0UGF0aENvbXBvbmVudCgpCiB7CiAgICAgcmV0dXJuIHdpbmRvdy5s
b2NhdGlvbi5ocmVmLnNwbGl0KCcvJykucG9wKCk7CiB9CiAKK2Z1bmN0aW9uIHJ1bkZpcnN0U3Rh
Z2VPZlRlc3QoKQoreyAgIAorICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKCJGaXJzdEVudHJ5Iiwg
bnVsbCwgIiNGaXJzdEVudHJ5Iik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUoIlNlY29uZEVudHJ5
IiwgbnVsbCwgIiNTZWNvbmRFbnRyeSIpOworICAgIGhpc3RvcnkuYmFjaygpOworfQorCiBmdW5j
dGlvbiBydW5TZWNvbmRTdGFnZU9mVGVzdCgpCiB7Ci0gICAgbG9nKCJIaXN0b3J5IGxlbmd0aCBp
cyAiICsgaGlzdG9yeS5sZW5ndGgpOwotICAgIGxvZygiTGFzdCBwYXRoIGNvbXBvbmVudCBvZiBs
b2NhdGlvbiBpcyAiICsgbGFzdFBhdGhDb21wb25lbnQoKSk7Ci0gICAgc2Vzc2lvblN0b3JhZ2Uu
c3RhZ2UgPSAzOworICAgIGFsZXJ0KCJMYXN0IHBhdGggY29tcG9uZW50IG9mIGxvY2F0aW9uIGlz
ICIgKyBsYXN0UGF0aENvbXBvbmVudCgpKTsKICAgICBoaXN0b3J5LmJhY2soKTsKIH0KIAogZnVu
Y3Rpb24gcnVuVGhpcmRTdGFnZU9mVGVzdCgpCiB7Ci0gICAgbG9nKCJIaXN0b3J5IGxlbmd0aCBp
cyAiICsgaGlzdG9yeS5sZW5ndGgpOwotICAgIGxvZygiTGFzdCBwYXRoIGNvbXBvbmVudCBvZiBs
b2NhdGlvbiBpcyAiICsgbGFzdFBhdGhDb21wb25lbnQoKSk7Ci0gICAgZW5kVGVzdCgiVGVzdCBj
b21wbGV0ZWQiKTsKKyAgICBhbGVydCgiRmluYWwgc3RhZ2Ugb2YgdGVzdCBsb2FkZWQiKTsKIH0K
IAogZnVuY3Rpb24gbG9hZGVkKCkKIHsKLSAgICBpZiAoc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UpIHsK
LSAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlID09IDIpCi0gICAgICAgICAgICBydW5T
ZWNvbmRTdGFnZU9mVGVzdCgpOwotICAgICAgICBlbHNlIGlmIChzZXNzaW9uU3RvcmFnZS5zdGFn
ZSA9PSAzKQotICAgICAgICAgICAgZW5kVGVzdCgiU2hvdWxkbid0IHJlYWNoIHRoaXMgY2FzZSB3
aGVuIGRvaW5nIGZyYWdtZW50IHNjcm9sbHMiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
ZW5kVGVzdCgiVW5leHBlY3RlZCBzdGFnZSB2YWx1ZSIpOwotICAgIH0gZWxzZQorICAgIGFsZXJ0
KCJMT0FERUQiKTsKKyAgICBpZiAoIXNlc3Npb25TdG9yYWdlLnN0YWdlKQogICAgICAgICBydW5G
aXJzdFN0YWdlT2ZUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkZpcnN0U3RhZ2VPZlRlc3QoKQot
eyAgIAotICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKCJGaXJzdEVudHJ5IiwgbnVsbCwgIiNGaXJz
dEVudHJ5Iik7Ci0gICAgaGlzdG9yeS5wdXNoU3RhdGUoIlNlY29uZEVudHJ5IiwgbnVsbCwgIiNT
ZWNvbmRFbnRyeSIpOwotICAgIAotICAgIGxvZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3Rv
cnkubGVuZ3RoKTsKLSAgICBoaXN0b3J5LmJhY2soKTsKKyAgICBlbHNlIGlmIChzZXNzaW9uU3Rv
cmFnZS5zdGFnZSA9PSAyKQorICAgICAgICBydW5TZWNvbmRTdGFnZU9mVGVzdCgpOworICAgIGVs
c2UgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlID09IDMpCisgICAgICAgIHJ1blRoaXJkU3RhZ2VP
ZlRlc3QoKTsKIH0KIAogZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQogewotICAgIGxvZygiU3RhdGUg
cG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRl
ICsgIikiKTsKKyAgICBhbGVydCgiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAo
dHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKICAgICBpZiAoZXZlbnQuc3RhdGUg
PT0gIkZpcnN0RW50cnkiKSB7Ci0gICAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKCJGaXJzdEVu
dHJ5U2hvdWxkTmV2ZXJCZVJlYWN0aXZhdGVkIiwgbnVsbCwgIiNGaXJzdEVudHJ5U2hvdWxkTmV2
ZXJCZVJlYWN0aXZhdGVkIik7CisgICAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKCJGaXJzdEVu
dHJ5V2lsbExhdGVyQmVSZWFjdGl2YXRlZCIsIG51bGwsICIjRmlyc3RFbnRyeVdpbGxMYXRlckJl
UmVhY3RpdmF0ZWQiKTsKICAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CiAgICAgfSBlbHNlIGlm
IChldmVudC5zdGF0ZSA9PSAiU2Vjb25kRW50cnkiKSB7Ci0gICAgICAgIGhpc3RvcnkucmVwbGFj
ZVN0YXRlKCJTZWNvbmRFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZCIsIG51bGwsICIjU2Vj
b25kRW50cnlTaG91bGROZXZlckJlUmVhY3RpdmF0ZWQiKTsKKyAgICAgICAgaGlzdG9yeS5yZXBs
YWNlU3RhdGUoIlNlY29uZEVudHJ5V2lsbExhdGVyQmVSZWFjdGl2YXRlZCIsIG51bGwsICIjU2Vj
b25kRW50cnlXaWxsTGF0ZXJCZVJlYWN0aXZhdGVkIik7CiAgICAgICAgIHdpbmRvdy5sb2NhdGlv
biA9ICJyZXNvdXJjZXMvbmF2aWdhdGUtYmFjay5odG1sIjsKLSAgICB9IGVsc2UKLSAgICAgICAg
ZW5kVGVzdCgiVW5leHBlY3RlZCBzdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUpOworICAg
IH0gZWxzZSBpZiAoZXZlbnQuc3RhdGUgPT0gIlNlY29uZEVudHJ5V2lsbExhdGVyQmVSZWFjdGl2
YXRlZCIpCisgICAgICAgIGhpc3RvcnkuYmFjaygpOwogfQogCiBmdW5jdGlvbiBoYXNoQ2hhbmdl
ZCgpCiB7Ci0gICAgbG9nKCJoYXNoQ2hhbmdlZCAtIExhc3QgcGF0aCBjb21wb25lbnQgb2YgbG9j
YXRpb24gaXMgIiArIGxhc3RQYXRoQ29tcG9uZW50KCkpOwotCi0gICAgaWYgKHdpbmRvdy5sb2Nh
dGlvbi5oYXNoID09ICIjRmlyc3RFbnRyeVNob3VsZE5ldmVyQmVSZWFjdGl2YXRlZCIpCi0gICAg
ICAgIGVuZFRlc3QoIlRlc3QgY29tcGxldGVkIik7CisgICAgYWxlcnQoImhhc2hDaGFuZ2VkIC0g
TGFzdCBwYXRoIGNvbXBvbmVudCBvZiBsb2NhdGlvbiBpcyAiICsgbGFzdFBhdGhDb21wb25lbnQo
KSk7CisgICBpZiAod2luZG93LmxvY2F0aW9uLmhhc2ggPT0gIiNGaXJzdEVudHJ5V2lsbExhdGVy
QmVSZWFjdGl2YXRlZCIpIHsKKyAgICAgICAgYWxlcnQoIlRlc3QgY29tcGxldGUiKTsKKyAgICAg
ICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICB9CiB9CiAKIDwvc2NyaXB0PgogPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiIG9ucG9w
c3RhdGU9InN0YXRlUG9wcGVkKCk7IiBvbmhhc2hjaGFuZ2U9Imhhc2hDaGFuZ2VkKCk7IiBvbnVu
bG9hZD0iLyogZGlzYWJsZSBwYWdlIGNhY2hlICovIj4KIDxwcmU+CiBUaGlzIHRlc3Q6Ci0tQnVp
bGRzIHVwIGEgbGlzdCBvZiBzdGF0ZSBvYmplY3QgZW50cmllcyB3aXRoIGZyYWdtZW50IFVSTC4K
Ky1CdWlsZHMgdXAgYSBsaXN0IG9mIHN0YXRlIG9iamVjdCBlbnRyaWVzIHdpdGggZnJhZ21lbnQg
VVJMcy4KIC1OYXZpZ2F0ZXMgdGhyb3VnaCB0aGVtIHRvIHZlcmlmeSB0aGF0IHRoZSBwb3BzdGF0
ZSBhbmQgaGFzaGNoYW5nZWQgZXZlbnRzIGFyZSBmaXJlZC4KIC1OYXZpZ2F0ZXMgYXdheSB0byBh
IG5ldyBkb2N1bWVudCwgd2l0aCB0aGUgb2xkIGRvY3VtZW50IGJlaW5nIGRlc3Ryb3llZC4KLS1O
YXZpZ2F0ZXMgYmFjayB0byB0aGUgc3RhdGUgb2JqZWN0IGVudHJpZXMgYW5kIHZlcmlmaWVzIHRo
ZSBwb3BzdGF0ZSBldmVudCBpcyBub3QgZmlyZWQuCi08L3ByZT48YnI+Ci08cHJlIGlkPSJsb2dn
ZXIiPjwvcHJlPgorLU5hdmlnYXRlcyBiYWNrIHRvIHRoZSBzdGF0ZSBvYmplY3QgZW50cmllcyBh
bmQgdmVyaWZpZXMgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGZpcmVkIGV2ZW4gb24gdGhlIG5ldyBk
b2N1bWVudHMuCis8L3ByZT4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9k
b2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sCShyZXZpc2lvbiA1MzM1NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQt
bmF2aWdhdGUtYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDg0ICs5LDY2IEBAIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CiB9CiAKLWZ1bmN0aW9uIGxvZyh0eHQpCi17Ci0gICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVyVGV4dCArPSB0eHQgKyAiXG4iOwotICAgIC8v
IGFsZXJ0IHRoZSBtZXNzYWdlcyBhbHNvIHNvIER1bXBSZW5kZXJUcmVlIGNhbiBjYXB0dXJlIGFu
ZCBsb2cgbWVzc2FnZXMgYWNyb3NzIG11bHRpcGxlIGRvY3VtZW50cy4KLSAgICBhbGVydCh0eHQp
OwotfQotCi1mdW5jdGlvbiBlbmRUZXN0KG1zZykKLXsKLSAgICBsb2cobXNnKTsKLSAgICBzZXNz
aW9uU3RvcmFnZS5jbGVhcigpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQogZnVuY3Rp
b24gbGFzdFBhdGhDb21wb25lbnQoKQogewogICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJl
Zi5zcGxpdCgnLycpLnBvcCgpOwogfQogCitmdW5jdGlvbiBydW5GaXJzdFN0YWdlT2ZUZXN0KCkK
K3sgICAKKyAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSgiRmlyc3RFbnRyeSIsIG51bGwsICI/Rmly
c3RFbnRyeSIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKCJTZWNvbmRFbnRyeSIsIG51bGwsICI/
U2Vjb25kRW50cnkiKTsKKyAgICBoaXN0b3J5LmJhY2soKTsKK30KKwogZnVuY3Rpb24gcnVuU2Vj
b25kU3RhZ2VPZlRlc3QoKQogewotICAgIGxvZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3Rv
cnkubGVuZ3RoKTsKLSAgICBsb2coIkxhc3QgcGF0aCBjb21wb25lbnQgb2YgbG9jYXRpb24gaXMg
IiArIGxhc3RQYXRoQ29tcG9uZW50KCkpOwotICAgIHNlc3Npb25TdG9yYWdlLnN0YWdlID0gMzsK
KyAgICBhbGVydCgiTGFzdCBwYXRoIGNvbXBvbmVudCBvZiBsb2NhdGlvbiBpcyAiICsgbGFzdFBh
dGhDb21wb25lbnQoKSk7CiAgICAgaGlzdG9yeS5iYWNrKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRo
aXJkU3RhZ2VPZlRlc3QoKQogewotICAgIGxvZygiSGlzdG9yeSBsZW5ndGggaXMgIiArIGhpc3Rv
cnkubGVuZ3RoKTsKLSAgICBsb2coIkxhc3QgcGF0aCBjb21wb25lbnQgb2YgbG9jYXRpb24gaXMg
IiArIGxhc3RQYXRoQ29tcG9uZW50KCkpOwotICAgIGVuZFRlc3QoIlRlc3QgY29tcGxldGVkIik7
CisgICAgYWxlcnQoIkZpbmFsIHN0YWdlIG9mIHRlc3QgbG9hZGVkIik7CiB9CiAKIGZ1bmN0aW9u
IGxvYWRlZCgpCiB7Ci0gICAgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlKSB7Ci0gICAgICAgIGlm
IChzZXNzaW9uU3RvcmFnZS5zdGFnZSA9PSAyKQotICAgICAgICAgICAgcnVuU2Vjb25kU3RhZ2VP
ZlRlc3QoKTsKLSAgICAgICAgZWxzZSBpZiAoc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UgPT0gMykKLSAg
ICAgICAgICAgIHJ1blRoaXJkU3RhZ2VPZlRlc3QoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgZW5kVGVzdCgiVW5leHBlY3RlZCBzdGFnZSB2YWx1ZSIpOwotICAgIH0gZWxzZQorICAgIGlm
ICghc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UpCiAgICAgICAgIHJ1bkZpcnN0U3RhZ2VPZlRlc3QoKTsK
LX0KLQotZnVuY3Rpb24gcnVuRmlyc3RTdGFnZU9mVGVzdCgpCi17ICAgCi0gICAgaGlzdG9yeS5y
ZXBsYWNlU3RhdGUoIkZpcnN0RW50cnkiLCBudWxsLCAiP0ZpcnN0RW50cnkiKTsKLSAgICBoaXN0
b3J5LnB1c2hTdGF0ZSgiU2Vjb25kRW50cnkiLCBudWxsLCAiP1NlY29uZEVudHJ5Iik7Ci0gICAg
Ci0gICAgbG9nKCJIaXN0b3J5IGxlbmd0aCBpcyAiICsgaGlzdG9yeS5sZW5ndGgpOwotICAgIGhp
c3RvcnkuYmFjaygpOworICAgIGVsc2UgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlID09IDIpCisg
ICAgICAgIHJ1blNlY29uZFN0YWdlT2ZUZXN0KCk7CisgICAgZWxzZSBpZiAoc2Vzc2lvblN0b3Jh
Z2Uuc3RhZ2UgPT0gMykKKyAgICAgICAgcnVuVGhpcmRTdGFnZU9mVGVzdCgpOwogfQogCiBmdW5j
dGlvbiBzdGF0ZVBvcHBlZCgpCiB7Ci0gICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQu
c3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOworICAgIGFsZXJ0
KCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZl
bnQuc3RhdGUgKyAiKSIpOwogICAgIGlmIChldmVudC5zdGF0ZSA9PSAiRmlyc3RFbnRyeSIpIHsK
LSAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoIkZpcnN0RW50cnlTaG91bGROZXZlckJlUmVh
Y3RpdmF0ZWQiLCBudWxsLCAiP0ZpcnN0RW50cnlTaG91bGROZXZlckJlUmVhY3RpdmF0ZWQiKTsK
KyAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoIkZpcnN0RW50cnlXaWxsTGF0ZXJCZVJlYWN0
aXZhdGVkIiwgbnVsbCwgIj9GaXJzdEVudHJ5V2lsbExhdGVyQmVSZWFjdGl2YXRlZCIpOwogICAg
ICAgICBoaXN0b3J5LmZvcndhcmQoKTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LnN0YXRlID09ICJT
ZWNvbmRFbnRyeSIpIHsKLSAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoIlNlY29uZEVudHJ5
U2hvdWxkTmV2ZXJCZVJlYWN0aXZhdGVkIiwgbnVsbCwgIj9TZWNvbmRFbnRyeVNob3VsZE5ldmVy
QmVSZWFjdGl2YXRlZCIpOworICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSgiU2Vjb25kRW50
cnlXaWxsTGF0ZXJCZVJlYWN0aXZhdGVkIiwgbnVsbCwgIj9TZWNvbmRFbnRyeVdpbGxMYXRlckJl
UmVhY3RpdmF0ZWQiKTsKICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gInJlc291cmNlcy9uYXZp
Z2F0ZS1iYWNrLmh0bWwiOwotICAgIH0gZWxzZQotICAgICAgICBlbmRUZXN0KCJVbmV4cGVjdGVk
IHN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSk7CisgICAgfSBlbHNlIGlmIChldmVudC5z
dGF0ZSA9PSAiU2Vjb25kRW50cnlXaWxsTGF0ZXJCZVJlYWN0aXZhdGVkIikKKyAgICAgICAgaGlz
dG9yeS5iYWNrKCk7CisgICAgZWxzZSBpZiAoZXZlbnQuc3RhdGUgPT0gIkZpcnN0RW50cnlXaWxs
TGF0ZXJCZVJlYWN0aXZhdGVkIikgeworICAgICAgICBhbGVydCgiVGVzdCBjb21wbGV0ZSIpOwor
ICAgICAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpOworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIH0KIH0KIAogPC9zY3JpcHQ+CiA8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyIg
b25wb3BzdGF0ZT0ic3RhdGVQb3BwZWQoKTsiIG9udW5sb2FkPSIvKiBkaXNhYmxlIHBhZ2UgY2Fj
aGUgKi8iPgogPHByZT4KIFRoaXMgdGVzdDoKLS1CdWlsZHMgdXAgYSBsaXN0IG9mIHN0YXRlIG9i
amVjdCBlbnRyaWVzLgorLUJ1aWxkcyB1cCBhIGxpc3Qgb2Ygc3RhdGUgb2JqZWN0IGVudHJpZXMg
d2l0aCBmcmFnbWVudCBVUkxzLgogLU5hdmlnYXRlcyB0aHJvdWdoIHRoZW0gdG8gdmVyaWZ5IHRo
YXQgdGhlIHBvcHN0YXRlIGV2ZW50IGlzIGZpcmVkLgogLU5hdmlnYXRlcyBhd2F5IHRvIGEgbmV3
IGRvY3VtZW50LCB3aXRoIHRoZSBvbGQgZG9jdW1lbnQgYmVpbmcgZGVzdHJveWVkLgotLU5hdmln
YXRlcyBiYWNrIHRvIHRoZSBzdGF0ZSBvYmplY3QgZW50cmllcyBhbmQgdmVyaWZpZXMgdGhlIHBv
cHN0YXRlIGV2ZW50IGlzIG5vdCBmaXJlZC4KKy1OYXZpZ2F0ZXMgYmFjayB0byB0aGUgc3RhdGUg
b2JqZWN0IGVudHJpZXMgYW5kIHZlcmlmaWVzIHRoZSBwb3BzdGF0ZSBldmVudCBpcyBmaXJlZCBl
dmVuIG9uIHRoZSBuZXcgZG9jdW1lbnRzLgogPC9wcmU+PGJyPgogPHByZSBpZD0ibG9nZ2VyIj48
L3ByZT4KIDwvYm9keT4K
</data>
<flag name="review"
          id="29035"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="29036"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>