<?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>88326</bug_id>
          
          <creation_ts>2012-06-05 05:53:37 -0700</creation_ts>
          <short_desc>[BlackBerry] [DRT] DRT should be able to run interactively and support multiple processes</short_desc>
          <delta_ts>2012-07-02 20:24:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Xiaobo Wang">xiaobwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mifenton</cc>
    
    <cc>mxie</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>641462</commentid>
    <comment_count>0</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-06-05 05:53:37 -0700</bug_when>
    <thetext>The current DumpRenderTree is designed to run in batch, and only one process can be run. So we can&apos;t take advantage of multiple process feature of NRWT. Need to update DumpRenderTree to have it accept input from NRWT, run it immediately and provide text/image/audio output to NRWT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642387</commentid>
    <comment_count>1</comment_count>
      <attachid>145995</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-06-06 05:20:37 -0700</bug_when>
    <thetext>Created attachment 145995
Git patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648050</commentid>
    <comment_count>2</comment_count>
    <who name="Ming Xie">mxie</who>
    <bug_when>2012-06-13 08:25:46 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=145995&amp;action=review

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:170
&gt; +    m_doneFile = sdcardPath + &quot;/done&quot; + workerNumber;

Wouldn&apos;t use pid be better? We don&apos;t need to check this env var if we use getpid()

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:242
&gt; +//        doneDrt();

code clean up?

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:328
&gt; +void DumpRenderTree::ensurePPS()

Can we make this as a bool function, so we can handle differently if PPS isn&apos;t ready?

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:336
&gt; +        currentPath += (&quot;/&quot; + nodes[i]);

Sorry, I&apos;m a bit confused. what&apos;s the difference between the ppsPathString and currentPath here?

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:376
&gt; +                m_refTests.append(testFile);

isn&apos;t refTests being removed from here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648318</commentid>
    <comment_count>3</comment_count>
      <attachid>145995</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-06-13 11:55:53 -0700</bug_when>
    <thetext>Comment on attachment 145995
Git patch

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

Looks good, can maybe be cleaned up some more, also judging from Ming&apos;s comment.

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:344
&gt; +                S_IROTH | S_IWOTH);

I think alignment could be a bit better here, more can be put onto one line.

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:354
&gt; +    const int lenTestFile = 11;

Better to not hardcode this I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649974</commentid>
    <comment_count>4</comment_count>
      <attachid>147760</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-06-15 00:39:38 -0700</bug_when>
    <thetext>Created attachment 147760
git patch updated for comments from Ming and Rob

1. Rename m_refTests to m_bufferedTests to have it more meaningful.
2. Clean up unused code.
3. Update function ensurePPS to return bool, and check it in runTests.
4. Replace hard coded string length with calculated value.
5. Code format improvement.

Why can&apos;t I set review/commit-queue flags to &apos;?&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649994</commentid>
    <comment_count>5</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-06-15 01:01:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145995&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:170
&gt; &gt; +    m_doneFile = sdcardPath + &quot;/done&quot; + workerNumber;
&gt; 
&gt; Wouldn&apos;t use pid be better? We don&apos;t need to check this env var if we use getpid()
&gt;
Yes we can use pid technically. But I think work number is a better choice.
1. To be consistent with NRWT. NRWT doesn&apos;t know the pid of the remote process on the device, it only knows the worker number. Worker number is a logical concept, stands for a worker. Pid of the launcher is more like its implementation, the value is meaningless to NRWT. 
2. To be meaningful to testers, making it easier to debug.
 
&gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:242
&gt; &gt; +//        doneDrt();
&gt; 
&gt; code clean up?
&gt;
Updated.

&gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:328
&gt; &gt; +void DumpRenderTree::ensurePPS()
&gt; 
&gt; Can we make this as a bool function, so we can handle differently if PPS isn&apos;t ready?
&gt;
Updated.

&gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:336
&gt; &gt; +        currentPath += (&quot;/&quot; + nodes[i]);
&gt; 
&gt; Sorry, I&apos;m a bit confused. what&apos;s the difference between the ppsPathString and currentPath here?
&gt; 
Here I&apos;m trying to mkdir recursively from root to the final path. It&apos;s just like &quot;mkdir -p &lt;path&gt;&quot;.

&gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:376
&gt; &gt; +                m_refTests.append(testFile);
&gt; 
&gt; isn&apos;t refTests being removed from here?
Yes, good catch. I was too lazy to rename it to a more meaningful one. Changed to m_bufferedTests. This vector is used to accept input from PPS while a test is being run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649998</commentid>
    <comment_count>6</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-06-15 01:03:16 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 145995 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145995&amp;action=review
&gt; 
&gt; Looks good, can maybe be cleaned up some more, also judging from Ming&apos;s comment.
&gt; 
&gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:344
&gt; &gt; +                S_IROTH | S_IWOTH);
&gt; 
&gt; I think alignment could be a bit better here, more can be put onto one line.
&gt; 
&gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:354
&gt; &gt; +    const int lenTestFile = 11;
&gt; 
&gt; Better to not hardcode this I think.

Good suggestions, updated in the new patch. Thanks Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659247</commentid>
    <comment_count>7</comment_count>
      <attachid>149880</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-06-27 23:23:54 -0700</bug_when>
    <thetext>Created attachment 149880
updated

Moving PPS code to platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659279</commentid>
    <comment_count>8</comment_count>
    <who name="Ming Xie">mxie</who>
    <bug_when>2012-06-28 00:05:10 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=149880) [details]
&gt; updated
&gt; 
&gt; Moving PPS code to platform

This patch looks good to me. Maybe rename ensurePPS to isPpsReady() to make is more clear?

Rob, do you have other suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659360</commentid>
    <comment_count>9</comment_count>
      <attachid>149908</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-06-28 02:44:19 -0700</bug_when>
    <thetext>Created attachment 149908
updated

Changing &quot;#EOF&quot; to &quot;#DONE&quot; for end of test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660050</commentid>
    <comment_count>10</comment_count>
      <attachid>149908</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-06-28 18:50:30 -0700</bug_when>
    <thetext>Comment on attachment 149908
updated

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

Looks good, still some questions...

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:203
&gt; +    unlink(getDrtPpsPath().c_str());

We used PPS instead of Pps everywhere I think.

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:323
&gt; +    if (!ensurePPS())

Do we log it if this happens?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660113</commentid>
    <comment_count>11</comment_count>
      <attachid>150079</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-06-28 21:06:37 -0700</bug_when>
    <thetext>Created attachment 150079
updated

1. Rename getDrtPpsPath() to getPPSPath().
2. Add error logging and test done notification if ensurePPS() failed. There&apos;s no error logging in other places in DumpRenderTree.cpp, so I just write the log to stderr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660369</commentid>
    <comment_count>12</comment_count>
      <attachid>150139</attachid>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-06-29 04:51:03 -0700</bug_when>
    <thetext>Created attachment 150139
updated

Last patch is doesn&apos;t contains the update described!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660370</commentid>
    <comment_count>13</comment_count>
      <attachid>150139</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-06-29 04:54:18 -0700</bug_when>
    <thetext>Comment on attachment 150139
updated

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

Looks good.

&gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:324
&gt; +        fprintf(stderr, &quot;Failed to open PPS file &apos;%s&apos;, error=%d\n&quot;, getPPSPath().c_str(), errno);

Is this our best log method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661234</commentid>
    <comment_count>14</comment_count>
    <who name="Xiaobo Wang">xiaobwang</who>
    <bug_when>2012-07-01 19:23:36 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 150139 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150139&amp;action=review
&gt; 
&gt; Looks good.
&gt; 
&gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:324
&gt; &gt; +        fprintf(stderr, &quot;Failed to open PPS file &apos;%s&apos;, error=%d\n&quot;, getPPSPath().c_str(), errno);
&gt; 
&gt; Is this our best log method?

I think so Rob. There&apos;s no app level log for torch-launcher. In main.cpp for torch-launcher, we also log errors in this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661401</commentid>
    <comment_count>15</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-02 05:06:32 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 150139 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150139&amp;action=review
&gt; &gt; 
&gt; &gt; Looks good.
&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp:324
&gt; &gt; &gt; +        fprintf(stderr, &quot;Failed to open PPS file &apos;%s&apos;, error=%d\n&quot;, getPPSPath().c_str(), errno);
&gt; &gt; 
&gt; &gt; Is this our best log method?
&gt; 
&gt; I think so Rob. There&apos;s no app level log for torch-launcher. In main.cpp for torch-launcher, we also log errors in this way.

Ok, then this patch can go in :) I think Charles, George or Leo can cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661903</commentid>
    <comment_count>16</comment_count>
      <attachid>150139</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-02 20:23:59 -0700</bug_when>
    <thetext>Comment on attachment 150139
updated

Clearing flags on attachment: 150139

Committed r121723: &lt;http://trac.webkit.org/changeset/121723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661904</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-02 20:24:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145995</attachid>
            <date>2012-06-06 05:20:37 -0700</date>
            <delta_ts>2012-06-27 23:23:54 -0700</delta_ts>
            <desc>Git patch</desc>
            <filename>0001-BlackBerry-Update-DumpRenderTree-to-have-it-work-int.patch</filename>
            <type>text/plain</type>
            <size>14127</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSBkYzI0MDc5MjE5ZjQ0NmU2YjVjMzI0ZWY0YWQ3ZDQyZGEwOWZiMmE5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogV2VkLCA2IEp1biAyMDEyIDIwOjEzOjQ2ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
W0JsYWNrQmVycnldIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZSB0byBoYXZlIGl0IHdvcmsKIGludGVy
YWN0aXZlbHkgaW4gcGFyYWxsZWwKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODMyNgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoxLiBUZXN0IG5hbWUgaXMg
c2VudCB0byB0b3JjaC1sYXVuY2hlciB2aWEgUFBTIG1lc3NhZ2UoZnJvbSBob3N0IG1hY2hpbmUp
LgogICBTbyB3ZSBnZXQgdGVzdCBsaXN0IGJ5IG1vbml0b3JpbmcgYW5kIHJlY2VpdmluZyBQUFMg
bWVzc2FnZSBpbnN0ZWFkIG9mCiAgIHJlYWRpbmcgZmlsZSBpbmRleC5kcnQuCjIuIFRvcmNoLWxh
dW5jaGVyIGNyZWF0ZSBhIDx0ZXN0IGZpbGU+LmRvbmUgZmlsZSB3aGVuIGl0IGZpbmlzaGVkIGEg
dGVzdC4KMy4gV2UgZG9uJ3QgbmVlZCB0byBzZWFyY2ggZm9yIFJlZi10ZXN0cyBpbiBEdW1wUmVu
ZGVyVHJlZS5jcHAgYW55IG1vcmUuIE5SV1QKICAgd2lsbCBnZXQgdGhlbSBmb3IgdXMuCgoqIER1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwOgooQmxhY2tCZXJyeTo6
V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUpOgooQmxhY2tCZXJyeTo6V2Vi
S2l0OjpEdW1wUmVuZGVyVHJlZTo6ZG9uZURydCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBS
ZW5kZXJUcmVlOjpydW5SZW1haW5pbmdUZXN0cyk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBS
ZW5kZXJUcmVlOjplbnN1cmVQUFMpOgooV2ViS2l0KToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVt
cFJlbmRlclRyZWU6OmhhbmRsZVBQU0RhdGEpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVu
ZGVyVHJlZTo6d2FpdEZvclRlc3QpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJl
ZTo6cnVuVGVzdHMpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6ZHVtcCk6
CiogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaDoK
KER1bXBSZW5kZXJUcmVlKToKLS0tCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMjcgKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2Jl
cnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCB8ICAxNzEgKysrKysrKysrKysrLS0tLS0tLS0KIC4uLi9i
bGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oICAgICAgICAgIHwgICAxMiArLQog
MyBmaWxlcyBjaGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgNzEgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA5YmUzZjgu
LmNhNmMyNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wNi0wNiAgWGlhb2JvIFdhbmcgIDx4YndhbmdAdG9y
Y2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBVcGRhdGUgRHVtcFJlbmRl
clRyZWUgdG8gaGF2ZSBpdCB3b3JrIGludGVyYWN0aXZlbHkgaW4gcGFyYWxsZWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MzI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gVGVzdCBuYW1lIGlzIHNl
bnQgdG8gdG9yY2gtbGF1bmNoZXIgdmlhIFBQUyBtZXNzYWdlKGZyb20gaG9zdCBtYWNoaW5lKS4K
KyAgICAgICAgICAgU28gd2UgZ2V0IHRlc3QgbGlzdCBieSBtb25pdG9yaW5nIGFuZCByZWNlaXZp
bmcgUFBTIG1lc3NhZ2UgaW5zdGVhZCBvZgorICAgICAgICAgICByZWFkaW5nIGZpbGUgaW5kZXgu
ZHJ0LgorICAgICAgICAyLiBUb3JjaC1sYXVuY2hlciBjcmVhdGUgYSA8dGVzdCBmaWxlPi5kb25l
IGZpbGUgd2hlbiBpdCBmaW5pc2hlZCBhIHRlc3QuCisgICAgICAgIDMuIFdlIGRvbid0IG5lZWQg
dG8gc2VhcmNoIGZvciBSZWYtdGVzdHMgaW4gRHVtcFJlbmRlclRyZWUuY3BwIGFueSBtb3JlLiBO
UldUCisgICAgICAgICAgIHdpbGwgZ2V0IHRoZW0gZm9yIHVzLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpkb25lRHJ0KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OnJ1blJlbWFpbmluZ1Rlc3RzKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmVuc3VyZVBQUyk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVy
VHJlZTo6aGFuZGxlUFBTRGF0YSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBS
ZW5kZXJUcmVlOjp3YWl0Rm9yVGVzdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1
bXBSZW5kZXJUcmVlOjpydW5UZXN0cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1
bXBSZW5kZXJUcmVlOjpkdW1wKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5
L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWUpOgor
CiAyMDEyLTA2LTA2ICBNaWNoYWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQG5va2lhLmNv
bT4KIAogICAgICAgICBbUXRdW1dLMl0gQWRkIHByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRo
IHRvIHRoZSB2aWV3cG9ydCBpbmZvIGluIE1pbmlCcm93c2VyLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBhMTk3NDJjLi4w
YjVjNTNmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBS
ZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBS
ZW5kZXJUcmVlLmNwcApAQCAtNjEsOCArNjEsMTIgQEAKICNpbmNsdWRlICJXZWJQYWdlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlSXRlbS5oIgor
I2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUV4ZWN1dGFibGVNZXNzYWdlLmg+CisjaW5jbHVk
ZSA8QmxhY2tCZXJyeVBsYXRmb3JtTWVzc2FnZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYlNldHRp
bmdzLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg
PHN5cy9pb21zZy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbkNvcHlpbmdTb3J0Lmg+CkBAIC04Miw4ICs4NiwxMCBAQCBzdGF0
aWMgY29uc3QgY2hhciogY29uc3Qga1NEQ0xheW91dFRlc3RzVVJJID0gImZpbGU6Ly8vZGV2ZWxv
cGVyL0xheW91dFRlc3RzLyI7CiBzdGF0aWMgY29uc3QgY2hhciogaHR0cFRlc3RTeW50YXggPSAi
aHR0cC90ZXN0cy8iOwogc3RhdGljIGNvbnN0IGNoYXIqIGxvY2FsVGVzdFN5bnRheCA9ICJsb2Nh
bC8iOwogc3RhdGljIGNvbnN0IGNoYXIqIGh0dHBQcmVmaXhVUkwgPSAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwLyI7CitzdGF0aWMgY29uc3QgY2hhciogcHBzUGF0aCA9ICIvcHBzL3NlcnZpY2VzL2Ry
dC8iOwogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6
OlBsYXRmb3JtOwogCiBzdGF0aWMgU3RyaW5nIGRydEFmZmluaXR5RGVzY3JpcHRpb24oV2ViQ29y
ZTo6RUFmZmluaXR5IGFmZmluaXR5KQogewpAQCAtMTU2LDEzICsxNjIsMTMgQEAgRHVtcFJlbmRl
clRyZWU6OkR1bXBSZW5kZXJUcmVlKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSogcGFnZSkK
ICAgICAsIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjp3
YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKQogICAgICwgbV93b3JrVGltZXIodGhpcywgJkR1
bXBSZW5kZXJUcmVlOjpwcm9jZXNzV29yaykKICAgICAsIG1fYWNjZXB0c0VkaXRpbmcodHJ1ZSkK
LSAgICAsIG1fcnVubmluZ1JlZlRlc3RzKGZhbHNlKQogeworICAgIGNvbnN0IGNoYXIqIHdvcmtl
ck51bWJlciA9IGdldGVudigiV09SS0VSX05VTUJFUiIpID8gZ2V0ZW52KCJXT1JLRVJfTlVNQkVS
IikgOiAiMCI7CisgICAgbV9pbnB1dEZpbGUgPSBTdHJpbmcocHBzUGF0aCkgKyAiaW5wdXQiICsg
d29ya2VyTnVtYmVyOwogICAgIFN0cmluZyBzZGNhcmRQYXRoID0gU0RDQVJEX1BBVEg7CiAgICAg
bV9yZXN1bHRzRGlyID0gc2RjYXJkUGF0aCArICIvcmVzdWx0cy8iOwotICAgIG1faW5kZXhGaWxl
ID0gc2RjYXJkUGF0aCArICIvaW5kZXguZHJ0IjsKLSAgICBtX2RvbmVGaWxlID0gc2RjYXJkUGF0
aCArICIvZG9uZSI7Ci0gICAgbV9jdXJyZW50VGVzdEZpbGUgPSBzZGNhcmRQYXRoICsgIi9jdXJy
ZW50LmRydCI7CisgICAgbV9kb25lRmlsZSA9IHNkY2FyZFBhdGggKyAiL2RvbmUiICsgd29ya2Vy
TnVtYmVyOworICAgIG1fY3VycmVudFRlc3RGaWxlID0gc2RjYXJkUGF0aCArICIvY3VycmVudCIg
KyB3b3JrZXJOdW1iZXIgKyAiLmRydCI7CiAgICAgbV9wYWdlLT5yZXNldFZpcnR1YWxWaWV3cG9y
dE9uQ29tbWl0dGVkKGZhbHNlKTsKICAgICBtX3BhZ2UtPnNldFZpcnR1YWxWaWV3cG9ydFNpemUo
ODAwLCA2MDApOwogICAgIHNfY3VycmVudEluc3RhbmNlID0gdGhpczsKQEAgLTIwMCwzNiArMjA2
LDE1IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OmRvbmVEcnQoKQogewogICAgIGZjbG9zZShzdGRv
dXQpOwogICAgIGZjbG9zZShzdGRlcnIpOworICAgIGNsb3NlKG1fZmQpOworICAgIG1fZmQgPSAt
MTsKKyAgICB1bmxpbmsobV9pbnB1dEZpbGUudXRmOCgpLmRhdGEoKSk7CiAKICAgICAvLyBOb3Rp
ZnkgdGhlIGV4dGVybmFsIHdvcmxkIHRoYXQgd2UncmUgZG9uZS4KICAgICBjcmVhdGVGaWxlKG1f
ZG9uZUZpbGUpOwogICAgIChtX3BhZ2UtPmNsaWVudCgpKS0+bm90aWZ5UnVuTGF5b3V0VGVzdHNG
aW5pc2hlZCgpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlOjpnZXRSZWZUZXN0cyhjb25zdCBT
dHJpbmcmIHRlc3ROYW1lKQotewotICAgIGlmIChtX3J1bm5pbmdSZWZUZXN0cykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgY29uc3QgY2hhciogc3VmZml4ZXNbXSA9IHsiLWV4cGVjdGVkIiwgIi1l
eHBlY3RlZC1taXNtYXRjaCJ9OwotICAgIGNvbnN0IGludCBjb3VudG9mU3VmZml4ZXMgPSBzaXpl
b2Yoc3VmZml4ZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKLSAgICAvLyBGSVhNRTogQ3VycmVu
dGx5IHdlIG9ubHkgaGF2ZSByZWYgdGVzdHMgd2l0aCAuaHRtbCBleHRlbnNpb24sIHlvdSBtYW55
IG5lZWQgdG8gYWRkIG1vcmUKLSAgICAvLyB3aGVuIHRoZXkgaGF2ZSBtb3JlIGV4dGVuc2lvbnMo
Lmh0bSwgLnNodG1sLCAueGh0bWwsIGV0Yy4pLgotICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbnNb
XSA9IHsiLmh0bWwiLCAiLnN2ZyJ9OwotICAgIGNvbnN0IGludCBjb3VudG9mRXh0ZW5zaW9ucyA9
IHNpemVvZihleHRlbnNpb25zKSAvIHNpemVvZihjb25zdCBjaGFyKik7Ci0gICAgU3RyaW5nIGxh
eW91dERpciA9IGtTRENMYXlvdXRUZXN0c1VSSSArIDc7IC8vIDc6IHN0cmxlbigiZmlsZTovLyIp
LCBsYXlvdXREaXI6ICIvZGV2ZWxvcGVyL0xheW91dFRlc3RzLyIKLQotICAgIHNpemVfdCBpRW5k
ID0gdGVzdE5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKLQotICAgIFN0cmluZyBuYW1lV2l0aG91dEV4
dGVuc2lvbiA9IHRlc3ROYW1lLnN1YnN0cmluZygwLCBpRW5kKTsKLSAgICBmb3IgKGludCBpID0g
MDsgaSA8IGNvdW50b2ZTdWZmaXhlczsgKytpKQotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8
IGNvdW50b2ZFeHRlbnNpb25zOyArK2opIHsKLSAgICAgICAgICAgIFN0cmluZyBjYW5kaWRhdGVG
aWxlID0gbGF5b3V0RGlyICsgbmFtZVdpdGhvdXRFeHRlbnNpb24gKyBzdWZmaXhlc1tpXSArIGV4
dGVuc2lvbnNbal07Ci0gICAgICAgICAgICBpZiAoIWFjY2VzcyhjYW5kaWRhdGVGaWxlLnV0Zjgo
KS5kYXRhKCksIEZfT0spKQotICAgICAgICAgICAgICAgIG1fcmVmVGVzdHMuYXBwZW5kKG5hbWVX
aXRob3V0RXh0ZW5zaW9uICsgc3VmZml4ZXNbaV0gKyBleHRlbnNpb25zW2pdKTsKLSAgICAgICAg
fQotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlOjpydW5DdXJyZW50VGVzdCgpCiB7CiAgICAgaWYg
KGlzSFRUUFRlc3QobV9jdXJyZW50VGVzdC0+dXRmOCgpLmRhdGEoKSkpIHsKQEAgLTI0NywyMCAr
MjMyLDE4IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blJlbWFpbmluZ1Rlc3RzKCkKICAgICBm
Zmx1c2goc3RkZXJyKTsKIAogICAgIGlmIChtX2N1cnJlbnRUZXN0ID49IG1fdGVzdHMuZW5kKCkg
LSAxKSB7Ci0gICAgICAgIC8vIFJ1biByZWYtdGVzdHMgYWZ0ZXIgcmVhbCB0ZXN0cyB3ZXJlIGZp
bmlzaGVkCi0gICAgICAgIGlmICghbV9ydW5uaW5nUmVmVGVzdHMgJiYgIW1fcmVmVGVzdHMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICBtX3Rlc3RzLmNsZWFyKCk7CisgICAgICAgIG1fdGVzdHMu
Y2xlYXIoKTsKKyAgICAgICAgaWYgKG1fcmVmVGVzdHMuc2l6ZSgpID4gMCkgewogICAgICAgICAg
ICAgbV90ZXN0cy5hcHBlbmQobV9yZWZUZXN0cyk7CiAgICAgICAgICAgICBtX3JlZlRlc3RzLmNs
ZWFyKCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRUZXN0ID0gbV90ZXN0cy5iZWdpbigpOwotICAg
ICAgICAgICAgbV9ydW5uaW5nUmVmVGVzdHMgPSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgZG9uZURydCgpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcnVu
Q3VycmVudFRlc3QoKTsKICAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBtX2N1cnJlbnRU
ZXN0Kys7CisvLyAgICAgICAgZG9uZURydCgpOworICAgICAgICByZXR1cm47CisgICAgfQogCisg
ICAgbV9jdXJyZW50VGVzdCsrOwogICAgIHJ1bkN1cnJlbnRUZXN0KCk7CiB9CiAKQEAgLTM0Miwy
MSArMzI1LDkzIEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGVC
ZWZvcmVUZXN0aW5nKCkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OmdhcmJhZ2VDb2xsZWN0
b3JDb2xsZWN0KCk7CiB9CiAKK3ZvaWQgRHVtcFJlbmRlclRyZWU6OmVuc3VyZVBQUygpCit7Cisg
ICAgVmVjdG9yPFN0cmluZz4gbm9kZXM7CisgICAgU3RyaW5nIHBwc1BhdGhTdHJpbmcgPSBwcHNQ
YXRoOworICAgIHBwc1BhdGhTdHJpbmcuc3BsaXQoJy8nLCBub2Rlcyk7CisgICAgaW50IGxldmVs
cyA9IG5vZGVzLnNpemUoKTsKKyAgICBTdHJpbmcgY3VycmVudFBhdGggPSAiIjsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGxldmVsczsgKytpKSB7CisgICAgICAgIGN1cnJlbnRQYXRoICs9ICgi
LyIgKyBub2Rlc1tpXSk7CisgICAgICAgIGlmIChhY2Nlc3MoY3VycmVudFBhdGgudXRmOCgpLmRh
dGEoKSwgRl9PSykpCisgICAgICAgICAgICBta2RpcihjdXJyZW50UGF0aC51dGY4KCkuZGF0YSgp
LCBTX0lSV1hVIHwgU19JUldYRyB8IFNfSVJXWE8pOworICAgIH0KKworICAgIGlmIChhY2Nlc3Mo
bV9pbnB1dEZpbGUudXRmOCgpLmRhdGEoKSwgRl9PSykpIHsKKyAgICAgICAgaW50IGZkID0gb3Bl
bihtX2lucHV0RmlsZS51dGY4KCkuZGF0YSgpLCBPX1dST05MWSB8IE9fQ1JFQVQsIFNfSVJVU1Ig
fCBTX0lXVVNSIHwKKyAgICAgICAgICAgICAgICBTX0lSR1JQIHwgU19JV0dSUCB8CisgICAgICAg
ICAgICAgICAgU19JUk9USCB8IFNfSVdPVEgpOworICAgICAgICBpZiAoZmQgPj0gMCkKKyAgICAg
ICAgICAgIGNsb3NlKGZkKTsKKyAgICB9Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWU6OmhhbmRs
ZVBQU0RhdGEoKQoreworICAgIGNoYXIgYnVmWzEwMjRdID0gezB9OworICAgIGNvbnN0IFN0cmlu
ZyBhdHRyaWJ1dGVUZXN0RmlsZSA9ICJ0ZXN0X2ZpbGU6OiI7CisgICAgY29uc3QgaW50IGxlblRl
c3RGaWxlID0gMTE7CisgICAgaWYgKHJlYWQobV9mZCwgYnVmLCBzaXplb2YoYnVmKSkgPiAwKSB7
CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxpbmVzOworICAgICAgICBTdHJpbmcoYnVmKS5zcGxp
dCgnXG4nLCBsaW5lcyk7CisgICAgICAgIFN0cmluZyB0ZXN0RmlsZSA9ICIiOworICAgICAgICBm
b3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbGluZXMuYmVnaW4oKTsgaXRlciAh
PSBsaW5lcy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICBpZiAoaXRlci0+c3RhcnRzV2l0
aChhdHRyaWJ1dGVUZXN0RmlsZSkpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmlsZSA9IGl0ZXIt
PnN1YnN0cmluZyhsZW5UZXN0RmlsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyB0ZXN0X2ZpbGU6OiNFT0YKKyAgICAgICAg
aWYgKHRlc3RGaWxlID09ICIjRU9GIikgeworICAgICAgICAgICAgZG9uZURydCgpOworICAgICAg
ICB9IGVsc2UgaWYgKCF0ZXN0RmlsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmIChtX3Rl
c3RzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIC8vIE9ubHkgZm9yIHRoZSBmaXJzdCB0
aW1lLCBpbml0aWFsaXplIGl0ZXJhdG9yIGFuZCBzdGFydCB0ZXN0IHJ1bgorICAgICAgICAgICAg
ICAgIG1fdGVzdHMuYXBwZW5kKHRlc3RGaWxlKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRU
ZXN0ID0gbV90ZXN0cy5iZWdpbigpOworICAgICAgICAgICAgICAgIHJ1bkN1cnJlbnRUZXN0KCk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX3JlZlRlc3RzLmFwcGVuZCh0
ZXN0RmlsZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWU6Ondh
aXRGb3JUZXN0KCkKK3sKKyAgICBpZiAobV9mZCA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAg
ICBNZXNzYWdlKiBtc2cgPSBjcmVhdGVNZXRob2RDYWxsTWVzc2FnZSgmRHVtcFJlbmRlclRyZWU6
OndhaXRGb3JUZXN0LCB0aGlzKTsKKworICAgIE1lc3NhZ2VDbGllbnQqIG1jID0gd2ViS2l0VGhy
ZWFkTWVzc2FnZUNsaWVudCgpOworICAgIC8vIFNldHVwIHRoZSBwdWxzZSBldmVudC4KKyAgICBz
dHJ1Y3Qgc2lnZXZlbnQgZXZlbnQ7CisgICAgZXZlbnQuc2lnZXZfbm90aWZ5ID0gU0lHRVZfUFVM
U0U7CisgICAgZXZlbnQuc2lnZXZfY29pZCA9IG1jLT5jb25uZWN0aW9uSWQoKTsKKyAgICBldmVu
dC5zaWdldl9wcmlvcml0eSA9IG1jLT50aHJlYWRQcmlvcml0eSgpOworICAgIGV2ZW50LnNpZ2V2
X2NvZGUgPSBtYy0+cHVsc2VDb2RlKCk7CisgICAgZXZlbnQuc2lnZXZfdmFsdWUuc2l2YWxfcHRy
ID0gKHZvaWQqKW1zZzsKKworICAgIHdoaWxlIChpb25vdGlmeShtX2ZkLCBfTk9USUZZX0FDVElP
Tl9QT0xMQVJNLCBfTk9USUZZX0NPTkRfSU5QVVQsICZldmVudCkgJiBfTk9USUZZX0NPTkRfSU5Q
VVQpCisgICAgICAgIGhhbmRsZVBQU0RhdGEoKTsKK30KKwogdm9pZCBEdW1wUmVuZGVyVHJlZTo6
cnVuVGVzdHMoKQogewogICAgIG1fZ2NDb250cm9sbGVyID0gbmV3IEdDQ29udHJvbGxlcigpOwog
ICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIoKTsKLSAgICBnZXRUZXN0c1RvUnVuKCk7CisgICAgZW5zdXJlUFBTKCk7CiAKICAgICBtYWlu
RnJhbWUgPSBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OmNvcmVQYWdlKG1fcGFnZSktPm1haW5GcmFt
ZSgpOwogCi0gICAgbV9jdXJyZW50VGVzdCA9IG1fdGVzdHMuYmVnaW4oKTsKKyAgICAvLyBkZWx0
YSBtb2RlIHN1YnNjcmlwdGlvbgorICAgIG1fZmQgPSBvcGVuKG1faW5wdXRGaWxlLnV0ZjgoKS5k
YXRhKCksIE9fUkRPTkxZIHwgT19OT05CTE9DSyB8IE9fQVNZTkMpOwogCi0gICAgaWYgKG1fY3Vy
cmVudFRlc3QgPT0gbV90ZXN0cy5lbmQoKSkgewotICAgICAgICBkb25lRHJ0KCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgcnVuQ3VycmVudFRlc3QoKTsKKyAgICAvLyBHZXQgVGVzdCBm
aWxlIG5hbWUgZnJvbSBQUFM6IC9wcHMvc2VydmljZXMvZHJ0L2lucHV0CisgICAgLy8gRXhhbXBs
ZTogdGVzdF9maWxlOjpmYXN0L2pzL2FyZ3VtZW50cy5odG1sCisgICAgd2FpdEZvclRlc3QoKTsK
IH0KIAogCkBAIC0zOTUsMjggKzQ1MCw2IEBAIGJvb2wgRHVtcFJlbmRlclRyZWU6OmlzSFRUUFRl
c3QoY29uc3QgU3RyaW5nJiB0ZXN0KQogICAgICAgICAgICAgJiYgdGVzdExvd2VyLnN1YnN0cmlu
ZyhsZW5IdHRwVGVzdFN5bnRheCwgc3RybGVuKGxvY2FsVGVzdFN5bnRheCkpICE9IGxvY2FsVGVz
dFN5bnRheDsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZTo6Z2V0VGVzdHNUb1J1bigpCi17Ci0g
ICAgVmVjdG9yPFN0cmluZz4gZmlsZXM7Ci0KLSAgICBGSUxFKiBmZCA9IGZvcGVuKG1faW5kZXhG
aWxlLnV0ZjgoKS5kYXRhKCksICJyIik7Ci0gICAgZnNlZWsoZmQsIDAsIFNFRUtfRU5EKTsKLSAg
ICBpbnQgc2l6ZSA9IGZ0ZWxsKGZkKTsKLSAgICBmc2VlayhmZCwgMCwgU0VFS19TRVQpOwotICAg
IE93bkFycmF5UHRyPGNoYXI+IGJ1ZiA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbc2l6ZV0pOwot
ICAgIGZyZWFkKGJ1Zi5nZXQoKSwgMSwgc2l6ZSwgZmQpOwotICAgIGZjbG9zZShmZCk7Ci0gICAg
U3RyaW5nIHMoYnVmLmdldCgpLCBzaXplKTsKLSAgICBzLnNwbGl0KCJcbiIsIGZpbGVzKTsKLQot
ICAgIG1fdGVzdHMgPSBmaWxlczsKLQotICAgIC8vIEZpbmQgcmVmLXRlc3RzIGZvciBlYWNoIG9m
IHRoZSByZWFsIHRlc3RzLCBvbmUgdGVzdCBtYXkgaGF2ZSBtdWx0aXBsZSBleHBlY3RlZCByZWYt
dGVzdHMKLSAgICAvLyBhbmQgbXVsdGlwbGUgbWlzbWF0Y2ggcmVmLXRlc3RzLgotICAgIGZvciAo
VmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBmaWxlcy5iZWdpbigpOyBmaWxlcy5lbmQo
KSAhPSBpdGVyOyArK2l0ZXIpCi0gICAgICAgIGdldFJlZlRlc3RzKCppdGVyKTsKLX0KLQogdm9p
ZCBEdW1wUmVuZGVyVHJlZTo6aW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9n
KCkKIHsKICAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLnN0b3AoKTsKQEAgLTUxMSw2ICs1
NDQsOSBAQCBzdGF0aWMgU3RyaW5nIGR1bXBCYWNrRm9yd2FyZExpc3RGb3JXZWJWaWV3KCkKIAog
dm9pZCBEdW1wUmVuZGVyVHJlZTo6ZHVtcCgpCiB7CisgICAgaWYgKHRlc3REb25lKQorICAgICAg
ICByZXR1cm47CisKICAgICBpbnZhbGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1wV2F0Y2hkb2co
KTsKIAogICAgIFN0cmluZyBkdW1wRmlsZSA9IG1fcmVzdWx0c0RpciArICptX2N1cnJlbnRUZXN0
ICsgIi5kdW1wIjsKQEAgLTUzMyw2ICs1NjksOSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkdW1w
KCkKICAgICBTdHJpbmcgY3Jhc2hGaWxlID0gZHVtcEZpbGUgKyAiLmNyYXNoIjsKICAgICB1bmxp
bmsoY3Jhc2hGaWxlLnV0ZjgoKS5kYXRhKCkpOwogCisgICAgU3RyaW5nIGRvbmVGaWxlID0gIG1f
cmVzdWx0c0RpciArICptX2N1cnJlbnRUZXN0ICsgIi5kb25lIjsKKyAgICBjcmVhdGVGaWxlKGRv
bmVGaWxlKTsKKwogICAgIHRlc3REb25lID0gdHJ1ZTsKICAgICBydW5SZW1haW5pbmdUZXN0cygp
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVu
ZGVyVHJlZUJsYWNrQmVycnkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVt
cFJlbmRlclRyZWVCbGFja0JlcnJ5LmgKaW5kZXggYzZlYmE5ZC4uMTM0OWMzMSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVy
cnkuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVl
QmxhY2tCZXJyeS5oCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJCbGFja0JlcnJ5R2xv
YmFsLmgiCiAKKyNpbmNsdWRlICJCbGFja0JlcnJ5UGxhdGZvcm1HdWFyZGVkUG9pbnRlci5oIgog
I2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UgQmxh
Y2tCZXJyeSB7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIER1
bXBSZW5kZXJUcmVlIDogcHVibGljIEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWVD
bGllbnQgeworY2xhc3MgRHVtcFJlbmRlclRyZWUgOiBwdWJsaWMgQmxhY2tCZXJyeTo6V2ViS2l0
OjpEdW1wUmVuZGVyVHJlZUNsaWVudCwgcHVibGljIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHdWFy
ZGVkUG9pbnRlckJhc2UgewogcHVibGljOgogICAgIER1bXBSZW5kZXJUcmVlKFdlYlBhZ2UqKTsK
ICAgICB2aXJ0dWFsIH5EdW1wUmVuZGVyVHJlZSgpOwpAQCAtMTA1LDEwICsxMDYsMTIgQEAgcHVi
bGljOgogICAgIGJvb2wgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6
OkNyZWRlbnRpYWwmKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZVBQUygpOworICAgIHZv
aWQgd2FpdEZvclRlc3QoKTsKKyAgICB2b2lkIGhhbmRsZVBQU0RhdGEoKTsKICAgICB2b2lkIHJ1
blRlc3QoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgcnVuVGVzdHMoKTsKICAgICB2b2lk
IHJ1bkN1cnJlbnRUZXN0KCk7Ci0gICAgdm9pZCBnZXRSZWZUZXN0cyhjb25zdCBTdHJpbmcmIHRl
c3ROYW1lKTsKIAogICAgIHZvaWQgcHJvY2Vzc1dvcmsoV2ViQ29yZTo6VGltZXI8RHVtcFJlbmRl
clRyZWU+Kik7CiAKQEAgLTExOSw3ICsxMjIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9jYXRp
b25DaGFuZ2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogCiAgICAgdm9pZCBkb25lRHJ0KCk7
Ci0gICAgdm9pZCBnZXRUZXN0c1RvUnVuKCk7CiAgICAgYm9vbCBpc0hUVFBUZXN0KGNvbnN0IFN0
cmluZyYgdGVzdCk7CiAgICAgU3RyaW5nIHJlbmRlclRyZWVEdW1wKCkgY29uc3Q7CiAgICAgdm9p
ZCByZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwpAQCAtMTI3LDEyICsxMjks
MTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBX
YXRjaGRvZygpOwogICAgIHZvaWQgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZChXZWJDb3Jl
OjpUaW1lcjxEdW1wUmVuZGVyVHJlZT4qKTsKIAorICAgIGludCBtX2ZkOyAvLyBpbnB1dCBmaWxl
IChQUFMgb2JqZWN0KQogICAgIFZlY3RvcjxTdHJpbmc+IG1fdGVzdHM7CiAgICAgVmVjdG9yPFN0
cmluZz46Oml0ZXJhdG9yIG1fY3VycmVudFRlc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9yZWZU
ZXN0czsgLy8gUmVmZXJlbmNlIHRlc3RzIGZvciBjdXJyZW50IHRlc3QKIAorICAgIFN0cmluZyBt
X2lucHV0RmlsZTsKICAgICBTdHJpbmcgbV9yZXN1bHRzRGlyOwotICAgIFN0cmluZyBtX2luZGV4
RmlsZTsKICAgICBTdHJpbmcgbV9kb25lRmlsZTsKICAgICBTdHJpbmcgbV9jdXJyZW50SHR0cFRl
c3Q7CiAgICAgU3RyaW5nIG1fY3VycmVudFRlc3RGaWxlOwpAQCAtMTQ2LDcgKzE0OSw2IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fYWNjZXB0c0VkaXRpbmc7CiAgICAgYm9vbCBtX2xvYWRGaW5p
c2hlZDsKLSAgICBib29sIG1fcnVubmluZ1JlZlRlc3RzOwogICAgIHN0YXRpYyBib29sIHNfc2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDsKIH07CiB9Ci0tIAoxLjcuNgoK
</data>
<flag name="review"
          id="153227"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147760</attachid>
            <date>2012-06-15 00:39:38 -0700</date>
            <delta_ts>2012-06-27 23:23:54 -0700</delta_ts>
            <desc>git patch updated for comments from Ming and Rob</desc>
            <filename>0001-BlackBerry-Update-DumpRenderTree-to-have-it-work-int.patch</filename>
            <type>text/plain</type>
            <size>14504</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSBkMjk4ZDhiOTU3MDZmNzY1ZjkyZDBiMjBlZGM4MmFhNDVlNjc0MzU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogRnJpLCAxNSBKdW4gMjAxMiAxNDo1MDoyMSArMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFtCbGFja0JlcnJ5XSBVcGRhdGUgRHVtcFJlbmRlclRyZWUgdG8gaGF2ZSBpdCB3b3JrCiBpbnRl
cmFjdGl2ZWx5IGluIHBhcmFsbGVsCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODgzMjYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKMS4gVGVzdCBuYW1lIGlz
IHNlbnQgdG8gdG9yY2gtbGF1bmNoZXIgdmlhIFBQUyBtZXNzYWdlKGZyb20gaG9zdCBtYWNoaW5l
KS4KICAgU28gd2UgZ2V0IHRlc3QgbGlzdCBieSBtb25pdG9yaW5nIGFuZCByZWNlaXZpbmcgUFBT
IG1lc3NhZ2UgaW5zdGVhZCBvZgogICByZWFkaW5nIGZpbGUgaW5kZXguZHJ0LgoyLiBUb3JjaC1s
YXVuY2hlciBjcmVhdGUgYSA8dGVzdCBmaWxlPi5kb25lIGZpbGUgd2hlbiBpdCBmaW5pc2hlZCBh
IHRlc3QuCjMuIFdlIGRvbid0IG5lZWQgdG8gc2VhcmNoIGZvciBSZWYtdGVzdHMgaW4gRHVtcFJl
bmRlclRyZWUuY3BwIGFueSBtb3JlLiBOUldUCiAgIHdpbGwgZ2V0IHRoZW0gZm9yIHVzLgoKKiBE
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKEJsYWNrQmVycnk6
OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKEJsYWNrQmVycnk6Oldl
YktpdDo6RHVtcFJlbmRlclRyZWU6OmRvbmVEcnQpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6ZW5zdXJlUFBTKToKKFdlYktpdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1
bXBSZW5kZXJUcmVlOjpoYW5kbGVQUFNEYXRhKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OndhaXRGb3JUZXN0KToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OnJ1blRlc3RzKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmR1bXAp
OgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5Lmg6
CihEdW1wUmVuZGVyVHJlZSk6Ci0tLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDI3ICsrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2ti
ZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAgfCAgMTgwICsrKysrKysrKysrKy0tLS0tLS0tCiAuLi4v
YmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaCAgICAgICAgICB8ICAgMTQgKy0K
IDMgZmlsZXMgY2hhbmdlZCwgMTQ2IGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4Y2I1MmZh
Li5mODljNjU0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDYtMTQgIFhpYW9ibyBXYW5nICA8eGJ3YW5nQHRv
cmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBbQmxhY2tCZXJyeV0gVXBkYXRlIER1bXBSZW5k
ZXJUcmVlIHRvIGhhdmUgaXQgd29yayBpbnRlcmFjdGl2ZWx5IGluIHBhcmFsbGVsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODMyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEuIFRlc3QgbmFtZSBpcyBz
ZW50IHRvIHRvcmNoLWxhdW5jaGVyIHZpYSBQUFMgbWVzc2FnZShmcm9tIGhvc3QgbWFjaGluZSku
CisgICAgICAgICAgIFNvIHdlIGdldCB0ZXN0IGxpc3QgYnkgbW9uaXRvcmluZyBhbmQgcmVjZWl2
aW5nIFBQUyBtZXNzYWdlIGluc3RlYWQgb2YKKyAgICAgICAgICAgcmVhZGluZyBmaWxlIGluZGV4
LmRydC4KKyAgICAgICAgMi4gVG9yY2gtbGF1bmNoZXIgY3JlYXRlIGEgPHRlc3QgZmlsZT4uZG9u
ZSBmaWxlIHdoZW4gaXQgZmluaXNoZWQgYSB0ZXN0LgorICAgICAgICAzLiBXZSBkb24ndCBuZWVk
IHRvIHNlYXJjaCBmb3IgUmVmLXRlc3RzIGluIER1bXBSZW5kZXJUcmVlLmNwcCBhbnkgbW9yZS4g
TlJXVAorICAgICAgICAgICB3aWxsIGdldCB0aGVtIGZvciB1cy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6ZG9uZURydCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpydW5SZW1haW5pbmdUZXN0cyk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjplbnN1cmVQUFMpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRl
clRyZWU6OmhhbmRsZVBQU0RhdGEpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6d2FpdEZvclRlc3QpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpE
dW1wUmVuZGVyVHJlZTo6cnVuVGVzdHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpE
dW1wUmVuZGVyVHJlZTo6ZHVtcCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlKToK
KwogMjAxMi0wNi0xNCAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bS1BbmRyb2lkXSBJbml0aWFsaXplIGZvbnQgcmVuZGVyaW5nIGlu
IER1bXBSZW5kZXJUcmVlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2Jl
cnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkv
RHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGExOTc0MmMuLmU2ZjRmM2EgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwCkBAIC02MSw4
ICs2MSwxMiBAQAogI2luY2x1ZGUgIldlYlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKICNpbmNsdWRlICJXb3JrUXVldWVJdGVtLmgiCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBs
YXRmb3JtRXhlY3V0YWJsZU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1N
ZXNzYWdlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxmY250
bC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL2lvbXNnLmg+CiAjaW5jbHVk
ZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvTm9uQ29w
eWluZ1NvcnQuaD4KQEAgLTgyLDggKzg2LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBr
U0RDTGF5b3V0VGVzdHNVUkkgPSAiZmlsZTovLy9kZXZlbG9wZXIvTGF5b3V0VGVzdHMvIjsKIHN0
YXRpYyBjb25zdCBjaGFyKiBodHRwVGVzdFN5bnRheCA9ICJodHRwL3Rlc3RzLyI7CiBzdGF0aWMg
Y29uc3QgY2hhciogbG9jYWxUZXN0U3ludGF4ID0gImxvY2FsLyI7CiBzdGF0aWMgY29uc3QgY2hh
ciogaHR0cFByZWZpeFVSTCA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvIjsKK3N0YXRpYyBjb25z
dCBjaGFyKiBwcHNQYXRoID0gIi9wcHMvc2VydmljZXMvZHJ0LyI7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7Cit1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm07CiAKIHN0YXRpYyBT
dHJpbmcgZHJ0QWZmaW5pdHlEZXNjcmlwdGlvbihXZWJDb3JlOjpFQWZmaW5pdHkgYWZmaW5pdHkp
CiB7CkBAIC0xNDksMjAgKzE1NSwyMSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpCiB9CiAKIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZShCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqIHBhZ2UpCi0gICAgOiBtX2djQ29udHJvbGxlcigwKQor
ICAgIDogbV9mZCgtMSkKKyAgICAsIG1fZ2NDb250cm9sbGVyKDApCiAgICAgLCBtX2FjY2Vzc2li
aWxpdHlDb250cm9sbGVyKDApCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1fZHVtcFBpeGVs
cyhmYWxzZSkKICAgICAsIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIodGhpcywgJkR1bXBSZW5k
ZXJUcmVlOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKQogICAgICwgbV93b3JrVGltZXIo
dGhpcywgJkR1bXBSZW5kZXJUcmVlOjpwcm9jZXNzV29yaykKICAgICAsIG1fYWNjZXB0c0VkaXRp
bmcodHJ1ZSkKLSAgICAsIG1fcnVubmluZ1JlZlRlc3RzKGZhbHNlKQogeworICAgIGNvbnN0IGNo
YXIqIHdvcmtlck51bWJlciA9IGdldGVudigiV09SS0VSX05VTUJFUiIpID8gZ2V0ZW52KCJXT1JL
RVJfTlVNQkVSIikgOiAiMCI7CisgICAgbV9pbnB1dEZpbGUgPSBTdHJpbmcocHBzUGF0aCkgKyAi
aW5wdXQiICsgd29ya2VyTnVtYmVyOwogICAgIFN0cmluZyBzZGNhcmRQYXRoID0gU0RDQVJEX1BB
VEg7CiAgICAgbV9yZXN1bHRzRGlyID0gc2RjYXJkUGF0aCArICIvcmVzdWx0cy8iOwotICAgIG1f
aW5kZXhGaWxlID0gc2RjYXJkUGF0aCArICIvaW5kZXguZHJ0IjsKLSAgICBtX2RvbmVGaWxlID0g
c2RjYXJkUGF0aCArICIvZG9uZSI7Ci0gICAgbV9jdXJyZW50VGVzdEZpbGUgPSBzZGNhcmRQYXRo
ICsgIi9jdXJyZW50LmRydCI7CisgICAgbV9kb25lRmlsZSA9IHNkY2FyZFBhdGggKyAiL2RvbmUi
ICsgd29ya2VyTnVtYmVyOworICAgIG1fY3VycmVudFRlc3RGaWxlID0gc2RjYXJkUGF0aCArICIv
Y3VycmVudCIgKyB3b3JrZXJOdW1iZXIgKyAiLmRydCI7CiAgICAgbV9wYWdlLT5yZXNldFZpcnR1
YWxWaWV3cG9ydE9uQ29tbWl0dGVkKGZhbHNlKTsKICAgICBtX3BhZ2UtPnNldFZpcnR1YWxWaWV3
cG9ydFNpemUoODAwLCA2MDApOwogICAgIHNfY3VycmVudEluc3RhbmNlID0gdGhpczsKQEAgLTIw
MCwzNiArMjA3LDE1IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OmRvbmVEcnQoKQogewogICAgIGZj
bG9zZShzdGRvdXQpOwogICAgIGZjbG9zZShzdGRlcnIpOworICAgIGNsb3NlKG1fZmQpOworICAg
IG1fZmQgPSAtMTsKKyAgICB1bmxpbmsobV9pbnB1dEZpbGUudXRmOCgpLmRhdGEoKSk7CiAKICAg
ICAvLyBOb3RpZnkgdGhlIGV4dGVybmFsIHdvcmxkIHRoYXQgd2UncmUgZG9uZS4KICAgICBjcmVh
dGVGaWxlKG1fZG9uZUZpbGUpOwogICAgIChtX3BhZ2UtPmNsaWVudCgpKS0+bm90aWZ5UnVuTGF5
b3V0VGVzdHNGaW5pc2hlZCgpOwogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlOjpnZXRSZWZUZXN0
cyhjb25zdCBTdHJpbmcmIHRlc3ROYW1lKQotewotICAgIGlmIChtX3J1bm5pbmdSZWZUZXN0cykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3QgY2hhciogc3VmZml4ZXNbXSA9IHsiLWV4cGVj
dGVkIiwgIi1leHBlY3RlZC1taXNtYXRjaCJ9OwotICAgIGNvbnN0IGludCBjb3VudG9mU3VmZml4
ZXMgPSBzaXplb2Yoc3VmZml4ZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKLSAgICAvLyBGSVhN
RTogQ3VycmVudGx5IHdlIG9ubHkgaGF2ZSByZWYgdGVzdHMgd2l0aCAuaHRtbCBleHRlbnNpb24s
IHlvdSBtYW55IG5lZWQgdG8gYWRkIG1vcmUKLSAgICAvLyB3aGVuIHRoZXkgaGF2ZSBtb3JlIGV4
dGVuc2lvbnMoLmh0bSwgLnNodG1sLCAueGh0bWwsIGV0Yy4pLgotICAgIGNvbnN0IGNoYXIqIGV4
dGVuc2lvbnNbXSA9IHsiLmh0bWwiLCAiLnN2ZyJ9OwotICAgIGNvbnN0IGludCBjb3VudG9mRXh0
ZW5zaW9ucyA9IHNpemVvZihleHRlbnNpb25zKSAvIHNpemVvZihjb25zdCBjaGFyKik7Ci0gICAg
U3RyaW5nIGxheW91dERpciA9IGtTRENMYXlvdXRUZXN0c1VSSSArIDc7IC8vIDc6IHN0cmxlbigi
ZmlsZTovLyIpLCBsYXlvdXREaXI6ICIvZGV2ZWxvcGVyL0xheW91dFRlc3RzLyIKLQotICAgIHNp
emVfdCBpRW5kID0gdGVzdE5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKLQotICAgIFN0cmluZyBuYW1l
V2l0aG91dEV4dGVuc2lvbiA9IHRlc3ROYW1lLnN1YnN0cmluZygwLCBpRW5kKTsKLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGNvdW50b2ZTdWZmaXhlczsgKytpKQotICAgICAgICBmb3IgKGludCBq
ID0gMDsgaiA8IGNvdW50b2ZFeHRlbnNpb25zOyArK2opIHsKLSAgICAgICAgICAgIFN0cmluZyBj
YW5kaWRhdGVGaWxlID0gbGF5b3V0RGlyICsgbmFtZVdpdGhvdXRFeHRlbnNpb24gKyBzdWZmaXhl
c1tpXSArIGV4dGVuc2lvbnNbal07Ci0gICAgICAgICAgICBpZiAoIWFjY2VzcyhjYW5kaWRhdGVG
aWxlLnV0ZjgoKS5kYXRhKCksIEZfT0spKQotICAgICAgICAgICAgICAgIG1fcmVmVGVzdHMuYXBw
ZW5kKG5hbWVXaXRob3V0RXh0ZW5zaW9uICsgc3VmZml4ZXNbaV0gKyBleHRlbnNpb25zW2pdKTsK
LSAgICAgICAgfQotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlOjpydW5DdXJyZW50VGVzdCgpCiB7
CiAgICAgaWYgKGlzSFRUUFRlc3QobV9jdXJyZW50VGVzdC0+dXRmOCgpLmRhdGEoKSkpIHsKQEAg
LTI0NywyMCArMjMzLDE3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blJlbWFpbmluZ1Rlc3Rz
KCkKICAgICBmZmx1c2goc3RkZXJyKTsKIAogICAgIGlmIChtX2N1cnJlbnRUZXN0ID49IG1fdGVz
dHMuZW5kKCkgLSAxKSB7Ci0gICAgICAgIC8vIFJ1biByZWYtdGVzdHMgYWZ0ZXIgcmVhbCB0ZXN0
cyB3ZXJlIGZpbmlzaGVkCi0gICAgICAgIGlmICghbV9ydW5uaW5nUmVmVGVzdHMgJiYgIW1fcmVm
VGVzdHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX3Rlc3RzLmNsZWFyKCk7Ci0gICAgICAg
ICAgICBtX3Rlc3RzLmFwcGVuZChtX3JlZlRlc3RzKTsKLSAgICAgICAgICAgIG1fcmVmVGVzdHMu
Y2xlYXIoKTsKKyAgICAgICAgbV90ZXN0cy5jbGVhcigpOworICAgICAgICBpZiAobV9idWZmZXJl
ZFRlc3RzLnNpemUoKSA+IDApIHsKKyAgICAgICAgICAgIG1fdGVzdHMuYXBwZW5kKG1fYnVmZmVy
ZWRUZXN0cyk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkVGVzdHMuY2xlYXIoKTsKICAgICAgICAg
ICAgIG1fY3VycmVudFRlc3QgPSBtX3Rlc3RzLmJlZ2luKCk7Ci0gICAgICAgICAgICBtX3J1bm5p
bmdSZWZUZXN0cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkb25lRHJ0
KCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBydW5DdXJyZW50VGVzdCgpOwog
ICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY3VycmVudFRlc3QrKzsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAorICAgIG1fY3VycmVudFRlc3QrKzsKICAgICBydW5DdXJyZW50VGVz
dCgpOwogfQogCkBAIC0zNDIsMjEgKzMyNSw5NiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpyZXNl
dFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBw
b3J0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdCgpOwogfQogCitib29sIER1bXBSZW5kZXJUcmVl
OjplbnN1cmVQUFMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IG5vZGVzOworICAgIFN0cmluZyBw
cHNQYXRoU3RyaW5nID0gcHBzUGF0aDsKKyAgICBwcHNQYXRoU3RyaW5nLnNwbGl0KCcvJywgbm9k
ZXMpOworICAgIGludCBsZXZlbHMgPSBub2Rlcy5zaXplKCk7CisgICAgU3RyaW5nIGN1cnJlbnRQ
YXRoID0gIiI7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZXZlbHM7ICsraSkgeworICAgICAg
ICBjdXJyZW50UGF0aCArPSAoIi8iICsgbm9kZXNbaV0pOworICAgICAgICBpZiAoYWNjZXNzKGN1
cnJlbnRQYXRoLnV0ZjgoKS5kYXRhKCksIEZfT0spKQorICAgICAgICAgICAgbWtkaXIoY3VycmVu
dFBhdGgudXRmOCgpLmRhdGEoKSwgU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hPKTsKKyAgICB9
CisKKyAgICBpZiAoYWNjZXNzKG1faW5wdXRGaWxlLnV0ZjgoKS5kYXRhKCksIEZfT0spKSB7Cisg
ICAgICAgIGludCBmZCA9IG9wZW4obV9pbnB1dEZpbGUudXRmOCgpLmRhdGEoKSwgT19XUk9OTFkg
fCBPX0NSRUFULAorICAgICAgICAgICAgICAgIFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JUkdSUCB8
IFNfSVdHUlAgfCBTX0lST1RIIHwgU19JV09USCk7CisgICAgICAgIGlmIChmZCA+PSAwKQorICAg
ICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlOjpo
YW5kbGVQUFNEYXRhKCkKK3sKKyAgICBjaGFyIGJ1ZlsxMDI0XSA9IHswfTsKKyAgICBjb25zdCBT
dHJpbmcgYXR0cmlidXRlVGVzdEZpbGUgPSAidGVzdF9maWxlOjoiOworICAgIGNvbnN0IGludCBs
ZW5UZXN0RmlsZSA9IGF0dHJpYnV0ZVRlc3RGaWxlLmxlbmd0aCgpOworICAgIGlmIChyZWFkKG1f
ZmQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpID4gMCkgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiBsaW5l
czsKKyAgICAgICAgU3RyaW5nKGJ1Zikuc3BsaXQoJ1xuJywgbGluZXMpOworICAgICAgICBTdHJp
bmcgdGVzdEZpbGUgPSAiIjsKKyAgICAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3Ig
aXRlciA9IGxpbmVzLmJlZ2luKCk7IGl0ZXIgIT0gbGluZXMuZW5kKCk7ICsraXRlcikgeworICAg
ICAgICAgICAgaWYgKGl0ZXItPnN0YXJ0c1dpdGgoYXR0cmlidXRlVGVzdEZpbGUpKSB7CisgICAg
ICAgICAgICAgICAgdGVzdEZpbGUgPSBpdGVyLT5zdWJzdHJpbmcobGVuVGVzdEZpbGUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Ly8gdGVzdF9maWxlOjojRU9GCisgICAgICAgIGlmICh0ZXN0RmlsZSA9PSAiI0VPRiIpIHsKKyAg
ICAgICAgICAgIGRvbmVEcnQoKTsKKyAgICAgICAgfSBlbHNlIGlmICghdGVzdEZpbGUuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBpZiAobV90ZXN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBPbmx5IGZvciB0aGUgZmlyc3QgdGltZSwgaW5pdGlhbGl6ZSBpdGVyYXRvciBhbmQg
c3RhcnQgdGVzdCBydW4KKyAgICAgICAgICAgICAgICBtX3Rlc3RzLmFwcGVuZCh0ZXN0RmlsZSk7
CisgICAgICAgICAgICAgICAgbV9jdXJyZW50VGVzdCA9IG1fdGVzdHMuYmVnaW4oKTsKKyAgICAg
ICAgICAgICAgICBydW5DdXJyZW50VGVzdCgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgbV9idWZmZXJlZFRlc3RzLmFwcGVuZCh0ZXN0RmlsZSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWU6OndhaXRGb3JUZXN0KCkKK3sKKyAgICBpZiAo
bV9mZCA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBNZXNzYWdlKiBtc2cgPSBjcmVhdGVN
ZXRob2RDYWxsTWVzc2FnZSgmRHVtcFJlbmRlclRyZWU6OndhaXRGb3JUZXN0LCB0aGlzKTsKKwor
ICAgIE1lc3NhZ2VDbGllbnQqIG1jID0gd2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpOworICAg
IC8vIFNldHVwIHRoZSBwdWxzZSBldmVudC4KKyAgICBzdHJ1Y3Qgc2lnZXZlbnQgZXZlbnQ7Cisg
ICAgZXZlbnQuc2lnZXZfbm90aWZ5ID0gU0lHRVZfUFVMU0U7CisgICAgZXZlbnQuc2lnZXZfY29p
ZCA9IG1jLT5jb25uZWN0aW9uSWQoKTsKKyAgICBldmVudC5zaWdldl9wcmlvcml0eSA9IG1jLT50
aHJlYWRQcmlvcml0eSgpOworICAgIGV2ZW50LnNpZ2V2X2NvZGUgPSBtYy0+cHVsc2VDb2RlKCk7
CisgICAgZXZlbnQuc2lnZXZfdmFsdWUuc2l2YWxfcHRyID0gKHZvaWQqKW1zZzsKKworICAgIHdo
aWxlIChpb25vdGlmeShtX2ZkLCBfTk9USUZZX0FDVElPTl9QT0xMQVJNLCBfTk9USUZZX0NPTkRf
SU5QVVQsICZldmVudCkgJiBfTk9USUZZX0NPTkRfSU5QVVQpCisgICAgICAgIGhhbmRsZVBQU0Rh
dGEoKTsKK30KKwogdm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuVGVzdHMoKQogewogICAgIG1fZ2ND
b250cm9sbGVyID0gbmV3IEdDQ29udHJvbGxlcigpOwogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIgPSBuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKLSAgICBnZXRUZXN0c1RvUnVu
KCk7CisgICAgaWYgKCFlbnN1cmVQUFMoKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgbWFpbkZy
YW1lID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0Ojpjb3JlUGFnZShtX3BhZ2UpLT5tYWluRnJhbWUo
KTsKIAotICAgIG1fY3VycmVudFRlc3QgPSBtX3Rlc3RzLmJlZ2luKCk7CisgICAgLy8gZGVsdGEg
bW9kZSBzdWJzY3JpcHRpb24KKyAgICBtX2ZkID0gb3BlbihtX2lucHV0RmlsZS51dGY4KCkuZGF0
YSgpLCBPX1JET05MWSB8IE9fTk9OQkxPQ0sgfCBPX0FTWU5DKTsKIAotICAgIGlmIChtX2N1cnJl
bnRUZXN0ID09IG1fdGVzdHMuZW5kKCkpIHsKLSAgICAgICAgZG9uZURydCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIHJ1bkN1cnJlbnRUZXN0KCk7CisgICAgLy8gR2V0IFRlc3QgZmls
ZSBuYW1lIGZyb20gUFBTOiAvcHBzL3NlcnZpY2VzL2RydC9pbnB1dAorICAgIC8vIEV4YW1wbGU6
IHRlc3RfZmlsZTo6ZmFzdC9qcy9hcmd1bWVudHMuaHRtbAorICAgIHdhaXRGb3JUZXN0KCk7CiB9
CiAKIApAQCAtMzk1LDI4ICs0NTMsNiBAQCBib29sIER1bXBSZW5kZXJUcmVlOjppc0hUVFBUZXN0
KGNvbnN0IFN0cmluZyYgdGVzdCkKICAgICAgICAgICAgICYmIHRlc3RMb3dlci5zdWJzdHJpbmco
bGVuSHR0cFRlc3RTeW50YXgsIHN0cmxlbihsb2NhbFRlc3RTeW50YXgpKSAhPSBsb2NhbFRlc3RT
eW50YXg7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFRlc3RzVG9SdW4oKQotewotICAg
IFZlY3RvcjxTdHJpbmc+IGZpbGVzOwotCi0gICAgRklMRSogZmQgPSBmb3BlbihtX2luZGV4Rmls
ZS51dGY4KCkuZGF0YSgpLCAiciIpOwotICAgIGZzZWVrKGZkLCAwLCBTRUVLX0VORCk7Ci0gICAg
aW50IHNpemUgPSBmdGVsbChmZCk7Ci0gICAgZnNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKLSAgICBP
d25BcnJheVB0cjxjaGFyPiBidWYgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW3NpemVdKTsKLSAg
ICBmcmVhZChidWYuZ2V0KCksIDEsIHNpemUsIGZkKTsKLSAgICBmY2xvc2UoZmQpOwotICAgIFN0
cmluZyBzKGJ1Zi5nZXQoKSwgc2l6ZSk7Ci0gICAgcy5zcGxpdCgiXG4iLCBmaWxlcyk7Ci0KLSAg
ICBtX3Rlc3RzID0gZmlsZXM7Ci0KLSAgICAvLyBGaW5kIHJlZi10ZXN0cyBmb3IgZWFjaCBvZiB0
aGUgcmVhbCB0ZXN0cywgb25lIHRlc3QgbWF5IGhhdmUgbXVsdGlwbGUgZXhwZWN0ZWQgcmVmLXRl
c3RzCi0gICAgLy8gYW5kIG11bHRpcGxlIG1pc21hdGNoIHJlZi10ZXN0cy4KLSAgICBmb3IgKFZl
Y3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gZmlsZXMuYmVnaW4oKTsgZmlsZXMuZW5kKCkg
IT0gaXRlcjsgKytpdGVyKQotICAgICAgICBnZXRSZWZUZXN0cygqaXRlcik7Ci19Ci0KIHZvaWQg
RHVtcFJlbmRlclRyZWU6OmludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygp
CiB7CiAgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5zdG9wKCk7CkBAIC01MTEsNiArNTQ3
LDkgQEAgc3RhdGljIFN0cmluZyBkdW1wQmFja0ZvcndhcmRMaXN0Rm9yV2ViVmlldygpCiAKIHZv
aWQgRHVtcFJlbmRlclRyZWU6OmR1bXAoKQogeworICAgIGlmICh0ZXN0RG9uZSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgaW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCk7
CiAKICAgICBTdHJpbmcgZHVtcEZpbGUgPSBtX3Jlc3VsdHNEaXIgKyAqbV9jdXJyZW50VGVzdCAr
ICIuZHVtcCI7CkBAIC01MzMsNiArNTcyLDkgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZHVtcCgp
CiAgICAgU3RyaW5nIGNyYXNoRmlsZSA9IGR1bXBGaWxlICsgIi5jcmFzaCI7CiAgICAgdW5saW5r
KGNyYXNoRmlsZS51dGY4KCkuZGF0YSgpKTsKIAorICAgIFN0cmluZyBkb25lRmlsZSA9ICBtX3Jl
c3VsdHNEaXIgKyAqbV9jdXJyZW50VGVzdCArICIuZG9uZSI7CisgICAgY3JlYXRlRmlsZShkb25l
RmlsZSk7CisKICAgICB0ZXN0RG9uZSA9IHRydWU7CiAgICAgcnVuUmVtYWluaW5nVGVzdHMoKTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRl
clRyZWVCbGFja0JlcnJ5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBS
ZW5kZXJUcmVlQmxhY2tCZXJyeS5oCmluZGV4IGM2ZWJhOWQuLmUxNDMxYzIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJs
YWNrQmVycnkuaApAQCAtMjEsNiArMjEsNyBAQAogCiAjaW5jbHVkZSAiQmxhY2tCZXJyeUdsb2Jh
bC5oIgogCisjaW5jbHVkZSAiQmxhY2tCZXJyeVBsYXRmb3JtR3VhcmRlZFBvaW50ZXIuaCIKICNp
bmNsdWRlICJEdW1wUmVuZGVyVHJlZUNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ1LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEJsYWNr
QmVycnkgewogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBEdW1w
UmVuZGVyVHJlZSA6IHB1YmxpYyBCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlQ2xp
ZW50IHsKK2NsYXNzIER1bXBSZW5kZXJUcmVlIDogcHVibGljIEJsYWNrQmVycnk6OldlYktpdDo6
RHVtcFJlbmRlclRyZWVDbGllbnQsIHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3VhcmRl
ZFBvaW50ZXJCYXNlIHsKIHB1YmxpYzoKICAgICBEdW1wUmVuZGVyVHJlZShXZWJQYWdlKik7CiAg
ICAgdmlydHVhbCB+RHVtcFJlbmRlclRyZWUoKTsKQEAgLTEwNSwxMCArMTA2LDEyIEBAIHB1Ymxp
YzoKICAgICBib29sIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpD
cmVkZW50aWFsJik7CiAKIHByaXZhdGU6CisgICAgYm9vbCBlbnN1cmVQUFMoKTsKKyAgICB2b2lk
IHdhaXRGb3JUZXN0KCk7CisgICAgdm9pZCBoYW5kbGVQUFNEYXRhKCk7CiAgICAgdm9pZCBydW5U
ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHJ1blRlc3RzKCk7CiAgICAgdm9pZCBy
dW5DdXJyZW50VGVzdCgpOwotICAgIHZvaWQgZ2V0UmVmVGVzdHMoY29uc3QgU3RyaW5nJiB0ZXN0
TmFtZSk7CiAKICAgICB2b2lkIHByb2Nlc3NXb3JrKFdlYkNvcmU6OlRpbWVyPER1bXBSZW5kZXJU
cmVlPiopOwogCkBAIC0xMTksNyArMTIyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvY2F0aW9u
Q2hhbmdlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKIAogICAgIHZvaWQgZG9uZURydCgpOwot
ICAgIHZvaWQgZ2V0VGVzdHNUb1J1bigpOwogICAgIGJvb2wgaXNIVFRQVGVzdChjb25zdCBTdHJp
bmcmIHRlc3QpOwogICAgIFN0cmluZyByZW5kZXJUcmVlRHVtcCgpIGNvbnN0OwogICAgIHZvaWQg
cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKQEAgLTEyNywxMiArMTI5LDEz
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1wV2F0
Y2hkb2coKTsKICAgICB2b2lkIHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoV2ViQ29yZTo6
VGltZXI8RHVtcFJlbmRlclRyZWU+Kik7CiAKKyAgICBpbnQgbV9mZDsgLy8gaW5wdXQgZmlsZSAo
UFBTIG9iamVjdCkKICAgICBWZWN0b3I8U3RyaW5nPiBtX3Rlc3RzOwogICAgIFZlY3RvcjxTdHJp
bmc+OjppdGVyYXRvciBtX2N1cnJlbnRUZXN0OwotICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVmVGVz
dHM7IC8vIFJlZmVyZW5jZSB0ZXN0cyBmb3IgY3VycmVudCB0ZXN0CisgICAgVmVjdG9yPFN0cmlu
Zz4gbV9idWZmZXJlZFRlc3RzOwogCisgICAgU3RyaW5nIG1faW5wdXRGaWxlOwogICAgIFN0cmlu
ZyBtX3Jlc3VsdHNEaXI7Ci0gICAgU3RyaW5nIG1faW5kZXhGaWxlOwogICAgIFN0cmluZyBtX2Rv
bmVGaWxlOwogICAgIFN0cmluZyBtX2N1cnJlbnRIdHRwVGVzdDsKICAgICBTdHJpbmcgbV9jdXJy
ZW50VGVzdEZpbGU7CkBAIC0xNDYsNyArMTQ5LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9h
Y2NlcHRzRWRpdGluZzsKICAgICBib29sIG1fbG9hZEZpbmlzaGVkOwotICAgIGJvb2wgbV9ydW5u
aW5nUmVmVGVzdHM7CiAgICAgc3RhdGljIGJvb2wgc19zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkOwogfTsKIH0KLS0gCjEuNy42Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149880</attachid>
            <date>2012-06-27 23:23:54 -0700</date>
            <delta_ts>2012-06-28 02:44:19 -0700</delta_ts>
            <desc>updated</desc>
            <filename>0001-BlackBerry-Update-DumpRenderTree-to-have-it-work-int.patch</filename>
            <type>text/plain</type>
            <size>11407</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSBlYTEyMzZhNDU4NjhiMjFmMGU3YzkxNjM4ODU1NDE4MGUwNDYyODZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogRnJpLCAxNSBKdW4gMjAxMiAxNDo1MDoyMSArMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFtCbGFja0JlcnJ5XSBVcGRhdGUgRHVtcFJlbmRlclRyZWUgdG8gaGF2ZSBpdCB3b3JrCiBpbnRl
cmFjdGl2ZWx5IGluIHBhcmFsbGVsCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODgzMjYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKMS4gVGVzdCBuYW1lIGlz
IHNlbnQgdG8gdG9yY2gtbGF1bmNoZXIgdmlhIFBQUyBtZXNzYWdlKGZyb20gaG9zdCBtYWNoaW5l
KS4KICAgU28gd2UgZ2V0IHRlc3QgbGlzdCBieSBtb25pdG9yaW5nIGFuZCByZWNlaXZpbmcgUFBT
IG1lc3NhZ2UgaW5zdGVhZCBvZgogICByZWFkaW5nIGZpbGUgaW5kZXguZHJ0LgoyLiBUb3JjaC1s
YXVuY2hlciBjcmVhdGUgYSA8dGVzdCBmaWxlPi5kb25lIGZpbGUgd2hlbiBpdCBmaW5pc2hlZCBh
IHRlc3QuCjMuIFdlIGRvbid0IG5lZWQgdG8gc2VhcmNoIGZvciBSZWYtdGVzdHMgaW4gRHVtcFJl
bmRlclRyZWUuY3BwIGFueSBtb3JlLiBOUldUCiAgIHdpbGwgZ2V0IHRoZW0gZm9yIHVzLgoKKiBE
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKEJsYWNrQmVycnk6
OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKEJsYWNrQmVycnk6Oldl
YktpdDo6RHVtcFJlbmRlclRyZWU6OmRvbmVEcnQpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6ZW5zdXJlUFBTKToKKFdlYktpdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1
bXBSZW5kZXJUcmVlOjpoYW5kbGVQUFNEYXRhKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OndhaXRGb3JUZXN0KToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OnJ1blRlc3RzKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmR1bXAp
OgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5Lmg6
CihEdW1wUmVuZGVyVHJlZSk6CgpDb25mbGljdHM6CgoJVG9vbHMvQ2hhbmdlTG9nCi0tLQogVG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI3ICsr
KysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCB8
ICAxMDMgKysrKysrKy0tLS0tLS0tLS0tLS0KIC4uLi9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVl
QmxhY2tCZXJyeS5oICAgICAgICAgIHwgICAxMiArLQogMyBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNl
cnRpb25zKCspLCA3MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjhiZWVkNS4uNGY3ZDBiMCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEy
LTA2LTI4ICBYaWFvYm8gV2FuZyAgPHhid2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAg
ICAgW0JsYWNrQmVycnldIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZSB0byBoYXZlIGl0IHdvcmsgaW50
ZXJhY3RpdmVseSBpbiBwYXJhbGxlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODgzMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAxLiBUZXN0IG5hbWUgaXMgc2VudCB0byB0b3JjaC1sYXVuY2hlciB2aWEg
UFBTIG1lc3NhZ2UoZnJvbSBob3N0IG1hY2hpbmUpLgorICAgICAgICAgICBTbyB3ZSBnZXQgdGVz
dCBsaXN0IGJ5IG1vbml0b3JpbmcgYW5kIHJlY2VpdmluZyBQUFMgbWVzc2FnZSBpbnN0ZWFkIG9m
CisgICAgICAgICAgIHJlYWRpbmcgZmlsZSBpbmRleC5kcnQuCisgICAgICAgIDIuIFRvcmNoLWxh
dW5jaGVyIGNyZWF0ZSBhIDx0ZXN0IGZpbGU+LmRvbmUgZmlsZSB3aGVuIGl0IGZpbmlzaGVkIGEg
dGVzdC4KKyAgICAgICAgMy4gV2UgZG9uJ3QgbmVlZCB0byBzZWFyY2ggZm9yIFJlZi10ZXN0cyBp
biBEdW1wUmVuZGVyVHJlZS5jcHAgYW55IG1vcmUuIE5SV1QKKyAgICAgICAgICAgd2lsbCBnZXQg
dGhlbSBmb3IgdXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBS
ZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OkR1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OmRvbmVEcnQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVu
ZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpEdW1wUmVuZGVyVHJlZTo6ZW5zdXJlUFBTKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpoYW5kbGVQUFNEYXRhKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OndhaXRGb3JUZXN0KToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OnJ1blRlc3RzKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmR1bXApOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5
Lmg6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZSk6CisKIDIwMTItMDYtMjcgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMjEzNjMsIHIxMjEzNjcsIHIxMjEzODQsIGFuZApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBhMTk3NDJj
Li5hYzhiM2U5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1
bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1
bXBSZW5kZXJUcmVlLmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VDbGll
bnQuaCIKICNpbmNsdWRlICJXb3JrUXVldWUuaCIKICNpbmNsdWRlICJXb3JrUXVldWVJdGVtLmgi
CisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTGF5b3V0VGVzdC5oPgogI2luY2x1ZGUgPFdl
YlNldHRpbmdzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpA
QCAtMTU2LDEzICsxNTcsMTIgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZSogcGFnZSkKICAgICAsIG1fd2FpdFRvRHVtcFdhdGNoZG9n
VGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVk
KQogICAgICwgbV93b3JrVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjpwcm9jZXNzV29yaykK
ICAgICAsIG1fYWNjZXB0c0VkaXRpbmcodHJ1ZSkKLSAgICAsIG1fcnVubmluZ1JlZlRlc3RzKGZh
bHNlKQogeworICAgIGNvbnN0IGNoYXIqIHdvcmtlck51bWJlciA9IGdldGVudigiV09SS0VSX05V
TUJFUiIpID8gZ2V0ZW52KCJXT1JLRVJfTlVNQkVSIikgOiAiMCI7CiAgICAgU3RyaW5nIHNkY2Fy
ZFBhdGggPSBTRENBUkRfUEFUSDsKICAgICBtX3Jlc3VsdHNEaXIgPSBzZGNhcmRQYXRoICsgIi9y
ZXN1bHRzLyI7Ci0gICAgbV9pbmRleEZpbGUgPSBzZGNhcmRQYXRoICsgIi9pbmRleC5kcnQiOwot
ICAgIG1fZG9uZUZpbGUgPSBzZGNhcmRQYXRoICsgIi9kb25lIjsKLSAgICBtX2N1cnJlbnRUZXN0
RmlsZSA9IHNkY2FyZFBhdGggKyAiL2N1cnJlbnQuZHJ0IjsKKyAgICBtX2RvbmVGaWxlID0gc2Rj
YXJkUGF0aCArICIvZG9uZSIgKyB3b3JrZXJOdW1iZXI7CisgICAgbV9jdXJyZW50VGVzdEZpbGUg
PSBzZGNhcmRQYXRoICsgIi9jdXJyZW50IiArIHdvcmtlck51bWJlciArICIuZHJ0IjsKICAgICBt
X3BhZ2UtPnJlc2V0VmlydHVhbFZpZXdwb3J0T25Db21taXR0ZWQoZmFsc2UpOwogICAgIG1fcGFn
ZS0+c2V0VmlydHVhbFZpZXdwb3J0U2l6ZSg4MDAsIDYwMCk7CiAgICAgc19jdXJyZW50SW5zdGFu
Y2UgPSB0aGlzOwpAQCAtMjAwLDM2ICsyMDAsMTMgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZG9u
ZURydCgpCiB7CiAgICAgZmNsb3NlKHN0ZG91dCk7CiAgICAgZmNsb3NlKHN0ZGVycik7CisgICAg
dW5saW5rKGdldERydFBwc1BhdGgoKS5jX3N0cigpKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgZXh0
ZXJuYWwgd29ybGQgdGhhdCB3ZSdyZSBkb25lLgogICAgIGNyZWF0ZUZpbGUobV9kb25lRmlsZSk7
CiAgICAgKG1fcGFnZS0+Y2xpZW50KCkpLT5ub3RpZnlSdW5MYXlvdXRUZXN0c0ZpbmlzaGVkKCk7
CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFJlZlRlc3RzKGNvbnN0IFN0cmluZyYgdGVz
dE5hbWUpCi17Ci0gICAgaWYgKG1fcnVubmluZ1JlZlRlc3RzKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBjb25zdCBjaGFyKiBzdWZmaXhlc1tdID0geyItZXhwZWN0ZWQiLCAiLWV4cGVjdGVkLW1p
c21hdGNoIn07Ci0gICAgY29uc3QgaW50IGNvdW50b2ZTdWZmaXhlcyA9IHNpemVvZihzdWZmaXhl
cykgLyBzaXplb2YoY29uc3QgY2hhciopOwotICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25s
eSBoYXZlIHJlZiB0ZXN0cyB3aXRoIC5odG1sIGV4dGVuc2lvbiwgeW91IG1hbnkgbmVlZCB0byBh
ZGQgbW9yZQotICAgIC8vIHdoZW4gdGhleSBoYXZlIG1vcmUgZXh0ZW5zaW9ucyguaHRtLCAuc2h0
bWwsIC54aHRtbCwgZXRjLikuCi0gICAgY29uc3QgY2hhciogZXh0ZW5zaW9uc1tdID0geyIuaHRt
bCIsICIuc3ZnIn07Ci0gICAgY29uc3QgaW50IGNvdW50b2ZFeHRlbnNpb25zID0gc2l6ZW9mKGV4
dGVuc2lvbnMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKLSAgICBTdHJpbmcgbGF5b3V0RGlyID0g
a1NEQ0xheW91dFRlc3RzVVJJICsgNzsgLy8gNzogc3RybGVuKCJmaWxlOi8vIiksIGxheW91dERp
cjogIi9kZXZlbG9wZXIvTGF5b3V0VGVzdHMvIgotCi0gICAgc2l6ZV90IGlFbmQgPSB0ZXN0TmFt
ZS5yZXZlcnNlRmluZCgnLicpOwotCi0gICAgU3RyaW5nIG5hbWVXaXRob3V0RXh0ZW5zaW9uID0g
dGVzdE5hbWUuc3Vic3RyaW5nKDAsIGlFbmQpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnRvZlN1ZmZpeGVzOyArK2kpCi0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY291bnRvZkV4
dGVuc2lvbnM7ICsraikgewotICAgICAgICAgICAgU3RyaW5nIGNhbmRpZGF0ZUZpbGUgPSBsYXlv
dXREaXIgKyBuYW1lV2l0aG91dEV4dGVuc2lvbiArIHN1ZmZpeGVzW2ldICsgZXh0ZW5zaW9uc1tq
XTsKLSAgICAgICAgICAgIGlmICghYWNjZXNzKGNhbmRpZGF0ZUZpbGUudXRmOCgpLmRhdGEoKSwg
Rl9PSykpCi0gICAgICAgICAgICAgICAgbV9yZWZUZXN0cy5hcHBlbmQobmFtZVdpdGhvdXRFeHRl
bnNpb24gKyBzdWZmaXhlc1tpXSArIGV4dGVuc2lvbnNbal0pOwotICAgICAgICB9Ci19Ci0KIHZv
aWQgRHVtcFJlbmRlclRyZWU6OnJ1bkN1cnJlbnRUZXN0KCkKIHsKICAgICBpZiAoaXNIVFRQVGVz
dChtX2N1cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpKSkgewpAQCAtMjQ3LDIwICsyMjQsMTcgQEAg
dm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQogICAgIGZmbHVzaChzdGRl
cnIpOwogCiAgICAgaWYgKG1fY3VycmVudFRlc3QgPj0gbV90ZXN0cy5lbmQoKSAtIDEpIHsKLSAg
ICAgICAgLy8gUnVuIHJlZi10ZXN0cyBhZnRlciByZWFsIHRlc3RzIHdlcmUgZmluaXNoZWQKLSAg
ICAgICAgaWYgKCFtX3J1bm5pbmdSZWZUZXN0cyAmJiAhbV9yZWZUZXN0cy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIG1fdGVzdHMuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fdGVzdHMuYXBwZW5k
KG1fcmVmVGVzdHMpOwotICAgICAgICAgICAgbV9yZWZUZXN0cy5jbGVhcigpOworICAgICAgICBt
X3Rlc3RzLmNsZWFyKCk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkVGVzdHMuc2l6ZSgpID4gMCkg
eworICAgICAgICAgICAgbV90ZXN0cy5hcHBlbmQobV9idWZmZXJlZFRlc3RzKTsKKyAgICAgICAg
ICAgIG1fYnVmZmVyZWRUZXN0cy5jbGVhcigpOwogICAgICAgICAgICAgbV9jdXJyZW50VGVzdCA9
IG1fdGVzdHMuYmVnaW4oKTsKLSAgICAgICAgICAgIG1fcnVubmluZ1JlZlRlc3RzID0gdHJ1ZTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRvbmVEcnQoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHJ1bkN1cnJlbnRUZXN0KCk7CiAgICAgICAgIH0KLSAgICB9IGVs
c2UKLSAgICAgICAgbV9jdXJyZW50VGVzdCsrOworICAgICAgICByZXR1cm47CisgICAgfQogCisg
ICAgbV9jdXJyZW50VGVzdCsrOwogICAgIHJ1bkN1cnJlbnRUZXN0KCk7CiB9CiAKQEAgLTM0Niwx
NyArMzIwLDMwIEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blRlc3RzKCkKIHsKICAgICBtX2dj
Q29udHJvbGxlciA9IG5ldyBHQ0NvbnRyb2xsZXIoKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250
cm9sbGVyID0gbmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7Ci0gICAgZ2V0VGVzdHNUb1J1
bigpOworICAgIGlmICghZW5zdXJlUFBTKCkpCisgICAgICAgIHJldHVybjsKIAogICAgIG1haW5G
cmFtZSA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6Y29yZVBhZ2UobV9wYWdlKS0+bWFpbkZyYW1l
KCk7CiAKLSAgICBtX2N1cnJlbnRUZXN0ID0gbV90ZXN0cy5iZWdpbigpOworICAgIC8vIEdldCBU
ZXN0IGZpbGUgbmFtZSBmcm9tIFBQUzogL3Bwcy9zZXJ2aWNlcy9kcnQvaW5wdXQKKyAgICAvLyBF
eGFtcGxlOiB0ZXN0X2ZpbGU6OmZhc3QvanMvYXJndW1lbnRzLmh0bWwKKyAgICB3YWl0Rm9yVGVz
dCgpOworfQogCi0gICAgaWYgKG1fY3VycmVudFRlc3QgPT0gbV90ZXN0cy5lbmQoKSkgewordm9p
ZCBEdW1wUmVuZGVyVHJlZTo6YWRkVGVzdChjb25zdCBjaGFyKiB0ZXN0RmlsZSkKK3sKKyAgICBT
dHJpbmcgdGVzdCh0ZXN0RmlsZSk7CisgICAgaWYgKHRlc3QgPT0gIiNFT0YiKQogICAgICAgICBk
b25lRHJ0KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBlbHNlIGlmICghdGVzdC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaWYgKG1fdGVzdHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBObyB0
ZXN0IGlzIGJlaW5nIHJ1biwgaW5pdGlhbGl6ZSBpdGVyYXRvciBhbmQgc3RhcnQgdGVzdAorICAg
ICAgICAgICAgbV90ZXN0cy5hcHBlbmQodGVzdCk7CisgICAgICAgICAgICBtX2N1cnJlbnRUZXN0
ID0gbV90ZXN0cy5iZWdpbigpOworICAgICAgICAgICAgcnVuQ3VycmVudFRlc3QoKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBtX2J1ZmZlcmVkVGVzdHMuYXBwZW5kKHRlc3QpOwogICAg
IH0KLSAgICBydW5DdXJyZW50VGVzdCgpOwogfQogCiAKQEAgLTM5NSwyOCArMzgyLDYgQEAgYm9v
bCBEdW1wUmVuZGVyVHJlZTo6aXNIVFRQVGVzdChjb25zdCBTdHJpbmcmIHRlc3QpCiAgICAgICAg
ICAgICAmJiB0ZXN0TG93ZXIuc3Vic3RyaW5nKGxlbkh0dHBUZXN0U3ludGF4LCBzdHJsZW4obG9j
YWxUZXN0U3ludGF4KSkgIT0gbG9jYWxUZXN0U3ludGF4OwogfQogCi12b2lkIER1bXBSZW5kZXJU
cmVlOjpnZXRUZXN0c1RvUnVuKCkKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlczsKLQotICAg
IEZJTEUqIGZkID0gZm9wZW4obV9pbmRleEZpbGUudXRmOCgpLmRhdGEoKSwgInIiKTsKLSAgICBm
c2VlayhmZCwgMCwgU0VFS19FTkQpOwotICAgIGludCBzaXplID0gZnRlbGwoZmQpOwotICAgIGZz
ZWVrKGZkLCAwLCBTRUVLX1NFVCk7Ci0gICAgT3duQXJyYXlQdHI8Y2hhcj4gYnVmID0gYWRvcHRB
cnJheVB0cihuZXcgY2hhcltzaXplXSk7Ci0gICAgZnJlYWQoYnVmLmdldCgpLCAxLCBzaXplLCBm
ZCk7Ci0gICAgZmNsb3NlKGZkKTsKLSAgICBTdHJpbmcgcyhidWYuZ2V0KCksIHNpemUpOwotICAg
IHMuc3BsaXQoIlxuIiwgZmlsZXMpOwotCi0gICAgbV90ZXN0cyA9IGZpbGVzOwotCi0gICAgLy8g
RmluZCByZWYtdGVzdHMgZm9yIGVhY2ggb2YgdGhlIHJlYWwgdGVzdHMsIG9uZSB0ZXN0IG1heSBo
YXZlIG11bHRpcGxlIGV4cGVjdGVkIHJlZi10ZXN0cwotICAgIC8vIGFuZCBtdWx0aXBsZSBtaXNt
YXRjaCByZWYtdGVzdHMuCi0gICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9
IGZpbGVzLmJlZ2luKCk7IGZpbGVzLmVuZCgpICE9IGl0ZXI7ICsraXRlcikKLSAgICAgICAgZ2V0
UmVmVGVzdHMoKml0ZXIpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlOjppbnZhbGlkYXRlQW55
UHJldmlvdXNXYWl0VG9EdW1wV2F0Y2hkb2coKQogewogICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9n
VGltZXIuc3RvcCgpOwpAQCAtNTExLDYgKzQ3Niw5IEBAIHN0YXRpYyBTdHJpbmcgZHVtcEJhY2tG
b3J3YXJkTGlzdEZvcldlYlZpZXcoKQogCiB2b2lkIER1bXBSZW5kZXJUcmVlOjpkdW1wKCkKIHsK
KyAgICBpZiAodGVzdERvbmUpCisgICAgICAgIHJldHVybjsKKwogICAgIGludmFsaWRhdGVBbnlQ
cmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpOwogCiAgICAgU3RyaW5nIGR1bXBGaWxlID0gbV9y
ZXN1bHRzRGlyICsgKm1fY3VycmVudFRlc3QgKyAiLmR1bXAiOwpAQCAtNTMzLDYgKzUwMSw5IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWU6OmR1bXAoKQogICAgIFN0cmluZyBjcmFzaEZpbGUgPSBkdW1w
RmlsZSArICIuY3Jhc2giOwogICAgIHVubGluayhjcmFzaEZpbGUudXRmOCgpLmRhdGEoKSk7CiAK
KyAgICBTdHJpbmcgZG9uZUZpbGUgPSAgbV9yZXN1bHRzRGlyICsgKm1fY3VycmVudFRlc3QgKyAi
LmRvbmUiOworICAgIGNyZWF0ZUZpbGUoZG9uZUZpbGUpOworCiAgICAgdGVzdERvbmUgPSB0cnVl
OwogICAgIHJ1blJlbWFpbmluZ1Rlc3RzKCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaAppbmRleCBj
NmViYTlkLi40Y2E5YTNmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2Jl
cnJ5L0R1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5LmgKQEAgLTIxLDkgKzIxLDExIEBA
CiAKICNpbmNsdWRlICJCbGFja0JlcnJ5R2xvYmFsLmgiCiAKKwogI2luY2x1ZGUgIkR1bXBSZW5k
ZXJUcmVlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJU
aW1lci5oIgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUxheW91dFRlc3QuaD4KICNpbmNs
dWRlIDxGaW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDUsNyAr
NDcsNyBAQCBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYlBhZ2U7CiAKLWNsYXNzIER1bXBSZW5kZXJUcmVlIDogcHVibGljIEJsYWNrQmVycnk6Oldl
YktpdDo6RHVtcFJlbmRlclRyZWVDbGllbnQgeworY2xhc3MgRHVtcFJlbmRlclRyZWUgOiBwdWJs
aWMgQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZUNsaWVudCwgcHVibGljIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpMYXlvdXRUZXN0Q2xpZW50IHsKIHB1YmxpYzoKICAgICBEdW1wUmVu
ZGVyVHJlZShXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+RHVtcFJlbmRlclRyZWUoKTsKQEAgLTEw
NCwxMSArMTA2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IHNfc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCA9IGVuYWJsZWQ7IH0KICAgICBib29sIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAKKyAgICAvLyBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6QmxhY2tCZXJyeVBsYXRmb3JtTGF5b3V0VGVzdENsaWVudCBtZXRob2QKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkVGVzdChjb25zdCBjaGFyKiB0ZXN0RmlsZSk7CiBwcml2YXRlOgogICAgIHZvaWQg
cnVuVGVzdChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9pZCBydW5UZXN0cygpOwogICAgIHZv
aWQgcnVuQ3VycmVudFRlc3QoKTsKLSAgICB2b2lkIGdldFJlZlRlc3RzKGNvbnN0IFN0cmluZyYg
dGVzdE5hbWUpOwogCiAgICAgdm9pZCBwcm9jZXNzV29yayhXZWJDb3JlOjpUaW1lcjxEdW1wUmVu
ZGVyVHJlZT4qKTsKIApAQCAtMTE5LDcgKzEyMiw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2Nh
dGlvbkNoYW5nZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKik7CiAKICAgICB2b2lkIGRvbmVEcnQo
KTsKLSAgICB2b2lkIGdldFRlc3RzVG9SdW4oKTsKICAgICBib29sIGlzSFRUUFRlc3QoY29uc3Qg
U3RyaW5nJiB0ZXN0KTsKICAgICBTdHJpbmcgcmVuZGVyVHJlZUR1bXAoKSBjb25zdDsKICAgICB2
b2lkIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CkBAIC0xMjksMTAgKzEz
MSw5IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8U3RyaW5nPiBtX3Rlc3RzOwogICAgIFZlY3Rv
cjxTdHJpbmc+OjppdGVyYXRvciBtX2N1cnJlbnRUZXN0OwotICAgIFZlY3RvcjxTdHJpbmc+IG1f
cmVmVGVzdHM7IC8vIFJlZmVyZW5jZSB0ZXN0cyBmb3IgY3VycmVudCB0ZXN0CisgICAgVmVjdG9y
PFN0cmluZz4gbV9idWZmZXJlZFRlc3RzOwogCiAgICAgU3RyaW5nIG1fcmVzdWx0c0RpcjsKLSAg
ICBTdHJpbmcgbV9pbmRleEZpbGU7CiAgICAgU3RyaW5nIG1fZG9uZUZpbGU7CiAgICAgU3RyaW5n
IG1fY3VycmVudEh0dHBUZXN0OwogICAgIFN0cmluZyBtX2N1cnJlbnRUZXN0RmlsZTsKQEAgLTE0
Niw3ICsxNDcsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2FjY2VwdHNFZGl0aW5nOwogICAg
IGJvb2wgbV9sb2FkRmluaXNoZWQ7Ci0gICAgYm9vbCBtX3J1bm5pbmdSZWZUZXN0czsKICAgICBz
dGF0aWMgYm9vbCBzX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ7CiB9OwogfQotLSAK
MS43LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149908</attachid>
            <date>2012-06-28 02:44:19 -0700</date>
            <delta_ts>2012-06-28 21:06:37 -0700</delta_ts>
            <desc>updated</desc>
            <filename>0001-BlackBerry-Update-DumpRenderTree-to-have-it-work-int.patch</filename>
            <type>text/plain</type>
            <size>11490</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSA1Yjg4NzZkYmU4YTU0OThmOTc5ZTI2ODcyNjEzMTQzYzkyNWZhMTBhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogRnJpLCAxNSBKdW4gMjAxMiAxNDo1MDoyMSArMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFtCbGFja0JlcnJ5XSBVcGRhdGUgRHVtcFJlbmRlclRyZWUgdG8gaGF2ZSBpdCB3b3JrCiBpbnRl
cmFjdGl2ZWx5IGluIHBhcmFsbGVsCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODgzMjYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKMS4gVGVzdCBuYW1lIGlz
IHNlbnQgdG8gdG9yY2gtbGF1bmNoZXIgdmlhIFBQUyBtZXNzYWdlKGZyb20gaG9zdCBtYWNoaW5l
KS4KICAgU28gd2UgZ2V0IHRlc3QgbGlzdCBieSBtb25pdG9yaW5nIGFuZCByZWNlaXZpbmcgUFBT
IG1lc3NhZ2UgaW5zdGVhZCBvZgogICByZWFkaW5nIGZpbGUgaW5kZXguZHJ0LgoyLiBUb3JjaC1s
YXVuY2hlciBjcmVhdGUgYSA8dGVzdCBmaWxlPi5kb25lIGZpbGUgd2hlbiBpdCBmaW5pc2hlZCBh
IHRlc3QuCjMuIFdlIGRvbid0IG5lZWQgdG8gc2VhcmNoIGZvciBSZWYtdGVzdHMgaW4gRHVtcFJl
bmRlclRyZWUuY3BwIGFueSBtb3JlLiBOUldUCiAgIHdpbGwgZ2V0IHRoZW0gZm9yIHVzLgoKKiBE
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKEJsYWNrQmVycnk6
OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKEJsYWNrQmVycnk6Oldl
YktpdDo6RHVtcFJlbmRlclRyZWU6OmRvbmVEcnQpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6ZW5zdXJlUFBTKToKKFdlYktpdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1
bXBSZW5kZXJUcmVlOjpoYW5kbGVQUFNEYXRhKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OndhaXRGb3JUZXN0KToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OnJ1blRlc3RzKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmR1bXAp
OgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5Lmg6
CihEdW1wUmVuZGVyVHJlZSk6CgpDb25mbGljdHM6CgoJVG9vbHMvQ2hhbmdlTG9nCi0tLQogVG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI3ICsr
KysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCB8
ICAxMDQgKysrKysrKy0tLS0tLS0tLS0tLS0KIC4uLi9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVl
QmxhY2tCZXJyeS5oICAgICAgICAgIHwgICAxMiArLQogMyBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNl
cnRpb25zKCspLCA3MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjhiZWVkNS4uNGY3ZDBiMCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEy
LTA2LTI4ICBYaWFvYm8gV2FuZyAgPHhid2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAg
ICAgW0JsYWNrQmVycnldIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZSB0byBoYXZlIGl0IHdvcmsgaW50
ZXJhY3RpdmVseSBpbiBwYXJhbGxlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODgzMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAxLiBUZXN0IG5hbWUgaXMgc2VudCB0byB0b3JjaC1sYXVuY2hlciB2aWEg
UFBTIG1lc3NhZ2UoZnJvbSBob3N0IG1hY2hpbmUpLgorICAgICAgICAgICBTbyB3ZSBnZXQgdGVz
dCBsaXN0IGJ5IG1vbml0b3JpbmcgYW5kIHJlY2VpdmluZyBQUFMgbWVzc2FnZSBpbnN0ZWFkIG9m
CisgICAgICAgICAgIHJlYWRpbmcgZmlsZSBpbmRleC5kcnQuCisgICAgICAgIDIuIFRvcmNoLWxh
dW5jaGVyIGNyZWF0ZSBhIDx0ZXN0IGZpbGU+LmRvbmUgZmlsZSB3aGVuIGl0IGZpbmlzaGVkIGEg
dGVzdC4KKyAgICAgICAgMy4gV2UgZG9uJ3QgbmVlZCB0byBzZWFyY2ggZm9yIFJlZi10ZXN0cyBp
biBEdW1wUmVuZGVyVHJlZS5jcHAgYW55IG1vcmUuIE5SV1QKKyAgICAgICAgICAgd2lsbCBnZXQg
dGhlbSBmb3IgdXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBS
ZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OkR1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OmRvbmVEcnQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVu
ZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpEdW1wUmVuZGVyVHJlZTo6ZW5zdXJlUFBTKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpoYW5kbGVQUFNEYXRhKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OndhaXRGb3JUZXN0KToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OnJ1blRlc3RzKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmR1bXApOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5
Lmg6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZSk6CisKIDIwMTItMDYtMjcgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMjEzNjMsIHIxMjEzNjcsIHIxMjEzODQsIGFuZApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBhMTk3NDJj
Li44ZGFhYzdhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1
bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1
bXBSZW5kZXJUcmVlLmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VDbGll
bnQuaCIKICNpbmNsdWRlICJXb3JrUXVldWUuaCIKICNpbmNsdWRlICJXb3JrUXVldWVJdGVtLmgi
CisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTGF5b3V0VGVzdC5oPgogI2luY2x1ZGUgPFdl
YlNldHRpbmdzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpA
QCAtMTU2LDEzICsxNTcsMTIgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZSogcGFnZSkKICAgICAsIG1fd2FpdFRvRHVtcFdhdGNoZG9n
VGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVk
KQogICAgICwgbV93b3JrVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjpwcm9jZXNzV29yaykK
ICAgICAsIG1fYWNjZXB0c0VkaXRpbmcodHJ1ZSkKLSAgICAsIG1fcnVubmluZ1JlZlRlc3RzKGZh
bHNlKQogeworICAgIGNvbnN0IGNoYXIqIHdvcmtlck51bWJlciA9IGdldGVudigiV09SS0VSX05V
TUJFUiIpID8gZ2V0ZW52KCJXT1JLRVJfTlVNQkVSIikgOiAiMCI7CiAgICAgU3RyaW5nIHNkY2Fy
ZFBhdGggPSBTRENBUkRfUEFUSDsKICAgICBtX3Jlc3VsdHNEaXIgPSBzZGNhcmRQYXRoICsgIi9y
ZXN1bHRzLyI7Ci0gICAgbV9pbmRleEZpbGUgPSBzZGNhcmRQYXRoICsgIi9pbmRleC5kcnQiOwot
ICAgIG1fZG9uZUZpbGUgPSBzZGNhcmRQYXRoICsgIi9kb25lIjsKLSAgICBtX2N1cnJlbnRUZXN0
RmlsZSA9IHNkY2FyZFBhdGggKyAiL2N1cnJlbnQuZHJ0IjsKKyAgICBtX2RvbmVGaWxlID0gc2Rj
YXJkUGF0aCArICIvZG9uZSIgKyB3b3JrZXJOdW1iZXI7CisgICAgbV9jdXJyZW50VGVzdEZpbGUg
PSBzZGNhcmRQYXRoICsgIi9jdXJyZW50IiArIHdvcmtlck51bWJlciArICIuZHJ0IjsKICAgICBt
X3BhZ2UtPnJlc2V0VmlydHVhbFZpZXdwb3J0T25Db21taXR0ZWQoZmFsc2UpOwogICAgIG1fcGFn
ZS0+c2V0VmlydHVhbFZpZXdwb3J0U2l6ZSg4MDAsIDYwMCk7CiAgICAgc19jdXJyZW50SW5zdGFu
Y2UgPSB0aGlzOwpAQCAtMjAwLDM2ICsyMDAsMTMgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZG9u
ZURydCgpCiB7CiAgICAgZmNsb3NlKHN0ZG91dCk7CiAgICAgZmNsb3NlKHN0ZGVycik7CisgICAg
dW5saW5rKGdldERydFBwc1BhdGgoKS5jX3N0cigpKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgZXh0
ZXJuYWwgd29ybGQgdGhhdCB3ZSdyZSBkb25lLgogICAgIGNyZWF0ZUZpbGUobV9kb25lRmlsZSk7
CiAgICAgKG1fcGFnZS0+Y2xpZW50KCkpLT5ub3RpZnlSdW5MYXlvdXRUZXN0c0ZpbmlzaGVkKCk7
CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFJlZlRlc3RzKGNvbnN0IFN0cmluZyYgdGVz
dE5hbWUpCi17Ci0gICAgaWYgKG1fcnVubmluZ1JlZlRlc3RzKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBjb25zdCBjaGFyKiBzdWZmaXhlc1tdID0geyItZXhwZWN0ZWQiLCAiLWV4cGVjdGVkLW1p
c21hdGNoIn07Ci0gICAgY29uc3QgaW50IGNvdW50b2ZTdWZmaXhlcyA9IHNpemVvZihzdWZmaXhl
cykgLyBzaXplb2YoY29uc3QgY2hhciopOwotICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25s
eSBoYXZlIHJlZiB0ZXN0cyB3aXRoIC5odG1sIGV4dGVuc2lvbiwgeW91IG1hbnkgbmVlZCB0byBh
ZGQgbW9yZQotICAgIC8vIHdoZW4gdGhleSBoYXZlIG1vcmUgZXh0ZW5zaW9ucyguaHRtLCAuc2h0
bWwsIC54aHRtbCwgZXRjLikuCi0gICAgY29uc3QgY2hhciogZXh0ZW5zaW9uc1tdID0geyIuaHRt
bCIsICIuc3ZnIn07Ci0gICAgY29uc3QgaW50IGNvdW50b2ZFeHRlbnNpb25zID0gc2l6ZW9mKGV4
dGVuc2lvbnMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKLSAgICBTdHJpbmcgbGF5b3V0RGlyID0g
a1NEQ0xheW91dFRlc3RzVVJJICsgNzsgLy8gNzogc3RybGVuKCJmaWxlOi8vIiksIGxheW91dERp
cjogIi9kZXZlbG9wZXIvTGF5b3V0VGVzdHMvIgotCi0gICAgc2l6ZV90IGlFbmQgPSB0ZXN0TmFt
ZS5yZXZlcnNlRmluZCgnLicpOwotCi0gICAgU3RyaW5nIG5hbWVXaXRob3V0RXh0ZW5zaW9uID0g
dGVzdE5hbWUuc3Vic3RyaW5nKDAsIGlFbmQpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnRvZlN1ZmZpeGVzOyArK2kpCi0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY291bnRvZkV4
dGVuc2lvbnM7ICsraikgewotICAgICAgICAgICAgU3RyaW5nIGNhbmRpZGF0ZUZpbGUgPSBsYXlv
dXREaXIgKyBuYW1lV2l0aG91dEV4dGVuc2lvbiArIHN1ZmZpeGVzW2ldICsgZXh0ZW5zaW9uc1tq
XTsKLSAgICAgICAgICAgIGlmICghYWNjZXNzKGNhbmRpZGF0ZUZpbGUudXRmOCgpLmRhdGEoKSwg
Rl9PSykpCi0gICAgICAgICAgICAgICAgbV9yZWZUZXN0cy5hcHBlbmQobmFtZVdpdGhvdXRFeHRl
bnNpb24gKyBzdWZmaXhlc1tpXSArIGV4dGVuc2lvbnNbal0pOwotICAgICAgICB9Ci19Ci0KIHZv
aWQgRHVtcFJlbmRlclRyZWU6OnJ1bkN1cnJlbnRUZXN0KCkKIHsKICAgICBpZiAoaXNIVFRQVGVz
dChtX2N1cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpKSkgewpAQCAtMjQ3LDIwICsyMjQsMTcgQEAg
dm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQogICAgIGZmbHVzaChzdGRl
cnIpOwogCiAgICAgaWYgKG1fY3VycmVudFRlc3QgPj0gbV90ZXN0cy5lbmQoKSAtIDEpIHsKLSAg
ICAgICAgLy8gUnVuIHJlZi10ZXN0cyBhZnRlciByZWFsIHRlc3RzIHdlcmUgZmluaXNoZWQKLSAg
ICAgICAgaWYgKCFtX3J1bm5pbmdSZWZUZXN0cyAmJiAhbV9yZWZUZXN0cy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIG1fdGVzdHMuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fdGVzdHMuYXBwZW5k
KG1fcmVmVGVzdHMpOwotICAgICAgICAgICAgbV9yZWZUZXN0cy5jbGVhcigpOworICAgICAgICBt
X3Rlc3RzLmNsZWFyKCk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkVGVzdHMuc2l6ZSgpID4gMCkg
eworICAgICAgICAgICAgbV90ZXN0cy5hcHBlbmQobV9idWZmZXJlZFRlc3RzKTsKKyAgICAgICAg
ICAgIG1fYnVmZmVyZWRUZXN0cy5jbGVhcigpOwogICAgICAgICAgICAgbV9jdXJyZW50VGVzdCA9
IG1fdGVzdHMuYmVnaW4oKTsKLSAgICAgICAgICAgIG1fcnVubmluZ1JlZlRlc3RzID0gdHJ1ZTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRvbmVEcnQoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHJ1bkN1cnJlbnRUZXN0KCk7CiAgICAgICAgIH0KLSAgICB9IGVs
c2UKLSAgICAgICAgbV9jdXJyZW50VGVzdCsrOworICAgICAgICByZXR1cm47CisgICAgfQogCisg
ICAgbV9jdXJyZW50VGVzdCsrOwogICAgIHJ1bkN1cnJlbnRUZXN0KCk7CiB9CiAKQEAgLTM0Niwy
MCArMzIwLDMyIEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blRlc3RzKCkKIHsKICAgICBtX2dj
Q29udHJvbGxlciA9IG5ldyBHQ0NvbnRyb2xsZXIoKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250
cm9sbGVyID0gbmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7Ci0gICAgZ2V0VGVzdHNUb1J1
bigpOworICAgIGlmICghZW5zdXJlUFBTKCkpCisgICAgICAgIHJldHVybjsKIAogICAgIG1haW5G
cmFtZSA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6Y29yZVBhZ2UobV9wYWdlKS0+bWFpbkZyYW1l
KCk7CiAKLSAgICBtX2N1cnJlbnRUZXN0ID0gbV90ZXN0cy5iZWdpbigpOworICAgIC8vIEdldCBU
ZXN0IGZpbGUgbmFtZSBmcm9tIFBQUzogL3Bwcy9zZXJ2aWNlcy9kcnQvaW5wdXQKKyAgICAvLyBF
eGFtcGxlOiB0ZXN0X2ZpbGU6OmZhc3QvanMvYXJndW1lbnRzLmh0bWwKKyAgICB3YWl0Rm9yVGVz
dCgpOworfQogCi0gICAgaWYgKG1fY3VycmVudFRlc3QgPT0gbV90ZXN0cy5lbmQoKSkgewordm9p
ZCBEdW1wUmVuZGVyVHJlZTo6YWRkVGVzdChjb25zdCBjaGFyKiB0ZXN0RmlsZSkKK3sKKyAgICBT
dHJpbmcgdGVzdCh0ZXN0RmlsZSk7CisgICAgaWYgKHRlc3QgPT0gIiNET05FIikKICAgICAgICAg
ZG9uZURydCgpOwotICAgICAgICByZXR1cm47CisgICAgZWxzZSBpZiAoIXRlc3QuaXNFbXB0eSgp
KSB7CisgICAgICAgIGlmIChtX3Rlc3RzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gTm8g
dGVzdCBpcyBiZWluZyBydW4sIGluaXRpYWxpemUgaXRlcmF0b3IgYW5kIHN0YXJ0IHRlc3QKKyAg
ICAgICAgICAgIG1fdGVzdHMuYXBwZW5kKHRlc3QpOworICAgICAgICAgICAgbV9jdXJyZW50VGVz
dCA9IG1fdGVzdHMuYmVnaW4oKTsKKyAgICAgICAgICAgIHJ1bkN1cnJlbnRUZXN0KCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9idWZmZXJlZFRlc3RzLmFwcGVuZCh0ZXN0KTsKICAg
ICB9Ci0gICAgcnVuQ3VycmVudFRlc3QoKTsKIH0KIAotCiBTdHJpbmcgRHVtcFJlbmRlclRyZWU6
OmR1bXBGcmFtZXNBc1RleHQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewogICAgIFN0cmluZyBz
OwpAQCAtMzk1LDI4ICszODEsNiBAQCBib29sIER1bXBSZW5kZXJUcmVlOjppc0hUVFBUZXN0KGNv
bnN0IFN0cmluZyYgdGVzdCkKICAgICAgICAgICAgICYmIHRlc3RMb3dlci5zdWJzdHJpbmcobGVu
SHR0cFRlc3RTeW50YXgsIHN0cmxlbihsb2NhbFRlc3RTeW50YXgpKSAhPSBsb2NhbFRlc3RTeW50
YXg7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFRlc3RzVG9SdW4oKQotewotICAgIFZl
Y3RvcjxTdHJpbmc+IGZpbGVzOwotCi0gICAgRklMRSogZmQgPSBmb3BlbihtX2luZGV4RmlsZS51
dGY4KCkuZGF0YSgpLCAiciIpOwotICAgIGZzZWVrKGZkLCAwLCBTRUVLX0VORCk7Ci0gICAgaW50
IHNpemUgPSBmdGVsbChmZCk7Ci0gICAgZnNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKLSAgICBPd25B
cnJheVB0cjxjaGFyPiBidWYgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW3NpemVdKTsKLSAgICBm
cmVhZChidWYuZ2V0KCksIDEsIHNpemUsIGZkKTsKLSAgICBmY2xvc2UoZmQpOwotICAgIFN0cmlu
ZyBzKGJ1Zi5nZXQoKSwgc2l6ZSk7Ci0gICAgcy5zcGxpdCgiXG4iLCBmaWxlcyk7Ci0KLSAgICBt
X3Rlc3RzID0gZmlsZXM7Ci0KLSAgICAvLyBGaW5kIHJlZi10ZXN0cyBmb3IgZWFjaCBvZiB0aGUg
cmVhbCB0ZXN0cywgb25lIHRlc3QgbWF5IGhhdmUgbXVsdGlwbGUgZXhwZWN0ZWQgcmVmLXRlc3Rz
Ci0gICAgLy8gYW5kIG11bHRpcGxlIG1pc21hdGNoIHJlZi10ZXN0cy4KLSAgICBmb3IgKFZlY3Rv
cjxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gZmlsZXMuYmVnaW4oKTsgZmlsZXMuZW5kKCkgIT0g
aXRlcjsgKytpdGVyKQotICAgICAgICBnZXRSZWZUZXN0cygqaXRlcik7Ci19Ci0KIHZvaWQgRHVt
cFJlbmRlclRyZWU6OmludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpCiB7
CiAgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5zdG9wKCk7CkBAIC01MTEsNiArNDc1LDkg
QEAgc3RhdGljIFN0cmluZyBkdW1wQmFja0ZvcndhcmRMaXN0Rm9yV2ViVmlldygpCiAKIHZvaWQg
RHVtcFJlbmRlclRyZWU6OmR1bXAoKQogeworICAgIGlmICh0ZXN0RG9uZSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCk7CiAK
ICAgICBTdHJpbmcgZHVtcEZpbGUgPSBtX3Jlc3VsdHNEaXIgKyAqbV9jdXJyZW50VGVzdCArICIu
ZHVtcCI7CkBAIC01MzMsNiArNTAwLDkgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZHVtcCgpCiAg
ICAgU3RyaW5nIGNyYXNoRmlsZSA9IGR1bXBGaWxlICsgIi5jcmFzaCI7CiAgICAgdW5saW5rKGNy
YXNoRmlsZS51dGY4KCkuZGF0YSgpKTsKIAorICAgIFN0cmluZyBkb25lRmlsZSA9ICBtX3Jlc3Vs
dHNEaXIgKyAqbV9jdXJyZW50VGVzdCArICIuZG9uZSI7CisgICAgY3JlYXRlRmlsZShkb25lRmls
ZSk7CisKICAgICB0ZXN0RG9uZSA9IHRydWU7CiAgICAgcnVuUmVtYWluaW5nVGVzdHMoKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRy
ZWVCbGFja0JlcnJ5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5k
ZXJUcmVlQmxhY2tCZXJyeS5oCmluZGV4IGM2ZWJhOWQuLjRjYTlhM2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5LmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNr
QmVycnkuaApAQCAtMjEsOSArMjEsMTEgQEAKIAogI2luY2x1ZGUgIkJsYWNrQmVycnlHbG9iYWwu
aCIKIAorCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVDbGllbnQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBs
YXRmb3JtTGF5b3V0VGVzdC5oPgogI2luY2x1ZGUgPEZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC00NSw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgRHVtcFJlbmRlclRy
ZWUgOiBwdWJsaWMgQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZUNsaWVudCB7Citj
bGFzcyBEdW1wUmVuZGVyVHJlZSA6IHB1YmxpYyBCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5k
ZXJUcmVlQ2xpZW50LCBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxheW91dFRlc3RDbGll
bnQgewogcHVibGljOgogICAgIER1bXBSZW5kZXJUcmVlKFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFs
IH5EdW1wUmVuZGVyVHJlZSgpOwpAQCAtMTA0LDExICsxMDYsMTIgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGVuYWJsZWQpIHsgc19z
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZW5hYmxlZDsgfQogICAgIGJvb2wgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKIAor
ICAgIC8vIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCbGFja0JlcnJ5UGxhdGZvcm1MYXlvdXRUZXN0
Q2xpZW50IG1ldGhvZAorICAgIHZpcnR1YWwgdm9pZCBhZGRUZXN0KGNvbnN0IGNoYXIqIHRlc3RG
aWxlKTsKIHByaXZhdGU6CiAgICAgdm9pZCBydW5UZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAg
ICB2b2lkIHJ1blRlc3RzKCk7CiAgICAgdm9pZCBydW5DdXJyZW50VGVzdCgpOwotICAgIHZvaWQg
Z2V0UmVmVGVzdHMoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSk7CiAKICAgICB2b2lkIHByb2Nlc3NX
b3JrKFdlYkNvcmU6OlRpbWVyPER1bXBSZW5kZXJUcmVlPiopOwogCkBAIC0xMTksNyArMTIyLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGxvY2F0aW9uQ2hhbmdlRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWUqKTsKIAogICAgIHZvaWQgZG9uZURydCgpOwotICAgIHZvaWQgZ2V0VGVzdHNUb1J1bigpOwog
ICAgIGJvb2wgaXNIVFRQVGVzdChjb25zdCBTdHJpbmcmIHRlc3QpOwogICAgIFN0cmluZyByZW5k
ZXJUcmVlRHVtcCgpIGNvbnN0OwogICAgIHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9y
ZVRlc3RpbmcoKTsKQEAgLTEyOSwxMCArMTMxLDkgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxT
dHJpbmc+IG1fdGVzdHM7CiAgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIG1fY3VycmVudFRl
c3Q7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9yZWZUZXN0czsgLy8gUmVmZXJlbmNlIHRlc3RzIGZv
ciBjdXJyZW50IHRlc3QKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2J1ZmZlcmVkVGVzdHM7CiAKICAg
ICBTdHJpbmcgbV9yZXN1bHRzRGlyOwotICAgIFN0cmluZyBtX2luZGV4RmlsZTsKICAgICBTdHJp
bmcgbV9kb25lRmlsZTsKICAgICBTdHJpbmcgbV9jdXJyZW50SHR0cFRlc3Q7CiAgICAgU3RyaW5n
IG1fY3VycmVudFRlc3RGaWxlOwpAQCAtMTQ2LDcgKzE0Nyw2IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIG1fYWNjZXB0c0VkaXRpbmc7CiAgICAgYm9vbCBtX2xvYWRGaW5pc2hlZDsKLSAgICBib29s
IG1fcnVubmluZ1JlZlRlc3RzOwogICAgIHN0YXRpYyBib29sIHNfc2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZDsKIH07CiB9Ci0tIAoxLjcuNgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150079</attachid>
            <date>2012-06-28 21:06:37 -0700</date>
            <delta_ts>2012-06-29 04:51:03 -0700</delta_ts>
            <desc>updated</desc>
            <filename>0001-BlackBerry-Update-DumpRenderTree-to-have-it-work-int.patch</filename>
            <type>text/plain</type>
            <size>11490</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSA1Yjg4NzZkYmU4YTU0OThmOTc5ZTI2ODcyNjEzMTQzYzkyNWZhMTBhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogRnJpLCAxNSBKdW4gMjAxMiAxNDo1MDoyMSArMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFtCbGFja0JlcnJ5XSBVcGRhdGUgRHVtcFJlbmRlclRyZWUgdG8gaGF2ZSBpdCB3b3JrCiBpbnRl
cmFjdGl2ZWx5IGluIHBhcmFsbGVsCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODgzMjYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKMS4gVGVzdCBuYW1lIGlz
IHNlbnQgdG8gdG9yY2gtbGF1bmNoZXIgdmlhIFBQUyBtZXNzYWdlKGZyb20gaG9zdCBtYWNoaW5l
KS4KICAgU28gd2UgZ2V0IHRlc3QgbGlzdCBieSBtb25pdG9yaW5nIGFuZCByZWNlaXZpbmcgUFBT
IG1lc3NhZ2UgaW5zdGVhZCBvZgogICByZWFkaW5nIGZpbGUgaW5kZXguZHJ0LgoyLiBUb3JjaC1s
YXVuY2hlciBjcmVhdGUgYSA8dGVzdCBmaWxlPi5kb25lIGZpbGUgd2hlbiBpdCBmaW5pc2hlZCBh
IHRlc3QuCjMuIFdlIGRvbid0IG5lZWQgdG8gc2VhcmNoIGZvciBSZWYtdGVzdHMgaW4gRHVtcFJl
bmRlclRyZWUuY3BwIGFueSBtb3JlLiBOUldUCiAgIHdpbGwgZ2V0IHRoZW0gZm9yIHVzLgoKKiBE
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKEJsYWNrQmVycnk6
OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKEJsYWNrQmVycnk6Oldl
YktpdDo6RHVtcFJlbmRlclRyZWU6OmRvbmVEcnQpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6ZW5zdXJlUFBTKToKKFdlYktpdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1
bXBSZW5kZXJUcmVlOjpoYW5kbGVQUFNEYXRhKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OndhaXRGb3JUZXN0KToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OnJ1blRlc3RzKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmR1bXAp
OgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5Lmg6
CihEdW1wUmVuZGVyVHJlZSk6CgpDb25mbGljdHM6CgoJVG9vbHMvQ2hhbmdlTG9nCi0tLQogVG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI3ICsr
KysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCB8
ICAxMDQgKysrKysrKy0tLS0tLS0tLS0tLS0KIC4uLi9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVl
QmxhY2tCZXJyeS5oICAgICAgICAgIHwgICAxMiArLQogMyBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNl
cnRpb25zKCspLCA3MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjhiZWVkNS4uNGY3ZDBiMCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEy
LTA2LTI4ICBYaWFvYm8gV2FuZyAgPHhid2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAg
ICAgW0JsYWNrQmVycnldIFVwZGF0ZSBEdW1wUmVuZGVyVHJlZSB0byBoYXZlIGl0IHdvcmsgaW50
ZXJhY3RpdmVseSBpbiBwYXJhbGxlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODgzMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAxLiBUZXN0IG5hbWUgaXMgc2VudCB0byB0b3JjaC1sYXVuY2hlciB2aWEg
UFBTIG1lc3NhZ2UoZnJvbSBob3N0IG1hY2hpbmUpLgorICAgICAgICAgICBTbyB3ZSBnZXQgdGVz
dCBsaXN0IGJ5IG1vbml0b3JpbmcgYW5kIHJlY2VpdmluZyBQUFMgbWVzc2FnZSBpbnN0ZWFkIG9m
CisgICAgICAgICAgIHJlYWRpbmcgZmlsZSBpbmRleC5kcnQuCisgICAgICAgIDIuIFRvcmNoLWxh
dW5jaGVyIGNyZWF0ZSBhIDx0ZXN0IGZpbGU+LmRvbmUgZmlsZSB3aGVuIGl0IGZpbmlzaGVkIGEg
dGVzdC4KKyAgICAgICAgMy4gV2UgZG9uJ3QgbmVlZCB0byBzZWFyY2ggZm9yIFJlZi10ZXN0cyBp
biBEdW1wUmVuZGVyVHJlZS5jcHAgYW55IG1vcmUuIE5SV1QKKyAgICAgICAgICAgd2lsbCBnZXQg
dGhlbSBmb3IgdXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBS
ZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OkR1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OmRvbmVEcnQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVu
ZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpEdW1wUmVuZGVyVHJlZTo6ZW5zdXJlUFBTKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpoYW5kbGVQUFNEYXRhKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OndhaXRGb3JUZXN0KToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OnJ1blRlc3RzKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmR1bXApOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5
Lmg6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZSk6CisKIDIwMTItMDYtMjcgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMjEzNjMsIHIxMjEzNjcsIHIxMjEzODQsIGFuZApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBhMTk3NDJj
Li44ZGFhYzdhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1
bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1
bXBSZW5kZXJUcmVlLmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VDbGll
bnQuaCIKICNpbmNsdWRlICJXb3JrUXVldWUuaCIKICNpbmNsdWRlICJXb3JrUXVldWVJdGVtLmgi
CisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTGF5b3V0VGVzdC5oPgogI2luY2x1ZGUgPFdl
YlNldHRpbmdzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpA
QCAtMTU2LDEzICsxNTcsMTIgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZSogcGFnZSkKICAgICAsIG1fd2FpdFRvRHVtcFdhdGNoZG9n
VGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjp3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVk
KQogICAgICwgbV93b3JrVGltZXIodGhpcywgJkR1bXBSZW5kZXJUcmVlOjpwcm9jZXNzV29yaykK
ICAgICAsIG1fYWNjZXB0c0VkaXRpbmcodHJ1ZSkKLSAgICAsIG1fcnVubmluZ1JlZlRlc3RzKGZh
bHNlKQogeworICAgIGNvbnN0IGNoYXIqIHdvcmtlck51bWJlciA9IGdldGVudigiV09SS0VSX05V
TUJFUiIpID8gZ2V0ZW52KCJXT1JLRVJfTlVNQkVSIikgOiAiMCI7CiAgICAgU3RyaW5nIHNkY2Fy
ZFBhdGggPSBTRENBUkRfUEFUSDsKICAgICBtX3Jlc3VsdHNEaXIgPSBzZGNhcmRQYXRoICsgIi9y
ZXN1bHRzLyI7Ci0gICAgbV9pbmRleEZpbGUgPSBzZGNhcmRQYXRoICsgIi9pbmRleC5kcnQiOwot
ICAgIG1fZG9uZUZpbGUgPSBzZGNhcmRQYXRoICsgIi9kb25lIjsKLSAgICBtX2N1cnJlbnRUZXN0
RmlsZSA9IHNkY2FyZFBhdGggKyAiL2N1cnJlbnQuZHJ0IjsKKyAgICBtX2RvbmVGaWxlID0gc2Rj
YXJkUGF0aCArICIvZG9uZSIgKyB3b3JrZXJOdW1iZXI7CisgICAgbV9jdXJyZW50VGVzdEZpbGUg
PSBzZGNhcmRQYXRoICsgIi9jdXJyZW50IiArIHdvcmtlck51bWJlciArICIuZHJ0IjsKICAgICBt
X3BhZ2UtPnJlc2V0VmlydHVhbFZpZXdwb3J0T25Db21taXR0ZWQoZmFsc2UpOwogICAgIG1fcGFn
ZS0+c2V0VmlydHVhbFZpZXdwb3J0U2l6ZSg4MDAsIDYwMCk7CiAgICAgc19jdXJyZW50SW5zdGFu
Y2UgPSB0aGlzOwpAQCAtMjAwLDM2ICsyMDAsMTMgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZG9u
ZURydCgpCiB7CiAgICAgZmNsb3NlKHN0ZG91dCk7CiAgICAgZmNsb3NlKHN0ZGVycik7CisgICAg
dW5saW5rKGdldERydFBwc1BhdGgoKS5jX3N0cigpKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgZXh0
ZXJuYWwgd29ybGQgdGhhdCB3ZSdyZSBkb25lLgogICAgIGNyZWF0ZUZpbGUobV9kb25lRmlsZSk7
CiAgICAgKG1fcGFnZS0+Y2xpZW50KCkpLT5ub3RpZnlSdW5MYXlvdXRUZXN0c0ZpbmlzaGVkKCk7
CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFJlZlRlc3RzKGNvbnN0IFN0cmluZyYgdGVz
dE5hbWUpCi17Ci0gICAgaWYgKG1fcnVubmluZ1JlZlRlc3RzKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBjb25zdCBjaGFyKiBzdWZmaXhlc1tdID0geyItZXhwZWN0ZWQiLCAiLWV4cGVjdGVkLW1p
c21hdGNoIn07Ci0gICAgY29uc3QgaW50IGNvdW50b2ZTdWZmaXhlcyA9IHNpemVvZihzdWZmaXhl
cykgLyBzaXplb2YoY29uc3QgY2hhciopOwotICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25s
eSBoYXZlIHJlZiB0ZXN0cyB3aXRoIC5odG1sIGV4dGVuc2lvbiwgeW91IG1hbnkgbmVlZCB0byBh
ZGQgbW9yZQotICAgIC8vIHdoZW4gdGhleSBoYXZlIG1vcmUgZXh0ZW5zaW9ucyguaHRtLCAuc2h0
bWwsIC54aHRtbCwgZXRjLikuCi0gICAgY29uc3QgY2hhciogZXh0ZW5zaW9uc1tdID0geyIuaHRt
bCIsICIuc3ZnIn07Ci0gICAgY29uc3QgaW50IGNvdW50b2ZFeHRlbnNpb25zID0gc2l6ZW9mKGV4
dGVuc2lvbnMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsKLSAgICBTdHJpbmcgbGF5b3V0RGlyID0g
a1NEQ0xheW91dFRlc3RzVVJJICsgNzsgLy8gNzogc3RybGVuKCJmaWxlOi8vIiksIGxheW91dERp
cjogIi9kZXZlbG9wZXIvTGF5b3V0VGVzdHMvIgotCi0gICAgc2l6ZV90IGlFbmQgPSB0ZXN0TmFt
ZS5yZXZlcnNlRmluZCgnLicpOwotCi0gICAgU3RyaW5nIG5hbWVXaXRob3V0RXh0ZW5zaW9uID0g
dGVzdE5hbWUuc3Vic3RyaW5nKDAsIGlFbmQpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnRvZlN1ZmZpeGVzOyArK2kpCi0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY291bnRvZkV4
dGVuc2lvbnM7ICsraikgewotICAgICAgICAgICAgU3RyaW5nIGNhbmRpZGF0ZUZpbGUgPSBsYXlv
dXREaXIgKyBuYW1lV2l0aG91dEV4dGVuc2lvbiArIHN1ZmZpeGVzW2ldICsgZXh0ZW5zaW9uc1tq
XTsKLSAgICAgICAgICAgIGlmICghYWNjZXNzKGNhbmRpZGF0ZUZpbGUudXRmOCgpLmRhdGEoKSwg
Rl9PSykpCi0gICAgICAgICAgICAgICAgbV9yZWZUZXN0cy5hcHBlbmQobmFtZVdpdGhvdXRFeHRl
bnNpb24gKyBzdWZmaXhlc1tpXSArIGV4dGVuc2lvbnNbal0pOwotICAgICAgICB9Ci19Ci0KIHZv
aWQgRHVtcFJlbmRlclRyZWU6OnJ1bkN1cnJlbnRUZXN0KCkKIHsKICAgICBpZiAoaXNIVFRQVGVz
dChtX2N1cnJlbnRUZXN0LT51dGY4KCkuZGF0YSgpKSkgewpAQCAtMjQ3LDIwICsyMjQsMTcgQEAg
dm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMoKQogICAgIGZmbHVzaChzdGRl
cnIpOwogCiAgICAgaWYgKG1fY3VycmVudFRlc3QgPj0gbV90ZXN0cy5lbmQoKSAtIDEpIHsKLSAg
ICAgICAgLy8gUnVuIHJlZi10ZXN0cyBhZnRlciByZWFsIHRlc3RzIHdlcmUgZmluaXNoZWQKLSAg
ICAgICAgaWYgKCFtX3J1bm5pbmdSZWZUZXN0cyAmJiAhbV9yZWZUZXN0cy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIG1fdGVzdHMuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fdGVzdHMuYXBwZW5k
KG1fcmVmVGVzdHMpOwotICAgICAgICAgICAgbV9yZWZUZXN0cy5jbGVhcigpOworICAgICAgICBt
X3Rlc3RzLmNsZWFyKCk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkVGVzdHMuc2l6ZSgpID4gMCkg
eworICAgICAgICAgICAgbV90ZXN0cy5hcHBlbmQobV9idWZmZXJlZFRlc3RzKTsKKyAgICAgICAg
ICAgIG1fYnVmZmVyZWRUZXN0cy5jbGVhcigpOwogICAgICAgICAgICAgbV9jdXJyZW50VGVzdCA9
IG1fdGVzdHMuYmVnaW4oKTsKLSAgICAgICAgICAgIG1fcnVubmluZ1JlZlRlc3RzID0gdHJ1ZTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRvbmVEcnQoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHJ1bkN1cnJlbnRUZXN0KCk7CiAgICAgICAgIH0KLSAgICB9IGVs
c2UKLSAgICAgICAgbV9jdXJyZW50VGVzdCsrOworICAgICAgICByZXR1cm47CisgICAgfQogCisg
ICAgbV9jdXJyZW50VGVzdCsrOwogICAgIHJ1bkN1cnJlbnRUZXN0KCk7CiB9CiAKQEAgLTM0Niwy
MCArMzIwLDMyIEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6OnJ1blRlc3RzKCkKIHsKICAgICBtX2dj
Q29udHJvbGxlciA9IG5ldyBHQ0NvbnRyb2xsZXIoKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250
cm9sbGVyID0gbmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7Ci0gICAgZ2V0VGVzdHNUb1J1
bigpOworICAgIGlmICghZW5zdXJlUFBTKCkpCisgICAgICAgIHJldHVybjsKIAogICAgIG1haW5G
cmFtZSA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6Y29yZVBhZ2UobV9wYWdlKS0+bWFpbkZyYW1l
KCk7CiAKLSAgICBtX2N1cnJlbnRUZXN0ID0gbV90ZXN0cy5iZWdpbigpOworICAgIC8vIEdldCBU
ZXN0IGZpbGUgbmFtZSBmcm9tIFBQUzogL3Bwcy9zZXJ2aWNlcy9kcnQvaW5wdXQKKyAgICAvLyBF
eGFtcGxlOiB0ZXN0X2ZpbGU6OmZhc3QvanMvYXJndW1lbnRzLmh0bWwKKyAgICB3YWl0Rm9yVGVz
dCgpOworfQogCi0gICAgaWYgKG1fY3VycmVudFRlc3QgPT0gbV90ZXN0cy5lbmQoKSkgewordm9p
ZCBEdW1wUmVuZGVyVHJlZTo6YWRkVGVzdChjb25zdCBjaGFyKiB0ZXN0RmlsZSkKK3sKKyAgICBT
dHJpbmcgdGVzdCh0ZXN0RmlsZSk7CisgICAgaWYgKHRlc3QgPT0gIiNET05FIikKICAgICAgICAg
ZG9uZURydCgpOwotICAgICAgICByZXR1cm47CisgICAgZWxzZSBpZiAoIXRlc3QuaXNFbXB0eSgp
KSB7CisgICAgICAgIGlmIChtX3Rlc3RzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gTm8g
dGVzdCBpcyBiZWluZyBydW4sIGluaXRpYWxpemUgaXRlcmF0b3IgYW5kIHN0YXJ0IHRlc3QKKyAg
ICAgICAgICAgIG1fdGVzdHMuYXBwZW5kKHRlc3QpOworICAgICAgICAgICAgbV9jdXJyZW50VGVz
dCA9IG1fdGVzdHMuYmVnaW4oKTsKKyAgICAgICAgICAgIHJ1bkN1cnJlbnRUZXN0KCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9idWZmZXJlZFRlc3RzLmFwcGVuZCh0ZXN0KTsKICAg
ICB9Ci0gICAgcnVuQ3VycmVudFRlc3QoKTsKIH0KIAotCiBTdHJpbmcgRHVtcFJlbmRlclRyZWU6
OmR1bXBGcmFtZXNBc1RleHQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewogICAgIFN0cmluZyBz
OwpAQCAtMzk1LDI4ICszODEsNiBAQCBib29sIER1bXBSZW5kZXJUcmVlOjppc0hUVFBUZXN0KGNv
bnN0IFN0cmluZyYgdGVzdCkKICAgICAgICAgICAgICYmIHRlc3RMb3dlci5zdWJzdHJpbmcobGVu
SHR0cFRlc3RTeW50YXgsIHN0cmxlbihsb2NhbFRlc3RTeW50YXgpKSAhPSBsb2NhbFRlc3RTeW50
YXg7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFRlc3RzVG9SdW4oKQotewotICAgIFZl
Y3RvcjxTdHJpbmc+IGZpbGVzOwotCi0gICAgRklMRSogZmQgPSBmb3BlbihtX2luZGV4RmlsZS51
dGY4KCkuZGF0YSgpLCAiciIpOwotICAgIGZzZWVrKGZkLCAwLCBTRUVLX0VORCk7Ci0gICAgaW50
IHNpemUgPSBmdGVsbChmZCk7Ci0gICAgZnNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKLSAgICBPd25B
cnJheVB0cjxjaGFyPiBidWYgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW3NpemVdKTsKLSAgICBm
cmVhZChidWYuZ2V0KCksIDEsIHNpemUsIGZkKTsKLSAgICBmY2xvc2UoZmQpOwotICAgIFN0cmlu
ZyBzKGJ1Zi5nZXQoKSwgc2l6ZSk7Ci0gICAgcy5zcGxpdCgiXG4iLCBmaWxlcyk7Ci0KLSAgICBt
X3Rlc3RzID0gZmlsZXM7Ci0KLSAgICAvLyBGaW5kIHJlZi10ZXN0cyBmb3IgZWFjaCBvZiB0aGUg
cmVhbCB0ZXN0cywgb25lIHRlc3QgbWF5IGhhdmUgbXVsdGlwbGUgZXhwZWN0ZWQgcmVmLXRlc3Rz
Ci0gICAgLy8gYW5kIG11bHRpcGxlIG1pc21hdGNoIHJlZi10ZXN0cy4KLSAgICBmb3IgKFZlY3Rv
cjxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gZmlsZXMuYmVnaW4oKTsgZmlsZXMuZW5kKCkgIT0g
aXRlcjsgKytpdGVyKQotICAgICAgICBnZXRSZWZUZXN0cygqaXRlcik7Ci19Ci0KIHZvaWQgRHVt
cFJlbmRlclRyZWU6OmludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpCiB7
CiAgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5zdG9wKCk7CkBAIC01MTEsNiArNDc1LDkg
QEAgc3RhdGljIFN0cmluZyBkdW1wQmFja0ZvcndhcmRMaXN0Rm9yV2ViVmlldygpCiAKIHZvaWQg
RHVtcFJlbmRlclRyZWU6OmR1bXAoKQogeworICAgIGlmICh0ZXN0RG9uZSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCk7CiAK
ICAgICBTdHJpbmcgZHVtcEZpbGUgPSBtX3Jlc3VsdHNEaXIgKyAqbV9jdXJyZW50VGVzdCArICIu
ZHVtcCI7CkBAIC01MzMsNiArNTAwLDkgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZHVtcCgpCiAg
ICAgU3RyaW5nIGNyYXNoRmlsZSA9IGR1bXBGaWxlICsgIi5jcmFzaCI7CiAgICAgdW5saW5rKGNy
YXNoRmlsZS51dGY4KCkuZGF0YSgpKTsKIAorICAgIFN0cmluZyBkb25lRmlsZSA9ICBtX3Jlc3Vs
dHNEaXIgKyAqbV9jdXJyZW50VGVzdCArICIuZG9uZSI7CisgICAgY3JlYXRlRmlsZShkb25lRmls
ZSk7CisKICAgICB0ZXN0RG9uZSA9IHRydWU7CiAgICAgcnVuUmVtYWluaW5nVGVzdHMoKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRy
ZWVCbGFja0JlcnJ5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5k
ZXJUcmVlQmxhY2tCZXJyeS5oCmluZGV4IGM2ZWJhOWQuLjRjYTlhM2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5LmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNr
QmVycnkuaApAQCAtMjEsOSArMjEsMTEgQEAKIAogI2luY2x1ZGUgIkJsYWNrQmVycnlHbG9iYWwu
aCIKIAorCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVDbGllbnQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBs
YXRmb3JtTGF5b3V0VGVzdC5oPgogI2luY2x1ZGUgPEZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC00NSw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgRHVtcFJlbmRlclRy
ZWUgOiBwdWJsaWMgQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZUNsaWVudCB7Citj
bGFzcyBEdW1wUmVuZGVyVHJlZSA6IHB1YmxpYyBCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5k
ZXJUcmVlQ2xpZW50LCBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxheW91dFRlc3RDbGll
bnQgewogcHVibGljOgogICAgIER1bXBSZW5kZXJUcmVlKFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFs
IH5EdW1wUmVuZGVyVHJlZSgpOwpAQCAtMTA0LDExICsxMDYsMTIgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGVuYWJsZWQpIHsgc19z
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZW5hYmxlZDsgfQogICAgIGJvb2wgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKIAor
ICAgIC8vIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCbGFja0JlcnJ5UGxhdGZvcm1MYXlvdXRUZXN0
Q2xpZW50IG1ldGhvZAorICAgIHZpcnR1YWwgdm9pZCBhZGRUZXN0KGNvbnN0IGNoYXIqIHRlc3RG
aWxlKTsKIHByaXZhdGU6CiAgICAgdm9pZCBydW5UZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAg
ICB2b2lkIHJ1blRlc3RzKCk7CiAgICAgdm9pZCBydW5DdXJyZW50VGVzdCgpOwotICAgIHZvaWQg
Z2V0UmVmVGVzdHMoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSk7CiAKICAgICB2b2lkIHByb2Nlc3NX
b3JrKFdlYkNvcmU6OlRpbWVyPER1bXBSZW5kZXJUcmVlPiopOwogCkBAIC0xMTksNyArMTIyLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGxvY2F0aW9uQ2hhbmdlRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWUqKTsKIAogICAgIHZvaWQgZG9uZURydCgpOwotICAgIHZvaWQgZ2V0VGVzdHNUb1J1bigpOwog
ICAgIGJvb2wgaXNIVFRQVGVzdChjb25zdCBTdHJpbmcmIHRlc3QpOwogICAgIFN0cmluZyByZW5k
ZXJUcmVlRHVtcCgpIGNvbnN0OwogICAgIHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9y
ZVRlc3RpbmcoKTsKQEAgLTEyOSwxMCArMTMxLDkgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxT
dHJpbmc+IG1fdGVzdHM7CiAgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIG1fY3VycmVudFRl
c3Q7Ci0gICAgVmVjdG9yPFN0cmluZz4gbV9yZWZUZXN0czsgLy8gUmVmZXJlbmNlIHRlc3RzIGZv
ciBjdXJyZW50IHRlc3QKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2J1ZmZlcmVkVGVzdHM7CiAKICAg
ICBTdHJpbmcgbV9yZXN1bHRzRGlyOwotICAgIFN0cmluZyBtX2luZGV4RmlsZTsKICAgICBTdHJp
bmcgbV9kb25lRmlsZTsKICAgICBTdHJpbmcgbV9jdXJyZW50SHR0cFRlc3Q7CiAgICAgU3RyaW5n
IG1fY3VycmVudFRlc3RGaWxlOwpAQCAtMTQ2LDcgKzE0Nyw2IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIG1fYWNjZXB0c0VkaXRpbmc7CiAgICAgYm9vbCBtX2xvYWRGaW5pc2hlZDsKLSAgICBib29s
IG1fcnVubmluZ1JlZlRlc3RzOwogICAgIHN0YXRpYyBib29sIHNfc2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZDsKIH07CiB9Ci0tIAoxLjcuNgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150139</attachid>
            <date>2012-06-29 04:51:03 -0700</date>
            <delta_ts>2012-07-02 20:23:59 -0700</delta_ts>
            <desc>updated</desc>
            <filename>0001-BlackBerry-Update-DumpRenderTree-to-have-it-work-int.patch</filename>
            <type>text/plain</type>
            <size>11655</size>
            <attacher name="Xiaobo Wang">xiaobwang</attacher>
            
              <data encoding="base64">RnJvbSA4ZjYwY2VmNjRmMjFkMjkyZTI0ODA1YzFiMTlmNzQwYTA3N2IwMTBmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYaWFvYm8gV2FuZyA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5j
bj4KRGF0ZTogRnJpLCAxNSBKdW4gMjAxMiAxNDo1MDoyMSArMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFtCbGFja0JlcnJ5XSBVcGRhdGUgRHVtcFJlbmRlclRyZWUgdG8gaGF2ZSBpdCB3b3JrCiBpbnRl
cmFjdGl2ZWx5IGluIHBhcmFsbGVsCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODgzMjYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKMS4gVGVzdCBuYW1lIGlz
IHNlbnQgdG8gdG9yY2gtbGF1bmNoZXIgdmlhIFBQUyBtZXNzYWdlKGZyb20gaG9zdCBtYWNoaW5l
KS4KICAgU28gd2UgZ2V0IHRlc3QgbGlzdCBieSBtb25pdG9yaW5nIGFuZCByZWNlaXZpbmcgUFBT
IG1lc3NhZ2UgaW5zdGVhZCBvZgogICByZWFkaW5nIGZpbGUgaW5kZXguZHJ0LgoyLiBUb3JjaC1s
YXVuY2hlciBjcmVhdGUgYSA8dGVzdCBmaWxlPi5kb25lIGZpbGUgd2hlbiBpdCBmaW5pc2hlZCBh
IHRlc3QuCjMuIFdlIGRvbid0IG5lZWQgdG8gc2VhcmNoIGZvciBSZWYtdGVzdHMgaW4gRHVtcFJl
bmRlclRyZWUuY3BwIGFueSBtb3JlLiBOUldUCiAgIHdpbGwgZ2V0IHRoZW0gZm9yIHVzLgoKKiBE
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcDoKKEJsYWNrQmVycnk6
OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKToKKEJsYWNrQmVycnk6Oldl
YktpdDo6RHVtcFJlbmRlclRyZWU6OmRvbmVEcnQpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6cnVuUmVtYWluaW5nVGVzdHMpOgooQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6ZW5zdXJlUFBTKToKKFdlYktpdCk6CihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1
bXBSZW5kZXJUcmVlOjpoYW5kbGVQUFNEYXRhKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OndhaXRGb3JUZXN0KToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRy
ZWU6OnJ1blRlc3RzKToKKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmR1bXAp
OgoqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5Lmg6
CihEdW1wUmVuZGVyVHJlZSk6CgpDb25mbGljdHM6CgoJVG9vbHMvQ2hhbmdlTG9nCi0tLQogVG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI3ICsr
KysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCB8
ICAxMDcgKysrKysrKy0tLS0tLS0tLS0tLQogLi4uL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVC
bGFja0JlcnJ5LmggICAgICAgICAgfCAgIDEyICstCiAzIGZpbGVzIGNoYW5nZWQsIDczIGluc2Vy
dGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2OGJlZWQ1Li40ZjdkMGIwIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTIt
MDYtMjggIFhpYW9ibyBXYW5nICA8eGJ3YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAg
ICBbQmxhY2tCZXJyeV0gVXBkYXRlIER1bXBSZW5kZXJUcmVlIHRvIGhhdmUgaXQgd29yayBpbnRl
cmFjdGl2ZWx5IGluIHBhcmFsbGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODMyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIDEuIFRlc3QgbmFtZSBpcyBzZW50IHRvIHRvcmNoLWxhdW5jaGVyIHZpYSBQ
UFMgbWVzc2FnZShmcm9tIGhvc3QgbWFjaGluZSkuCisgICAgICAgICAgIFNvIHdlIGdldCB0ZXN0
IGxpc3QgYnkgbW9uaXRvcmluZyBhbmQgcmVjZWl2aW5nIFBQUyBtZXNzYWdlIGluc3RlYWQgb2YK
KyAgICAgICAgICAgcmVhZGluZyBmaWxlIGluZGV4LmRydC4KKyAgICAgICAgMi4gVG9yY2gtbGF1
bmNoZXIgY3JlYXRlIGEgPHRlc3QgZmlsZT4uZG9uZSBmaWxlIHdoZW4gaXQgZmluaXNoZWQgYSB0
ZXN0LgorICAgICAgICAzLiBXZSBkb24ndCBuZWVkIHRvIHNlYXJjaCBmb3IgUmVmLXRlc3RzIGlu
IER1bXBSZW5kZXJUcmVlLmNwcCBhbnkgbW9yZS4gTlJXVAorICAgICAgICAgICB3aWxsIGdldCB0
aGVtIGZvciB1cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJl
bmRlclRyZWUuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJl
ZTo6RHVtcFJlbmRlclRyZWUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVu
ZGVyVHJlZTo6ZG9uZURydCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5k
ZXJUcmVlOjpydW5SZW1haW5pbmdUZXN0cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OkR1bXBSZW5kZXJUcmVlOjplbnN1cmVQUFMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmhhbmRsZVBQU0RhdGEpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6d2FpdEZvclRlc3QpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6cnVuVGVzdHMpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6ZHVtcCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnku
aDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlKToKKwogMjAxMi0wNi0yNyAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjEyMTM2MywgcjEyMTM2NywgcjEyMTM4NCwgYW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGExOTc0MmMu
LjExZjM5MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVt
cFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZUNsaWVu
dC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIK
KyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1MYXlvdXRUZXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
U2V0dGluZ3MuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CkBA
IC0xNTYsMTMgKzE1NywxMiBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiBwYWdlKQogICAgICwgbV93YWl0VG9EdW1wV2F0Y2hkb2dU
aW1lcih0aGlzLCAmRHVtcFJlbmRlclRyZWU6OndhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyRmlyZWQp
CiAgICAgLCBtX3dvcmtUaW1lcih0aGlzLCAmRHVtcFJlbmRlclRyZWU6OnByb2Nlc3NXb3JrKQog
ICAgICwgbV9hY2NlcHRzRWRpdGluZyh0cnVlKQotICAgICwgbV9ydW5uaW5nUmVmVGVzdHMoZmFs
c2UpCiB7CisgICAgY29uc3QgY2hhciogd29ya2VyTnVtYmVyID0gZ2V0ZW52KCJXT1JLRVJfTlVN
QkVSIikgPyBnZXRlbnYoIldPUktFUl9OVU1CRVIiKSA6ICIwIjsKICAgICBTdHJpbmcgc2RjYXJk
UGF0aCA9IFNEQ0FSRF9QQVRIOwogICAgIG1fcmVzdWx0c0RpciA9IHNkY2FyZFBhdGggKyAiL3Jl
c3VsdHMvIjsKLSAgICBtX2luZGV4RmlsZSA9IHNkY2FyZFBhdGggKyAiL2luZGV4LmRydCI7Ci0g
ICAgbV9kb25lRmlsZSA9IHNkY2FyZFBhdGggKyAiL2RvbmUiOwotICAgIG1fY3VycmVudFRlc3RG
aWxlID0gc2RjYXJkUGF0aCArICIvY3VycmVudC5kcnQiOworICAgIG1fZG9uZUZpbGUgPSBzZGNh
cmRQYXRoICsgIi9kb25lIiArIHdvcmtlck51bWJlcjsKKyAgICBtX2N1cnJlbnRUZXN0RmlsZSA9
IHNkY2FyZFBhdGggKyAiL2N1cnJlbnQiICsgd29ya2VyTnVtYmVyICsgIi5kcnQiOwogICAgIG1f
cGFnZS0+cmVzZXRWaXJ0dWFsVmlld3BvcnRPbkNvbW1pdHRlZChmYWxzZSk7CiAgICAgbV9wYWdl
LT5zZXRWaXJ0dWFsVmlld3BvcnRTaXplKDgwMCwgNjAwKTsKICAgICBzX2N1cnJlbnRJbnN0YW5j
ZSA9IHRoaXM7CkBAIC0yMDAsMzYgKzIwMCwxMyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpkb25l
RHJ0KCkKIHsKICAgICBmY2xvc2Uoc3Rkb3V0KTsKICAgICBmY2xvc2Uoc3RkZXJyKTsKKyAgICB1
bmxpbmsoZ2V0UFBTUGF0aCgpLmNfc3RyKCkpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBleHRlcm5h
bCB3b3JsZCB0aGF0IHdlJ3JlIGRvbmUuCiAgICAgY3JlYXRlRmlsZShtX2RvbmVGaWxlKTsKICAg
ICAobV9wYWdlLT5jbGllbnQoKSktPm5vdGlmeVJ1bkxheW91dFRlc3RzRmluaXNoZWQoKTsKIH0K
IAotdm9pZCBEdW1wUmVuZGVyVHJlZTo6Z2V0UmVmVGVzdHMoY29uc3QgU3RyaW5nJiB0ZXN0TmFt
ZSkKLXsKLSAgICBpZiAobV9ydW5uaW5nUmVmVGVzdHMpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGNvbnN0IGNoYXIqIHN1ZmZpeGVzW10gPSB7Ii1leHBlY3RlZCIsICItZXhwZWN0ZWQtbWlzbWF0
Y2gifTsKLSAgICBjb25zdCBpbnQgY291bnRvZlN1ZmZpeGVzID0gc2l6ZW9mKHN1ZmZpeGVzKSAv
IHNpemVvZihjb25zdCBjaGFyKik7Ci0gICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IGhh
dmUgcmVmIHRlc3RzIHdpdGggLmh0bWwgZXh0ZW5zaW9uLCB5b3UgbWFueSBuZWVkIHRvIGFkZCBt
b3JlCi0gICAgLy8gd2hlbiB0aGV5IGhhdmUgbW9yZSBleHRlbnNpb25zKC5odG0sIC5zaHRtbCwg
LnhodG1sLCBldGMuKS4KLSAgICBjb25zdCBjaGFyKiBleHRlbnNpb25zW10gPSB7Ii5odG1sIiwg
Ii5zdmcifTsKLSAgICBjb25zdCBpbnQgY291bnRvZkV4dGVuc2lvbnMgPSBzaXplb2YoZXh0ZW5z
aW9ucykgLyBzaXplb2YoY29uc3QgY2hhciopOwotICAgIFN0cmluZyBsYXlvdXREaXIgPSBrU0RD
TGF5b3V0VGVzdHNVUkkgKyA3OyAvLyA3OiBzdHJsZW4oImZpbGU6Ly8iKSwgbGF5b3V0RGlyOiAi
L2RldmVsb3Blci9MYXlvdXRUZXN0cy8iCi0KLSAgICBzaXplX3QgaUVuZCA9IHRlc3ROYW1lLnJl
dmVyc2VGaW5kKCcuJyk7Ci0KLSAgICBTdHJpbmcgbmFtZVdpdGhvdXRFeHRlbnNpb24gPSB0ZXN0
TmFtZS5zdWJzdHJpbmcoMCwgaUVuZCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudG9m
U3VmZml4ZXM7ICsraSkKLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb3VudG9mRXh0ZW5z
aW9uczsgKytqKSB7Ci0gICAgICAgICAgICBTdHJpbmcgY2FuZGlkYXRlRmlsZSA9IGxheW91dERp
ciArIG5hbWVXaXRob3V0RXh0ZW5zaW9uICsgc3VmZml4ZXNbaV0gKyBleHRlbnNpb25zW2pdOwot
ICAgICAgICAgICAgaWYgKCFhY2Nlc3MoY2FuZGlkYXRlRmlsZS51dGY4KCkuZGF0YSgpLCBGX09L
KSkKLSAgICAgICAgICAgICAgICBtX3JlZlRlc3RzLmFwcGVuZChuYW1lV2l0aG91dEV4dGVuc2lv
biArIHN1ZmZpeGVzW2ldICsgZXh0ZW5zaW9uc1tqXSk7Ci0gICAgICAgIH0KLX0KLQogdm9pZCBE
dW1wUmVuZGVyVHJlZTo6cnVuQ3VycmVudFRlc3QoKQogewogICAgIGlmIChpc0hUVFBUZXN0KG1f
Y3VycmVudFRlc3QtPnV0ZjgoKS5kYXRhKCkpKSB7CkBAIC0yNDcsMjAgKzIyNCwxNyBAQCB2b2lk
IER1bXBSZW5kZXJUcmVlOjpydW5SZW1haW5pbmdUZXN0cygpCiAgICAgZmZsdXNoKHN0ZGVycik7
CiAKICAgICBpZiAobV9jdXJyZW50VGVzdCA+PSBtX3Rlc3RzLmVuZCgpIC0gMSkgewotICAgICAg
ICAvLyBSdW4gcmVmLXRlc3RzIGFmdGVyIHJlYWwgdGVzdHMgd2VyZSBmaW5pc2hlZAotICAgICAg
ICBpZiAoIW1fcnVubmluZ1JlZlRlc3RzICYmICFtX3JlZlRlc3RzLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgbV90ZXN0cy5jbGVhcigpOwotICAgICAgICAgICAgbV90ZXN0cy5hcHBlbmQobV9y
ZWZUZXN0cyk7Ci0gICAgICAgICAgICBtX3JlZlRlc3RzLmNsZWFyKCk7CisgICAgICAgIG1fdGVz
dHMuY2xlYXIoKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWRUZXN0cy5zaXplKCkgPiAwKSB7Cisg
ICAgICAgICAgICBtX3Rlc3RzLmFwcGVuZChtX2J1ZmZlcmVkVGVzdHMpOworICAgICAgICAgICAg
bV9idWZmZXJlZFRlc3RzLmNsZWFyKCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRUZXN0ID0gbV90
ZXN0cy5iZWdpbigpOwotICAgICAgICAgICAgbV9ydW5uaW5nUmVmVGVzdHMgPSB0cnVlOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgZG9uZURydCgpOwotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgcnVuQ3VycmVudFRlc3QoKTsKICAgICAgICAgfQotICAgIH0gZWxzZQot
ICAgICAgICBtX2N1cnJlbnRUZXN0Kys7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAgICBt
X2N1cnJlbnRUZXN0Kys7CiAgICAgcnVuQ3VycmVudFRlc3QoKTsKIH0KIApAQCAtMzQ2LDIwICsz
MjAsMzUgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6cnVuVGVzdHMoKQogewogICAgIG1fZ2NDb250
cm9sbGVyID0gbmV3IEdDQ29udHJvbGxlcigpOwogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIgPSBuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKLSAgICBnZXRUZXN0c1RvUnVuKCk7
CisgICAgaWYgKCFlbnN1cmVQUFMoKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byBvcGVuIFBQUyBmaWxlICclcycsIGVycm9yPSVkXG4iLCBnZXRQUFNQYXRoKCkuY19zdHIo
KSwgZXJybm8pOworICAgICAgICAobV9wYWdlLT5jbGllbnQoKSktPm5vdGlmeVJ1bkxheW91dFRl
c3RzRmluaXNoZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1haW5GcmFtZSA9
IER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6Y29yZVBhZ2UobV9wYWdlKS0+bWFpbkZyYW1lKCk7CiAK
LSAgICBtX2N1cnJlbnRUZXN0ID0gbV90ZXN0cy5iZWdpbigpOworICAgIC8vIEdldCBUZXN0IGZp
bGUgbmFtZSBmcm9tIFBQUzogL3Bwcy9zZXJ2aWNlcy9kcnQvaW5wdXQKKyAgICAvLyBFeGFtcGxl
OiB0ZXN0X2ZpbGU6OmZhc3QvanMvYXJndW1lbnRzLmh0bWwKKyAgICB3YWl0Rm9yVGVzdCgpOwor
fQogCi0gICAgaWYgKG1fY3VycmVudFRlc3QgPT0gbV90ZXN0cy5lbmQoKSkgewordm9pZCBEdW1w
UmVuZGVyVHJlZTo6YWRkVGVzdChjb25zdCBjaGFyKiB0ZXN0RmlsZSkKK3sKKyAgICBTdHJpbmcg
dGVzdCh0ZXN0RmlsZSk7CisgICAgaWYgKHRlc3QgPT0gIiNET05FIikKICAgICAgICAgZG9uZURy
dCgpOwotICAgICAgICByZXR1cm47CisgICAgZWxzZSBpZiAoIXRlc3QuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChtX3Rlc3RzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gTm8gdGVzdCBp
cyBiZWluZyBydW4sIGluaXRpYWxpemUgaXRlcmF0b3IgYW5kIHN0YXJ0IHRlc3QKKyAgICAgICAg
ICAgIG1fdGVzdHMuYXBwZW5kKHRlc3QpOworICAgICAgICAgICAgbV9jdXJyZW50VGVzdCA9IG1f
dGVzdHMuYmVnaW4oKTsKKyAgICAgICAgICAgIHJ1bkN1cnJlbnRUZXN0KCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgbV9idWZmZXJlZFRlc3RzLmFwcGVuZCh0ZXN0KTsKICAgICB9Ci0g
ICAgcnVuQ3VycmVudFRlc3QoKTsKIH0KIAotCiBTdHJpbmcgRHVtcFJlbmRlclRyZWU6OmR1bXBG
cmFtZXNBc1RleHQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogewogICAgIFN0cmluZyBzOwpAQCAt
Mzk1LDI4ICszODQsNiBAQCBib29sIER1bXBSZW5kZXJUcmVlOjppc0hUVFBUZXN0KGNvbnN0IFN0
cmluZyYgdGVzdCkKICAgICAgICAgICAgICYmIHRlc3RMb3dlci5zdWJzdHJpbmcobGVuSHR0cFRl
c3RTeW50YXgsIHN0cmxlbihsb2NhbFRlc3RTeW50YXgpKSAhPSBsb2NhbFRlc3RTeW50YXg7CiB9
CiAKLXZvaWQgRHVtcFJlbmRlclRyZWU6OmdldFRlc3RzVG9SdW4oKQotewotICAgIFZlY3RvcjxT
dHJpbmc+IGZpbGVzOwotCi0gICAgRklMRSogZmQgPSBmb3BlbihtX2luZGV4RmlsZS51dGY4KCku
ZGF0YSgpLCAiciIpOwotICAgIGZzZWVrKGZkLCAwLCBTRUVLX0VORCk7Ci0gICAgaW50IHNpemUg
PSBmdGVsbChmZCk7Ci0gICAgZnNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKLSAgICBPd25BcnJheVB0
cjxjaGFyPiBidWYgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW3NpemVdKTsKLSAgICBmcmVhZChi
dWYuZ2V0KCksIDEsIHNpemUsIGZkKTsKLSAgICBmY2xvc2UoZmQpOwotICAgIFN0cmluZyBzKGJ1
Zi5nZXQoKSwgc2l6ZSk7Ci0gICAgcy5zcGxpdCgiXG4iLCBmaWxlcyk7Ci0KLSAgICBtX3Rlc3Rz
ID0gZmlsZXM7Ci0KLSAgICAvLyBGaW5kIHJlZi10ZXN0cyBmb3IgZWFjaCBvZiB0aGUgcmVhbCB0
ZXN0cywgb25lIHRlc3QgbWF5IGhhdmUgbXVsdGlwbGUgZXhwZWN0ZWQgcmVmLXRlc3RzCi0gICAg
Ly8gYW5kIG11bHRpcGxlIG1pc21hdGNoIHJlZi10ZXN0cy4KLSAgICBmb3IgKFZlY3RvcjxTdHJp
bmc+OjppdGVyYXRvciBpdGVyID0gZmlsZXMuYmVnaW4oKTsgZmlsZXMuZW5kKCkgIT0gaXRlcjsg
KytpdGVyKQotICAgICAgICBnZXRSZWZUZXN0cygqaXRlcik7Ci19Ci0KIHZvaWQgRHVtcFJlbmRl
clRyZWU6OmludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpCiB7CiAgICAg
bV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5zdG9wKCk7CkBAIC01MTEsNiArNDc4LDkgQEAgc3Rh
dGljIFN0cmluZyBkdW1wQmFja0ZvcndhcmRMaXN0Rm9yV2ViVmlldygpCiAKIHZvaWQgRHVtcFJl
bmRlclRyZWU6OmR1bXAoKQogeworICAgIGlmICh0ZXN0RG9uZSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgaW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCk7CiAKICAgICBT
dHJpbmcgZHVtcEZpbGUgPSBtX3Jlc3VsdHNEaXIgKyAqbV9jdXJyZW50VGVzdCArICIuZHVtcCI7
CkBAIC01MzMsNiArNTAzLDkgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZTo6ZHVtcCgpCiAgICAgU3Ry
aW5nIGNyYXNoRmlsZSA9IGR1bXBGaWxlICsgIi5jcmFzaCI7CiAgICAgdW5saW5rKGNyYXNoRmls
ZS51dGY4KCkuZGF0YSgpKTsKIAorICAgIFN0cmluZyBkb25lRmlsZSA9ICBtX3Jlc3VsdHNEaXIg
KyAqbV9jdXJyZW50VGVzdCArICIuZG9uZSI7CisgICAgY3JlYXRlRmlsZShkb25lRmlsZSk7CisK
ICAgICB0ZXN0RG9uZSA9IHRydWU7CiAgICAgcnVuUmVtYWluaW5nVGVzdHMoKTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFj
a0JlcnJ5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVl
QmxhY2tCZXJyeS5oCmluZGV4IGM2ZWJhOWQuLjRjYTlhM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5LmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZUJsYWNrQmVycnku
aApAQCAtMjEsOSArMjEsMTEgQEAKIAogI2luY2x1ZGUgIkJsYWNrQmVycnlHbG9iYWwuaCIKIAor
CiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVDbGllbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
TGF5b3V0VGVzdC5oPgogI2luY2x1ZGUgPEZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCkBAIC00NSw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgRHVtcFJlbmRlclRyZWUgOiBw
dWJsaWMgQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZUNsaWVudCB7CitjbGFzcyBE
dW1wUmVuZGVyVHJlZSA6IHB1YmxpYyBCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVl
Q2xpZW50LCBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxheW91dFRlc3RDbGllbnQgewog
cHVibGljOgogICAgIER1bXBSZW5kZXJUcmVlKFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5EdW1w
UmVuZGVyVHJlZSgpOwpAQCAtMTA0LDExICsxMDYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGVuYWJsZWQpIHsgc19zZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZW5hYmxlZDsgfQogICAgIGJvb2wgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKIAorICAgIC8v
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCbGFja0JlcnJ5UGxhdGZvcm1MYXlvdXRUZXN0Q2xpZW50
IG1ldGhvZAorICAgIHZpcnR1YWwgdm9pZCBhZGRUZXN0KGNvbnN0IGNoYXIqIHRlc3RGaWxlKTsK
IHByaXZhdGU6CiAgICAgdm9pZCBydW5UZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lk
IHJ1blRlc3RzKCk7CiAgICAgdm9pZCBydW5DdXJyZW50VGVzdCgpOwotICAgIHZvaWQgZ2V0UmVm
VGVzdHMoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSk7CiAKICAgICB2b2lkIHByb2Nlc3NXb3JrKFdl
YkNvcmU6OlRpbWVyPER1bXBSZW5kZXJUcmVlPiopOwogCkBAIC0xMTksNyArMTIyLDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGxvY2F0aW9uQ2hhbmdlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsK
IAogICAgIHZvaWQgZG9uZURydCgpOwotICAgIHZvaWQgZ2V0VGVzdHNUb1J1bigpOwogICAgIGJv
b2wgaXNIVFRQVGVzdChjb25zdCBTdHJpbmcmIHRlc3QpOwogICAgIFN0cmluZyByZW5kZXJUcmVl
RHVtcCgpIGNvbnN0OwogICAgIHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rp
bmcoKTsKQEAgLTEyOSwxMCArMTMxLDkgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+
IG1fdGVzdHM7CiAgICAgVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIG1fY3VycmVudFRlc3Q7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gbV9yZWZUZXN0czsgLy8gUmVmZXJlbmNlIHRlc3RzIGZvciBjdXJy
ZW50IHRlc3QKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2J1ZmZlcmVkVGVzdHM7CiAKICAgICBTdHJp
bmcgbV9yZXN1bHRzRGlyOwotICAgIFN0cmluZyBtX2luZGV4RmlsZTsKICAgICBTdHJpbmcgbV9k
b25lRmlsZTsKICAgICBTdHJpbmcgbV9jdXJyZW50SHR0cFRlc3Q7CiAgICAgU3RyaW5nIG1fY3Vy
cmVudFRlc3RGaWxlOwpAQCAtMTQ2LDcgKzE0Nyw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
YWNjZXB0c0VkaXRpbmc7CiAgICAgYm9vbCBtX2xvYWRGaW5pc2hlZDsKLSAgICBib29sIG1fcnVu
bmluZ1JlZlRlc3RzOwogICAgIHN0YXRpYyBib29sIHNfc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZDsKIH07CiB9Ci0tIAoxLjcuNgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>