<?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>72554</bug_id>
          
          <creation_ts>2011-11-16 14:56:52 -0800</creation_ts>
          <short_desc>Implement addCue and removeCue in TextTrack</short_desc>
          <delta_ts>2011-11-25 20:34:19 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anna Cavender">annacc</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>504295</commentid>
    <comment_count>0</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-16 14:56:52 -0800</bug_when>
    <thetext>4.8.10.12.5 Text track API

The addCue(cue) method of TextTrack objects, when invoked, must run the following steps:
If the given cue is already associated with a text track other than the method&apos;s TextTrack object&apos;s text track, then throw an InvalidStateError exception and abort these steps.
Associate cue with the method&apos;s TextTrack object&apos;s text track, if it is not currently associated with a text track.
If the given cue is already listed in the method&apos;s TextTrack object&apos;s text track&apos;s text track list of cues, then throw an InvalidStateError exception.
Add cue to the method&apos;s TextTrack object&apos;s text track&apos;s text track list of cues.

The removeCue(cue) method of TextTrack objects, when invoked, must run the following steps:
If the given cue is not associated with the method&apos;s TextTrack object&apos;s text track, then throw an InvalidStateError exception.
If the given cue is not currently listed in the method&apos;s TextTrack object&apos;s text track&apos;s text track list of cues, then throw a NotFoundError exception.
Remove cue from the method&apos;s TextTrack object&apos;s text track&apos;s text track list of cues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505114</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-11-17 12:40:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/10464485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505968</commentid>
    <comment_count>2</comment_count>
      <attachid>115846</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-18 12:18:54 -0800</bug_when>
    <thetext>Created attachment 115846
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506106</commentid>
    <comment_count>3</comment_count>
      <attachid>115846</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-18 15:12:01 -0800</bug_when>
    <thetext>Comment on attachment 115846
Proposed patch

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

&gt; Source/WebCore/html/HTMLTrackElement.cpp:195
&gt;  bool HTMLTrackElement::canLoadUrl(LoadableTextTrack*, const KURL&amp; url)

The spelling Url here is quite strange.

&gt; Source/WebCore/html/TextTrack.cpp:181
&gt; +    TextTrack* cueTrack = cue.get()-&gt;track();

Should not need .get() here. If you do, the reason is probably that you are using PassRefPtr instead of RefPtr for cue.

&gt; Source/WebCore/html/TextTrack.cpp:189
&gt; +    RefPtr&lt;TextTrackCue&gt; newCue = cue;

The normal style is to name the argument prpCue and the local variable just &quot;cue&quot;. And do this closer to the start of the function.

&gt; Source/WebCore/html/TextTrack.cpp:194
&gt; +    if (m_cues-&gt;contains(newCue.get())) {

Seems inefficient to separately search for the cue before adding it. Instead the add function could also check if the cue is in the array. I’m a little unclear about why it doesn’t.

&gt; Source/WebCore/html/TextTrack.cpp:205
&gt; +void TextTrack::removeCue(PassRefPtr&lt;TextTrackCue&gt; cue, ExceptionCode&amp; ec)

A remove function should take a raw pointer, not a PassRefPtr.

&gt; Source/WebCore/html/TextTrack.cpp:216
&gt; +    if (cue.get()-&gt;track() != this) {

Should not need get() here.

&gt; Source/WebCore/html/TextTrack.cpp:223
&gt; +    if (!m_cues-&gt;contains(cue.get())) {

It seems inefficient to search for the cue twice, once to check if it’s contained and a second time to actually remove it. It would be better if remove just indicated failure.

&gt; Source/WebCore/html/TextTrack.cpp:233
&gt; +

Extra blank line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509316</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-25 20:33:49 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 115846 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115846&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLTrackElement.cpp:195
&gt; &gt;  bool HTMLTrackElement::canLoadUrl(LoadableTextTrack*, const KURL&amp; url)
&gt; 
&gt; The spelling Url here is quite strange.
&gt; 
Good point, I will fix this in a follow up patch.

&gt; &gt; Source/WebCore/html/TextTrack.cpp:181
&gt; &gt; +    TextTrack* cueTrack = cue.get()-&gt;track();
&gt; 
&gt; Should not need .get() here. If you do, the reason is probably that you are using PassRefPtr instead of RefPtr for cue.
&gt; 
Fixed.

&gt; &gt; Source/WebCore/html/TextTrack.cpp:189
&gt; &gt; +    RefPtr&lt;TextTrackCue&gt; newCue = cue;
&gt; 
&gt; The normal style is to name the argument prpCue and the local variable just &quot;cue&quot;. And do this closer to the start of the function.
&gt; 
Fixed.

&gt; &gt; Source/WebCore/html/TextTrack.cpp:194
&gt; &gt; +    if (m_cues-&gt;contains(newCue.get())) {
&gt; 
&gt; Seems inefficient to separately search for the cue before adding it. Instead the add function could also check if the cue is in the array. I’m a little unclear about why it doesn’t.
&gt; 
Good point, fixed.

&gt; &gt; Source/WebCore/html/TextTrack.cpp:205
&gt; &gt; +void TextTrack::removeCue(PassRefPtr&lt;TextTrackCue&gt; cue, ExceptionCode&amp; ec)
&gt; 
&gt; A remove function should take a raw pointer, not a PassRefPtr.
&gt; 
Fixed.

&gt; &gt; Source/WebCore/html/TextTrack.cpp:216
&gt; &gt; +    if (cue.get()-&gt;track() != this) {
&gt; 
&gt; Should not need get() here.
&gt; 
Fixed.

&gt; &gt; Source/WebCore/html/TextTrack.cpp:223
&gt; &gt; +    if (!m_cues-&gt;contains(cue.get())) {
&gt; 
&gt; It seems inefficient to search for the cue twice, once to check if it’s contained and a second time to actually remove it. It would be better if remove just indicated failure.
&gt; 
Another good point, also fixed.

&gt; &gt; Source/WebCore/html/TextTrack.cpp:233
&gt; &gt; +
&gt; 
&gt; Extra blank line here.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509317</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-25 20:34:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/101185</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115846</attachid>
            <date>2011-11-18 12:18:54 -0800</date>
            <delta_ts>2011-11-18 15:12:00 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_add_cue_2.txt</filename>
            <type>text/plain</type>
            <size>16795</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDgwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDExLTExLTE4ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBhZGRD
dWUgYW5kIHJlbW92ZUN1ZSBpbiBUZXh0VHJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdHJhY2svdHJhY2stYWRkLXJlbW92ZS1j
dWUuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OmVuc3VyZVRyYWNrKTogR28gYWhlYWQgYW5kIGFs
bG9jYXRlIGEgVHJhY2sgZXZlbiBpZiB0aGUgZmVhdHVyZSAKKyAgICAgICAgICAgIGlzIGRpc2Fi
bGVkLCBpdCBqdXN0IHdvbid0IGxvYWQgYW55dGhpbmcuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQpOiBFYXJseSByZXR1cm4gaWYgdGhlIGZlYXR1ZSBp
cyBkaXNhYmxlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRV
cmwpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFjazo6YWRkQ3VlKTogSW1wbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpyZW1vdmVDdWUpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvVGV4dFRyYWNr
Q3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKTog
SW5pdGlhbGl6ZSBldmVyeSBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWU6OnRyYWNrKTogbV90cmFjayBpcyBub3cgYSBSZWZQdHIuCisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tDdWU6OnNldFRyYWNrKTogRGl0dG8uCisgICAgICAgICogaHRtbC9UZXh0
VHJhY2tDdWUuaDoKKworICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjphZGQpOiBEb24ndCBpZ25vcmUgb3V0IG9m
IG9yZGVyIGN1ZXMsIHRoZSBzcGVjIHRleHQgaXMgbm90IAorICAgICAgICAgICAgYSBjb25mb3Jt
YW5jZSByZXF1aXJlbWVudC4KKwogMjAxMS0xMS0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBcHBlYXJhbmNlIG9mIGNvbXBvdW5kIHRyYW5zZm9y
bSBhbmltYXRpb25zIHVuZGVyIGFwcHMgbGlua2VkIG9uIFNub3dMZW9wYXJkIGlzIGluY29ycmVj
dApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxMDA3ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTgsOSArMTU4LDYgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojpz
ZXRJc0RlZmF1bHQoYm9vbAogCiBMb2FkYWJsZVRleHRUcmFjayogSFRNTFRyYWNrRWxlbWVudDo6
ZW5zdXJlVHJhY2soKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBpZiAoIW1fdHJh
Y2spIHsKICAgICAgICAgLy8gVGhlIGtpbmQgYXR0cmlidXRlIGlzIGFuIGVudW1lcmF0ZWQgYXR0
cmlidXRlLCBsaW1pdGVkIG9ubHkgdG8ga25vdyB2YWx1ZXMuIEl0IGRlZmF1bHRzIHRvICdzdWJ0
aXRsZXMnIGlmIG1pc3Npbmcgb3IgaW52YWxpZC4KICAgICAgICAgU3RyaW5nIGtpbmQgPSBnZXRB
dHRyaWJ1dGUoa2luZEF0dHIpOwpAQCAtMTgzLDYgKzE4MCw5IEBAIGJvb2wgSFRNTFRyYWNrRWxl
bWVudDo6aXNVUkxBdHRyaWJ1dGUoQXQKIAogdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpzY2hlZHVs
ZUxvYWQoKQogeworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFtZWRpYUVsZW1lbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTQsNiArMTk0LDkgQEAgdm9pZCBIVE1MVHJhY2tF
bGVtZW50OjpzY2hlZHVsZUxvYWQoKQogCiBib29sIEhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRV
cmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBLVVJMJiB1cmwpCiB7CisgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICAgICBIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1l
bnQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMTAwNzgzKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsMTUgKzE2Niw3MSBA
QCBUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmFjdGl2ZUN1ZXMoCiAgICAgcmV0dXJuIDA7
CiB9CiAKLXZvaWQgVGV4dFRyYWNrOjphZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+LCBF
eGNlcHRpb25Db2RlJikKK3ZvaWQgVGV4dFRyYWNrOjphZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHJh
Y2tDdWU+IGN1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8gRklYTUUoNjI4OTApOiBJ
bXBsZW1lbnQuCisgICAgaWYgKCFjdWUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIDQuOC4x
MC4xMi40IFRleHQgdHJhY2sgQVBJCisKKyAgICAvLyBUaGUgYWRkQ3VlKGN1ZSkgbWV0aG9kIG9m
IFRleHRUcmFjayBvYmplY3RzLCB3aGVuIGludm9rZWQsIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcg
c3RlcHM6CisKKyAgICAvLyAxLiBJZiB0aGUgZ2l2ZW4gY3VlIGlzIGFscmVhZHkgYXNzb2NpYXRl
ZCB3aXRoIGEgdGV4dCB0cmFjayBvdGhlciB0aGFuIAorICAgIC8vIHRoZSBtZXRob2QncyBUZXh0
VHJhY2sgb2JqZWN0J3MgdGV4dCB0cmFjaywgdGhlbiB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJv
cgorICAgIC8vIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgVGV4dFRyYWNr
KiBjdWVUcmFjayA9IGN1ZS5nZXQoKS0+dHJhY2soKTsKKyAgICBpZiAoY3VlVHJhY2sgJiYgY3Vl
VHJhY2sgIT0gdGhpcykgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gMi4gQXNzb2NpYXRlIGN1ZSB3aXRoIHRoZSBtZXRo
b2QncyBUZXh0VHJhY2sgb2JqZWN0J3MgdGV4dCB0cmFjaywgaWYgaXQgaXMgCisgICAgLy8gbm90
IGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGggYSB0ZXh0IHRyYWNrLgorICAgIFJlZlB0cjxUZXh0
VHJhY2tDdWU+IG5ld0N1ZSA9IGN1ZTsKKyAgICBuZXdDdWUtPnNldFRyYWNrKHRoaXMpOworCisg
ICAgLy8gMy4gSWYgdGhlIGdpdmVuIGN1ZSBpcyBhbHJlYWR5IGxpc3RlZCBpbiB0aGUgbWV0aG9k
J3MgVGV4dFRyYWNrIG9iamVjdCdzIHRleHQKKyAgICAvLyB0cmFjaydzIHRleHQgdHJhY2sgbGlz
dCBvZiBjdWVzLCB0aGVuIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGV4Y2VwdGlvbi4KKyAg
ICBpZiAobV9jdWVzLT5jb250YWlucyhuZXdDdWUuZ2V0KCkpKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCisgICAgLy8gNC4g
QWRkIGN1ZSB0byB0aGUgbWV0aG9kJ3MgVGV4dFRyYWNrIG9iamVjdCdzIHRleHQgdHJhY2sncyB0
ZXh0IHRyYWNrIGxpc3Qgb2YgY3Vlcy4KKyAgICBtX2N1ZXMtPmFkZChuZXdDdWUpOworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja0FkZEN1ZSh0aGlzLCBuZXdD
dWUuZ2V0KCkpOwogfQogCi12b2lkIFRleHRUcmFjazo6cmVtb3ZlQ3VlKFBhc3NSZWZQdHI8VGV4
dFRyYWNrQ3VlPiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIFRleHRUcmFjazo6cmVtb3ZlQ3VlKFBh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8v
IEZJWE1FKDYyODkwKTogSW1wbGVtZW50LgorICAgIGlmICghY3VlKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyA0LjguMTAuMTIuNCBUZXh0IHRyYWNrIEFQSQorCisgICAgLy8gVGhlIHJlbW92
ZUN1ZShjdWUpIG1ldGhvZCBvZiBUZXh0VHJhY2sgb2JqZWN0cywgd2hlbiBpbnZva2VkLCBtdXN0
IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorCisgICAgLy8gMS4gSWYgdGhlIGdpdmVuIGN1ZSBp
cyBub3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgCisgICAgLy8gb2Jq
ZWN0J3MgdGV4dCB0cmFjaywgdGhlbiB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBleGNlcHRp
b24uCisgICAgaWYgKGN1ZS5nZXQoKS0+dHJhY2soKSAhPSB0aGlzKSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8g
Mi4gSWYgdGhlIGdpdmVuIGN1ZSBpcyBub3QgY3VycmVudGx5IGxpc3RlZCBpbiB0aGUgbWV0aG9k
J3MgVGV4dFRyYWNrIAorICAgIC8vIG9iamVjdCdzIHRleHQgdHJhY2sncyB0ZXh0IHRyYWNrIGxp
c3Qgb2YgY3VlcywgdGhlbiB0aHJvdyBhIE5vdEZvdW5kRXJyb3IgZXhjZXB0aW9uLgorICAgIGlm
ICghbV9jdWVzLT5jb250YWlucyhjdWUuZ2V0KCkpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyAzLiBSZW1vdmUgY3Vl
IGZyb20gdGhlIG1ldGhvZCdzIFRleHRUcmFjayBvYmplY3QncyB0ZXh0IHRyYWNrJ3MgdGV4dCB0
cmFjayBsaXN0IG9mIGN1ZXMuCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
dGV4dFRyYWNrUmVtb3ZlQ3VlKHRoaXMsIGN1ZS5nZXQoKSk7CisgICAgY3VlLT5zZXRUcmFjaygw
KTsKKyAgICBtX2N1ZXMtPnJlbW92ZShjdWUuZ2V0KCkpOworCiB9CiAKIHZvaWQgVGV4dFRyYWNr
OjpuZXdDdWVzTG9hZGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3Vl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAJ
KHJldmlzaW9uIDEwMDc4MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDE1IEBAIFRleHRUcmFja0N1ZTo6VGV4dFRy
YWNrQ3VlKFNjcmlwdEV4ZWN1dGkKICAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0KQogICAgICwgbV9l
bmRUaW1lKGVuZCkKICAgICAsIG1fY29udGVudChjb250ZW50KQotICAgICwgbV9wYXVzZU9uRXhp
dChwYXVzZU9uRXhpdCkKICAgICAsIG1fd3JpdGluZ0RpcmVjdGlvbihIb3Jpem9udGFsKQotICAg
ICwgbV9zbmFwVG9MaW5lcyh0cnVlKQogICAgICwgbV9saW5lUG9zaXRpb24oLTEpCiAgICAgLCBt
X3RleHRQb3NpdGlvbig1MCkKICAgICAsIG1fY3VlU2l6ZSgxMDApCiAgICAgLCBtX2N1ZUFsaWdu
bWVudChNaWRkbGUpCi0gICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAgICwgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KGNvbnRleHQpCisgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQorICAgICwgbV9w
YXVzZU9uRXhpdChwYXVzZU9uRXhpdCkKKyAgICAsIG1fc25hcFRvTGluZXModHJ1ZSkKIHsKICAg
ICBwYXJzZVNldHRpbmdzKHNldHRpbmdzKTsKIH0KQEAgLTY2LDEwICs2NiwxMCBAQCBUZXh0VHJh
Y2tDdWU6On5UZXh0VHJhY2tDdWUoKQogCiBUZXh0VHJhY2sqIFRleHRUcmFja0N1ZTo6dHJhY2so
KSBjb25zdAogewotICAgIHJldHVybiBtX3RyYWNrOworICAgIHJldHVybiBtX3RyYWNrLmdldCgp
OwogfQogCi12b2lkIFRleHRUcmFja0N1ZTo6c2V0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKK3Zv
aWQgVGV4dFRyYWNrQ3VlOjpzZXRUcmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz50cmFjaykKIHsK
ICAgICBtX3RyYWNrID0gdHJhY2s7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRU
cmFja0N1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3Vl
LmgJKHJldmlzaW9uIDEwMDc4MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3Vl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flRleHRUcmFja0N1ZSgpOwogCiAgICAgVGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0OwotICAgIHZv
aWQgc2V0VHJhY2soVGV4dFRyYWNrKik7CisgICAgdm9pZCBzZXRUcmFjayhQYXNzUmVmUHRyPFRl
eHRUcmFjaz4pOwogCiAgICAgU3RyaW5nIGlkKCkgY29uc3Q7CiAgICAgZG91YmxlIHN0YXJ0VGlt
ZSgpIGNvbnN0OwpAQCAtMTAwLDI1ICsxMDAsMjQgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KICAgICAKLSAgICBUZXh0VHJhY2sqIG1fdHJhY2s7Ci0g
ICAgCiAgICAgU3RyaW5nIG1faWQ7CiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgIGRvdWJs
ZSBtX2VuZFRpbWU7CiAgICAgU3RyaW5nIG1fY29udGVudDsKLSAgICBib29sIG1fcGF1c2VPbkV4
aXQ7CiAgICAgRGlyZWN0aW9uIG1fd3JpdGluZ0RpcmVjdGlvbjsKLSAgICBib29sIG1fc25hcFRv
TGluZXM7CiAgICAgaW50IG1fbGluZVBvc2l0aW9uOwogICAgIGludCBtX3RleHRQb3NpdGlvbjsK
ICAgICBpbnQgbV9jdWVTaXplOwogICAgIEFsaWdubWVudCBtX2N1ZUFsaWdubWVudDsKICAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbV9kb2N1bWVudEZyYWdtZW50OworICAgIFJlZlB0cjxU
ZXh0VHJhY2s+IG1fdHJhY2s7CiAKLSAgICBib29sIG1faXNBY3RpdmU7Ci0gICAgCiAgICAgRXZl
bnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworICAgIGJvb2wgbV9pc0FjdGl2ZTsKKyAg
ICBib29sIG1fcGF1c2VPbkV4aXQ7CisgICAgYm9vbCBtX3NuYXBUb0xpbmVzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tD
dWVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1
ZUxpc3QuY3BwCShyZXZpc2lvbiAxMDA3ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRU
cmFja0N1ZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNCArNzgsNiBAQCB2b2lkIFRl
eHRUcmFja0N1ZUxpc3Q6OmFkZChjb25zdCBWZWN0b3I8CiAKIHZvaWQgVGV4dFRyYWNrQ3VlTGlz
dDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCiB7Ci0gICAgLy8gV2ViVlRUIGN1
ZSB0aW1pbmdzCi0gICAgLy8gMS4gVGhlIHRpbWUgcmVwcmVzZW50ZWQgYnkgdGhpcyBXZWJWVFQg
dGltZXN0YW1wIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsCi0gICAgLy8gdG8gdGhlIHN0
YXJ0IHRpbWUgb2Zmc2V0cyBvZiBhbGwgcHJldmlvdXMgY3VlcyBpbiB0aGUgZmlsZS4KLSAgICAv
LyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyN3ZWJ2
dHQtY3VlLXRpbWluZ3MKLSAgICAvLyBOb3RlOiBiZWNhdXNlIHRoaXMgcmVxdWlyZW1lbnQgaXMg
c3BlY2lmaWMgdG8gV2ViVlRULCB3ZSBtYXkgd2FudCB0byBjaGVjayBmaXJzdAotICAgIC8vIHdo
ZXRoZXIgdGhlIGN1ZXMgaW4gdGhpcyBsaXN0IGNhbWUgZnJvbSBhIFdlYlZUVCBmaWxlLgotICAg
IGlmICghbV9saXN0LmlzRW1wdHkoKSAmJiBjdWUtPnN0YXJ0VGltZSgpIDwgbV9saXN0Lmxhc3Qo
KS0+c3RhcnRUaW1lKCkpCi0gICAgICAgIHJldHVybjsKICAgICBhZGQoY3VlLCAwLCBtX2xpc3Qu
c2l6ZSgpKTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAwODAxKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMTggIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGFkZEN1ZSBhbmQgcmVtb3ZlQ3VlIGluIFRleHRUcmFjaworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWFkZC1yZW1vdmUt
Y3VlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stYWRk
LXJlbW92ZS1jdWUuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2std2Vi
dnR0LXRjMDEyLW91dC1vZi1vcmRlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICog
bWVkaWEvdHJhY2svdHJhY2std2VidnR0LXRjMDEyLW91dC1vZi1vcmRlci5odG1sOiBSZW1vdmVk
LgorCiAyMDExLTExLTE4ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEluZmluaXRlIHJlY3Vyc2lvbiBpbiBXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OmNvbXB1dGVSZWN0Rm9yUmVwYWludApJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJh
Y2stYWRkLXJlbW92ZS1jdWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLWFkZC1yZW1vdmUtY3VlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC1yZW1vdmUtY3VlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorVGVzdHMgVGV4dFRyYWNrQ3Vl
J3MgYWRkQ3VlIGFuZCByZW1vdmVDdWUKKworCisqKiogVGVzdCBjdWVzIGxvYWRlZCBmcm9tIHRo
ZSBmaWxlLgorRVhQRUNURUQgKGN1ZXMubGVuZ3RoID09ICc0JykgT0sKK0VYUEVDVEVEIChjdWVz
LmdldEN1ZUJ5SWQoJzEnKS5zdGFydFRpbWUgPT0gJzAnKSBPSworRVhQRUNURUQgKGN1ZXNbMV0u
c3RhcnRUaW1lID09ICczMScpIE9LCitFWFBFQ1RFRCAoY3Vlc1syXS5zdGFydFRpbWUgPT0gJzYx
JykgT0sKK0VYUEVDVEVEIChjdWVzLmdldEN1ZUJ5SWQoJzQnKS5zdGFydFRpbWUgPT0gJzEyMScp
IE9LCitFWFBFQ1RFRCAoY3Vlcy5nZXRDdWVCeUlkKCdqdW5rJykgPT0gJ3VuZGVmaW5lZCcpIE9L
CisKKyoqKiBDcmVhdGUgYSBuZXcgY3VlLCBjaGVjayB2YWx1ZXMKK1JVTih0ZXh0Q3VlID0gbmV3
IFRleHRUcmFja0N1ZSgnc2F1c2FnZS1jdWUnLCAzMywgMy40LCAnU2F1c2FnZT8nKSkKK0VYUEVD
VEVEICh0ZXh0Q3VlLnRyYWNrID09ICdudWxsJykgT0sKK0VYUEVDVEVEICh0ZXh0Q3VlLmlkID09
ICdzYXVzYWdlLWN1ZScpIE9LCitFWFBFQ1RFRCAodGV4dEN1ZS5zdGFydFRpbWUgPT0gJzMzJykg
T0sKK0VYUEVDVEVEICh0ZXh0Q3VlLmVuZFRpbWUgPT0gJzMuNCcpIE9LCitFWFBFQ1RFRCAodGV4
dEN1ZS5wYXVzZU9uRXhpdCA9PSAnZmFsc2UnKSBPSworRVhQRUNURUQgKHRleHRDdWUuZGlyZWN0
aW9uID09ICdob3Jpem9udGFsJykgT0sKK0VYUEVDVEVEICh0ZXh0Q3VlLnNuYXBUb0xpbmVzID09
ICd0cnVlJykgT0sKK0VYUEVDVEVEICh0ZXh0Q3VlLmxpbmVQb3NpdGlvbiA9PSAnLTEnKSBPSwor
RVhQRUNURUQgKHRleHRDdWUudGV4dFBvc2l0aW9uID09ICc1MCcpIE9LCitFWFBFQ1RFRCAodGV4
dEN1ZS5zaXplID09ICcxMDAnKSBPSworRVhQRUNURUQgKHRleHRDdWUuYWxpZ25tZW50ID09ICdt
aWRkbGUnKSBPSworCisqKiogQWRkIHRoZSBuZXcgY3VlIHRvIGEgdHJhY2ssIG1ha2Ugc3VyZSBp
dCBpcyBpbnNlcnRlZCBjb3JyZWN0bHkuCitSVU4odGVzdFRyYWNrLnRyYWNrLmFkZEN1ZSh0ZXh0
Q3VlKSkKK0VYUEVDVEVEICh0ZXh0Q3VlLnRyYWNrID09ICdbb2JqZWN0IFRleHRUcmFja10nKSBP
SworRVhQRUNURUQgKGN1ZXNbMV0uc3RhcnRUaW1lID09ICczMScpIE9LCitFWFBFQ1RFRCAoY3Vl
c1syXS5zdGFydFRpbWUgPT0gJzMzJykgT0sKK0VYUEVDVEVEIChjdWVzWzNdLnN0YXJ0VGltZSA9
PSAnNjEnKSBPSworCisqKiogUmVtb3ZlIGEgY3VlIGNyZWF0ZWQgd2l0aCBhZGRDdWUoKS4KK1JV
Tih0ZXN0VHJhY2sudHJhY2sucmVtb3ZlQ3VlKHRleHRDdWUpKQorRVhQRUNURUQgKHRleHRDdWUu
dHJhY2sgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGN1ZXNbMV0uc3RhcnRUaW1lID09ICczMScp
IE9LCitFWFBFQ1RFRCAoY3Vlc1syXS5zdGFydFRpbWUgPT0gJzYxJykgT0sKKworKioqIFJlbW92
ZSBhIGN1ZSBhZGRlZCBmcm9tIHRoZSBXZWJWVFQgZmlsZS4KK1JVTih0ZXh0Q3VlID0gY3Vlc1sy
XSkKK1JVTih0ZXN0VHJhY2sudHJhY2sucmVtb3ZlQ3VlKHRleHRDdWUpKQorRVhQRUNURUQgKHRl
eHRDdWUudHJhY2sgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGN1ZXNbMV0uc3RhcnRUaW1lID09
ICczMScpIE9LCitFWFBFQ1RFRCAoY3Vlc1syXS5zdGFydFRpbWUgPT0gJzEyMScpIE9LCisKKyoq
KiBUcnkgdG8gcmVtb3ZlIHRoZSBjdWUgYWdhaW4uCitURVNUKHRlc3RUcmFjay50cmFjay5yZW1v
dmVDdWUodGV4dEN1ZSkpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIpIE9L
CitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQt
cmVtb3ZlLWN1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLWFkZC1yZW1vdmUtY3VlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS90cmFjay90cmFjay1hZGQtcmVtb3ZlLWN1ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDczIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PiAgICAgICAgICAgCisKKyAgICAgICAgICAgIHZhciBjdWVzOworCisgICAgICAg
ICAgICBmdW5jdGlvbiB0cmFja0xvYWRlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdmFyIHRlc3RUcmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0VHJhY2snKTsK
KyAgICAgICAgICAgICAgICBjdWVzID0gdGVzdFRyYWNrLnRyYWNrLmN1ZXM7CisKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiogVGVzdCBjdWVzIGxvYWRlZCBmcm9tIHRoZSBm
aWxlLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY3Vlcy5sZW5ndGgiLCA0KTsK
KyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImN1ZXMuZ2V0Q3VlQnlJZCgnMScpLnN0YXJ0
VGltZSIsIDApOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY3Vlc1sxXS5zdGFydFRp
bWUiLCAzMSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWVzWzJdLnN0YXJ0VGlt
ZSIsIDYxKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImN1ZXMuZ2V0Q3VlQnlJZCgn
NCcpLnN0YXJ0VGltZSIsIDEyMSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWVz
LmdldEN1ZUJ5SWQoJ2p1bmsnKSIsIHVuZGVmaW5lZCk7CisKKyAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIjxicj4qKiogQ3JlYXRlIGEgbmV3IGN1ZSwgY2hlY2sgdmFsdWVzIik7CisgICAg
ICAgICAgICAgICAgcnVuKCJ0ZXh0Q3VlID0gbmV3IFRleHRUcmFja0N1ZSgnc2F1c2FnZS1jdWUn
LCAzMywgMy40LCAnU2F1c2FnZT8nKSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dGV4dEN1ZS50cmFjayIsIG51bGwpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGV4
dEN1ZS5pZCIsICJzYXVzYWdlLWN1ZSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dGV4dEN1ZS5zdGFydFRpbWUiLCAzMyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0
ZXh0Q3VlLmVuZFRpbWUiLCAzLjQpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGV4
dEN1ZS5wYXVzZU9uRXhpdCIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InRleHRDdWUuZGlyZWN0aW9uIiwgImhvcml6b250YWwiKTsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInRleHRDdWUuc25hcFRvTGluZXMiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInRleHRDdWUubGluZVBvc2l0aW9uIiwgLTEpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidGV4dEN1ZS50ZXh0UG9zaXRpb24iLCA1MCk7CisgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ0ZXh0Q3VlLnNpemUiLCAxMDApOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidGV4dEN1ZS5hbGlnbm1lbnQiLCAibWlkZGxlIik7CisKKyAgICAgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiogQWRkIHRoZSBuZXcgY3VlIHRvIGEgdHJhY2ssIG1h
a2Ugc3VyZSBpdCBpcyBpbnNlcnRlZCBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICAgICAgcnVu
KCJ0ZXN0VHJhY2sudHJhY2suYWRkQ3VlKHRleHRDdWUpIik7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ0ZXh0Q3VlLnRyYWNrIiwgdGVzdFRyYWNrLnRyYWNrKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoImN1ZXNbMV0uc3RhcnRUaW1lIiwgMzEpOworICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgiY3Vlc1syXS5zdGFydFRpbWUiLCAzMyk7CisgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJjdWVzWzNdLnN0YXJ0VGltZSIsIDYxKTsKKworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqKiBSZW1vdmUgYSBjdWUgY3JlYXRlZCB3aXRoIGFkZEN1
ZSgpLiIpOworICAgICAgICAgICAgICAgIHJ1bigidGVzdFRyYWNrLnRyYWNrLnJlbW92ZUN1ZSh0
ZXh0Q3VlKSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGV4dEN1ZS50cmFjayIs
IG51bGwpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY3Vlc1sxXS5zdGFydFRpbWUi
LCAzMSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWVzWzJdLnN0YXJ0VGltZSIs
IDYxKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqKiBSZW1vdmUgYSBj
dWUgYWRkZWQgZnJvbSB0aGUgV2ViVlRUIGZpbGUuIik7CisgICAgICAgICAgICAgICAgcnVuKCJ0
ZXh0Q3VlID0gY3Vlc1syXSIpOworICAgICAgICAgICAgICAgIHJ1bigidGVzdFRyYWNrLnRyYWNr
LnJlbW92ZUN1ZSh0ZXh0Q3VlKSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGV4
dEN1ZS50cmFjayIsIG51bGwpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY3Vlc1sx
XS5zdGFydFRpbWUiLCAzMSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJjdWVzWzJd
LnN0YXJ0VGltZSIsIDEyMSk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4q
KiogVHJ5IHRvIHJlbW92ZSB0aGUgY3VlIGFnYWluLiIpOworICAgICAgICAgICAgICAgIHRlc3RF
eGNlcHRpb24oInRlc3RUcmFjay50cmFjay5yZW1vdmVDdWUodGV4dEN1ZSkiLCAiRE9NRXhjZXB0
aW9uLklOVkFMSURfU1RBVEVfRVJSIik7CisKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
PgorICAgICAgICA8cD5UZXN0cyBUZXh0VHJhY2tDdWUncyBhZGRDdWUgYW5kIHJlbW92ZUN1ZTwv
cD4KKyAgICAgICAgPHZpZGVvPgorICAgICAgICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2siIHNy
Yz0iY2FwdGlvbnMtd2VidnR0L3RjMDEzLXNldHRpbmdzLnZ0dCIga2luZD0iY2FwdGlvbnMiIG9u
bG9hZD0idHJhY2tMb2FkZWQoKSI+CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXRjMDEyLW91
dC1vZi1vcmRlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2std2VidnR0LXRjMDEyLW91dC1vZi1vcmRlci1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDEwMDc4MykKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC10YzAx
Mi1vdXQtb2Ytb3JkZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzAsMCBA
QAotVGVzdHMgdGhhdCBjdWVzIHRoYXQgYXJlIHRlbXBvcmFsbHkgb3V0IG9mIG9yZGVyIGFyZSBp
Z25vcmVkLgotCi0KLSoqKiBUZXN0aW5nIHRleHQgdHJhY2sgMAotRVhQRUNURUQgKGN1ZXMubGVu
Z3RoID09ICcyJykgT0sKLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RyYWNrLXdlYnZ0dC10YzAxMi1vdXQtb2Ytb3JkZXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtdGMwMTItb3V0LW9mLW9yZGVyLmh0
bWwJKHJldmlzaW9uIDEwMDc4MykKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdl
YnZ0dC10YzAxMi1vdXQtb2Ytb3JkZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCIgLz4KLQotICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0Pgot
ICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotICAgICAgICA8
c2NyaXB0PiAgICAgICAgICAgIAotIAotICAgICAgICAgICAgZnVuY3Rpb24gdHJhY2tMb2FkZWQo
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLSAg
ICAgICAgICAgICAgICB2YXIgZXhwZWN0ZWQgPSAKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCA6IDIsCi0gICAgICAgICAgICAgICAgICAgIHRlc3RzOgotICAg
ICAgICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAg
IHRlc3RDdWVzKDAsIGV4cGVjdGVkKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgPC9o
ZWFkPgotICAgIDxib2R5PgotICAgIDxwPlRlc3RzIHRoYXQgY3VlcyB0aGF0IGFyZSB0ZW1wb3Jh
bGx5IG91dCBvZiBvcmRlciBhcmUgaWdub3JlZC48L3A+Ci0gICAgICAgIDx2aWRlbz4KLSAgICAg
ICAgICAgIDx0cmFjayBzcmM9ImNhcHRpb25zLXdlYnZ0dC90YzAxMi1vdXQtb2Ytb3JkZXIudnR0
IiBvbmxvYWQ9InRyYWNrTG9hZGVkKCkiPgotICAgICAgICA8L3ZpZGVvPgotICAgIDwvYm9keT4K
LTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="114868"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>