<?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>149650</bug_id>
          
          <creation_ts>2015-09-29 15:58:52 -0700</creation_ts>
          <short_desc>WebKitTestRunner fails to apply &quot;useFlexibleViewport&quot; when it&apos;s specified in a file comment</short_desc>
          <delta_ts>2015-09-29 18:29:55 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1129434</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-29 15:58:52 -0700</bug_when>
    <thetext>WebKitTestRunner fails to apply &quot;useFlexibleViewport&quot; when it&apos;s specified in a file comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129435</commentid>
    <comment_count>1</comment_count>
      <attachid>262116</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-29 16:01:21 -0700</bug_when>
    <thetext>Created attachment 262116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129439</commentid>
    <comment_count>2</comment_count>
      <attachid>262119</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-29 16:17:25 -0700</bug_when>
    <thetext>Created attachment 262119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129457</commentid>
    <comment_count>3</comment_count>
      <attachid>262124</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-29 17:32:38 -0700</bug_when>
    <thetext>Created attachment 262124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129458</commentid>
    <comment_count>4</comment_count>
      <attachid>262125</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-29 17:46:32 -0700</bug_when>
    <thetext>Created attachment 262125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129460</commentid>
    <comment_count>5</comment_count>
      <attachid>262126</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-29 17:57:56 -0700</bug_when>
    <thetext>Created attachment 262126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129462</commentid>
    <comment_count>6</comment_count>
      <attachid>262128</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-29 18:04:43 -0700</bug_when>
    <thetext>Created attachment 262128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129463</commentid>
    <comment_count>7</comment_count>
      <attachid>262128</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-29 18:10:57 -0700</bug_when>
    <thetext>Comment on attachment 262128
Patch

Tim reviewed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129465</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-29 18:21:07 -0700</bug_when>
    <thetext>https://trac.webkit.org/r190335</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262116</attachid>
            <date>2015-09-29 16:01:21 -0700</date>
            <delta_ts>2015-09-29 16:17:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149650-20150929160057.patch</filename>
            <type>text/plain</type>
            <size>20237</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMjYwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDhiNDU2ZDRhMjAzMzg2NzAzMTVjNTNmMmYxMGU3NTYz
OWZmZWYxOS4uNjI4NDNiZDAwODU4ZWI5ODk2N2U5NGNhODBhZDhlOTA1NTFiMTg1NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDE1LTA5LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgZmFpbHMgdG8gYXBwbHkgInVzZUZsZXhpYmxlVmll
d3BvcnQiIHdoZW4gaXQncyBzcGVjaWZpZWQgaW4gYSBmaWxlIGNvbW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTY1MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGVzdEludm9jYXRp
b246Omludm9rZSgpIGNvbnN1bHRlZCBzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZSgpLCBidXQg
dGhhdCBvbmx5CisgICAgICAgIGxvb2tzIGF0IHRoZSBmaWxlIHBhdGgsIGFuZCBub3QgdGhlIGN1
c3RvbSBvcHRpb25zIHRoYXQgY29tZSBmcm9tIGZpbGUgY29tbWVudHMuCisgICAgICAgIAorICAg
ICAgICBGaXggYnkgY29tcHV0aW5nIFRlc3RPcHRpb25zIGJlZm9yZSBtYWtpbmcgdGhlIFRlc3RJ
bnZvY2F0aW9uLCBhbmQgc2V0dGluZyB0aGVtCisgICAgICAgIGFzIGNvbnN0IFRlc3RJbnZvY2F0
aW9uIGRhdGEuIFRoaXMgbWVhbnQgY2hhbmdpbmcgdmFyaW91cyBjYWxsIHNpdGVzIHRvIHRha2UK
KyAgICAgICAgdGhlIHN0ZDo6c3RyaW5nIHBhdGhPclVSTCwgcmF0aGVyIHRoYW4gdGhlIFRlc3RJ
bnZvY2F0aW9uIGl0c2VsZi4KKyAgICAgICAgCisgICAgICAgIEFsc28gaW5pdGlhbGl6ZSBUZXN0
SW52b2NhdGlvbiB3aXRoIGEgV0tVUkxSZWYsIHJhdGhlciB0aGFuIGEgc3RkOjpzdHJpbmcuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QpOgorICAgICAgICAoV1RS
Ojp0ZXN0UGF0aCk6CisgICAgICAgIChXVFI6OmNyZWF0ZVRlc3RVUkwpOgorICAgICAgICAoV1RS
Ojp1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjp1cGRhdGVXZWJWaWV3U2l6ZUZvclRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6dXBkYXRlV2luZG93U2NhbGVGb3JUZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisgICAgICAgIChXVFI6OmNyZWF0ZVdLVVJMKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3VsZE1ha2VWaWV3cG9y
dEZsZXhpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3Vs
ZFVzZUZpeGVkTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmg6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpvcHRpb25zKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmg6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW06Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9w
dGlvbnNGb3JUZXN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3Jt
U3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QpOgorCiAyMDE1LTA5LTI1ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgV0syXSBBZGQgdmlld3Bv
cnQgdGVzdHMgYW5kIGZpeCBydW5VSVNjcmlwdCgpIHRpbWluZyBpc3N1ZXMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDYzZDlmMDAxNzQ2ODcyNzRjZTc1MGNlYTM5OTRl
MmJmZDdkZWIzNjYuLmI4MTM3N2E2ZGJiMzk3MWJlM2Q1N2U1NjI4NTdiYzBhMTQ5OGMyZmYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dApAQCAtMTIsNiArMTIsNyBAQCBzZXQo
V2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1Bp
eGVsRHVtcFN1cHBvcnQuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1Rlc3RDb250
cm9sbGVyLmNwcAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9UZXN0SW52b2NhdGlvbi5j
cHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdE9wdGlvbnMuY3BwCiAgICAgJHtX
RUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAogICAgICR7
V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9Xb3JrUXVldWVNYW5hZ2VyLmNwcAogICAgICR7V0VCS0lU
X1RFU1RSVU5ORVJfVUlTQ1JJUFRDT05URVhUX0RJUn0vVUlTY3JpcHRDb250ZXh0LmNwcApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAxNDQ5ZTQ1YzhmZGU2
ODEzMzJiZDkxZGNiY2FkNDkyN2ZjOGNjZGFmLi5kYzgyMmUyOWRlNmE4ZmI1ZTMzNzA4ZWRkZjM4
NWEzNjc1NDIwYzgyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdX
aXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIAogdm9pZCBUZXN0Q29udHJv
bGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRp
b24mIHRlc3QpCiB7Ci0gICAgYXV0byBvcHRpb25zID0gdGVzdE9wdGlvbnNGb3JUZXN0KHRlc3Qp
OworICAgIGF1dG8gb3B0aW9ucyA9IHRlc3Qub3B0aW9ucygpOwogCiAgICAgaWYgKG1fbWFpbldl
YlZpZXcpIHsKICAgICAgICAgaWYgKG1fbWFpbldlYlZpZXctPnZpZXdTdXBwb3J0c09wdGlvbnMo
b3B0aW9ucykpCkBAIC04MDcsNyArODA3LDcgQEAgY29uc3QgY2hhciogVGVzdENvbnRyb2xsZXI6
Om5ldHdvcmtQcm9jZXNzTmFtZSgpCiAjZW5kaWYKIH0KIAotc3RhdGljIHN0ZDo6c3RyaW5nIHRl
c3RQYXRoKGNvbnN0IFdLVVJMUmVmIHVybCkKK3N0YXRpYyBzdGQ6OnN0cmluZyB0ZXN0UGF0aChX
S1VSTFJlZiB1cmwpCiB7CiAgICAgYXV0byBzY2hlbWUgPSBhZG9wdFdLKFdLVVJMQ29weVNjaGVt
ZSh1cmwpKTsKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZ0lnbm9yaW5nQ2Fz
ZShzY2hlbWUuZ2V0KCksICJmaWxlIikpIHsKQEAgLTgxOSw2ICs4MTksMzkgQEAgc3RhdGljIHN0
ZDo6c3RyaW5nIHRlc3RQYXRoKGNvbnN0IFdLVVJMUmVmIHVybCkKICAgICByZXR1cm4gc3RkOjpz
dHJpbmcoKTsKIH0KIAorc3RhdGljIFdLVVJMUmVmIGNyZWF0ZVRlc3RVUkwoY29uc3QgY2hhciog
cGF0aE9yVVJMKQoreworICAgIGlmIChzdHJzdHIocGF0aE9yVVJMLCAiaHR0cDovLyIpIHx8IHN0
cnN0cihwYXRoT3JVUkwsICJodHRwczovLyIpIHx8IHN0cnN0cihwYXRoT3JVUkwsICJmaWxlOi8v
IikpCisgICAgICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhwYXRoT3JVUkwp
OworCisgICAgLy8gQ3JlYXRpbmcgZnJvbSBmaWxlc3l0ZW0gcGF0aC4KKyAgICBzaXplX3QgbGVu
Z3RoID0gc3RybGVuKHBhdGhPclVSTCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVy
biAwOworCisgICAgY29uc3QgY2hhciBzZXBhcmF0b3IgPSAnLyc7CisgICAgYm9vbCBpc0Fic29s
dXRlUGF0aCA9IHBhdGhPclVSTFswXSA9PSBzZXBhcmF0b3I7CisgICAgY29uc3QgY2hhciogZmls
ZVByZWZpeCA9ICJmaWxlOi8vIjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZpeExlbmd0
aCA9IHN0cmxlbihmaWxlUHJlZml4KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGJ1
ZmZlcjsKKyAgICBpZiAoaXNBYnNvbHV0ZVBhdGgpIHsKKyAgICAgICAgYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOworICAgICAgICBz
dHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKKyAgICAgICAgc3RyY3B5KGJ1ZmZlci5n
ZXQoKSArIHByZWZpeExlbmd0aCwgcGF0aE9yVVJMKTsKKyAgICB9IGVsc2UgeworICAgICAgICBi
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgUEFUSF9NQVgg
KyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhlIHNlcGFyYXRvcgorICAgICAgICBzdHJjcHkoYnVm
ZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKKyAgICAgICAgaWYgKCFnZXRjd2QoYnVmZmVyLmdldCgp
ICsgcHJlZml4TGVuZ3RoLCBQQVRIX01BWCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgc2l6ZV90IG51bUNoYXJhY3RlcnMgPSBzdHJsZW4oYnVmZmVyLmdldCgpKTsKKyAgICAgICAg
YnVmZmVyW251bUNoYXJhY3RlcnNdID0gc2VwYXJhdG9yOworICAgICAgICBzdHJjcHkoYnVmZmVy
LmdldCgpICsgbnVtQ2hhcmFjdGVycyArIDEsIHBhdGhPclVSTCk7CisgICAgfQorCisgICAgcmV0
dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1ZmZlci5nZXQoKSk7Cit9CisKIHN0YXRp
YyBib29sIHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJ0cnVlIikKQEAgLTgzMCw5ICs4NjMsMTEgQEAgc3Rh
dGljIGJvb2wgcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiB2
YWx1ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIHVwZGF0ZVRlc3RPcHRp
b25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25zLCBjb25zdCBUZXN0SW52
b2NhdGlvbiYgdGVzdCkKK3N0YXRpYyB2b2lkIHVwZGF0ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWFk
ZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25zLCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJM
KQogewotICAgIHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0gdGVzdFBhdGgodGVzdC51cmwoKSk7Cisg
ICAgLy8gR3Jvc3MuIE5lZWQgdG8gcmVkdWNlIGNvbnZlcnNpb25zIGJldHdlZW4gYWxsIHRoZSBz
dHJpbmcgdHlwZXMgYW5kIFVSTHMuCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrVVJMKEFk
b3B0V0ssIGNyZWF0ZVRlc3RVUkwocGF0aE9yVVJMLmNfc3RyKCkpKTsKKyAgICBzdGQ6OnN0cmlu
ZyBmaWxlbmFtZSA9IHRlc3RQYXRoKHdrVVJMLmdldCgpKTsKICAgICBpZiAoZmlsZW5hbWUuZW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04NzQsMjkgKzkwOSwyNCBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKFRlc3RPcHRpb25zJiB0ZXN0T3B0aW9u
cywgY29uc3QgVGVzdAogICAgIH0KIH0KIAotVGVzdE9wdGlvbnMgVGVzdENvbnRyb2xsZXI6OnRl
c3RPcHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkgY29uc3QKK1Rlc3RP
cHRpb25zIFRlc3RDb250cm9sbGVyOjp0ZXN0T3B0aW9uc0ZvclRlc3QoY29uc3Qgc3RkOjpzdHJp
bmcmIHBhdGhPclVSTCkgY29uc3QKIHsKLSAgICBUZXN0T3B0aW9ucyBvcHRpb25zOworICAgIFRl
c3RPcHRpb25zIG9wdGlvbnMocGF0aE9yVVJMKTsKIAogICAgIG9wdGlvbnMudXNlUmVtb3RlTGF5
ZXJUcmVlID0gbV9zaG91bGRVc2VSZW1vdGVMYXllclRyZWU7CiAgICAgb3B0aW9ucy5zaG91bGRT
aG93V2ViVmlldyA9IG1fc2hvdWxkU2hvd1dlYlZpZXc7Ci0gICAgb3B0aW9ucy51c2VGaXhlZExh
eW91dCA9IHRlc3Quc2hvdWxkVXNlRml4ZWRMYXlvdXQoKTsKLSAgICBvcHRpb25zLnVzZUZsZXhp
YmxlVmlld3BvcnQgPSB0ZXN0LnNob3VsZE1ha2VWaWV3cG9ydEZsZXhpYmxlKCk7Ci0KLSAgICB1
cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KG9wdGlvbnMsIHRlc3QpOwog
Ci0gICAgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihvcHRpb25zLCB0ZXN0KTsKKyAg
ICB1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KG9wdGlvbnMsIHBhdGhP
clVSTCk7CisgICAgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihvcHRpb25zLCBwYXRo
T3JVUkwpOwogCiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6
OnVwZGF0ZVdlYlZpZXdTaXplRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIHsK
LSAgICBib29sIGlzU1ZHVzNDVGVzdCA9IHRlc3QudXJsQ29udGFpbnMoInN2Zy9XM0MtU1ZHLTEu
MSIpIHx8IHRlc3QudXJsQ29udGFpbnMoInN2Z1xcVzNDLVNWRy0xLjEiKTsKLQogICAgIHVuc2ln
bmVkIHdpZHRoID0gdmlld1dpZHRoOwogICAgIHVuc2lnbmVkIGhlaWdodCA9IHZpZXdIZWlnaHQ7
Ci0gICAgaWYgKGlzU1ZHVzNDVGVzdCkgeworICAgIGlmICh0ZXN0Lm9wdGlvbnMoKS5pc1NWR1Rl
c3QpIHsKICAgICAgICAgd2lkdGggPSB3M2NTVkdWaWV3V2lkdGg7CiAgICAgICAgIGhlaWdodCA9
IHczY1NWR1ZpZXdIZWlnaHQ7CiAgICAgfQpAQCAtOTA2LDggKzkzNiw3IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnVwZGF0ZVdlYlZpZXdTaXplRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYg
dGVzdCkKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlV2luZG93U2NhbGVGb3JUZXN0KFBs
YXRmb3JtV2ViVmlldyogdmlldywgY29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QpCiB7Ci0gICAg
Ym9vbCBuZWVkc0hpZ2hEUElXaW5kb3cgPSB0ZXN0LnVybENvbnRhaW5zKCIvaGlkcGktIik7Ci0g
ICAgdmlldy0+Y2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZChuZWVkc0hpZ2hEUElXaW5kb3cgPyAy
IDogMSk7CisgICAgdmlldy0+Y2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZCh0ZXN0Lm9wdGlvbnMo
KS5pc0hpRFBJVGVzdCA/IDIgOiAxKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29uZmln
dXJlVmlld0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QpCkBAIC0xMDA5LDggKzEw
MzgsMTIgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cnVuVGVzdChjb25zdCBjaGFyKiBpbnB1dExp
bmUpCiAgICAgVGVzdENvbW1hbmQgY29tbWFuZCA9IHBhcnNlSW5wdXRMaW5lKHN0ZDo6c3RyaW5n
KGlucHV0TGluZSkpOwogCiAgICAgbV9zdGF0ZSA9IFJ1bm5pbmdUZXN0OworICAgIAorICAgIFRl
c3RPcHRpb25zIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QoY29tbWFuZC5wYXRoT3JVUkwp
OworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrVVJMKEFkb3B0V0ssIGNyZWF0ZVRlc3RV
UkwoY29tbWFuZC5wYXRoT3JVUkwuY19zdHIoKSkpOworICAgIG1fY3VycmVudEludm9jYXRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VSTC5nZXQoKSwgb3B0aW9ucyk7
CiAKLSAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0SW52b2Nh
dGlvbj4oY29tbWFuZC5wYXRoT3JVUkwpOwogICAgIGlmIChjb21tYW5kLnNob3VsZER1bXBQaXhl
bHMgfHwgbV9zaG91bGREdW1wUGl4ZWxzRm9yQWxsVGVzdHMpCiAgICAgICAgIG1fY3VycmVudElu
dm9jYXRpb24tPnNldElzUGl4ZWxUZXN0KGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAg
IGlmIChjb21tYW5kLnRpbWVvdXQgPiAwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCmluZGV4IGE2ZDlhZjVmMDdmOGUyNDdhYjliZDdjYTRjNmIxMmMwYTdiMzRkZGEuLmU5
ZDliNmY5NzlmNGFmNGFkM2NmNDlmNDY0ZjA2ZGIxNDJiNGQ4NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTE1OCw4ICsxNTgsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgaW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJlY3RvcnkoKTsKIAogICAgIHZvaWQgZW5zdXJl
Vmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKTsKLSAgICBU
ZXN0T3B0aW9ucyB0ZXN0T3B0aW9uc0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKSBjb25z
dDsKLSAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QoVGVz
dE9wdGlvbnMmLCBjb25zdCBUZXN0SW52b2NhdGlvbiYpIGNvbnN0OworICAgIFRlc3RPcHRpb25z
IHRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKSBjb25zdDsK
KyAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QoVGVzdE9w
dGlvbnMmLCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKSBjb25zdDsKIAogICAgIHZvaWQg
dXBkYXRlV2ViVmlld1NpemVGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJik7CiAgICAgdm9p
ZCB1cGRhdGVXaW5kb3dTY2FsZUZvclRlc3QoUGxhdGZvcm1XZWJWaWV3KiwgY29uc3QgVGVzdElu
dm9jYXRpb24mKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5k
ZXggYzMxNzM4M2Q2MWI4MTFmN2FiYzM1MGEyOTY4ODJkMjliNDVhOTUwNC4uZWY2ZjU5MzlkNjc4
M2I0ZmVjYjA1NWU2YjA3Y2IwYTk3Mzg2YTQzNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKQEAgLTU5LDQ4ICs1OSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgV0tVUkxSZWYgY3JlYXRlV0tVUkwoY29uc3Qg
Y2hhciogcGF0aE9yVVJMKQotewotICAgIGlmIChzdHJzdHIocGF0aE9yVVJMLCAiaHR0cDovLyIp
IHx8IHN0cnN0cihwYXRoT3JVUkwsICJodHRwczovLyIpIHx8IHN0cnN0cihwYXRoT3JVUkwsICJm
aWxlOi8vIikpCi0gICAgICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhwYXRo
T3JVUkwpOwotCi0gICAgLy8gQ3JlYXRpbmcgZnJvbSBmaWxlc3l0ZW0gcGF0aC4KLSAgICBzaXpl
X3QgbGVuZ3RoID0gc3RybGVuKHBhdGhPclVSTCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgY29uc3QgY2hhciBzZXBhcmF0b3IgPSAnLyc7Ci0gICAgYm9vbCBp
c0Fic29sdXRlUGF0aCA9IHBhdGhPclVSTFswXSA9PSBzZXBhcmF0b3I7Ci0gICAgY29uc3QgY2hh
ciogZmlsZVByZWZpeCA9ICJmaWxlOi8vIjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZp
eExlbmd0aCA9IHN0cmxlbihmaWxlUHJlZml4KTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFy
W10+IGJ1ZmZlcjsKLSAgICBpZiAoaXNBYnNvbHV0ZVBhdGgpIHsKLSAgICAgICAgYnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOwotICAg
ICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKLSAgICAgICAgc3RyY3B5KGJ1
ZmZlci5nZXQoKSArIHByZWZpeExlbmd0aCwgcGF0aE9yVVJMKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgUEFU
SF9NQVggKyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhlIHNlcGFyYXRvcgotICAgICAgICBzdHJj
cHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKLSAgICAgICAgaWYgKCFnZXRjd2QoYnVmZmVy
LmdldCgpICsgcHJlZml4TGVuZ3RoLCBQQVRIX01BWCkpCi0gICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgc2l6ZV90IG51bUNoYXJhY3RlcnMgPSBzdHJsZW4oYnVmZmVyLmdldCgpKTsKLSAg
ICAgICAgYnVmZmVyW251bUNoYXJhY3RlcnNdID0gc2VwYXJhdG9yOwotICAgICAgICBzdHJjcHko
YnVmZmVyLmdldCgpICsgbnVtQ2hhcmFjdGVycyArIDEsIHBhdGhPclVSTCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1ZmZlci5nZXQoKSk7Ci19Ci0K
LVRlc3RJbnZvY2F0aW9uOjpUZXN0SW52b2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9y
VVJMKQotICAgIDogbV91cmwoQWRvcHRXSywgY3JlYXRlV0tVUkwocGF0aE9yVVJMLmNfc3RyKCkp
KQotICAgICwgbV9kdW1wUGl4ZWxzKGZhbHNlKQotICAgICwgbV90aW1lb3V0KDApCi0gICAgLCBt
X2dvdEluaXRpYWxSZXNwb25zZShmYWxzZSkKLSAgICAsIG1fZ290RmluYWxNZXNzYWdlKGZhbHNl
KQotICAgICwgbV9nb3RSZXBhaW50KGZhbHNlKQotICAgICwgbV9lcnJvcihmYWxzZSkKLSAgICAs
IG1fd2ViUHJvY2Vzc0lzVW5yZXNwb25zaXZlKGZhbHNlKQorVGVzdEludm9jYXRpb246OlRlc3RJ
bnZvY2F0aW9uKFdLVVJMUmVmIHVybCwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCisgICAg
OiBtX29wdGlvbnMob3B0aW9ucykKKyAgICAsIG1fdXJsKHVybCkKIHsKICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcobV91cmwu
Z2V0KCkpKTsKIApAQCAtMTQ0LDIxICsxMDUsNiBAQCBib29sIFRlc3RJbnZvY2F0aW9uOjpzaG91
bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tzKCkgY29uc3QKICAgICByZXR1cm4gdXJsQ29udGFp
bnMoImdsb2JhbGhpc3RvcnkvIik7CiB9CiAKLWJvb2wgVGVzdEludm9jYXRpb246OnNob3VsZE1h
a2VWaWV3cG9ydEZsZXhpYmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdXJsQ29udGFpbnMoInZp
ZXdwb3J0LyIpOwotfQotCi1ib29sIFRlc3RJbnZvY2F0aW9uOjpzaG91bGRVc2VGaXhlZExheW91
dCgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKLSAgICBpZiAo
dXJsQ29udGFpbnMoImRldmljZS1hZGFwdC8iKSB8fCB1cmxDb250YWlucygiZGV2aWNlLWFkYXB0
XFwiKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKIHsKICAgICBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuY29uZmlndXJlVmlld0ZvclRlc3QoKnRoaXMpOwpAQCAtMTgxLDcgKzEy
Nyw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgpCiAgICAgV0tEaWN0aW9uYXJ5U2V0
SXRlbShiZWdpblRlc3RNZXNzYWdlQm9keS5nZXQoKSwgZHVtcEZyYW1lTG9hZERlbGVnYXRlc0tl
eS5nZXQoKSwgZHVtcEZyYW1lTG9hZERlbGVnYXRlc1ZhbHVlLmdldCgpKTsKIAogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VGbGV4aWJsZVZpZXdwb3J0S2V5ID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlRmxleGlibGVWaWV3cG9ydCIpKTsKLSAgICBX
S1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IHVzZUZsZXhpYmxlVmlld3BvcnRWYWx1ZSA9IGFkb3B0
V0soV0tCb29sZWFuQ3JlYXRlKHNob3VsZE1ha2VWaWV3cG9ydEZsZXhpYmxlKCkpKTsKKyAgICBX
S1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IHVzZUZsZXhpYmxlVmlld3BvcnRWYWx1ZSA9IGFkb3B0
V0soV0tCb29sZWFuQ3JlYXRlKG9wdGlvbnMoKS51c2VGbGV4aWJsZVZpZXdwb3J0KSk7CiAgICAg
V0tEaWN0aW9uYXJ5U2V0SXRlbShiZWdpblRlc3RNZXNzYWdlQm9keS5nZXQoKSwgdXNlRmxleGli
bGVWaWV3cG9ydEtleS5nZXQoKSwgdXNlRmxleGlibGVWaWV3cG9ydFZhbHVlLmdldCgpKTsKIAog
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkdW1wUGl4ZWxzS2V5ID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRHVtcFBpeGVscyIpKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCA0ZmIzMDMyZjY2ZjBmYzE0N2EyNWVmMTUyNmVj
NzMxMDEzNDc4NmQ2Li4yNWY4NGEzZWRkMTlhNDc5NjJmNDA1NmJjMzcyNGY5MDNhNjM1MTgxIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC0yNyw4ICsyNyw4IEBA
CiAjZGVmaW5lIFRlc3RJbnZvY2F0aW9uX2gKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCisj
aW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKICNpbmNsdWRlICJVSVNjcmlwdENvbnRleHQuaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KQEAgLTM5LDExICszOSwxMyBAQCBuYW1lc3BhY2UgV1RSIHsKIGNsYXNzIFRlc3RJbnZv
Y2F0aW9uIDogcHVibGljIFVJU2NyaXB0Q29udGV4dERlbGVnYXRlIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShUZXN0SW52b2NhdGlvbik7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGVzdElu
dm9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVSTCk7CisgICAgZXhwbGljaXQgVGVz
dEludm9jYXRpb24oV0tVUkxSZWYsIGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgflRlc3RJbnZv
Y2F0aW9uKCk7CiAKICAgICBXS1VSTFJlZiB1cmwoKSBjb25zdDsKICAgICBib29sIHVybENvbnRh
aW5zKGNvbnN0IGNoYXIqKSBjb25zdDsKKyAgICAKKyAgICBjb25zdCBUZXN0T3B0aW9ucyYgb3B0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiAgICAgdm9pZCBzZXRJc1BpeGVs
VGVzdChjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhhc2gpOwogCkBAIC04OSwyNiAr
OTEsMjkgQEAgcHJpdmF0ZToKICAgICAvLyBVSVNjcmlwdENvbnRleHREZWxlZ2F0ZQogICAgIHZv
aWQgdWlTY3JpcHREaWRDb21wbGV0ZShXS1N0cmluZ1JlZiByZXN1bHQsIHVuc2lnbmVkIGNhbGxi
YWNrSUQpIG92ZXJyaWRlOwogCisgICAgY29uc3QgVGVzdE9wdGlvbnMgbV9vcHRpb25zOworICAg
IAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBtX3VybDsKICAgICBXVEY6OlN0cmluZyBtX3Vy
bFN0cmluZzsKIAotICAgIGJvb2wgbV9kdW1wUGl4ZWxzOwogICAgIHN0ZDo6c3RyaW5nIG1fZXhw
ZWN0ZWRQaXhlbEhhc2g7CiAKLSAgICBpbnQgbV90aW1lb3V0OworICAgIGludCBtX3RpbWVvdXQg
eyAwIH07CiAKICAgICAvLyBJbnZvY2F0aW9uIHN0YXRlCi0gICAgYm9vbCBtX2dvdEluaXRpYWxS
ZXNwb25zZTsKLSAgICBib29sIG1fZ290RmluYWxNZXNzYWdlOwotICAgIGJvb2wgbV9nb3RSZXBh
aW50OwotICAgIGJvb2wgbV9lcnJvcjsKKyAgICBib29sIG1fZ290SW5pdGlhbFJlc3BvbnNlIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fZ290RmluYWxNZXNzYWdlIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fZ290UmVwYWludCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Vycm9yIHsgZmFsc2UgfTsKKwor
ICAgIGJvb2wgbV9kdW1wUGl4ZWxzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2ViUHJvY2Vzc0lz
VW5yZXNwb25zaXZlIHsgZmFsc2UgfTsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV90ZXh0T3V0cHV0
OwogICAgIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFp
blB0cjxXS0ltYWdlUmVmPiBtX3BpeGVsUmVzdWx0OwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlS
ZWY+IG1fcmVwYWludFJlY3RzOwogICAgIHN0ZDo6c3RyaW5nIG1fZXJyb3JNZXNzYWdlOwotICAg
IGJvb2wgbV93ZWJQcm9jZXNzSXNVbnJlc3BvbnNpdmU7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFVJU2NyaXB0Q29udGV4dD4gbV9VSVNjcmlwdENvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdE9wdGlvbnMuaAppbmRleCA1M2Q3ZDI4YzE1YjkzNjQ2M2RjMWUxN2Q2NTBjMjBmMjIw
MDU5MTlhLi42ZDljYjQwN2RiMDIwMmVjMjYxN2E0MWVhZDAyNmY3MWVkNDEyMDA0IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCkBAIC0zNyw3ICszNywxMiBAQCBzdHJ1Y3QgVGVz
dE9wdGlvbnMgewogICAgIGJvb2wgc2hvdWxkU2hvd1dlYlZpZXcgeyBmYWxzZSB9OwogICAgIGJv
b2wgdXNlRmxleGlibGVWaWV3cG9ydCB7IGZhbHNlIH07CiAgICAgYm9vbCB1c2VGaXhlZExheW91
dCB7IGZhbHNlIH07CisgICAgYm9vbCBpc1NWR1Rlc3QgeyBmYWxzZSB9OworICAgIGJvb2wgaXNI
aURQSVRlc3QgeyBmYWxzZSB9OworCiAgICAgVmVjdG9yPFN0cmluZz4gb3ZlcnJpZGVMYW5ndWFn
ZXM7CisgICAgCisgICAgVGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVSTCk7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RS
dW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE0NDRhOThm
ZjU3ODgzNjg3Yzk4ZWU5MDFjYWI4ODdiMDM2MmNkYWUuLmIxYzg5MGJiNzNlMTY2ZTZjMGIxZTc1
MzE5NGZkODY2ZmExNDhkYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2Vi
S2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zNCw2ICszNCw3IEBACiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJCTBG
NTE2OUNDMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MTY5Q0ExNDQ1MjIyRDAwRTBB
OUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgKi87IH07CisJCTBGNjIyQ0U5MUJCQjNBMUEwMDgzOEFE
MyAvKiBUZXN0T3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjYyMkNFODFCQkIzQTFBMDA4MzhBRDMgLyogVGVzdE9wdGlvbnMuY3BwICov
OyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CiAJCTBGNzNCNTUxMUJBNzg5Njgw
MDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjczQjU0RjFCQTc4OTY4MDA0QjNFRjQgLyogSlNV
SVNjcmlwdENvbnRyb2xsZXIuY3BwICovOyB9OwogCQkwRjczQjU1MjFCQTc4OTY4MDA0QjNFRjQg
LyogSlNVSVNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNzNCNTUwMUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29u
dHJvbGxlci5oICovOyB9OwogCQkwRjczQjU1QTFCQTc5MkZGMDA0QjNFRjQgLyogSlNXcmFwcGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTUy
QzBDMTFGM0I5NjUwMDMzOThCNCAvKiBKU1dyYXBwZXIuY3BwICovOyB9OwpAQCAtMTcwLDYgKzE3
MSw3IEBACiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMEYyMTA5Qzcx
ODlDNjUwRDAwRjg3OUEzIC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFz
ZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1MTY5Q0Ex
NDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IFdl
YktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBG
NjIyQ0U4MUJCQjNBMUEwMDgzOEFEMyAvKiBUZXN0T3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0T3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNzNCNTRGMUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29udHJv
bGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1VJU2NyaXB0
Q29udHJvbGxlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pT
VUlTY3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJMEY3M0I1NTAxQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTVUlTY3JpcHRDb250cm9sbGVyLmg7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVubmVyL0pTVUlTY3JpcHRDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTBGNzNCNTU3MUJB
NzkyOUUwMDRCM0VGNCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFt
ZSA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsK
QEAgLTQwNiw2ICs0MDgsNyBAQAogCQkJCUJDNzkzNDJGMTE4RjdGMTkwMDVFQThFMiAvKiBUZXN0
Q29udHJvbGxlci5oICovLAogCQkJCUJDRDdEMkY3MTE5MjEyNzgwMDZEQjdFRSAvKiBUZXN0SW52
b2NhdGlvbi5jcHAgKi8sCiAJCQkJQkNEN0QyRjYxMTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZv
Y2F0aW9uLmggKi8sCisJCQkJMEY2MjJDRTgxQkJCM0ExQTAwODM4QUQzIC8qIFRlc3RPcHRpb25z
LmNwcCAqLywKIAkJCQkxQTMzMjYwNTFCNzUzOTY1MDBGODlGNjIgLyogVGVzdE9wdGlvbnMuaCAq
LywKIAkJCQlCQzI1MUExNzExRDE2Nzc0MDAyRUJDMDEgLyogV2ViS2l0VGVzdFJ1bm5lclByZWZp
eC5oICovLAogCQkJCTMxNjRDOEVGMTVEMUFEQTEwMEVGMUZFMCAvKiBXZWJOb3RpZmljYXRpb25Q
cm92aWRlci5jcHAgKi8sCkBAIC05MzUsNiArOTM4LDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTBGNjIyQ0U5MUJCQjNBMUEwMDgzOEFEMyAvKiBUZXN0T3B0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjczQjU1QTFCQTc5MkZGMDA0QjNFRjQgLyogSlNXcmFwcGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExODUxMDQ0MUI5QUUxNEEwMDc0NEFFQiAvKiBXb3JrUXVldWVN
YW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExODUxMDNGMUI5QUUxMjkwMDc0NEFFQiAv
KiBHZW9sb2NhdGlvblByb3ZpZGVyTW9jay5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KaW5kZXggMzFhZGFjMDVm
NjQ5MDRiODU1MTI1YjcyMDE0OWM1MGRlOGU4NzRkMy4uYWYwODA0ZjAxZTJmMzZmMTMxMmNmYzc1
MGVlZGEyOWMxYWY0ZDg2MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VGVzdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVz
dENvbnRyb2xsZXJJT1MubW0KQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1Db25maWd1cmVWaWV3Rm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkK
ICAgICB9CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNU
ZXN0T3B0aW9uc0ZvclRlc3QoVGVzdE9wdGlvbnMmLCBjb25zdCBUZXN0SW52b2NhdGlvbiYpIGNv
bnN0Cit2b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlv
bnNGb3JUZXN0KFRlc3RPcHRpb25zJiwgY29uc3Qgc3RkOjpzdHJpbmcmKSBjb25zdAogewogfQog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1h
Yy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IDJjYWMwN2ZkOTJlMGZiM2Y3ZGZlMmY4ZTg3ODc1ZmFlY2I5MWY0YmEuLmE1MTYzMjhhZWQ4
NDQwNjg5MjkwOTBlNDEwOTgwN2UzNDhkMTgwNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcygpCiAgICAg
fQogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9w
dGlvbnNGb3JUZXN0KFRlc3RPcHRpb25zJiBvcHRpb25zLCBjb25zdCBUZXN0SW52b2NhdGlvbiYg
dGVzdCkgY29uc3QKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNU
ZXN0T3B0aW9uc0ZvclRlc3QoVGVzdE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IHN0ZDo6c3RyaW5n
JikgY29uc3QKIHsKICAgICBvcHRpb25zLnVzZVRocmVhZGVkU2Nyb2xsaW5nID0gdHJ1ZTsKICAg
ICBvcHRpb25zLnVzZVJlbW90ZUxheWVyVHJlZSA9IHNob3VsZFVzZVJlbW90ZUxheWVyVHJlZSgp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262119</attachid>
            <date>2015-09-29 16:17:25 -0700</date>
            <delta_ts>2015-09-29 17:32:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149650-20150929161701.patch</filename>
            <type>text/plain</type>
            <size>20315</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjIxOTA1MGYxZDhjNDU1MTFiY2NiYTRhOGM0YzUzNTk4
MmRlNjk4OS4uM2Q4NjU0MzYxYzUzMmRmYWMzYjQwOTBjMDMxMDAwYjZmOWZjNDM4NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDE1LTA5LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgZmFpbHMgdG8gYXBwbHkgInVzZUZsZXhpYmxlVmll
d3BvcnQiIHdoZW4gaXQncyBzcGVjaWZpZWQgaW4gYSBmaWxlIGNvbW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTY1MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGVzdEludm9jYXRp
b246Omludm9rZSgpIGNvbnN1bHRlZCBzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZSgpLCBidXQg
dGhhdCBvbmx5CisgICAgICAgIGxvb2tzIGF0IHRoZSBmaWxlIHBhdGgsIGFuZCBub3QgdGhlIGN1
c3RvbSBvcHRpb25zIHRoYXQgY29tZSBmcm9tIGZpbGUgY29tbWVudHMuCisgICAgICAgIAorICAg
ICAgICBGaXggYnkgY29tcHV0aW5nIFRlc3RPcHRpb25zIGJlZm9yZSBtYWtpbmcgdGhlIFRlc3RJ
bnZvY2F0aW9uLCBhbmQgc2V0dGluZyB0aGVtCisgICAgICAgIGFzIGNvbnN0IFRlc3RJbnZvY2F0
aW9uIGRhdGEuIFRoaXMgbWVhbnQgY2hhbmdpbmcgdmFyaW91cyBjYWxsIHNpdGVzIHRvIHRha2UK
KyAgICAgICAgdGhlIHN0ZDo6c3RyaW5nIHBhdGhPclVSTCwgcmF0aGVyIHRoYW4gdGhlIFRlc3RJ
bnZvY2F0aW9uIGl0c2VsZi4KKyAgICAgICAgCisgICAgICAgIEFsc28gaW5pdGlhbGl6ZSBUZXN0
SW52b2NhdGlvbiB3aXRoIGEgV0tVUkxSZWYsIHJhdGhlciB0aGFuIGEgc3RkOjpzdHJpbmcuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QpOgorICAgICAgICAoV1RS
Ojp0ZXN0UGF0aCk6CisgICAgICAgIChXVFI6OmNyZWF0ZVRlc3RVUkwpOgorICAgICAgICAoV1RS
Ojp1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjp1cGRhdGVXZWJWaWV3U2l6ZUZvclRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6dXBkYXRlV2luZG93U2NhbGVGb3JUZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisgICAgICAgIChXVFI6OmNyZWF0ZVdLVVJMKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3VsZE1ha2VWaWV3cG9y
dEZsZXhpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3Vs
ZFVzZUZpeGVkTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmg6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpvcHRpb25zKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmg6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW06Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9w
dGlvbnNGb3JUZXN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3Jt
U3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QpOgorCiAyMDE1LTA5LTI5ICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIEFsbG93ICdwcmVwYXJlLUNo
YW5nZUxvZycgdG8gYmUgdXNlZCB3aXRob3V0IEN5Z3dpbgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01h
a2VMaXN0cy50eHQKaW5kZXggNjNkOWYwMDE3NDY4NzI3NGNlNzUwY2VhMzk5NGUyYmZkN2RlYjM2
Ni4uYjgxMzc3YTZkYmIzOTcxYmUzZDU3ZTU2Mjg1N2JjMGExNDk4YzJmZiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0xMiw2ICsxMiw3IEBAIHNldChXZWJLaXRUZXN0
UnVubmVyX1NPVVJDRVMKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vUGl4ZWxEdW1wU3Vw
cG9ydC5jcHAKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdENvbnRyb2xsZXIuY3Bw
CiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1Rlc3RJbnZvY2F0aW9uLmNwcAorICAgICR7
V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9UZXN0T3B0aW9ucy5jcHAKICAgICAke1dFQktJVF9URVNU
UlVOTkVSX0RJUn0vV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCiAgICAgJHtXRUJLSVRfVEVT
VFJVTk5FUl9ESVJ9L1dvcmtRdWV1ZU1hbmFnZXIuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5F
Ul9VSVNDUklQVENPTlRFWFRfRElSfS9VSVNjcmlwdENvbnRleHQuY3BwCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDVlN2E1Njg0MzEzNDM4NmE4ODJhNDkz
NTAzYTQxZWVhYjBmN2I2NjAuLjU4MmQ4Yjc0ZmU0Yzc3YjgxMmI4N2Q1NzQ0ZWUzOTExODk3MWNi
NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC01ODUs
NyArNTg1LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25z
KGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjplbnN1
cmVWaWV3U3VwcG9ydHNPcHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkK
IHsKLSAgICBhdXRvIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QodGVzdCk7CisgICAgYXV0
byBvcHRpb25zID0gdGVzdC5vcHRpb25zKCk7CiAKICAgICBpZiAobV9tYWluV2ViVmlldykgewog
ICAgICAgICBpZiAobV9tYWluV2ViVmlldy0+dmlld1N1cHBvcnRzT3B0aW9ucyhvcHRpb25zKSkK
QEAgLTgwNyw3ICs4MDcsNyBAQCBjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6bmV0d29ya1By
b2Nlc3NOYW1lKCkKICNlbmRpZgogfQogCi1zdGF0aWMgc3RkOjpzdHJpbmcgdGVzdFBhdGgoY29u
c3QgV0tVUkxSZWYgdXJsKQorc3RhdGljIHN0ZDo6c3RyaW5nIHRlc3RQYXRoKFdLVVJMUmVmIHVy
bCkKIHsKICAgICBhdXRvIHNjaGVtZSA9IGFkb3B0V0soV0tVUkxDb3B5U2NoZW1lKHVybCkpOwog
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nSWdub3JpbmdDYXNlKHNjaGVtZS5n
ZXQoKSwgImZpbGUiKSkgewpAQCAtODE5LDYgKzgxOSwzOSBAQCBzdGF0aWMgc3RkOjpzdHJpbmcg
dGVzdFBhdGgoY29uc3QgV0tVUkxSZWYgdXJsKQogICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwog
fQogCitzdGF0aWMgV0tVUkxSZWYgY3JlYXRlVGVzdFVSTChjb25zdCBjaGFyKiBwYXRoT3JVUkwp
Cit7CisgICAgaWYgKHN0cnN0cihwYXRoT3JVUkwsICJodHRwOi8vIikgfHwgc3Ryc3RyKHBhdGhP
clVSTCwgImh0dHBzOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwgImZpbGU6Ly8iKSkKKyAgICAg
ICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGhPclVSTCk7CisKKyAgICAv
LyBDcmVhdGluZyBmcm9tIGZpbGVzeXRlbSBwYXRoLgorICAgIHNpemVfdCBsZW5ndGggPSBzdHJs
ZW4ocGF0aE9yVVJMKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBjb25zdCBjaGFyIHNlcGFyYXRvciA9ICcvJzsKKyAgICBib29sIGlzQWJzb2x1dGVQYXRoID0g
cGF0aE9yVVJMWzBdID09IHNlcGFyYXRvcjsKKyAgICBjb25zdCBjaGFyKiBmaWxlUHJlZml4ID0g
ImZpbGU6Ly8iOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVu
KGZpbGVQcmVmaXgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOworICAg
IGlmIChpc0Fic29sdXRlUGF0aCkgeworICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIHN0cmNweShidWZm
ZXIuZ2V0KCksIGZpbGVQcmVmaXgpOworICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJl
Zml4TGVuZ3RoLCBwYXRoT3JVUkwpOworICAgIH0gZWxzZSB7CisgICAgICAgIGJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCAr
IDIpOyAvLyAxIGZvciB0aGUgc2VwYXJhdG9yCisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCks
IGZpbGVQcmVmaXgpOworICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhM
ZW5ndGgsIFBBVEhfTUFYKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBzaXplX3Qg
bnVtQ2hhcmFjdGVycyA9IHN0cmxlbihidWZmZXIuZ2V0KCkpOworICAgICAgICBidWZmZXJbbnVt
Q2hhcmFjdGVyc10gPSBzZXBhcmF0b3I7CisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCkgKyBu
dW1DaGFyYWN0ZXJzICsgMSwgcGF0aE9yVVJMKTsKKyAgICB9CisKKyAgICByZXR1cm4gV0tVUkxD
cmVhdGVXaXRoVVRGOENTdHJpbmcoYnVmZmVyLmdldCgpKTsKK30KKwogc3RhdGljIGJvb2wgcGFy
c2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBpZiAodmFsdWUgPT0gInRydWUiKQpAQCAtODMwLDkgKzg2MywxMSBAQCBzdGF0aWMgYm9vbCBw
YXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVz
dEhlYWRlcihUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0
ZXN0KQorc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihUZXN0T3B0
aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCiB7Ci0gICAg
c3RkOjpzdHJpbmcgZmlsZW5hbWUgPSB0ZXN0UGF0aCh0ZXN0LnVybCgpKTsKKyAgICAvLyBHcm9z
cy4gTmVlZCB0byByZWR1Y2UgY29udmVyc2lvbnMgYmV0d2VlbiBhbGwgdGhlIHN0cmluZyB0eXBl
cyBhbmQgVVJMcy4KKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwoQWRvcHRXSywgY3Jl
YXRlVGVzdFVSTChwYXRoT3JVUkwuY19zdHIoKSkpOworICAgIHN0ZDo6c3RyaW5nIGZpbGVuYW1l
ID0gdGVzdFBhdGgod2tVUkwuZ2V0KCkpOwogICAgIGlmIChmaWxlbmFtZS5lbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTg3NCwyOSArOTA5LDI0IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRl
c3RPcHRpb25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25zLCBjb25zdCBU
ZXN0CiAgICAgfQogfQogCi1UZXN0T3B0aW9ucyBUZXN0Q29udHJvbGxlcjo6dGVzdE9wdGlvbnNG
b3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KSBjb25zdAorVGVzdE9wdGlvbnMgVGVz
dENvbnRyb2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9y
VVJMKSBjb25zdAogewotICAgIFRlc3RPcHRpb25zIG9wdGlvbnM7CisgICAgVGVzdE9wdGlvbnMg
b3B0aW9ucyhwYXRoT3JVUkwpOwogCiAgICAgb3B0aW9ucy51c2VSZW1vdGVMYXllclRyZWUgPSBt
X3Nob3VsZFVzZVJlbW90ZUxheWVyVHJlZTsKICAgICBvcHRpb25zLnNob3VsZFNob3dXZWJWaWV3
ID0gbV9zaG91bGRTaG93V2ViVmlldzsKLSAgICBvcHRpb25zLnVzZUZpeGVkTGF5b3V0ID0gdGVz
dC5zaG91bGRVc2VGaXhlZExheW91dCgpOwotICAgIG9wdGlvbnMudXNlRmxleGlibGVWaWV3cG9y
dCA9IHRlc3Quc2hvdWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKTsKLQotICAgIHVwZGF0ZVBsYXRm
b3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3Qob3B0aW9ucywgdGVzdCk7CiAKLSAgICB1cGRh
dGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKG9wdGlvbnMsIHRlc3QpOworICAgIHVwZGF0ZVBs
YXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3Qob3B0aW9ucywgcGF0aE9yVVJMKTsKKyAg
ICB1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKG9wdGlvbnMsIHBhdGhPclVSTCk7CiAK
ICAgICByZXR1cm4gb3B0aW9uczsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlV2Vi
Vmlld1NpemVGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogewotICAgIGJvb2wg
aXNTVkdXM0NUZXN0ID0gdGVzdC51cmxDb250YWlucygic3ZnL1czQy1TVkctMS4xIikgfHwgdGVz
dC51cmxDb250YWlucygic3ZnXFxXM0MtU1ZHLTEuMSIpOwotCiAgICAgdW5zaWduZWQgd2lkdGgg
PSB2aWV3V2lkdGg7CiAgICAgdW5zaWduZWQgaGVpZ2h0ID0gdmlld0hlaWdodDsKLSAgICBpZiAo
aXNTVkdXM0NUZXN0KSB7CisgICAgaWYgKHRlc3Qub3B0aW9ucygpLmlzU1ZHVGVzdCkgewogICAg
ICAgICB3aWR0aCA9IHczY1NWR1ZpZXdXaWR0aDsKICAgICAgICAgaGVpZ2h0ID0gdzNjU1ZHVmll
d0hlaWdodDsKICAgICB9CkBAIC05MDYsOCArOTM2LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
dXBkYXRlV2ViVmlld1NpemVGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogCiB2
b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVXaW5kb3dTY2FsZUZvclRlc3QoUGxhdGZvcm1XZWJW
aWV3KiB2aWV3LCBjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAgICBib29sIG5lZWRz
SGlnaERQSVdpbmRvdyA9IHRlc3QudXJsQ29udGFpbnMoIi9oaWRwaS0iKTsKLSAgICB2aWV3LT5j
aGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKG5lZWRzSGlnaERQSVdpbmRvdyA/IDIgOiAxKTsKKyAg
ICB2aWV3LT5jaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKHRlc3Qub3B0aW9ucygpLmlzSGlEUElU
ZXN0ID8gMiA6IDEpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjb25maWd1cmVWaWV3Rm9y
VGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKQEAgLTEwMDksOCArMTAzOCwxMiBAQCBi
b29sIFRlc3RDb250cm9sbGVyOjpydW5UZXN0KGNvbnN0IGNoYXIqIGlucHV0TGluZSkKICAgICBU
ZXN0Q29tbWFuZCBjb21tYW5kID0gcGFyc2VJbnB1dExpbmUoc3RkOjpzdHJpbmcoaW5wdXRMaW5l
KSk7CiAKICAgICBtX3N0YXRlID0gUnVubmluZ1Rlc3Q7CisgICAgCisgICAgVGVzdE9wdGlvbnMg
b3B0aW9ucyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21tYW5kLnBhdGhPclVSTCk7CisKKyAgICBX
S1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwoQWRvcHRXSywgY3JlYXRlVGVzdFVSTChjb21tYW5k
LnBhdGhPclVSTC5jX3N0cigpKSk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKIAotICAgIG1f
Y3VycmVudEludm9jYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPihjb21t
YW5kLnBhdGhPclVSTCk7CiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8fCBtX3No
b3VsZER1bXBQaXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+
c2V0SXNQaXhlbFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CiAgICAgaWYgKGNvbW1h
bmQudGltZW91dCA+IDApCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5k
ZXggYTZkOWFmNWYwN2Y4ZTI0N2FiOWJkN2NhNGM2YjEyYzBhN2IzNGRkYS4uZTlkOWI2Zjk3OWY0
YWY0YWQzY2Y0OWY0NjRmMDZkYjE0MmI0ZDg0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaApAQCAtMTU4LDggKzE1OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0
aWFsaXplVGVzdFBsdWdpbkRpcmVjdG9yeSgpOwogCiAgICAgdm9pZCBlbnN1cmVWaWV3U3VwcG9y
dHNPcHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpOwotICAgIFRlc3RPcHRpb25z
IHRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpIGNvbnN0OwotICAgIHZv
aWQgdXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYs
IGNvbnN0IFRlc3RJbnZvY2F0aW9uJikgY29uc3Q7CisgICAgVGVzdE9wdGlvbnMgdGVzdE9wdGlv
bnNGb3JUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpIGNvbnN0OworICAgIHZvaWQg
dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNv
bnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVXZWJW
aWV3U2l6ZUZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKTsKICAgICB2b2lkIHVwZGF0ZVdp
bmRvd1NjYWxlRm9yVGVzdChQbGF0Zm9ybVdlYlZpZXcqLCBjb25zdCBUZXN0SW52b2NhdGlvbiYp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBmZDczNzI1
NzViNDlhYjhlMGJlNzkwOGY2ODFhMDczODA1MTNhYzk2Li40ZDY0YTU1MTcxMzIzYzNjYmMxNTA0
YjcyMTcwMzZjMTVjZmQ4ZGQwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcApAQCAtNTksNDggKzU5LDkgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNw
YWNlIFdUUiB7CiAKLXN0YXRpYyBXS1VSTFJlZiBjcmVhdGVXS1VSTChjb25zdCBjaGFyKiBwYXRo
T3JVUkwpCi17Ci0gICAgaWYgKHN0cnN0cihwYXRoT3JVUkwsICJodHRwOi8vIikgfHwgc3Ryc3Ry
KHBhdGhPclVSTCwgImh0dHBzOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwgImZpbGU6Ly8iKSkK
LSAgICAgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGhPclVSTCk7Ci0K
LSAgICAvLyBDcmVhdGluZyBmcm9tIGZpbGVzeXRlbSBwYXRoLgotICAgIHNpemVfdCBsZW5ndGgg
PSBzdHJsZW4ocGF0aE9yVVJMKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBjb25zdCBjaGFyIHNlcGFyYXRvciA9ICcvJzsKLSAgICBib29sIGlzQWJzb2x1dGVQ
YXRoID0gcGF0aE9yVVJMWzBdID09IHNlcGFyYXRvcjsKLSAgICBjb25zdCBjaGFyKiBmaWxlUHJl
Zml4ID0gImZpbGU6Ly8iOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZml4TGVuZ3RoID0g
c3RybGVuKGZpbGVQcmVmaXgpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVy
OwotICAgIGlmIChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7Ci0gICAgICAgIHN0cmNw
eShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwotICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgp
ICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxl
bmd0aCArIDIpOyAvLyAxIGZvciB0aGUgc2VwYXJhdG9yCi0gICAgICAgIHN0cmNweShidWZmZXIu
Z2V0KCksIGZpbGVQcmVmaXgpOwotICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBw
cmVmaXhMZW5ndGgsIFBBVEhfTUFYKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBz
aXplX3QgbnVtQ2hhcmFjdGVycyA9IHN0cmxlbihidWZmZXIuZ2V0KCkpOwotICAgICAgICBidWZm
ZXJbbnVtQ2hhcmFjdGVyc10gPSBzZXBhcmF0b3I7Ci0gICAgICAgIHN0cmNweShidWZmZXIuZ2V0
KCkgKyBudW1DaGFyYWN0ZXJzICsgMSwgcGF0aE9yVVJMKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
V0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVmZmVyLmdldCgpKTsKLX0KLQotVGVzdEludm9j
YXRpb246OlRlc3RJbnZvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCi0gICAg
OiBtX3VybChBZG9wdFdLLCBjcmVhdGVXS1VSTChwYXRoT3JVUkwuY19zdHIoKSkpCi0gICAgLCBt
X2R1bXBQaXhlbHMoZmFsc2UpCi0gICAgLCBtX3RpbWVvdXQoMCkKLSAgICAsIG1fZ290SW5pdGlh
bFJlc3BvbnNlKGZhbHNlKQotICAgICwgbV9nb3RGaW5hbE1lc3NhZ2UoZmFsc2UpCi0gICAgLCBt
X2dvdFJlcGFpbnQoZmFsc2UpCi0gICAgLCBtX2Vycm9yKGZhbHNlKQotICAgICwgbV93ZWJQcm9j
ZXNzSXNVbnJlc3BvbnNpdmUoZmFsc2UpCitUZXN0SW52b2NhdGlvbjo6VGVzdEludm9jYXRpb24o
V0tVUkxSZWYgdXJsLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IG1fb3B0aW9u
cyhvcHRpb25zKQorICAgICwgbV91cmwodXJsKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiB1cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyhtX3VybC5nZXQoKSkpOwog
CkBAIC0xNDQsMjEgKzEwNSw2IEBAIGJvb2wgVGVzdEludm9jYXRpb246OnNob3VsZExvZ0hpc3Rv
cnlDbGllbnRDYWxsYmFja3MoKSBjb25zdAogICAgIHJldHVybiB1cmxDb250YWlucygiZ2xvYmFs
aGlzdG9yeS8iKTsKIH0KIAotYm9vbCBUZXN0SW52b2NhdGlvbjo6c2hvdWxkTWFrZVZpZXdwb3J0
RmxleGlibGUoKSBjb25zdAotewotICAgIHJldHVybiB1cmxDb250YWlucygidmlld3BvcnQvIik7
Ci19Ci0KLWJvb2wgVGVzdEludm9jYXRpb246OnNob3VsZFVzZUZpeGVkTGF5b3V0KCkgY29uc3QK
LXsKLSNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQotICAgIGlmICh1cmxDb250YWlu
cygiZGV2aWNlLWFkYXB0LyIpIHx8IHVybENvbnRhaW5zKCJkZXZpY2UtYWRhcHRcXCIpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lk
IFRlc3RJbnZvY2F0aW9uOjppbnZva2UoKQogewogICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5jb25maWd1cmVWaWV3Rm9yVGVzdCgqdGhpcyk7CkBAIC0xODEsNyArMTI3LDcgQEAgdm9p
ZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGJlZ2lu
VGVzdE1lc3NhZ2VCb2R5LmdldCgpLCBkdW1wRnJhbWVMb2FkRGVsZWdhdGVzS2V5LmdldCgpLCBk
dW1wRnJhbWVMb2FkRGVsZWdhdGVzVmFsdWUuZ2V0KCkpOwogCiAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IHVzZUZsZXhpYmxlVmlld3BvcnRLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJVc2VGbGV4aWJsZVZpZXdwb3J0IikpOwotICAgIFdLUmV0YWluUHRy
PFdLQm9vbGVhblJlZj4gdXNlRmxleGlibGVWaWV3cG9ydFZhbHVlID0gYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUoc2hvdWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKSkpOworICAgIFdLUmV0YWluUHRy
PFdLQm9vbGVhblJlZj4gdXNlRmxleGlibGVWaWV3cG9ydFZhbHVlID0gYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUob3B0aW9ucygpLnVzZUZsZXhpYmxlVmlld3BvcnQpKTsKICAgICBXS0RpY3Rpb25h
cnlTZXRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpLCB1c2VGbGV4aWJsZVZpZXdwb3J0
S2V5LmdldCgpLCB1c2VGbGV4aWJsZVZpZXdwb3J0VmFsdWUuZ2V0KCkpOwogCiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IGR1bXBQaXhlbHNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJEdW1wUGl4ZWxzIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oCmluZGV4IDg2MTI3Y2E4Y2MzOTQ1YzhhYTgzYjJmZDQ5ZTgxY2ZhYWUzNGE5
NjkuLmVhYzBiOGE0MjM5MDkyYzY3MWUzYmJkNTFhNzkwNTYzNGQ4NWNjMzggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTI3LDggKzI3LDggQEAKICNkZWZpbmUg
VGVzdEludm9jYXRpb25faAogCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKKyNpbmNsdWRlICJU
ZXN0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlVJU2NyaXB0Q29udGV4dC5oIgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAt
MzksMTEgKzM5LDEzIEBAIG5hbWVzcGFjZSBXVFIgewogY2xhc3MgVGVzdEludm9jYXRpb24gOiBw
dWJsaWMgVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFRlc3RJbnZvY2F0aW9uKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUZXN0SW52b2NhdGlvbihj
b25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKTsKKyAgICBleHBsaWNpdCBUZXN0SW52b2NhdGlv
bihXS1VSTFJlZiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICB+VGVzdEludm9jYXRpb24oKTsK
IAogICAgIFdLVVJMUmVmIHVybCgpIGNvbnN0OwogICAgIGJvb2wgdXJsQ29udGFpbnMoY29uc3Qg
Y2hhciopIGNvbnN0OworICAgIAorICAgIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKICAgICB2b2lkIHNldElzUGl4ZWxUZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKQEAgLTkwLDI3ICs5MiwzMCBAQCBw
cml2YXRlOgogICAgIC8vIFVJU2NyaXB0Q29udGV4dERlbGVnYXRlCiAgICAgdm9pZCB1aVNjcmlw
dERpZENvbXBsZXRlKFdLU3RyaW5nUmVmIHJlc3VsdCwgdW5zaWduZWQgY2FsbGJhY2tJRCkgb3Zl
cnJpZGU7CiAKKyAgICBjb25zdCBUZXN0T3B0aW9ucyBtX29wdGlvbnM7CisgICAgCiAgICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IG1fdXJsOwogICAgIFdURjo6U3RyaW5nIG1fdXJsU3RyaW5nOwog
Ci0gICAgYm9vbCBtX2R1bXBQaXhlbHM7Ci0gICAgYm9vbCBtX3BpeGVsUmVzdWx0SXNQZW5kaW5n
IHsgZmFsc2UgfTsKICAgICBzdGQ6OnN0cmluZyBtX2V4cGVjdGVkUGl4ZWxIYXNoOwogCi0gICAg
aW50IG1fdGltZW91dDsKKyAgICBpbnQgbV90aW1lb3V0IHsgMCB9OwogCiAgICAgLy8gSW52b2Nh
dGlvbiBzdGF0ZQotICAgIGJvb2wgbV9nb3RJbml0aWFsUmVzcG9uc2U7Ci0gICAgYm9vbCBtX2dv
dEZpbmFsTWVzc2FnZTsKLSAgICBib29sIG1fZ290UmVwYWludDsKLSAgICBib29sIG1fZXJyb3I7
CisgICAgYm9vbCBtX2dvdEluaXRpYWxSZXNwb25zZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2dv
dEZpbmFsTWVzc2FnZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2dvdFJlcGFpbnQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9lcnJvciB7IGZhbHNlIH07CisKKyAgICBib29sIG1fZHVtcFBpeGVscyB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3BpeGVsUmVzdWx0SXNQZW5kaW5nIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fd2ViUHJvY2Vzc0lzVW5yZXNwb25zaXZlIHsgZmFsc2UgfTsKIAogICAgIFN0cmlu
Z0J1aWxkZXIgbV90ZXh0T3V0cHV0OwogICAgIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gbV9hdWRp
b1Jlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBtX3BpeGVsUmVzdWx0OwogICAg
IFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fcmVwYWludFJlY3RzOwogICAgIHN0ZDo6c3RyaW5n
IG1fZXJyb3JNZXNzYWdlOwotICAgIGJvb2wgbV93ZWJQcm9jZXNzSXNVbnJlc3BvbnNpdmU7CiAg
ICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVJU2NyaXB0Q29udGV4dD4gbV9VSVNjcmlwdENvbnRl
eHQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAppbmRleCA1M2Q3ZDI4YzE1Yjkz
NjQ2M2RjMWUxN2Q2NTBjMjBmMjIwMDU5MTlhLi42ZDljYjQwN2RiMDIwMmVjMjYxN2E0MWVhZDAy
NmY3MWVkNDEyMDA0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRp
b25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCkBAIC0zNyw3
ICszNywxMiBAQCBzdHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgIGJvb2wgc2hvdWxkU2hvd1dlYlZp
ZXcgeyBmYWxzZSB9OwogICAgIGJvb2wgdXNlRmxleGlibGVWaWV3cG9ydCB7IGZhbHNlIH07CiAg
ICAgYm9vbCB1c2VGaXhlZExheW91dCB7IGZhbHNlIH07CisgICAgYm9vbCBpc1NWR1Rlc3QgeyBm
YWxzZSB9OworICAgIGJvb2wgaXNIaURQSVRlc3QgeyBmYWxzZSB9OworCiAgICAgVmVjdG9yPFN0
cmluZz4gb3ZlcnJpZGVMYW5ndWFnZXM7CisgICAgCisgICAgVGVzdE9wdGlvbnMoY29uc3Qgc3Rk
OjpzdHJpbmcmIHBhdGhPclVSTCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDE0NDRhOThmZjU3ODgzNjg3Yzk4ZWU5MDFjYWI4ODdiMDM2MmNkYWUuLmIx
Yzg5MGJiNzNlMTY2ZTZjMGIxZTc1MzE5NGZkODY2ZmExNDhkYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNCw2ICszNCw3IEBACiAKIC8qIEJlZ2luIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCiAJCTBGNTE2OUNDMTQ0NTIyMkQwMEUwQTlENyAvKiBXZWJLaXQuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1MTY5Q0ExNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgKi87IH07CisJCTBG
NjIyQ0U5MUJCQjNBMUEwMDgzOEFEMyAvKiBUZXN0T3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMkNFODFCQkIzQTFBMDA4MzhBRDMg
LyogVGVzdE9wdGlvbnMuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07
CiAJCTBGNzNCNTUxMUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjczQjU0RjFC
QTc4OTY4MDA0QjNFRjQgLyogSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwICovOyB9OwogCQkwRjcz
QjU1MjFCQTc4OTY4MDA0QjNFRjQgLyogSlNVSVNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNCNTUwMUJBNzg5NjgwMDRC
M0VGNCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5oICovOyB9OwogCQkwRjczQjU1QTFCQTc5MkZG
MDA0QjNFRjQgLyogSlNXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDOTUyQzBDMTFGM0I5NjUwMDMzOThCNCAvKiBKU1dyYXBwZXIuY3Bw
ICovOyB9OwpAQCAtMTcwLDYgKzE3MSw3IEBACiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KIAkJMEYyMTA5QzcxODlDNjUwRDAwRjg3OUEzIC8qIEJhc2VUYXJnZXQueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY1MTY5Q0ExNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgcGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTBGNjIyQ0U4MUJCQjNBMUEwMDgzOEFEMyAvKiBUZXN0T3B0aW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0T3B0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzNCNTRGMUJBNzg5NjgwMDRCM0VG
NCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXRUZXN0UnVubmVyL0pTVUlTY3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEY3M0I1NTAxQkE3ODk2ODAwNEIzRUY0IC8qIEpT
VUlTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpT
VUlTY3JpcHRDb250cm9sbGVyLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXRUZXN0UnVu
bmVyL0pTVUlTY3JpcHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTBGNzNCNTU3MUJBNzkyOUUwMDRCM0VGNCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgcGF0aCA9
IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3Vy
Y2VUcmVlID0gU0RLUk9PVDsgfTsKQEAgLTQwNiw2ICs0MDgsNyBAQAogCQkJCUJDNzkzNDJGMTE4
RjdGMTkwMDVFQThFMiAvKiBUZXN0Q29udHJvbGxlci5oICovLAogCQkJCUJDRDdEMkY3MTE5MjEy
NzgwMDZEQjdFRSAvKiBUZXN0SW52b2NhdGlvbi5jcHAgKi8sCiAJCQkJQkNEN0QyRjYxMTkyMTI3
ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmggKi8sCisJCQkJMEY2MjJDRTgxQkJCM0ExQTAw
ODM4QUQzIC8qIFRlc3RPcHRpb25zLmNwcCAqLywKIAkJCQkxQTMzMjYwNTFCNzUzOTY1MDBGODlG
NjIgLyogVGVzdE9wdGlvbnMuaCAqLywKIAkJCQlCQzI1MUExNzExRDE2Nzc0MDAyRUJDMDEgLyog
V2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oICovLAogCQkJCTMxNjRDOEVGMTVEMUFEQTEwMEVGMUZF
MCAvKiBXZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgKi8sCkBAIC05MzUsNiArOTM4LDcgQEAK
IAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTBGNjIyQ0U5MUJCQjNBMUEwMDgzOEFEMyAvKiBU
ZXN0T3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjczQjU1QTFCQTc5MkZGMDA0QjNF
RjQgLyogSlNXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExODUxMDQ0MUI5QUUxNEEw
MDc0NEFFQiAvKiBXb3JrUXVldWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExODUx
MDNGMUI5QUUxMjkwMDc0NEFFQiAvKiBHZW9sb2NhdGlvblByb3ZpZGVyTW9jay5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250
cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJ
T1MubW0KaW5kZXggMzFhZGFjMDVmNjQ5MDRiODU1MTI1YjcyMDE0OWM1MGRlOGU4NzRkMy4uYWYw
ODA0ZjAxZTJmMzZmMTMxMmNmYzc1MGVlZGEyOWMxYWY0ZDg2MCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KQEAgLTk4LDcgKzk4LDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db25maWd1cmVWaWV3Rm9yVGVzdChjb25zdCBU
ZXN0SW52b2NhdGlvbiYgdGVzdCkKICAgICB9CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnVw
ZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QoVGVzdE9wdGlvbnMmLCBjb25z
dCBUZXN0SW52b2NhdGlvbiYpIGNvbnN0Cit2b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0
Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KFRlc3RPcHRpb25zJiwgY29uc3Qgc3RkOjpz
dHJpbmcmKSBjb25zdAogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rl
c3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDJjYWMwN2ZkOTJlMGZiM2Y3ZGZlMmY4ZTg3ODc1ZmFl
Y2I5MWY0YmEuLmE1MTYzMjhhZWQ4NDQwNjg5MjkwOTBlNDEwOTgwN2UzNDhkMTgwNWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29u
c2lzdGVudFZhbHVlcygpCiAgICAgfQogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVQ
bGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KFRlc3RPcHRpb25zJiBvcHRpb25zLCBj
b25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkgY29uc3QKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnVw
ZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QoVGVzdE9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IHN0ZDo6c3RyaW5nJikgY29uc3QKIHsKICAgICBvcHRpb25zLnVzZVRocmVhZGVk
U2Nyb2xsaW5nID0gdHJ1ZTsKICAgICBvcHRpb25zLnVzZVJlbW90ZUxheWVyVHJlZSA9IHNob3Vs
ZFVzZVJlbW90ZUxheWVyVHJlZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262124</attachid>
            <date>2015-09-29 17:32:38 -0700</date>
            <delta_ts>2015-09-29 17:46:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149650-20150929173214.patch</filename>
            <type>text/plain</type>
            <size>23536</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjIxOTA1MGYxZDhjNDU1MTFiY2NiYTRhOGM0YzUzNTk4
MmRlNjk4OS4uMmNlMThiMjc1ZmJjM2RlNmJiMzA3ZTQ0OWRkMmUzZTNiYTEzMGFlOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDE1LTA5LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgZmFpbHMgdG8gYXBwbHkgInVzZUZsZXhpYmxlVmll
d3BvcnQiIHdoZW4gaXQncyBzcGVjaWZpZWQgaW4gYSBmaWxlIGNvbW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTY1MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGVzdEludm9jYXRp
b246Omludm9rZSgpIGNvbnN1bHRlZCBzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZSgpLCBidXQg
dGhhdCBvbmx5CisgICAgICAgIGxvb2tzIGF0IHRoZSBmaWxlIHBhdGgsIGFuZCBub3QgdGhlIGN1
c3RvbSBvcHRpb25zIHRoYXQgY29tZSBmcm9tIGZpbGUgY29tbWVudHMuCisgICAgICAgIAorICAg
ICAgICBGaXggYnkgY29tcHV0aW5nIFRlc3RPcHRpb25zIGJlZm9yZSBtYWtpbmcgdGhlIFRlc3RJ
bnZvY2F0aW9uLCBhbmQgc2V0dGluZyB0aGVtCisgICAgICAgIGFzIGNvbnN0IFRlc3RJbnZvY2F0
aW9uIGRhdGEuIFRoaXMgbWVhbnQgY2hhbmdpbmcgdmFyaW91cyBjYWxsIHNpdGVzIHRvIHRha2UK
KyAgICAgICAgdGhlIHN0ZDo6c3RyaW5nIHBhdGhPclVSTCwgcmF0aGVyIHRoYW4gdGhlIFRlc3RJ
bnZvY2F0aW9uIGl0c2VsZi4KKyAgICAgICAgCisgICAgICAgIEFsc28gaW5pdGlhbGl6ZSBUZXN0
SW52b2NhdGlvbiB3aXRoIGEgV0tVUkxSZWYsIHJhdGhlciB0aGFuIGEgc3RkOjpzdHJpbmcuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QpOgorICAgICAgICAoV1RS
Ojp0ZXN0UGF0aCk6CisgICAgICAgIChXVFI6OmNyZWF0ZVRlc3RVUkwpOgorICAgICAgICAoV1RS
Ojp1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjp1cGRhdGVXZWJWaWV3U2l6ZUZvclRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6dXBkYXRlV2luZG93U2NhbGVGb3JUZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisgICAgICAgIChXVFI6OmNyZWF0ZVdLVVJMKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3VsZE1ha2VWaWV3cG9y
dEZsZXhpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3Vs
ZFVzZUZpeGVkTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmg6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpvcHRpb25zKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcDogQ29waWVkIGZyb20g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oLgorICAgICAgICAoV1RSOjpwYXRo
Q29udGFpbnMpOgorICAgICAgICAoV1RSOjpzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZSk6Cisg
ICAgICAgIChXVFI6OnNob3VsZFVzZUZpeGVkTGF5b3V0KToKKyAgICAgICAgKFdUUjo6aXNTVkdU
ZXN0UGF0aCk6CisgICAgICAgIChXVFI6OmlzSGlEUElUZXN0UGF0aCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0T3B0aW9ucy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
aW9zL1Rlc3RDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KToK
KwogMjAxNS0wOS0yOSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV2luXSBBbGxvdyAncHJlcGFyZS1DaGFuZ2VMb2cnIHRvIGJlIHVzZWQgd2l0aG91dCBD
eWd3aW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDYzZDlmMDAxNzQ2
ODcyNzRjZTc1MGNlYTM5OTRlMmJmZDdkZWIzNjYuLmI4MTM3N2E2ZGJiMzk3MWJlM2Q1N2U1NjI4
NTdiYzBhMTQ5OGMyZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VM
aXN0cy50eHQKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dApAQCAt
MTIsNiArMTIsNyBAQCBzZXQoV2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTCiAgICAgJHtXRUJLSVRf
VEVTVFJVTk5FUl9ESVJ9L1BpeGVsRHVtcFN1cHBvcnQuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJV
Tk5FUl9ESVJ9L1Rlc3RDb250cm9sbGVyLmNwcAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElS
fS9UZXN0SW52b2NhdGlvbi5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdE9w
dGlvbnMuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmNwcAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9Xb3JrUXVldWVNYW5hZ2Vy
LmNwcAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfVUlTQ1JJUFRDT05URVhUX0RJUn0vVUlTY3Jp
cHRDb250ZXh0LmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApp
bmRleCA1ZTdhNTY4NDMxMzQzODZhODgyYTQ5MzUwM2E0MWVlYWIwZjdiNjYwLi41ODJkOGI3NGZl
NGM3N2I4MTJiODdkNTc0NGVlMzkxMTg5NzFjYjQ3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykK
IAogdm9pZCBUZXN0Q29udHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3Qo
Y29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QpCiB7Ci0gICAgYXV0byBvcHRpb25zID0gdGVzdE9w
dGlvbnNGb3JUZXN0KHRlc3QpOworICAgIGF1dG8gb3B0aW9ucyA9IHRlc3Qub3B0aW9ucygpOwog
CiAgICAgaWYgKG1fbWFpbldlYlZpZXcpIHsKICAgICAgICAgaWYgKG1fbWFpbldlYlZpZXctPnZp
ZXdTdXBwb3J0c09wdGlvbnMob3B0aW9ucykpCkBAIC04MDcsNyArODA3LDcgQEAgY29uc3QgY2hh
ciogVGVzdENvbnRyb2xsZXI6Om5ldHdvcmtQcm9jZXNzTmFtZSgpCiAjZW5kaWYKIH0KIAotc3Rh
dGljIHN0ZDo6c3RyaW5nIHRlc3RQYXRoKGNvbnN0IFdLVVJMUmVmIHVybCkKK3N0YXRpYyBzdGQ6
OnN0cmluZyB0ZXN0UGF0aChXS1VSTFJlZiB1cmwpCiB7CiAgICAgYXV0byBzY2hlbWUgPSBhZG9w
dFdLKFdLVVJMQ29weVNjaGVtZSh1cmwpKTsKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZ0lnbm9yaW5nQ2FzZShzY2hlbWUuZ2V0KCksICJmaWxlIikpIHsKQEAgLTgxOSw2ICs4
MTksMzkgQEAgc3RhdGljIHN0ZDo6c3RyaW5nIHRlc3RQYXRoKGNvbnN0IFdLVVJMUmVmIHVybCkK
ICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKIH0KIAorc3RhdGljIFdLVVJMUmVmIGNyZWF0ZVRl
c3RVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQoreworICAgIGlmIChzdHJzdHIocGF0aE9yVVJM
LCAiaHR0cDovLyIpIHx8IHN0cnN0cihwYXRoT3JVUkwsICJodHRwczovLyIpIHx8IHN0cnN0cihw
YXRoT3JVUkwsICJmaWxlOi8vIikpCisgICAgICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhwYXRoT3JVUkwpOworCisgICAgLy8gQ3JlYXRpbmcgZnJvbSBmaWxlc3l0ZW0gcGF0
aC4KKyAgICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHBhdGhPclVSTCk7CisgICAgaWYgKCFsZW5n
dGgpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29uc3QgY2hhciBzZXBhcmF0b3IgPSAnLyc7
CisgICAgYm9vbCBpc0Fic29sdXRlUGF0aCA9IHBhdGhPclVSTFswXSA9PSBzZXBhcmF0b3I7Cisg
ICAgY29uc3QgY2hhciogZmlsZVByZWZpeCA9ICJmaWxlOi8vIjsKKyAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihmaWxlUHJlZml4KTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxjaGFyW10+IGJ1ZmZlcjsKKyAgICBpZiAoaXNBYnNvbHV0ZVBhdGgpIHsKKyAgICAg
ICAgYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0
aCArIDEpOworICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKKyAgICAg
ICAgc3RyY3B5KGJ1ZmZlci5nZXQoKSArIHByZWZpeExlbmd0aCwgcGF0aE9yVVJMKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4
TGVuZ3RoICsgUEFUSF9NQVggKyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhlIHNlcGFyYXRvcgor
ICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKKyAgICAgICAgaWYgKCFn
ZXRjd2QoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBQQVRIX01BWCkpCisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgc2l6ZV90IG51bUNoYXJhY3RlcnMgPSBzdHJsZW4oYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgYnVmZmVyW251bUNoYXJhY3RlcnNdID0gc2VwYXJhdG9yOworICAg
ICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgbnVtQ2hhcmFjdGVycyArIDEsIHBhdGhPclVSTCk7
CisgICAgfQorCisgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1ZmZlci5n
ZXQoKSk7Cit9CisKIHN0YXRpYyBib29sIHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZShjb25z
dCBzdGQ6OnN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJ0cnVlIikKQEAgLTgz
MCw5ICs4NjMsMTEgQEAgc3RhdGljIGJvb2wgcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKGNv
bnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2
b2lkIHVwZGF0ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRp
b25zLCBjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKK3N0YXRpYyB2b2lkIHVwZGF0ZVRlc3RP
cHRpb25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25zLCBjb25zdCBzdGQ6
OnN0cmluZyYgcGF0aE9yVVJMKQogewotICAgIHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0gdGVzdFBh
dGgodGVzdC51cmwoKSk7CisgICAgLy8gR3Jvc3MuIE5lZWQgdG8gcmVkdWNlIGNvbnZlcnNpb25z
IGJldHdlZW4gYWxsIHRoZSBzdHJpbmcgdHlwZXMgYW5kIFVSTHMuCisgICAgV0tSZXRhaW5QdHI8
V0tVUkxSZWY+IHdrVVJMKEFkb3B0V0ssIGNyZWF0ZVRlc3RVUkwocGF0aE9yVVJMLmNfc3RyKCkp
KTsKKyAgICBzdGQ6OnN0cmluZyBmaWxlbmFtZSA9IHRlc3RQYXRoKHdrVVJMLmdldCgpKTsKICAg
ICBpZiAoZmlsZW5hbWUuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04NzQsMjkgKzkw
OSwyNCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKFRlc3RP
cHRpb25zJiB0ZXN0T3B0aW9ucywgY29uc3QgVGVzdAogICAgIH0KIH0KIAotVGVzdE9wdGlvbnMg
VGVzdENvbnRyb2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYg
dGVzdCkgY29uc3QKK1Rlc3RPcHRpb25zIFRlc3RDb250cm9sbGVyOjp0ZXN0T3B0aW9uc0ZvclRl
c3QoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVSTCkgY29uc3QKIHsKLSAgICBUZXN0T3B0aW9u
cyBvcHRpb25zOworICAgIFRlc3RPcHRpb25zIG9wdGlvbnMocGF0aE9yVVJMKTsKIAogICAgIG9w
dGlvbnMudXNlUmVtb3RlTGF5ZXJUcmVlID0gbV9zaG91bGRVc2VSZW1vdGVMYXllclRyZWU7CiAg
ICAgb3B0aW9ucy5zaG91bGRTaG93V2ViVmlldyA9IG1fc2hvdWxkU2hvd1dlYlZpZXc7Ci0gICAg
b3B0aW9ucy51c2VGaXhlZExheW91dCA9IHRlc3Quc2hvdWxkVXNlRml4ZWRMYXlvdXQoKTsKLSAg
ICBvcHRpb25zLnVzZUZsZXhpYmxlVmlld3BvcnQgPSB0ZXN0LnNob3VsZE1ha2VWaWV3cG9ydEZs
ZXhpYmxlKCk7Ci0KLSAgICB1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0
KG9wdGlvbnMsIHRlc3QpOwogCi0gICAgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihv
cHRpb25zLCB0ZXN0KTsKKyAgICB1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JU
ZXN0KG9wdGlvbnMsIHBhdGhPclVSTCk7CisgICAgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhl
YWRlcihvcHRpb25zLCBwYXRoT3JVUkwpOwogCiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVdlYlZpZXdTaXplRm9yVGVzdChjb25zdCBUZXN0SW52
b2NhdGlvbiYgdGVzdCkKIHsKLSAgICBib29sIGlzU1ZHVzNDVGVzdCA9IHRlc3QudXJsQ29udGFp
bnMoInN2Zy9XM0MtU1ZHLTEuMSIpIHx8IHRlc3QudXJsQ29udGFpbnMoInN2Z1xcVzNDLVNWRy0x
LjEiKTsKLQogICAgIHVuc2lnbmVkIHdpZHRoID0gdmlld1dpZHRoOwogICAgIHVuc2lnbmVkIGhl
aWdodCA9IHZpZXdIZWlnaHQ7Ci0gICAgaWYgKGlzU1ZHVzNDVGVzdCkgeworICAgIGlmICh0ZXN0
Lm9wdGlvbnMoKS5pc1NWR1Rlc3QpIHsKICAgICAgICAgd2lkdGggPSB3M2NTVkdWaWV3V2lkdGg7
CiAgICAgICAgIGhlaWdodCA9IHczY1NWR1ZpZXdIZWlnaHQ7CiAgICAgfQpAQCAtOTA2LDggKzkz
Niw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVdlYlZpZXdTaXplRm9yVGVzdChjb25z
dCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlV2lu
ZG93U2NhbGVGb3JUZXN0KFBsYXRmb3JtV2ViVmlldyogdmlldywgY29uc3QgVGVzdEludm9jYXRp
b24mIHRlc3QpCiB7Ci0gICAgYm9vbCBuZWVkc0hpZ2hEUElXaW5kb3cgPSB0ZXN0LnVybENvbnRh
aW5zKCIvaGlkcGktIik7Ci0gICAgdmlldy0+Y2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZChuZWVk
c0hpZ2hEUElXaW5kb3cgPyAyIDogMSk7CisgICAgdmlldy0+Y2hhbmdlV2luZG93U2NhbGVJZk5l
ZWRlZCh0ZXN0Lm9wdGlvbnMoKS5pc0hpRFBJVGVzdCA/IDIgOiAxKTsKIH0KIAogdm9pZCBUZXN0
Q29udHJvbGxlcjo6Y29uZmlndXJlVmlld0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mIHRl
c3QpCkBAIC0xMDA5LDggKzEwMzgsMTIgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cnVuVGVzdChj
b25zdCBjaGFyKiBpbnB1dExpbmUpCiAgICAgVGVzdENvbW1hbmQgY29tbWFuZCA9IHBhcnNlSW5w
dXRMaW5lKHN0ZDo6c3RyaW5nKGlucHV0TGluZSkpOwogCiAgICAgbV9zdGF0ZSA9IFJ1bm5pbmdU
ZXN0OworICAgIAorICAgIFRlc3RPcHRpb25zIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3Qo
Y29tbWFuZC5wYXRoT3JVUkwpOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrVVJMKEFk
b3B0V0ssIGNyZWF0ZVRlc3RVUkwoY29tbWFuZC5wYXRoT3JVUkwuY19zdHIoKSkpOworICAgIG1f
Y3VycmVudEludm9jYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VS
TC5nZXQoKSwgb3B0aW9ucyk7CiAKLSAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxUZXN0SW52b2NhdGlvbj4oY29tbWFuZC5wYXRoT3JVUkwpOwogICAgIGlmIChjb21t
YW5kLnNob3VsZER1bXBQaXhlbHMgfHwgbV9zaG91bGREdW1wUGl4ZWxzRm9yQWxsVGVzdHMpCiAg
ICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPnNldElzUGl4ZWxUZXN0KGNvbW1hbmQuZXhwZWN0
ZWRQaXhlbEhhc2gpOwogICAgIGlmIChjb21tYW5kLnRpbWVvdXQgPiAwKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGE2ZDlhZjVmMDdmOGUyNDdhYjliZDdjYTRj
NmIxMmMwYTdiMzRkZGEuLmU5ZDliNmY5NzlmNGFmNGFkM2NmNDlmNDY0ZjA2ZGIxNDJiNGQ4NGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTE1OCw4ICsxNTgs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJlY3RvcnkoKTsK
IAogICAgIHZvaWQgZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QoY29uc3QgVGVzdElu
dm9jYXRpb24mKTsKLSAgICBUZXN0T3B0aW9ucyB0ZXN0T3B0aW9uc0ZvclRlc3QoY29uc3QgVGVz
dEludm9jYXRpb24mKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0
T3B0aW9uc0ZvclRlc3QoVGVzdE9wdGlvbnMmLCBjb25zdCBUZXN0SW52b2NhdGlvbiYpIGNvbnN0
OworICAgIFRlc3RPcHRpb25zIHRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBzdGQ6OnN0cmluZyYg
cGF0aE9yVVJMKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0
aW9uc0ZvclRlc3QoVGVzdE9wdGlvbnMmLCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKSBj
b25zdDsKIAogICAgIHZvaWQgdXBkYXRlV2ViVmlld1NpemVGb3JUZXN0KGNvbnN0IFRlc3RJbnZv
Y2F0aW9uJik7CiAgICAgdm9pZCB1cGRhdGVXaW5kb3dTY2FsZUZvclRlc3QoUGxhdGZvcm1XZWJW
aWV3KiwgY29uc3QgVGVzdEludm9jYXRpb24mKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKaW5kZXggZmQ3MzcyNTc1YjQ5YWI4ZTBiZTc5MDhmNjgxYTA3MzgwNTEz
YWM5Ni4uNGQ2NGE1NTE3MTMyM2MzY2JjMTUwNGI3MjE3MDM2YzE1Y2ZkOGRkMCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTU5LDQ4ICs1OSw5IEBAIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgV0tVUkxSZWYg
Y3JlYXRlV0tVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQotewotICAgIGlmIChzdHJzdHIocGF0
aE9yVVJMLCAiaHR0cDovLyIpIHx8IHN0cnN0cihwYXRoT3JVUkwsICJodHRwczovLyIpIHx8IHN0
cnN0cihwYXRoT3JVUkwsICJmaWxlOi8vIikpCi0gICAgICAgIHJldHVybiBXS1VSTENyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhwYXRoT3JVUkwpOwotCi0gICAgLy8gQ3JlYXRpbmcgZnJvbSBmaWxlc3l0
ZW0gcGF0aC4KLSAgICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHBhdGhPclVSTCk7Ci0gICAgaWYg
KCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgY2hhciBzZXBhcmF0b3Ig
PSAnLyc7Ci0gICAgYm9vbCBpc0Fic29sdXRlUGF0aCA9IHBhdGhPclVSTFswXSA9PSBzZXBhcmF0
b3I7Ci0gICAgY29uc3QgY2hhciogZmlsZVByZWZpeCA9ICJmaWxlOi8vIjsKLSAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihmaWxlUHJlZml4KTsKLQotICAgIHN0
ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGJ1ZmZlcjsKLSAgICBpZiAoaXNBYnNvbHV0ZVBhdGgpIHsK
LSAgICAgICAgYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCAr
IGxlbmd0aCArIDEpOwotICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsK
LSAgICAgICAgc3RyY3B5KGJ1ZmZlci5nZXQoKSArIHByZWZpeExlbmd0aCwgcGF0aE9yVVJMKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
cHJlZml4TGVuZ3RoICsgUEFUSF9NQVggKyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhlIHNlcGFy
YXRvcgotICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKLSAgICAgICAg
aWYgKCFnZXRjd2QoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBQQVRIX01BWCkpCi0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgc2l6ZV90IG51bUNoYXJhY3RlcnMgPSBzdHJsZW4o
YnVmZmVyLmdldCgpKTsKLSAgICAgICAgYnVmZmVyW251bUNoYXJhY3RlcnNdID0gc2VwYXJhdG9y
OwotICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgbnVtQ2hhcmFjdGVycyArIDEsIHBhdGhP
clVSTCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1
ZmZlci5nZXQoKSk7Ci19Ci0KLVRlc3RJbnZvY2F0aW9uOjpUZXN0SW52b2NhdGlvbihjb25zdCBz
dGQ6OnN0cmluZyYgcGF0aE9yVVJMKQotICAgIDogbV91cmwoQWRvcHRXSywgY3JlYXRlV0tVUkwo
cGF0aE9yVVJMLmNfc3RyKCkpKQotICAgICwgbV9kdW1wUGl4ZWxzKGZhbHNlKQotICAgICwgbV90
aW1lb3V0KDApCi0gICAgLCBtX2dvdEluaXRpYWxSZXNwb25zZShmYWxzZSkKLSAgICAsIG1fZ290
RmluYWxNZXNzYWdlKGZhbHNlKQotICAgICwgbV9nb3RSZXBhaW50KGZhbHNlKQotICAgICwgbV9l
cnJvcihmYWxzZSkKLSAgICAsIG1fd2ViUHJvY2Vzc0lzVW5yZXNwb25zaXZlKGZhbHNlKQorVGVz
dEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKFdLVVJMUmVmIHVybCwgY29uc3QgVGVzdE9wdGlv
bnMmIG9wdGlvbnMpCisgICAgOiBtX29wdGlvbnMob3B0aW9ucykKKyAgICAsIG1fdXJsKHVybCkK
IHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRXSyhXS1VS
TENvcHlTdHJpbmcobV91cmwuZ2V0KCkpKTsKIApAQCAtMTQ0LDIxICsxMDUsNiBAQCBib29sIFRl
c3RJbnZvY2F0aW9uOjpzaG91bGRMb2dIaXN0b3J5Q2xpZW50Q2FsbGJhY2tzKCkgY29uc3QKICAg
ICByZXR1cm4gdXJsQ29udGFpbnMoImdsb2JhbGhpc3RvcnkvIik7CiB9CiAKLWJvb2wgVGVzdElu
dm9jYXRpb246OnNob3VsZE1ha2VWaWV3cG9ydEZsZXhpYmxlKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gdXJsQ29udGFpbnMoInZpZXdwb3J0LyIpOwotfQotCi1ib29sIFRlc3RJbnZvY2F0aW9uOjpz
aG91bGRVc2VGaXhlZExheW91dCgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKENTU19ERVZJQ0VfQURB
UFRBVElPTikKLSAgICBpZiAodXJsQ29udGFpbnMoImRldmljZS1hZGFwdC8iKSB8fCB1cmxDb250
YWlucygiZGV2aWNlLWFkYXB0XFwiKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKIHsK
ICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29uZmlndXJlVmlld0ZvclRlc3QoKnRo
aXMpOwpAQCAtMTgxLDcgKzEyNyw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246Omludm9rZSgpCiAg
ICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShiZWdpblRlc3RNZXNzYWdlQm9keS5nZXQoKSwgZHVtcEZy
YW1lTG9hZERlbGVnYXRlc0tleS5nZXQoKSwgZHVtcEZyYW1lTG9hZERlbGVnYXRlc1ZhbHVlLmdl
dCgpKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VGbGV4aWJsZVZpZXdwb3J0
S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlRmxleGlibGVW
aWV3cG9ydCIpKTsKLSAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IHVzZUZsZXhpYmxlVmll
d3BvcnRWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHNob3VsZE1ha2VWaWV3cG9ydEZs
ZXhpYmxlKCkpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IHVzZUZsZXhpYmxlVmll
d3BvcnRWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKG9wdGlvbnMoKS51c2VGbGV4aWJs
ZVZpZXdwb3J0KSk7CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShiZWdpblRlc3RNZXNzYWdlQm9k
eS5nZXQoKSwgdXNlRmxleGlibGVWaWV3cG9ydEtleS5nZXQoKSwgdXNlRmxleGlibGVWaWV3cG9y
dFZhbHVlLmdldCgpKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkdW1wUGl4ZWxz
S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRHVtcFBpeGVscyIp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCA4NjEyN2NhOGNj
Mzk0NWM4YWE4M2IyZmQ0OWU4MWNmYWFlMzRhOTY5Li5lYWMwYjhhNDIzOTA5MmM2NzFlM2JiZDUx
YTc5MDU2MzRkODVjYzM4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
CkBAIC0yNyw4ICsyNyw4IEBACiAjZGVmaW5lIFRlc3RJbnZvY2F0aW9uX2gKIAogI2luY2x1ZGUg
IkpTV3JhcHBhYmxlLmgiCisjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKICNpbmNsdWRlICJVSVNj
cmlwdENvbnRleHQuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTM5LDExICszOSwxMyBAQCBuYW1lc3BhY2UgV1RS
IHsKIGNsYXNzIFRlc3RJbnZvY2F0aW9uIDogcHVibGljIFVJU2NyaXB0Q29udGV4dERlbGVnYXRl
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXN0SW52b2NhdGlvbik7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgVGVzdEludm9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVSTCk7
CisgICAgZXhwbGljaXQgVGVzdEludm9jYXRpb24oV0tVUkxSZWYsIGNvbnN0IFRlc3RPcHRpb25z
Jik7CiAgICAgflRlc3RJbnZvY2F0aW9uKCk7CiAKICAgICBXS1VSTFJlZiB1cmwoKSBjb25zdDsK
ICAgICBib29sIHVybENvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsKKyAgICAKKyAgICBjb25z
dCBUZXN0T3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogCiAg
ICAgdm9pZCBzZXRJc1BpeGVsVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhh
c2gpOwogCkBAIC05MCwyNyArOTIsMzAgQEAgcHJpdmF0ZToKICAgICAvLyBVSVNjcmlwdENvbnRl
eHREZWxlZ2F0ZQogICAgIHZvaWQgdWlTY3JpcHREaWRDb21wbGV0ZShXS1N0cmluZ1JlZiByZXN1
bHQsIHVuc2lnbmVkIGNhbGxiYWNrSUQpIG92ZXJyaWRlOwogCisgICAgY29uc3QgVGVzdE9wdGlv
bnMgbV9vcHRpb25zOworICAgIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBtX3VybDsKICAg
ICBXVEY6OlN0cmluZyBtX3VybFN0cmluZzsKIAotICAgIGJvb2wgbV9kdW1wUGl4ZWxzOwotICAg
IGJvb2wgbV9waXhlbFJlc3VsdElzUGVuZGluZyB7IGZhbHNlIH07CiAgICAgc3RkOjpzdHJpbmcg
bV9leHBlY3RlZFBpeGVsSGFzaDsKIAotICAgIGludCBtX3RpbWVvdXQ7CisgICAgaW50IG1fdGlt
ZW91dCB7IDAgfTsKIAogICAgIC8vIEludm9jYXRpb24gc3RhdGUKLSAgICBib29sIG1fZ290SW5p
dGlhbFJlc3BvbnNlOwotICAgIGJvb2wgbV9nb3RGaW5hbE1lc3NhZ2U7Ci0gICAgYm9vbCBtX2dv
dFJlcGFpbnQ7Ci0gICAgYm9vbCBtX2Vycm9yOworICAgIGJvb2wgbV9nb3RJbml0aWFsUmVzcG9u
c2UgeyBmYWxzZSB9OworICAgIGJvb2wgbV9nb3RGaW5hbE1lc3NhZ2UgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9nb3RSZXBhaW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1fZXJyb3IgeyBmYWxzZSB9
OworCisgICAgYm9vbCBtX2R1bXBQaXhlbHMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9waXhlbFJl
c3VsdElzUGVuZGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX3dlYlByb2Nlc3NJc1VucmVzcG9u
c2l2ZSB7IGZhbHNlIH07CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fdGV4dE91dHB1dDsKICAgICBX
S1JldGFpblB0cjxXS0RhdGFSZWY+IG1fYXVkaW9SZXN1bHQ7CiAgICAgV0tSZXRhaW5QdHI8V0tJ
bWFnZVJlZj4gbV9waXhlbFJlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBtX3Jl
cGFpbnRSZWN0czsKICAgICBzdGQ6OnN0cmluZyBtX2Vycm9yTWVzc2FnZTsKLSAgICBib29sIG1f
d2ViUHJvY2Vzc0lzVW5yZXNwb25zaXZlOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVSVNj
cmlwdENvbnRleHQ+IG1fVUlTY3JpcHRDb250ZXh0OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dE9wdGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2ODg2MmJjOGQzYWFhMjU5MDM3MTAyYTQ0NzYyNmRl
YWIwNDExNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RP
cHRpb25zLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRlc3RPcHRpb25zLmgiCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVFIgeworCitzdGF0aWMg
Ym9vbCBwYXRoQ29udGFpbnMoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVSTCwgY29uc3QgY2hh
ciogc3Vic3RyaW5nKQoreworICAgIFN0cmluZyBwYXRoKHBhdGhPclVSTC5jX3N0cigpKTsKKyAg
ICByZXR1cm4gcGF0aC5jb250YWlucyhzdWJzdHJpbmcpOyAvLyBDYXNlLWluc2Vuc2l0aXZlLgor
fQorCitzdGF0aWMgYm9vbCBzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShjb25zdCBzdGQ6OnN0
cmluZyYgcGF0aE9yVVJMKQoreworICAgIHJldHVybiBwYXRoQ29udGFpbnMocGF0aE9yVVJMLCAi
dmlld3BvcnQvIik7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0KGNvbnN0
IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCit7CisjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRB
VElPTikKKyAgICBpZiAocGF0aENvbnRhaW5zKHBhdGhPclVSTCwgImRldmljZS1hZGFwdC8iKSB8
fCBwYXRoQ29udGFpbnMocGF0aE9yVVJMLCAiZGV2aWNlLWFkYXB0XFwiKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisjZW5kaWYKKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wg
aXNTVkdUZXN0UGF0aChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKQoreworICAgIHJldHVy
biBwYXRoQ29udGFpbnMocGF0aE9yVVJMLCAic3ZnL1czQy1TVkctMS4xIikgfHwgcGF0aENvbnRh
aW5zKHBhdGhPclVSTCwgInN2Z1xcVzNDLVNWRy0xLjEiKTsKK30KKworc3RhdGljIGJvb2wgaXNI
aURQSVRlc3RQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCit7CisgICAgcmV0dXJu
IHBhdGhDb250YWlucyhwYXRoT3JVUkwsICIvaGlkcGktIik7Cit9CisKK1Rlc3RPcHRpb25zOjpU
ZXN0T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKQorICAgIDogdXNlRmxleGli
bGVWaWV3cG9ydChzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShwYXRoT3JVUkwpKQorICAgICwg
dXNlRml4ZWRMYXlvdXQoc2hvdWxkVXNlRml4ZWRMYXlvdXQocGF0aE9yVVJMKSkKKyAgICAsIGlz
U1ZHVGVzdChpc1NWR1Rlc3RQYXRoKHBhdGhPclVSTCkpCisgICAgLCBpc0hpRFBJVGVzdChpc0hp
RFBJVGVzdFBhdGgocGF0aE9yVVJMKSkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
T3B0aW9ucy5oCmluZGV4IDUzZDdkMjhjMTViOTM2NDYzZGMxZTE3ZDY1MGMyMGYyMjAwNTkxOWEu
LjZkOWNiNDA3ZGIwMjAyZWMyNjE3YTQxZWFkMDI2ZjcxZWQ0MTIwMDQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RPcHRpb25zLmgKQEAgLTM3LDcgKzM3LDEyIEBAIHN0cnVjdCBUZXN0T3B0aW9u
cyB7CiAgICAgYm9vbCBzaG91bGRTaG93V2ViVmlldyB7IGZhbHNlIH07CiAgICAgYm9vbCB1c2VG
bGV4aWJsZVZpZXdwb3J0IHsgZmFsc2UgfTsKICAgICBib29sIHVzZUZpeGVkTGF5b3V0IHsgZmFs
c2UgfTsKKyAgICBib29sIGlzU1ZHVGVzdCB7IGZhbHNlIH07CisgICAgYm9vbCBpc0hpRFBJVGVz
dCB7IGZhbHNlIH07CisKICAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlkZUxhbmd1YWdlczsKKyAg
ICAKKyAgICBUZXN0T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ0NGE5OGZmNTc4ODM2
ODdjOThlZTkwMWNhYjg4N2IwMzYyY2RhZS4uYjFjODkwYmI3M2UxNjZlNmMwYjFlNzUzMTk0ZmQ4
NjZmYTE0OGRjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0
UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0LDYg
KzM0LDcgQEAKIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMEY1MTY5Q0Mx
NDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUxNjlDQTE0NDUyMjJEMDBFMEE5RDcgLyog
V2ViS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJMEY2MjJDRTkxQkJCM0ExQTAwODM4QUQzIC8qIFRl
c3RPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNjIyQ0U4MUJCQjNBMUEwMDgzOEFEMyAvKiBUZXN0T3B0aW9ucy5jcHAgKi87IHNldHRp
bmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJMEY3M0I1NTExQkE3ODk2ODAwNEIzRUY0
IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNCNTRGMUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJU2NyaXB0
Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTBGNzNCNTUyMUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJ
U2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3M0I1NTAxQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVy
LmggKi87IH07CiAJCTBGNzNCNTVBMUJBNzkyRkYwMDRCM0VGNCAvKiBKU1dyYXBwZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5NTJDMEMxMUYz
Qjk2NTAwMzM5OEI0IC8qIEpTV3JhcHBlci5jcHAgKi87IH07CkBAIC0xNzAsNiArMTcxLDcgQEAK
IC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkwRjIxMDlDNzE4OUM2NTBE
MDBGODc5QTMgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlVGFyZ2V0
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjUxNjlDQTE0NDUyMjJE
MDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0LmZy
YW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY2MjJDRTgx
QkJCM0ExQTAwODM4QUQzIC8qIFRlc3RPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY3M0I1NEYxQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVUlTY3JpcHRDb250cm9s
bGVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNVSVNjcmlw
dENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkw
RjczQjU1MDFCQTc4OTY4MDA0QjNFRjQgLyogSlNVSVNjcmlwdENvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNVSVNjcmlwdENvbnRyb2xsZXIuaDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNVSVNjcmlwdENvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEY3M0I1NTcxQkE3OTI5RTAw
NEIzRUY0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9K
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtNDA2
LDYgKzQwOCw3IEBACiAJCQkJQkM3OTM0MkYxMThGN0YxOTAwNUVBOEUyIC8qIFRlc3RDb250cm9s
bGVyLmggKi8sCiAJCQkJQkNEN0QyRjcxMTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9u
LmNwcCAqLywKIAkJCQlCQ0Q3RDJGNjExOTIxMjc4MDA2REI3RUUgLyogVGVzdEludm9jYXRpb24u
aCAqLywKKwkJCQkwRjYyMkNFODFCQkIzQTFBMDA4MzhBRDMgLyogVGVzdE9wdGlvbnMuY3BwICov
LAogCQkJCTFBMzMyNjA1MUI3NTM5NjUwMEY4OUY2MiAvKiBUZXN0T3B0aW9ucy5oICovLAogCQkJ
CUJDMjUxQTE3MTFEMTY3NzQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVubmVyUHJlZml4LmggKi8s
CiAJCQkJMzE2NEM4RUYxNUQxQURBMTAwRUYxRkUwIC8qIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcCAqLywKQEAgLTkzNSw2ICs5MzgsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhh
c2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJ
MEY2MjJDRTkxQkJCM0ExQTAwODM4QUQzIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNzNCNTVBMUJBNzkyRkYwMDRCM0VGNCAvKiBKU1dyYXBwZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTE4NTEwNDQxQjlBRTE0QTAwNzQ0QUVCIC8qIFdvcmtRdWV1ZU1hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4NTEwM0YxQjlBRTEyOTAwNzQ0QUVCIC8qIEdlb2xv
Y2F0aW9uUHJvdmlkZXJNb2NrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQppbmRleCAzMWFkYWMwNWY2NDkwNGI4
NTUxMjViNzIwMTQ5YzUwZGU4ZTg3NGQzLi5hZjA4MDRmMDFlMmYzNmYxMzEyY2ZjNzUwZWVkYTI5
YzFhZjRkODYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29u
dHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJv
bGxlcklPUy5tbQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUNvbmZpZ3VyZVZpZXdGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogICAgIH0K
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRp
b25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0IFRlc3RJbnZvY2F0aW9uJikgY29uc3QKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRl
c3QoVGVzdE9wdGlvbnMmLCBjb25zdCBzdGQ6OnN0cmluZyYpIGNvbnN0CiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggMmNh
YzA3ZmQ5MmUwZmIzZjdkZmUyZjhlODc4NzVmYWVjYjkxZjRiYS4uYTUxNjMyOGFlZDg0NDA2ODky
OTA5MGU0MTA5ODA3ZTM0OGQxODA1YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvVGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICB9CiB9CiAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0Zv
clRlc3QoVGVzdE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KSBj
b25zdAordm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRp
b25zRm9yVGVzdChUZXN0T3B0aW9ucyYgb3B0aW9ucywgY29uc3Qgc3RkOjpzdHJpbmcmKSBjb25z
dAogewogICAgIG9wdGlvbnMudXNlVGhyZWFkZWRTY3JvbGxpbmcgPSB0cnVlOwogICAgIG9wdGlv
bnMudXNlUmVtb3RlTGF5ZXJUcmVlID0gc2hvdWxkVXNlUmVtb3RlTGF5ZXJUcmVlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262125</attachid>
            <date>2015-09-29 17:46:32 -0700</date>
            <delta_ts>2015-09-29 17:57:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149650-20150929174608.patch</filename>
            <type>text/plain</type>
            <size>26589</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjIxOTA1MGYxZDhjNDU1MTFiY2NiYTRhOGM0YzUzNTk4
MmRlNjk4OS4uNDNmYmZiNDFlM2JkMTk2MWYyZjdhMDVkOTE1MTMzMjUyZDE0NWE3NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDE1LTA5LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgZmFpbHMgdG8gYXBwbHkgInVzZUZsZXhpYmxlVmll
d3BvcnQiIHdoZW4gaXQncyBzcGVjaWZpZWQgaW4gYSBmaWxlIGNvbW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTY1MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGVzdEludm9jYXRp
b246Omludm9rZSgpIGNvbnN1bHRlZCBzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZSgpLCBidXQg
dGhhdCBvbmx5CisgICAgICAgIGxvb2tzIGF0IHRoZSBmaWxlIHBhdGgsIGFuZCBub3QgdGhlIGN1
c3RvbSBvcHRpb25zIHRoYXQgY29tZSBmcm9tIGZpbGUgY29tbWVudHMuCisgICAgICAgIAorICAg
ICAgICBGaXggYnkgY29tcHV0aW5nIFRlc3RPcHRpb25zIGJlZm9yZSBtYWtpbmcgdGhlIFRlc3RJ
bnZvY2F0aW9uLCBhbmQgc2V0dGluZyB0aGVtCisgICAgICAgIGFzIGNvbnN0IFRlc3RJbnZvY2F0
aW9uIGRhdGEuIFRoaXMgbWVhbnQgY2hhbmdpbmcgdmFyaW91cyBjYWxsIHNpdGVzIHRvIHRha2UK
KyAgICAgICAgdGhlIHN0ZDo6c3RyaW5nIHBhdGhPclVSTCwgcmF0aGVyIHRoYW4gdGhlIFRlc3RJ
bnZvY2F0aW9uIGl0c2VsZi4KKyAgICAgICAgCisgICAgICAgIEFsc28gaW5pdGlhbGl6ZSBUZXN0
SW52b2NhdGlvbiB3aXRoIGEgV0tVUkxSZWYsIHJhdGhlciB0aGFuIGEgc3RkOjpzdHJpbmcuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QpOgorICAgICAgICAoV1RS
Ojp0ZXN0UGF0aCk6CisgICAgICAgIChXVFI6OmNyZWF0ZVRlc3RVUkwpOgorICAgICAgICAoV1RS
Ojp1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjp1cGRhdGVXZWJWaWV3U2l6ZUZvclRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6dXBkYXRlV2luZG93U2NhbGVGb3JUZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisgICAgICAgIChXVFI6OmNyZWF0ZVdLVVJMKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3VsZE1ha2VWaWV3cG9y
dEZsZXhpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3Vs
ZFVzZUZpeGVkTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmg6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpvcHRpb25zKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcDogQ29waWVkIGZyb20g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oLgorICAgICAgICAoV1RSOjpwYXRo
Q29udGFpbnMpOgorICAgICAgICAoV1RSOjpzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZSk6Cisg
ICAgICAgIChXVFI6OnNob3VsZFVzZUZpeGVkTGF5b3V0KToKKyAgICAgICAgKFdUUjo6aXNTVkdU
ZXN0UGF0aCk6CisgICAgICAgIChXVFI6OmlzSGlEUElUZXN0UGF0aCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0T3B0aW9ucy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
ZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKFdUUjo6cGF0aENvbnRhaW5zKToK
KyAgICAgICAgKFdUUjo6c2hvdWxkVXNlRml4ZWRMYXlvdXQpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRp
b25zRm9yVGVzdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNw
ZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21h
Yy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnVw
ZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QpOgorCiAyMDE1LTA5LTI5ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIEFsbG93
ICdwcmVwYXJlLUNoYW5nZUxvZycgdG8gYmUgdXNlZCB3aXRob3V0IEN5Z3dpbgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjNkOWYwMDE3NDY4NzI3NGNlNzUwY2VhMzk5
NGUyYmZkN2RlYjM2Ni4uYjgxMzc3YTZkYmIzOTcxYmUzZDU3ZTU2Mjg1N2JjMGExNDk4YzJmZiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0xMiw2ICsxMiw3IEBAIHNl
dChXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0v
UGl4ZWxEdW1wU3VwcG9ydC5jcHAKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdENv
bnRyb2xsZXIuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1Rlc3RJbnZvY2F0aW9u
LmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9UZXN0T3B0aW9ucy5jcHAKICAgICAk
e1dFQktJVF9URVNUUlVOTkVSX0RJUn0vV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCiAgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1dvcmtRdWV1ZU1hbmFnZXIuY3BwCiAgICAgJHtXRUJL
SVRfVEVTVFJVTk5FUl9VSVNDUklQVENPTlRFWFRfRElSfS9VSVNjcmlwdENvbnRleHQuY3BwCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDVlN2E1Njg0MzEz
NDM4NmE4ODJhNDkzNTAzYTQxZWVhYjBmN2I2NjAuLjVjODE4YjRkODQxMzJlZjgyYWRkMzUwMDM3
MmJiZTAxNjMwZGFhYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUg
PHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CkBAIC01ODUsNyArNTg2
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0
IFRlc3RPcHRpb25zJiBvcHRpb25zKQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjplbnN1cmVWaWV3
U3VwcG9ydHNPcHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAg
ICBhdXRvIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QodGVzdCk7CisgICAgYXV0byBvcHRp
b25zID0gdGVzdC5vcHRpb25zKCk7CiAKICAgICBpZiAobV9tYWluV2ViVmlldykgewogICAgICAg
ICBpZiAobV9tYWluV2ViVmlldy0+dmlld1N1cHBvcnRzT3B0aW9ucyhvcHRpb25zKSkKQEAgLTgw
Nyw3ICs4MDgsNyBAQCBjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6bmV0d29ya1Byb2Nlc3NO
YW1lKCkKICNlbmRpZgogfQogCi1zdGF0aWMgc3RkOjpzdHJpbmcgdGVzdFBhdGgoY29uc3QgV0tV
UkxSZWYgdXJsKQorc3RhdGljIHN0ZDo6c3RyaW5nIHRlc3RQYXRoKFdLVVJMUmVmIHVybCkKIHsK
ICAgICBhdXRvIHNjaGVtZSA9IGFkb3B0V0soV0tVUkxDb3B5U2NoZW1lKHVybCkpOwogICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nSWdub3JpbmdDYXNlKHNjaGVtZS5nZXQoKSwg
ImZpbGUiKSkgewpAQCAtODE5LDYgKzgyMCwzOSBAQCBzdGF0aWMgc3RkOjpzdHJpbmcgdGVzdFBh
dGgoY29uc3QgV0tVUkxSZWYgdXJsKQogICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwogfQogCitz
dGF0aWMgV0tVUkxSZWYgY3JlYXRlVGVzdFVSTChjb25zdCBjaGFyKiBwYXRoT3JVUkwpCit7Cisg
ICAgaWYgKHN0cnN0cihwYXRoT3JVUkwsICJodHRwOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwg
Imh0dHBzOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwgImZpbGU6Ly8iKSkKKyAgICAgICAgcmV0
dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGhPclVSTCk7CisKKyAgICAvLyBDcmVh
dGluZyBmcm9tIGZpbGVzeXRlbSBwYXRoLgorICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4ocGF0
aE9yVVJMKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25z
dCBjaGFyIHNlcGFyYXRvciA9ICcvJzsKKyAgICBib29sIGlzQWJzb2x1dGVQYXRoID0gcGF0aE9y
VVJMWzBdID09IHNlcGFyYXRvcjsKKyAgICBjb25zdCBjaGFyKiBmaWxlUHJlZml4ID0gImZpbGU6
Ly8iOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVuKGZpbGVQ
cmVmaXgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOworICAgIGlmIChp
c0Fic29sdXRlUGF0aCkgeworICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0
KCksIGZpbGVQcmVmaXgpOworICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVu
Z3RoLCBwYXRoT3JVUkwpOworICAgIH0gZWxzZSB7CisgICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAv
LyAxIGZvciB0aGUgc2VwYXJhdG9yCisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQ
cmVmaXgpOworICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgs
IFBBVEhfTUFYKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBzaXplX3QgbnVtQ2hh
cmFjdGVycyA9IHN0cmxlbihidWZmZXIuZ2V0KCkpOworICAgICAgICBidWZmZXJbbnVtQ2hhcmFj
dGVyc10gPSBzZXBhcmF0b3I7CisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCkgKyBudW1DaGFy
YWN0ZXJzICsgMSwgcGF0aE9yVVJMKTsKKyAgICB9CisKKyAgICByZXR1cm4gV0tVUkxDcmVhdGVX
aXRoVVRGOENTdHJpbmcoYnVmZmVyLmdldCgpKTsKK30KKwogc3RhdGljIGJvb2wgcGFyc2VCb29s
ZWFuVGVzdEhlYWRlclZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gInRydWUiKQpAQCAtODMwLDkgKzg2NCwxMSBAQCBzdGF0aWMgYm9vbCBwYXJzZUJv
b2xlYW5UZXN0SGVhZGVyVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRl
cihUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQor
c3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihUZXN0T3B0aW9ucyYg
dGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCiB7Ci0gICAgc3RkOjpz
dHJpbmcgZmlsZW5hbWUgPSB0ZXN0UGF0aCh0ZXN0LnVybCgpKTsKKyAgICAvLyBHcm9zcy4gTmVl
ZCB0byByZWR1Y2UgY29udmVyc2lvbnMgYmV0d2VlbiBhbGwgdGhlIHN0cmluZyB0eXBlcyBhbmQg
VVJMcy4KKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwoQWRvcHRXSywgY3JlYXRlVGVz
dFVSTChwYXRoT3JVUkwuY19zdHIoKSkpOworICAgIHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0gdGVz
dFBhdGgod2tVUkwuZ2V0KCkpOwogICAgIGlmIChmaWxlbmFtZS5lbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTg3NCwyOSArOTEwLDI0IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRlc3RPcHRp
b25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25zLCBjb25zdCBUZXN0CiAg
ICAgfQogfQogCi1UZXN0T3B0aW9ucyBUZXN0Q29udHJvbGxlcjo6dGVzdE9wdGlvbnNGb3JUZXN0
KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KSBjb25zdAorVGVzdE9wdGlvbnMgVGVzdENvbnRy
b2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKSBj
b25zdAogewotICAgIFRlc3RPcHRpb25zIG9wdGlvbnM7CisgICAgVGVzdE9wdGlvbnMgb3B0aW9u
cyhwYXRoT3JVUkwpOwogCiAgICAgb3B0aW9ucy51c2VSZW1vdGVMYXllclRyZWUgPSBtX3Nob3Vs
ZFVzZVJlbW90ZUxheWVyVHJlZTsKICAgICBvcHRpb25zLnNob3VsZFNob3dXZWJWaWV3ID0gbV9z
aG91bGRTaG93V2ViVmlldzsKLSAgICBvcHRpb25zLnVzZUZpeGVkTGF5b3V0ID0gdGVzdC5zaG91
bGRVc2VGaXhlZExheW91dCgpOwotICAgIG9wdGlvbnMudXNlRmxleGlibGVWaWV3cG9ydCA9IHRl
c3Quc2hvdWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKTsKLQotICAgIHVwZGF0ZVBsYXRmb3JtU3Bl
Y2lmaWNUZXN0T3B0aW9uc0ZvclRlc3Qob3B0aW9ucywgdGVzdCk7CiAKLSAgICB1cGRhdGVUZXN0
T3B0aW9uc0Zyb21UZXN0SGVhZGVyKG9wdGlvbnMsIHRlc3QpOworICAgIHVwZGF0ZVBsYXRmb3Jt
U3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3Qob3B0aW9ucywgcGF0aE9yVVJMKTsKKyAgICB1cGRh
dGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKG9wdGlvbnMsIHBhdGhPclVSTCk7CiAKICAgICBy
ZXR1cm4gb3B0aW9uczsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlV2ViVmlld1Np
emVGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogewotICAgIGJvb2wgaXNTVkdX
M0NUZXN0ID0gdGVzdC51cmxDb250YWlucygic3ZnL1czQy1TVkctMS4xIikgfHwgdGVzdC51cmxD
b250YWlucygic3ZnXFxXM0MtU1ZHLTEuMSIpOwotCiAgICAgdW5zaWduZWQgd2lkdGggPSB2aWV3
V2lkdGg7CiAgICAgdW5zaWduZWQgaGVpZ2h0ID0gdmlld0hlaWdodDsKLSAgICBpZiAoaXNTVkdX
M0NUZXN0KSB7CisgICAgaWYgKHRlc3Qub3B0aW9ucygpLmlzU1ZHVGVzdCkgewogICAgICAgICB3
aWR0aCA9IHczY1NWR1ZpZXdXaWR0aDsKICAgICAgICAgaGVpZ2h0ID0gdzNjU1ZHVmlld0hlaWdo
dDsKICAgICB9CkBAIC05MDYsOCArOTM3LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRl
V2ViVmlld1NpemVGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogCiB2b2lkIFRl
c3RDb250cm9sbGVyOjp1cGRhdGVXaW5kb3dTY2FsZUZvclRlc3QoUGxhdGZvcm1XZWJWaWV3KiB2
aWV3LCBjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAgICBib29sIG5lZWRzSGlnaERQ
SVdpbmRvdyA9IHRlc3QudXJsQ29udGFpbnMoIi9oaWRwaS0iKTsKLSAgICB2aWV3LT5jaGFuZ2VX
aW5kb3dTY2FsZUlmTmVlZGVkKG5lZWRzSGlnaERQSVdpbmRvdyA/IDIgOiAxKTsKKyAgICB2aWV3
LT5jaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKHRlc3Qub3B0aW9ucygpLmlzSGlEUElUZXN0ID8g
MiA6IDEpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjb25maWd1cmVWaWV3Rm9yVGVzdChj
b25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKQEAgLTEwMDksOCArMTAzOSwxMiBAQCBib29sIFRl
c3RDb250cm9sbGVyOjpydW5UZXN0KGNvbnN0IGNoYXIqIGlucHV0TGluZSkKICAgICBUZXN0Q29t
bWFuZCBjb21tYW5kID0gcGFyc2VJbnB1dExpbmUoc3RkOjpzdHJpbmcoaW5wdXRMaW5lKSk7CiAK
ICAgICBtX3N0YXRlID0gUnVubmluZ1Rlc3Q7CisgICAgCisgICAgVGVzdE9wdGlvbnMgb3B0aW9u
cyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21tYW5kLnBhdGhPclVSTCk7CisKKyAgICBXS1JldGFp
blB0cjxXS1VSTFJlZj4gd2tVUkwoQWRvcHRXSywgY3JlYXRlVGVzdFVSTChjb21tYW5kLnBhdGhP
clVSTC5jX3N0cigpKSk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKIAotICAgIG1fY3VycmVu
dEludm9jYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPihjb21tYW5kLnBh
dGhPclVSTCk7CiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8fCBtX3Nob3VsZER1
bXBQaXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+c2V0SXNQ
aXhlbFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CiAgICAgaWYgKGNvbW1hbmQudGlt
ZW91dCA+IDApCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYTZk
OWFmNWYwN2Y4ZTI0N2FiOWJkN2NhNGM2YjEyYzBhN2IzNGRkYS4uZTlkOWI2Zjk3OWY0YWY0YWQz
Y2Y0OWY0NjRmMDZkYjE0MmI0ZDg0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaApAQCAtMTU4LDggKzE1OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXpl
VGVzdFBsdWdpbkRpcmVjdG9yeSgpOwogCiAgICAgdm9pZCBlbnN1cmVWaWV3U3VwcG9ydHNPcHRp
b25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpOwotICAgIFRlc3RPcHRpb25zIHRlc3RP
cHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpIGNvbnN0OwotICAgIHZvaWQgdXBk
YXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0
IFRlc3RJbnZvY2F0aW9uJikgY29uc3Q7CisgICAgVGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JU
ZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpIGNvbnN0OworICAgIHZvaWQgdXBkYXRl
UGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBwYXRoT3JVUkwpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVXZWJWaWV3U2l6
ZUZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKTsKICAgICB2b2lkIHVwZGF0ZVdpbmRvd1Nj
YWxlRm9yVGVzdChQbGF0Zm9ybVdlYlZpZXcqLCBjb25zdCBUZXN0SW52b2NhdGlvbiYpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBmZDczNzI1NzViNDlh
YjhlMGJlNzkwOGY2ODFhMDczODA1MTNhYzk2Li4yZTBmNzc0ZWNjMmI3ZTkxNmVkYzBjNjVlNDI5
ZGY0ZDk0YTU5ZTBlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtNTEsNTYgKzUxLDE1IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZhdGVNYWMu
aD4KICNlbmRpZgogCi0jaW5jbHVkZSA8dW5pc3RkLmg+IC8vIEZvciBnZXRjd2QuCi0KIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0YXRpYyBXS1VSTFJlZiBjcmVhdGVXS1VSTChj
b25zdCBjaGFyKiBwYXRoT3JVUkwpCi17Ci0gICAgaWYgKHN0cnN0cihwYXRoT3JVUkwsICJodHRw
Oi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwgImh0dHBzOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVS
TCwgImZpbGU6Ly8iKSkKLSAgICAgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHBhdGhPclVSTCk7Ci0KLSAgICAvLyBDcmVhdGluZyBmcm9tIGZpbGVzeXRlbSBwYXRoLgotICAg
IHNpemVfdCBsZW5ndGggPSBzdHJsZW4ocGF0aE9yVVJMKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBjaGFyIHNlcGFyYXRvciA9ICcvJzsKLSAgICBi
b29sIGlzQWJzb2x1dGVQYXRoID0gcGF0aE9yVVJMWzBdID09IHNlcGFyYXRvcjsKLSAgICBjb25z
dCBjaGFyKiBmaWxlUHJlZml4ID0gImZpbGU6Ly8iOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
cHJlZml4TGVuZ3RoID0gc3RybGVuKGZpbGVQcmVmaXgpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRy
PGNoYXJbXT4gYnVmZmVyOwotICAgIGlmIChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7
Ci0gICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwotICAgICAgICBzdHJj
cHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGgg
KyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgc2VwYXJhdG9yCi0gICAgICAg
IHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwotICAgICAgICBpZiAoIWdldGN3ZChi
dWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIFBBVEhfTUFYKSkKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICBzaXplX3QgbnVtQ2hhcmFjdGVycyA9IHN0cmxlbihidWZmZXIuZ2V0KCkp
OwotICAgICAgICBidWZmZXJbbnVtQ2hhcmFjdGVyc10gPSBzZXBhcmF0b3I7Ci0gICAgICAgIHN0
cmNweShidWZmZXIuZ2V0KCkgKyBudW1DaGFyYWN0ZXJzICsgMSwgcGF0aE9yVVJMKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVmZmVyLmdldCgpKTsK
LX0KLQotVGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBw
YXRoT3JVUkwpCi0gICAgOiBtX3VybChBZG9wdFdLLCBjcmVhdGVXS1VSTChwYXRoT3JVUkwuY19z
dHIoKSkpCi0gICAgLCBtX2R1bXBQaXhlbHMoZmFsc2UpCi0gICAgLCBtX3RpbWVvdXQoMCkKLSAg
ICAsIG1fZ290SW5pdGlhbFJlc3BvbnNlKGZhbHNlKQotICAgICwgbV9nb3RGaW5hbE1lc3NhZ2Uo
ZmFsc2UpCi0gICAgLCBtX2dvdFJlcGFpbnQoZmFsc2UpCi0gICAgLCBtX2Vycm9yKGZhbHNlKQot
ICAgICwgbV93ZWJQcm9jZXNzSXNVbnJlc3BvbnNpdmUoZmFsc2UpCitUZXN0SW52b2NhdGlvbjo6
VGVzdEludm9jYXRpb24oV0tVUkxSZWYgdXJsLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykK
KyAgICA6IG1fb3B0aW9ucyhvcHRpb25zKQorICAgICwgbV91cmwodXJsKQogewogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyht
X3VybC5nZXQoKSkpOwogCkBAIC0xNDQsMjEgKzEwMyw2IEBAIGJvb2wgVGVzdEludm9jYXRpb246
OnNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3MoKSBjb25zdAogICAgIHJldHVybiB1cmxD
b250YWlucygiZ2xvYmFsaGlzdG9yeS8iKTsKIH0KIAotYm9vbCBUZXN0SW52b2NhdGlvbjo6c2hv
dWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKSBjb25zdAotewotICAgIHJldHVybiB1cmxDb250YWlu
cygidmlld3BvcnQvIik7Ci19Ci0KLWJvb2wgVGVzdEludm9jYXRpb246OnNob3VsZFVzZUZpeGVk
TGF5b3V0KCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQotICAg
IGlmICh1cmxDb250YWlucygiZGV2aWNlLWFkYXB0LyIpIHx8IHVybENvbnRhaW5zKCJkZXZpY2Ut
YWRhcHRcXCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZva2UoKQogewogICAgIFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5jb25maWd1cmVWaWV3Rm9yVGVzdCgqdGhpcyk7CkBAIC0xODEs
NyArMTI1LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKICAgICBXS0RpY3Rpb25h
cnlTZXRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpLCBkdW1wRnJhbWVMb2FkRGVsZWdh
dGVzS2V5LmdldCgpLCBkdW1wRnJhbWVMb2FkRGVsZWdhdGVzVmFsdWUuZ2V0KCkpOwogCiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZUZsZXhpYmxlVmlld3BvcnRLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VGbGV4aWJsZVZpZXdwb3J0IikpOwot
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gdXNlRmxleGlibGVWaWV3cG9ydFZhbHVlID0g
YWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoc2hvdWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKSkpOwor
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gdXNlRmxleGlibGVWaWV3cG9ydFZhbHVlID0g
YWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUob3B0aW9ucygpLnVzZUZsZXhpYmxlVmlld3BvcnQpKTsK
ICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpLCB1c2VG
bGV4aWJsZVZpZXdwb3J0S2V5LmdldCgpLCB1c2VGbGV4aWJsZVZpZXdwb3J0VmFsdWUuZ2V0KCkp
OwogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGR1bXBQaXhlbHNLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEdW1wUGl4ZWxzIikpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDg2MTI3Y2E4Y2MzOTQ1YzhhYTgzYjJm
ZDQ5ZTgxY2ZhYWUzNGE5NjkuLmVhYzBiOGE0MjM5MDkyYzY3MWUzYmJkNTFhNzkwNTYzNGQ4NWNj
MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTI3LDggKzI3
LDggQEAKICNkZWZpbmUgVGVzdEludm9jYXRpb25faAogCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUu
aCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlVJU2NyaXB0Q29udGV4dC5o
IgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgpAQCAtMzksMTEgKzM5LDEzIEBAIG5hbWVzcGFjZSBXVFIgewogY2xhc3MgVGVz
dEludm9jYXRpb24gOiBwdWJsaWMgVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFRlc3RJbnZvY2F0aW9uKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBU
ZXN0SW52b2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKTsKKyAgICBleHBsaWNp
dCBUZXN0SW52b2NhdGlvbihXS1VSTFJlZiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICB+VGVz
dEludm9jYXRpb24oKTsKIAogICAgIFdLVVJMUmVmIHVybCgpIGNvbnN0OwogICAgIGJvb2wgdXJs
Q29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OworICAgIAorICAgIGNvbnN0IFRlc3RPcHRpb25z
JiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKICAgICB2b2lkIHNldElz
UGl4ZWxUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKQEAgLTkw
LDI3ICs5MiwzMCBAQCBwcml2YXRlOgogICAgIC8vIFVJU2NyaXB0Q29udGV4dERlbGVnYXRlCiAg
ICAgdm9pZCB1aVNjcmlwdERpZENvbXBsZXRlKFdLU3RyaW5nUmVmIHJlc3VsdCwgdW5zaWduZWQg
Y2FsbGJhY2tJRCkgb3ZlcnJpZGU7CiAKKyAgICBjb25zdCBUZXN0T3B0aW9ucyBtX29wdGlvbnM7
CisgICAgCiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IG1fdXJsOwogICAgIFdURjo6U3RyaW5n
IG1fdXJsU3RyaW5nOwogCi0gICAgYm9vbCBtX2R1bXBQaXhlbHM7Ci0gICAgYm9vbCBtX3BpeGVs
UmVzdWx0SXNQZW5kaW5nIHsgZmFsc2UgfTsKICAgICBzdGQ6OnN0cmluZyBtX2V4cGVjdGVkUGl4
ZWxIYXNoOwogCi0gICAgaW50IG1fdGltZW91dDsKKyAgICBpbnQgbV90aW1lb3V0IHsgMCB9Owog
CiAgICAgLy8gSW52b2NhdGlvbiBzdGF0ZQotICAgIGJvb2wgbV9nb3RJbml0aWFsUmVzcG9uc2U7
Ci0gICAgYm9vbCBtX2dvdEZpbmFsTWVzc2FnZTsKLSAgICBib29sIG1fZ290UmVwYWludDsKLSAg
ICBib29sIG1fZXJyb3I7CisgICAgYm9vbCBtX2dvdEluaXRpYWxSZXNwb25zZSB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2dvdEZpbmFsTWVzc2FnZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2dvdFJl
cGFpbnQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lcnJvciB7IGZhbHNlIH07CisKKyAgICBib29s
IG1fZHVtcFBpeGVscyB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BpeGVsUmVzdWx0SXNQZW5kaW5n
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2ViUHJvY2Vzc0lzVW5yZXNwb25zaXZlIHsgZmFsc2Ug
fTsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV90ZXh0T3V0cHV0OwogICAgIFdLUmV0YWluUHRyPFdL
RGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBtX3Bp
eGVsUmVzdWx0OwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fcmVwYWludFJlY3RzOwog
ICAgIHN0ZDo6c3RyaW5nIG1fZXJyb3JNZXNzYWdlOwotICAgIGJvb2wgbV93ZWJQcm9jZXNzSXNV
bnJlc3BvbnNpdmU7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVJU2NyaXB0Q29udGV4dD4g
bV9VSVNjcmlwdENvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdE9wdGlvbnMuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDA5YzMyZWFhMzRkZmIzYTdkNmI4MjcxNzdhODRhMjEzNDk4YWY0ZQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwCkBA
IC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVzdE9wdGlvbnMuaCIKKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBib29sIHBhdGhDb250
YWlucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMLCBjb25zdCBjaGFyKiBzdWJzdHJpbmcp
Cit7CisgICAgU3RyaW5nIHBhdGgocGF0aE9yVVJMLmNfc3RyKCkpOworICAgIHJldHVybiBwYXRo
LmNvbnRhaW5zKHN1YnN0cmluZyk7IC8vIENhc2UtaW5zZW5zaXRpdmUuCit9CisKK3N0YXRpYyBi
b29sIHNob3VsZE1ha2VWaWV3cG9ydEZsZXhpYmxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JV
UkwpCit7CisgICAgcmV0dXJuIHBhdGhDb250YWlucyhwYXRoT3JVUkwsICJ2aWV3cG9ydC8iKTsK
K30KKworc3RhdGljIGJvb2wgc2hvdWxkVXNlRml4ZWRMYXlvdXQoY29uc3Qgc3RkOjpzdHJpbmcm
IHBhdGhPclVSTCkKK3sKKyNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQorICAgIGlm
IChwYXRoQ29udGFpbnMocGF0aE9yVVJMLCAiZGV2aWNlLWFkYXB0LyIpIHx8IHBhdGhDb250YWlu
cyhwYXRoT3JVUkwsICJkZXZpY2UtYWRhcHRcXCIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIGlmICh0ZXN0LnVybENv
bnRhaW5zKCJzdGlja3kvIikgfHwgdGVzdC51cmxDb250YWlucygic3RpY2t5XFwiKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGlj
IGJvb2wgaXNTVkdUZXN0UGF0aChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKQoreworICAg
IHJldHVybiBwYXRoQ29udGFpbnMocGF0aE9yVVJMLCAic3ZnL1czQy1TVkctMS4xIikgfHwgcGF0
aENvbnRhaW5zKHBhdGhPclVSTCwgInN2Z1xcVzNDLVNWRy0xLjEiKTsKK30KKworc3RhdGljIGJv
b2wgaXNIaURQSVRlc3RQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCit7CisgICAg
cmV0dXJuIHBhdGhDb250YWlucyhwYXRoT3JVUkwsICIvaGlkcGktIik7Cit9CisKK1Rlc3RPcHRp
b25zOjpUZXN0T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKQorICAgIDogdXNl
RmxleGlibGVWaWV3cG9ydChzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShwYXRoT3JVUkwpKQor
ICAgICwgdXNlRml4ZWRMYXlvdXQoc2hvdWxkVXNlRml4ZWRMYXlvdXQocGF0aE9yVVJMKSkKKyAg
ICAsIGlzU1ZHVGVzdChpc1NWR1Rlc3RQYXRoKHBhdGhPclVSTCkpCisgICAgLCBpc0hpRFBJVGVz
dChpc0hpRFBJVGVzdFBhdGgocGF0aE9yVVJMKSkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0T3B0aW9ucy5oCmluZGV4IDUzZDdkMjhjMTViOTM2NDYzZGMxZTE3ZDY1MGMyMGYyMjAw
NTkxOWEuLjZkOWNiNDA3ZGIwMjAyZWMyNjE3YTQxZWFkMDI2ZjcxZWQ0MTIwMDQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgKQEAgLTM3LDcgKzM3LDEyIEBAIHN0cnVjdCBUZXN0
T3B0aW9ucyB7CiAgICAgYm9vbCBzaG91bGRTaG93V2ViVmlldyB7IGZhbHNlIH07CiAgICAgYm9v
bCB1c2VGbGV4aWJsZVZpZXdwb3J0IHsgZmFsc2UgfTsKICAgICBib29sIHVzZUZpeGVkTGF5b3V0
IHsgZmFsc2UgfTsKKyAgICBib29sIGlzU1ZHVGVzdCB7IGZhbHNlIH07CisgICAgYm9vbCBpc0hp
RFBJVGVzdCB7IGZhbHNlIH07CisKICAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlkZUxhbmd1YWdl
czsKKyAgICAKKyAgICBUZXN0T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ0NGE5OGZm
NTc4ODM2ODdjOThlZTkwMWNhYjg4N2IwMzYyY2RhZS4uYjFjODkwYmI3M2UxNjZlNmMwYjFlNzUz
MTk0ZmQ4NjZmYTE0OGRjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJL
aXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTM0LDYgKzM0LDcgQEAKIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMEY1
MTY5Q0MxNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUxNjlDQTE0NDUyMjJEMDBFMEE5
RDcgLyogV2ViS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJMEY2MjJDRTkxQkJCM0ExQTAwODM4QUQz
IC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNjIyQ0U4MUJCQjNBMUEwMDgzOEFEMyAvKiBUZXN0T3B0aW9ucy5jcHAgKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJMEY3M0I1NTExQkE3ODk2ODAw
NEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNCNTRGMUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJ
U2NyaXB0Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTBGNzNCNTUyMUJBNzg5NjgwMDRCM0VGNCAv
KiBKU1VJU2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY3M0I1NTAxQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250
cm9sbGVyLmggKi87IH07CiAJCTBGNzNCNTVBMUJBNzkyRkYwMDRCM0VGNCAvKiBKU1dyYXBwZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5NTJD
MEMxMUYzQjk2NTAwMzM5OEI0IC8qIEpTV3JhcHBlci5jcHAgKi87IH07CkBAIC0xNzAsNiArMTcx
LDcgQEAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkwRjIxMDlDNzE4
OUM2NTBEMDBGODc5QTMgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNl
VGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjUxNjlDQTE0
NDUyMjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2Vi
S2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY2
MjJDRTgxQkJCM0ExQTAwODM4QUQzIC8qIFRlc3RPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY3M0I1NEYxQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVUlTY3JpcHRD
b250cm9sbGVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNV
SVNjcmlwdENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkwRjczQjU1MDFCQTc4OTY4MDA0QjNFRjQgLyogSlNVSVNjcmlwdENvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNVSVNjcmlwdENvbnRyb2xsZXIuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNVSVNjcmlwdENvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEY3M0I1NTcxQkE3
OTI5RTAwNEIzRUY0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1l
ID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpA
QCAtNDA2LDYgKzQwOCw3IEBACiAJCQkJQkM3OTM0MkYxMThGN0YxOTAwNUVBOEUyIC8qIFRlc3RD
b250cm9sbGVyLmggKi8sCiAJCQkJQkNEN0QyRjcxMTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZv
Y2F0aW9uLmNwcCAqLywKIAkJCQlCQ0Q3RDJGNjExOTIxMjc4MDA2REI3RUUgLyogVGVzdEludm9j
YXRpb24uaCAqLywKKwkJCQkwRjYyMkNFODFCQkIzQTFBMDA4MzhBRDMgLyogVGVzdE9wdGlvbnMu
Y3BwICovLAogCQkJCTFBMzMyNjA1MUI3NTM5NjUwMEY4OUY2MiAvKiBUZXN0T3B0aW9ucy5oICov
LAogCQkJCUJDMjUxQTE3MTFEMTY3NzQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVubmVyUHJlZml4
LmggKi8sCiAJCQkJMzE2NEM4RUYxNUQxQURBMTAwRUYxRkUwIC8qIFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmNwcCAqLywKQEAgLTkzNSw2ICs5MzgsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1
aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAo
CisJCQkJMEY2MjJDRTkxQkJCM0ExQTAwODM4QUQzIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNzNCNTVBMUJBNzkyRkYwMDRCM0VGNCAvKiBKU1dyYXBwZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTE4NTEwNDQxQjlBRTE0QTAwNzQ0QUVCIC8qIFdvcmtRdWV1ZU1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4NTEwM0YxQjlBRTEyOTAwNzQ0QUVCIC8q
IEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCmluZGV4IGFhYWU4OGIy
M2Y0NGRiMjA1MTFjMDg2MzEzZGQ4ODI1M2E3NjI2M2IuLmI0ZTMxNTA0M2JiOWUwOTQyZGU2MGNl
MGExYWVmN2UzMzVhNDUwY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZs
L1Rlc3RDb250cm9sbGVyRWZsLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9U
ZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTEzNCwyMyArMTM0LDI0IEBAIGNvbnN0IGNoYXIqIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZygpCiAgICAgcmV0dXJu
IDA7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0KGNvbnN0IFRlc3RJbnZv
Y2F0aW9uJiB0ZXN0KQorc3RhdGljIGJvb2wgcGF0aENvbnRhaW5zKGNvbnN0IHN0ZDo6c3RyaW5n
JiBwYXRoT3JVUkwsIGNvbnN0IGNoYXIqIHN1YnN0cmluZykKIHsKLSNpZiBFTkFCTEUoQ1NTX0RF
VklDRV9BREFQVEFUSU9OKQotICAgIGlmICh0ZXN0LnVybENvbnRhaW5zKCJkZXZpY2UtYWRhcHQv
IikgfHwgdGVzdC51cmxDb250YWlucygiZGV2aWNlLWFkYXB0XFwiKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0jZW5kaWYKKyAgICBTdHJpbmcgcGF0aChwYXRoT3JVUkwuY19zdHIoKSk7CisgICAg
cmV0dXJuIHBhdGguY29udGFpbnMoc3Vic3RyaW5nKTsgLy8gQ2FzZS1pbnNlbnNpdGl2ZS4KK30K
IAorc3RhdGljIGJvb2wgc2hvdWxkVXNlRml4ZWRMYXlvdXQoY29uc3Qgc3RkOjpzdHJpbmcmIHBh
dGhPclVSTCkKK3sKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKHRlc3Qu
dXJsQ29udGFpbnMoInN0aWNreS8iKSB8fCB0ZXN0LnVybENvbnRhaW5zKCJzdGlja3lcXCIpKQor
ICAgIGlmIChwYXRoQ29udGFpbnMocGF0aE9yVVJMLCAic3RpY2t5LyIpIHx8IHBhdGhDb250YWlu
cyhwYXRoT3JVUkwsICJzdGlja3lcXCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZv
cm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNv
bnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KSBjb25zdAordm9pZCBUZXN0Q29udHJvbGxlcjo6dXBk
YXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYgdGVzdE9w
dGlvbnMsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpIGNvbnN0CiB7Ci0gICAgdGVzdE9w
dGlvbnMudXNlRml4ZWRMYXlvdXQgPSBzaG91bGRVc2VGaXhlZExheW91dCh0ZXN0KTsKKyAgICB0
ZXN0T3B0aW9ucy51c2VGaXhlZExheW91dCA9IHNob3VsZFVzZUZpeGVkTGF5b3V0KHBhdGhPclVS
TCk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRl
c3QoY29uc3QgVGVzdEludm9jYXRpb24mKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDBhN2Y4YTkwYzM2N2U4MTUyZmY4NWZjMjJk
NDVmNTRlYjkwNDY0NzkuLjIwY2ZkYmNlNDk0MmQyMTkyZTEyYjE2OTFjMDE1YWUxMTRiNDgxZTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3Rr
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5j
cHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0
UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgIG1fbWFpbldlYlZpZXctPmRpc21p
c3NBbGxQb3B1cE1lbnVzKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRm
b3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QoVGVzdE9wdGlvbnMmLCBjb25zdCBUZXN0SW52
b2NhdGlvbiYpIGNvbnN0Cit2b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNp
ZmljVGVzdE9wdGlvbnNGb3JUZXN0KFRlc3RPcHRpb25zJiwgY29uc3Qgc3RkOjpzdHJpbmcmKSBj
b25zdAogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0
Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9s
bGVySU9TLm1tCmluZGV4IDMxYWRhYzA1ZjY0OTA0Yjg1NTEyNWI3MjAxNDljNTBkZThlODc0ZDMu
LmFmMDgwNGYwMWUyZjM2ZjEzMTJjZmM3NTBlZWRhMjljMWFmNGQ4NjAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC05OCw3ICs5OCw3
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3QoY29u
c3QgVGVzdEludm9jYXRpb24mIHRlc3QpCiAgICAgfQogfQogCi12b2lkIFRlc3RDb250cm9sbGVy
Ojp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KFRlc3RPcHRpb25zJiwg
Y29uc3QgVGVzdEludm9jYXRpb24mKSBjb25zdAordm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRl
UGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0IHN0
ZDo6c3RyaW5nJikgY29uc3QKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9UZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCAyY2FjMDdmZDkyZTBmYjNmN2RmZTJmOGU4Nzg3
NWZhZWNiOTFmNGJhLi5hNTE2MzI4YWVkODQ0MDY4OTI5MDkwZTQxMDk4MDdlMzQ4ZDE4MDViIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQpA
QCAtOTEsNyArOTEsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgIH0KIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBk
YXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QpIGNvbnN0Cit2b2lkIFRlc3RDb250cm9sbGVy
Ojp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KFRlc3RPcHRpb25zJiBv
cHRpb25zLCBjb25zdCBzdGQ6OnN0cmluZyYpIGNvbnN0CiB7CiAgICAgb3B0aW9ucy51c2VUaHJl
YWRlZFNjcm9sbGluZyA9IHRydWU7CiAgICAgb3B0aW9ucy51c2VSZW1vdGVMYXllclRyZWUgPSBz
aG91bGRVc2VSZW1vdGVMYXllclRyZWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262126</attachid>
            <date>2015-09-29 17:57:56 -0700</date>
            <delta_ts>2015-09-29 18:04:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149650-20150929175732.patch</filename>
            <type>text/plain</type>
            <size>26454</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjIxOTA1MGYxZDhjNDU1MTFiY2NiYTRhOGM0YzUzNTk4
MmRlNjk4OS4uNDNmYmZiNDFlM2JkMTk2MWYyZjdhMDVkOTE1MTMzMjUyZDE0NWE3NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDE1LTA5LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgZmFpbHMgdG8gYXBwbHkgInVzZUZsZXhpYmxlVmll
d3BvcnQiIHdoZW4gaXQncyBzcGVjaWZpZWQgaW4gYSBmaWxlIGNvbW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTY1MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGVzdEludm9jYXRp
b246Omludm9rZSgpIGNvbnN1bHRlZCBzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZSgpLCBidXQg
dGhhdCBvbmx5CisgICAgICAgIGxvb2tzIGF0IHRoZSBmaWxlIHBhdGgsIGFuZCBub3QgdGhlIGN1
c3RvbSBvcHRpb25zIHRoYXQgY29tZSBmcm9tIGZpbGUgY29tbWVudHMuCisgICAgICAgIAorICAg
ICAgICBGaXggYnkgY29tcHV0aW5nIFRlc3RPcHRpb25zIGJlZm9yZSBtYWtpbmcgdGhlIFRlc3RJ
bnZvY2F0aW9uLCBhbmQgc2V0dGluZyB0aGVtCisgICAgICAgIGFzIGNvbnN0IFRlc3RJbnZvY2F0
aW9uIGRhdGEuIFRoaXMgbWVhbnQgY2hhbmdpbmcgdmFyaW91cyBjYWxsIHNpdGVzIHRvIHRha2UK
KyAgICAgICAgdGhlIHN0ZDo6c3RyaW5nIHBhdGhPclVSTCwgcmF0aGVyIHRoYW4gdGhlIFRlc3RJ
bnZvY2F0aW9uIGl0c2VsZi4KKyAgICAgICAgCisgICAgICAgIEFsc28gaW5pdGlhbGl6ZSBUZXN0
SW52b2NhdGlvbiB3aXRoIGEgV0tVUkxSZWYsIHJhdGhlciB0aGFuIGEgc3RkOjpzdHJpbmcuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QpOgorICAgICAgICAoV1RS
Ojp0ZXN0UGF0aCk6CisgICAgICAgIChXVFI6OmNyZWF0ZVRlc3RVUkwpOgorICAgICAgICAoV1RS
Ojp1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjp1cGRhdGVXZWJWaWV3U2l6ZUZvclRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6dXBkYXRlV2luZG93U2NhbGVGb3JUZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisgICAgICAgIChXVFI6OmNyZWF0ZVdLVVJMKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3VsZE1ha2VWaWV3cG9y
dEZsZXhpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3Vs
ZFVzZUZpeGVkTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmg6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpvcHRpb25zKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcDogQ29waWVkIGZyb20g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oLgorICAgICAgICAoV1RSOjpwYXRo
Q29udGFpbnMpOgorICAgICAgICAoV1RSOjpzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZSk6Cisg
ICAgICAgIChXVFI6OnNob3VsZFVzZUZpeGVkTGF5b3V0KToKKyAgICAgICAgKFdUUjo6aXNTVkdU
ZXN0UGF0aCk6CisgICAgICAgIChXVFI6OmlzSGlEUElUZXN0UGF0aCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0T3B0aW9ucy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
ZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKFdUUjo6cGF0aENvbnRhaW5zKToK
KyAgICAgICAgKFdUUjo6c2hvdWxkVXNlRml4ZWRMYXlvdXQpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRp
b25zRm9yVGVzdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNw
ZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21h
Yy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnVw
ZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QpOgorCiAyMDE1LTA5LTI5ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIEFsbG93
ICdwcmVwYXJlLUNoYW5nZUxvZycgdG8gYmUgdXNlZCB3aXRob3V0IEN5Z3dpbgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjNkOWYwMDE3NDY4NzI3NGNlNzUwY2VhMzk5
NGUyYmZkN2RlYjM2Ni4uYjgxMzc3YTZkYmIzOTcxYmUzZDU3ZTU2Mjg1N2JjMGExNDk4YzJmZiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0xMiw2ICsxMiw3IEBAIHNl
dChXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0v
UGl4ZWxEdW1wU3VwcG9ydC5jcHAKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdENv
bnRyb2xsZXIuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1Rlc3RJbnZvY2F0aW9u
LmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9UZXN0T3B0aW9ucy5jcHAKICAgICAk
e1dFQktJVF9URVNUUlVOTkVSX0RJUn0vV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCiAgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1dvcmtRdWV1ZU1hbmFnZXIuY3BwCiAgICAgJHtXRUJL
SVRfVEVTVFJVTk5FUl9VSVNDUklQVENPTlRFWFRfRElSfS9VSVNjcmlwdENvbnRleHQuY3BwCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDVlN2E1Njg0MzEz
NDM4NmE4ODJhNDkzNTAzYTQxZWVhYjBmN2I2NjAuLjVjODE4YjRkODQxMzJlZjgyYWRkMzUwMDM3
MmJiZTAxNjMwZGFhYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUg
PHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CkBAIC01ODUsNyArNTg2
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0
IFRlc3RPcHRpb25zJiBvcHRpb25zKQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjplbnN1cmVWaWV3
U3VwcG9ydHNPcHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAg
ICBhdXRvIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QodGVzdCk7CisgICAgYXV0byBvcHRp
b25zID0gdGVzdC5vcHRpb25zKCk7CiAKICAgICBpZiAobV9tYWluV2ViVmlldykgewogICAgICAg
ICBpZiAobV9tYWluV2ViVmlldy0+dmlld1N1cHBvcnRzT3B0aW9ucyhvcHRpb25zKSkKQEAgLTgw
Nyw3ICs4MDgsNyBAQCBjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6bmV0d29ya1Byb2Nlc3NO
YW1lKCkKICNlbmRpZgogfQogCi1zdGF0aWMgc3RkOjpzdHJpbmcgdGVzdFBhdGgoY29uc3QgV0tV
UkxSZWYgdXJsKQorc3RhdGljIHN0ZDo6c3RyaW5nIHRlc3RQYXRoKFdLVVJMUmVmIHVybCkKIHsK
ICAgICBhdXRvIHNjaGVtZSA9IGFkb3B0V0soV0tVUkxDb3B5U2NoZW1lKHVybCkpOwogICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nSWdub3JpbmdDYXNlKHNjaGVtZS5nZXQoKSwg
ImZpbGUiKSkgewpAQCAtODE5LDYgKzgyMCwzOSBAQCBzdGF0aWMgc3RkOjpzdHJpbmcgdGVzdFBh
dGgoY29uc3QgV0tVUkxSZWYgdXJsKQogICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwogfQogCitz
dGF0aWMgV0tVUkxSZWYgY3JlYXRlVGVzdFVSTChjb25zdCBjaGFyKiBwYXRoT3JVUkwpCit7Cisg
ICAgaWYgKHN0cnN0cihwYXRoT3JVUkwsICJodHRwOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwg
Imh0dHBzOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwgImZpbGU6Ly8iKSkKKyAgICAgICAgcmV0
dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGhPclVSTCk7CisKKyAgICAvLyBDcmVh
dGluZyBmcm9tIGZpbGVzeXRlbSBwYXRoLgorICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4ocGF0
aE9yVVJMKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25z
dCBjaGFyIHNlcGFyYXRvciA9ICcvJzsKKyAgICBib29sIGlzQWJzb2x1dGVQYXRoID0gcGF0aE9y
VVJMWzBdID09IHNlcGFyYXRvcjsKKyAgICBjb25zdCBjaGFyKiBmaWxlUHJlZml4ID0gImZpbGU6
Ly8iOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVuKGZpbGVQ
cmVmaXgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOworICAgIGlmIChp
c0Fic29sdXRlUGF0aCkgeworICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0
KCksIGZpbGVQcmVmaXgpOworICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVu
Z3RoLCBwYXRoT3JVUkwpOworICAgIH0gZWxzZSB7CisgICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAv
LyAxIGZvciB0aGUgc2VwYXJhdG9yCisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQ
cmVmaXgpOworICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgs
IFBBVEhfTUFYKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBzaXplX3QgbnVtQ2hh
cmFjdGVycyA9IHN0cmxlbihidWZmZXIuZ2V0KCkpOworICAgICAgICBidWZmZXJbbnVtQ2hhcmFj
dGVyc10gPSBzZXBhcmF0b3I7CisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCkgKyBudW1DaGFy
YWN0ZXJzICsgMSwgcGF0aE9yVVJMKTsKKyAgICB9CisKKyAgICByZXR1cm4gV0tVUkxDcmVhdGVX
aXRoVVRGOENTdHJpbmcoYnVmZmVyLmdldCgpKTsKK30KKwogc3RhdGljIGJvb2wgcGFyc2VCb29s
ZWFuVGVzdEhlYWRlclZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gInRydWUiKQpAQCAtODMwLDkgKzg2NCwxMSBAQCBzdGF0aWMgYm9vbCBwYXJzZUJv
b2xlYW5UZXN0SGVhZGVyVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRl
cihUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQor
c3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihUZXN0T3B0aW9ucyYg
dGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCiB7Ci0gICAgc3RkOjpz
dHJpbmcgZmlsZW5hbWUgPSB0ZXN0UGF0aCh0ZXN0LnVybCgpKTsKKyAgICAvLyBHcm9zcy4gTmVl
ZCB0byByZWR1Y2UgY29udmVyc2lvbnMgYmV0d2VlbiBhbGwgdGhlIHN0cmluZyB0eXBlcyBhbmQg
VVJMcy4KKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwoQWRvcHRXSywgY3JlYXRlVGVz
dFVSTChwYXRoT3JVUkwuY19zdHIoKSkpOworICAgIHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0gdGVz
dFBhdGgod2tVUkwuZ2V0KCkpOwogICAgIGlmIChmaWxlbmFtZS5lbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTg3NCwyOSArOTEwLDI0IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRlc3RPcHRp
b25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25zLCBjb25zdCBUZXN0CiAg
ICAgfQogfQogCi1UZXN0T3B0aW9ucyBUZXN0Q29udHJvbGxlcjo6dGVzdE9wdGlvbnNGb3JUZXN0
KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KSBjb25zdAorVGVzdE9wdGlvbnMgVGVzdENvbnRy
b2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKSBj
b25zdAogewotICAgIFRlc3RPcHRpb25zIG9wdGlvbnM7CisgICAgVGVzdE9wdGlvbnMgb3B0aW9u
cyhwYXRoT3JVUkwpOwogCiAgICAgb3B0aW9ucy51c2VSZW1vdGVMYXllclRyZWUgPSBtX3Nob3Vs
ZFVzZVJlbW90ZUxheWVyVHJlZTsKICAgICBvcHRpb25zLnNob3VsZFNob3dXZWJWaWV3ID0gbV9z
aG91bGRTaG93V2ViVmlldzsKLSAgICBvcHRpb25zLnVzZUZpeGVkTGF5b3V0ID0gdGVzdC5zaG91
bGRVc2VGaXhlZExheW91dCgpOwotICAgIG9wdGlvbnMudXNlRmxleGlibGVWaWV3cG9ydCA9IHRl
c3Quc2hvdWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKTsKLQotICAgIHVwZGF0ZVBsYXRmb3JtU3Bl
Y2lmaWNUZXN0T3B0aW9uc0ZvclRlc3Qob3B0aW9ucywgdGVzdCk7CiAKLSAgICB1cGRhdGVUZXN0
T3B0aW9uc0Zyb21UZXN0SGVhZGVyKG9wdGlvbnMsIHRlc3QpOworICAgIHVwZGF0ZVBsYXRmb3Jt
U3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3Qob3B0aW9ucywgcGF0aE9yVVJMKTsKKyAgICB1cGRh
dGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKG9wdGlvbnMsIHBhdGhPclVSTCk7CiAKICAgICBy
ZXR1cm4gb3B0aW9uczsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlV2ViVmlld1Np
emVGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogewotICAgIGJvb2wgaXNTVkdX
M0NUZXN0ID0gdGVzdC51cmxDb250YWlucygic3ZnL1czQy1TVkctMS4xIikgfHwgdGVzdC51cmxD
b250YWlucygic3ZnXFxXM0MtU1ZHLTEuMSIpOwotCiAgICAgdW5zaWduZWQgd2lkdGggPSB2aWV3
V2lkdGg7CiAgICAgdW5zaWduZWQgaGVpZ2h0ID0gdmlld0hlaWdodDsKLSAgICBpZiAoaXNTVkdX
M0NUZXN0KSB7CisgICAgaWYgKHRlc3Qub3B0aW9ucygpLmlzU1ZHVGVzdCkgewogICAgICAgICB3
aWR0aCA9IHczY1NWR1ZpZXdXaWR0aDsKICAgICAgICAgaGVpZ2h0ID0gdzNjU1ZHVmlld0hlaWdo
dDsKICAgICB9CkBAIC05MDYsOCArOTM3LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRl
V2ViVmlld1NpemVGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogCiB2b2lkIFRl
c3RDb250cm9sbGVyOjp1cGRhdGVXaW5kb3dTY2FsZUZvclRlc3QoUGxhdGZvcm1XZWJWaWV3KiB2
aWV3LCBjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAgICBib29sIG5lZWRzSGlnaERQ
SVdpbmRvdyA9IHRlc3QudXJsQ29udGFpbnMoIi9oaWRwaS0iKTsKLSAgICB2aWV3LT5jaGFuZ2VX
aW5kb3dTY2FsZUlmTmVlZGVkKG5lZWRzSGlnaERQSVdpbmRvdyA/IDIgOiAxKTsKKyAgICB2aWV3
LT5jaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKHRlc3Qub3B0aW9ucygpLmlzSGlEUElUZXN0ID8g
MiA6IDEpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjb25maWd1cmVWaWV3Rm9yVGVzdChj
b25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKQEAgLTEwMDksOCArMTAzOSwxMiBAQCBib29sIFRl
c3RDb250cm9sbGVyOjpydW5UZXN0KGNvbnN0IGNoYXIqIGlucHV0TGluZSkKICAgICBUZXN0Q29t
bWFuZCBjb21tYW5kID0gcGFyc2VJbnB1dExpbmUoc3RkOjpzdHJpbmcoaW5wdXRMaW5lKSk7CiAK
ICAgICBtX3N0YXRlID0gUnVubmluZ1Rlc3Q7CisgICAgCisgICAgVGVzdE9wdGlvbnMgb3B0aW9u
cyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21tYW5kLnBhdGhPclVSTCk7CisKKyAgICBXS1JldGFp
blB0cjxXS1VSTFJlZj4gd2tVUkwoQWRvcHRXSywgY3JlYXRlVGVzdFVSTChjb21tYW5kLnBhdGhP
clVSTC5jX3N0cigpKSk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKIAotICAgIG1fY3VycmVu
dEludm9jYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPihjb21tYW5kLnBh
dGhPclVSTCk7CiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8fCBtX3Nob3VsZER1
bXBQaXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+c2V0SXNQ
aXhlbFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CiAgICAgaWYgKGNvbW1hbmQudGlt
ZW91dCA+IDApCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYTZk
OWFmNWYwN2Y4ZTI0N2FiOWJkN2NhNGM2YjEyYzBhN2IzNGRkYS4uZTlkOWI2Zjk3OWY0YWY0YWQz
Y2Y0OWY0NjRmMDZkYjE0MmI0ZDg0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaApAQCAtMTU4LDggKzE1OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXpl
VGVzdFBsdWdpbkRpcmVjdG9yeSgpOwogCiAgICAgdm9pZCBlbnN1cmVWaWV3U3VwcG9ydHNPcHRp
b25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpOwotICAgIFRlc3RPcHRpb25zIHRlc3RP
cHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpIGNvbnN0OwotICAgIHZvaWQgdXBk
YXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0
IFRlc3RJbnZvY2F0aW9uJikgY29uc3Q7CisgICAgVGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JU
ZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpIGNvbnN0OworICAgIHZvaWQgdXBkYXRl
UGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBwYXRoT3JVUkwpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVXZWJWaWV3U2l6
ZUZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKTsKICAgICB2b2lkIHVwZGF0ZVdpbmRvd1Nj
YWxlRm9yVGVzdChQbGF0Zm9ybVdlYlZpZXcqLCBjb25zdCBUZXN0SW52b2NhdGlvbiYpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBmZDczNzI1NzViNDlh
YjhlMGJlNzkwOGY2ODFhMDczODA1MTNhYzk2Li4yZTBmNzc0ZWNjMmI3ZTkxNmVkYzBjNjVlNDI5
ZGY0ZDk0YTU5ZTBlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtNTEsNTYgKzUxLDE1IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZhdGVNYWMu
aD4KICNlbmRpZgogCi0jaW5jbHVkZSA8dW5pc3RkLmg+IC8vIEZvciBnZXRjd2QuCi0KIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0YXRpYyBXS1VSTFJlZiBjcmVhdGVXS1VSTChj
b25zdCBjaGFyKiBwYXRoT3JVUkwpCi17Ci0gICAgaWYgKHN0cnN0cihwYXRoT3JVUkwsICJodHRw
Oi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwgImh0dHBzOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVS
TCwgImZpbGU6Ly8iKSkKLSAgICAgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHBhdGhPclVSTCk7Ci0KLSAgICAvLyBDcmVhdGluZyBmcm9tIGZpbGVzeXRlbSBwYXRoLgotICAg
IHNpemVfdCBsZW5ndGggPSBzdHJsZW4ocGF0aE9yVVJMKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBjaGFyIHNlcGFyYXRvciA9ICcvJzsKLSAgICBi
b29sIGlzQWJzb2x1dGVQYXRoID0gcGF0aE9yVVJMWzBdID09IHNlcGFyYXRvcjsKLSAgICBjb25z
dCBjaGFyKiBmaWxlUHJlZml4ID0gImZpbGU6Ly8iOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
cHJlZml4TGVuZ3RoID0gc3RybGVuKGZpbGVQcmVmaXgpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRy
PGNoYXJbXT4gYnVmZmVyOwotICAgIGlmIChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7
Ci0gICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwotICAgICAgICBzdHJj
cHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGgg
KyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgc2VwYXJhdG9yCi0gICAgICAg
IHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwotICAgICAgICBpZiAoIWdldGN3ZChi
dWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIFBBVEhfTUFYKSkKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICBzaXplX3QgbnVtQ2hhcmFjdGVycyA9IHN0cmxlbihidWZmZXIuZ2V0KCkp
OwotICAgICAgICBidWZmZXJbbnVtQ2hhcmFjdGVyc10gPSBzZXBhcmF0b3I7Ci0gICAgICAgIHN0
cmNweShidWZmZXIuZ2V0KCkgKyBudW1DaGFyYWN0ZXJzICsgMSwgcGF0aE9yVVJMKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVmZmVyLmdldCgpKTsK
LX0KLQotVGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBw
YXRoT3JVUkwpCi0gICAgOiBtX3VybChBZG9wdFdLLCBjcmVhdGVXS1VSTChwYXRoT3JVUkwuY19z
dHIoKSkpCi0gICAgLCBtX2R1bXBQaXhlbHMoZmFsc2UpCi0gICAgLCBtX3RpbWVvdXQoMCkKLSAg
ICAsIG1fZ290SW5pdGlhbFJlc3BvbnNlKGZhbHNlKQotICAgICwgbV9nb3RGaW5hbE1lc3NhZ2Uo
ZmFsc2UpCi0gICAgLCBtX2dvdFJlcGFpbnQoZmFsc2UpCi0gICAgLCBtX2Vycm9yKGZhbHNlKQot
ICAgICwgbV93ZWJQcm9jZXNzSXNVbnJlc3BvbnNpdmUoZmFsc2UpCitUZXN0SW52b2NhdGlvbjo6
VGVzdEludm9jYXRpb24oV0tVUkxSZWYgdXJsLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykK
KyAgICA6IG1fb3B0aW9ucyhvcHRpb25zKQorICAgICwgbV91cmwodXJsKQogewogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyht
X3VybC5nZXQoKSkpOwogCkBAIC0xNDQsMjEgKzEwMyw2IEBAIGJvb2wgVGVzdEludm9jYXRpb246
OnNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3MoKSBjb25zdAogICAgIHJldHVybiB1cmxD
b250YWlucygiZ2xvYmFsaGlzdG9yeS8iKTsKIH0KIAotYm9vbCBUZXN0SW52b2NhdGlvbjo6c2hv
dWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKSBjb25zdAotewotICAgIHJldHVybiB1cmxDb250YWlu
cygidmlld3BvcnQvIik7Ci19Ci0KLWJvb2wgVGVzdEludm9jYXRpb246OnNob3VsZFVzZUZpeGVk
TGF5b3V0KCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQotICAg
IGlmICh1cmxDb250YWlucygiZGV2aWNlLWFkYXB0LyIpIHx8IHVybENvbnRhaW5zKCJkZXZpY2Ut
YWRhcHRcXCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZva2UoKQogewogICAgIFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5jb25maWd1cmVWaWV3Rm9yVGVzdCgqdGhpcyk7CkBAIC0xODEs
NyArMTI1LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKICAgICBXS0RpY3Rpb25h
cnlTZXRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpLCBkdW1wRnJhbWVMb2FkRGVsZWdh
dGVzS2V5LmdldCgpLCBkdW1wRnJhbWVMb2FkRGVsZWdhdGVzVmFsdWUuZ2V0KCkpOwogCiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZUZsZXhpYmxlVmlld3BvcnRLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VGbGV4aWJsZVZpZXdwb3J0IikpOwot
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gdXNlRmxleGlibGVWaWV3cG9ydFZhbHVlID0g
YWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoc2hvdWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKSkpOwor
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gdXNlRmxleGlibGVWaWV3cG9ydFZhbHVlID0g
YWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUob3B0aW9ucygpLnVzZUZsZXhpYmxlVmlld3BvcnQpKTsK
ICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpLCB1c2VG
bGV4aWJsZVZpZXdwb3J0S2V5LmdldCgpLCB1c2VGbGV4aWJsZVZpZXdwb3J0VmFsdWUuZ2V0KCkp
OwogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGR1bXBQaXhlbHNLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEdW1wUGl4ZWxzIikpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDg2MTI3Y2E4Y2MzOTQ1YzhhYTgzYjJm
ZDQ5ZTgxY2ZhYWUzNGE5NjkuLmVhYzBiOGE0MjM5MDkyYzY3MWUzYmJkNTFhNzkwNTYzNGQ4NWNj
MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTI3LDggKzI3
LDggQEAKICNkZWZpbmUgVGVzdEludm9jYXRpb25faAogCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUu
aCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlVJU2NyaXB0Q29udGV4dC5o
IgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgpAQCAtMzksMTEgKzM5LDEzIEBAIG5hbWVzcGFjZSBXVFIgewogY2xhc3MgVGVz
dEludm9jYXRpb24gOiBwdWJsaWMgVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFRlc3RJbnZvY2F0aW9uKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBU
ZXN0SW52b2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKTsKKyAgICBleHBsaWNp
dCBUZXN0SW52b2NhdGlvbihXS1VSTFJlZiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICB+VGVz
dEludm9jYXRpb24oKTsKIAogICAgIFdLVVJMUmVmIHVybCgpIGNvbnN0OwogICAgIGJvb2wgdXJs
Q29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OworICAgIAorICAgIGNvbnN0IFRlc3RPcHRpb25z
JiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKICAgICB2b2lkIHNldElz
UGl4ZWxUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKQEAgLTkw
LDI3ICs5MiwzMCBAQCBwcml2YXRlOgogICAgIC8vIFVJU2NyaXB0Q29udGV4dERlbGVnYXRlCiAg
ICAgdm9pZCB1aVNjcmlwdERpZENvbXBsZXRlKFdLU3RyaW5nUmVmIHJlc3VsdCwgdW5zaWduZWQg
Y2FsbGJhY2tJRCkgb3ZlcnJpZGU7CiAKKyAgICBjb25zdCBUZXN0T3B0aW9ucyBtX29wdGlvbnM7
CisgICAgCiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IG1fdXJsOwogICAgIFdURjo6U3RyaW5n
IG1fdXJsU3RyaW5nOwogCi0gICAgYm9vbCBtX2R1bXBQaXhlbHM7Ci0gICAgYm9vbCBtX3BpeGVs
UmVzdWx0SXNQZW5kaW5nIHsgZmFsc2UgfTsKICAgICBzdGQ6OnN0cmluZyBtX2V4cGVjdGVkUGl4
ZWxIYXNoOwogCi0gICAgaW50IG1fdGltZW91dDsKKyAgICBpbnQgbV90aW1lb3V0IHsgMCB9Owog
CiAgICAgLy8gSW52b2NhdGlvbiBzdGF0ZQotICAgIGJvb2wgbV9nb3RJbml0aWFsUmVzcG9uc2U7
Ci0gICAgYm9vbCBtX2dvdEZpbmFsTWVzc2FnZTsKLSAgICBib29sIG1fZ290UmVwYWludDsKLSAg
ICBib29sIG1fZXJyb3I7CisgICAgYm9vbCBtX2dvdEluaXRpYWxSZXNwb25zZSB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2dvdEZpbmFsTWVzc2FnZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2dvdFJl
cGFpbnQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lcnJvciB7IGZhbHNlIH07CisKKyAgICBib29s
IG1fZHVtcFBpeGVscyB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BpeGVsUmVzdWx0SXNQZW5kaW5n
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2ViUHJvY2Vzc0lzVW5yZXNwb25zaXZlIHsgZmFsc2Ug
fTsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV90ZXh0T3V0cHV0OwogICAgIFdLUmV0YWluUHRyPFdL
RGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBtX3Bp
eGVsUmVzdWx0OwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fcmVwYWludFJlY3RzOwog
ICAgIHN0ZDo6c3RyaW5nIG1fZXJyb3JNZXNzYWdlOwotICAgIGJvb2wgbV93ZWJQcm9jZXNzSXNV
bnJlc3BvbnNpdmU7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVJU2NyaXB0Q29udGV4dD4g
bV9VSVNjcmlwdENvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdE9wdGlvbnMuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDUzZTA3N2NmZjFkMGQ5MGIyZjMwNGMxNTZlNjAwMWIyOGZkNGYyNAotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwCkBA
IC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVzdE9wdGlvbnMuaCIKKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBib29sIHBhdGhDb250
YWlucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMLCBjb25zdCBjaGFyKiBzdWJzdHJpbmcp
Cit7CisgICAgU3RyaW5nIHBhdGgocGF0aE9yVVJMLmNfc3RyKCkpOworICAgIHJldHVybiBwYXRo
LmNvbnRhaW5zKHN1YnN0cmluZyk7IC8vIENhc2UtaW5zZW5zaXRpdmUuCit9CisKK3N0YXRpYyBi
b29sIHNob3VsZE1ha2VWaWV3cG9ydEZsZXhpYmxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JV
UkwpCit7CisgICAgcmV0dXJuIHBhdGhDb250YWlucyhwYXRoT3JVUkwsICJ2aWV3cG9ydC8iKTsK
K30KKworc3RhdGljIGJvb2wgc2hvdWxkVXNlRml4ZWRMYXlvdXQoY29uc3Qgc3RkOjpzdHJpbmcm
IHBhdGhPclVSTCkKK3sKKyNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQorICAgIGlm
IChwYXRoQ29udGFpbnMocGF0aE9yVVJMLCAiZGV2aWNlLWFkYXB0LyIpIHx8IHBhdGhDb250YWlu
cyhwYXRoT3JVUkwsICJkZXZpY2UtYWRhcHRcXCIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgaXNTVkdUZXN0UGF0aChj
b25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKQoreworICAgIHJldHVybiBwYXRoQ29udGFpbnMo
cGF0aE9yVVJMLCAic3ZnL1czQy1TVkctMS4xIikgfHwgcGF0aENvbnRhaW5zKHBhdGhPclVSTCwg
InN2Z1xcVzNDLVNWRy0xLjEiKTsKK30KKworc3RhdGljIGJvb2wgaXNIaURQSVRlc3RQYXRoKGNv
bnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHBhdGhDb250YWlucyhw
YXRoT3JVUkwsICIvaGlkcGktIik7Cit9CisKK1Rlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhjb25z
dCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKQorICAgIDogdXNlRmxleGlibGVWaWV3cG9ydChzaG91
bGRNYWtlVmlld3BvcnRGbGV4aWJsZShwYXRoT3JVUkwpKQorICAgICwgdXNlRml4ZWRMYXlvdXQo
c2hvdWxkVXNlRml4ZWRMYXlvdXQocGF0aE9yVVJMKSkKKyAgICAsIGlzU1ZHVGVzdChpc1NWR1Rl
c3RQYXRoKHBhdGhPclVSTCkpCisgICAgLCBpc0hpRFBJVGVzdChpc0hpRFBJVGVzdFBhdGgocGF0
aE9yVVJMKSkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0T3B0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCmluZGV4
IDUzZDdkMjhjMTViOTM2NDYzZGMxZTE3ZDY1MGMyMGYyMjAwNTkxOWEuLjZkOWNiNDA3ZGIwMjAy
ZWMyNjE3YTQxZWFkMDI2ZjcxZWQ0MTIwMDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdE9wdGlvbnMuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRp
b25zLmgKQEAgLTM3LDcgKzM3LDEyIEBAIHN0cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgYm9vbCBz
aG91bGRTaG93V2ViVmlldyB7IGZhbHNlIH07CiAgICAgYm9vbCB1c2VGbGV4aWJsZVZpZXdwb3J0
IHsgZmFsc2UgfTsKICAgICBib29sIHVzZUZpeGVkTGF5b3V0IHsgZmFsc2UgfTsKKyAgICBib29s
IGlzU1ZHVGVzdCB7IGZhbHNlIH07CisgICAgYm9vbCBpc0hpRFBJVGVzdCB7IGZhbHNlIH07CisK
ICAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlkZUxhbmd1YWdlczsKKyAgICAKKyAgICBUZXN0T3B0
aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ0NGE5OGZmNTc4ODM2ODdjOThlZTkwMWNhYjg4
N2IwMzYyY2RhZS4uYjFjODkwYmI3M2UxNjZlNmMwYjFlNzUzMTk0ZmQ4NjZmYTE0OGRjNCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0
UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM0LDYgKzM0LDcgQEAKIAogLyog
QmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMEY1MTY5Q0MxNDQ1MjIyRDAwRTBBOUQ3
IC8qIFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjUxNjlDQTE0NDUyMjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29y
ayAqLzsgfTsKKwkJMEY2MjJDRTkxQkJCM0ExQTAwODM4QUQzIC8qIFRlc3RPcHRpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIyQ0U4MUJC
QjNBMUEwMDgzOEFEMyAvKiBUZXN0T3B0aW9ucy5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RB
R1MgPSAoKTsgfTsgfTsKIAkJMEY3M0I1NTExQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNzNCNTRGMUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHAg
Ki87IH07CiAJCTBGNzNCNTUyMUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3M0I1
NTAxQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmggKi87IH07CiAJCTBG
NzNCNTVBMUJBNzkyRkYwMDRCM0VGNCAvKiBKU1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5NTJDMEMxMUYzQjk2NTAwMzM5OEI0IC8q
IEpTV3JhcHBlci5jcHAgKi87IH07CkBAIC0xNzAsNiArMTcxLDcgQEAKIC8qIEJlZ2luIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkwRjIxMDlDNzE4OUM2NTBEMDBGODc5QTMgLyogQmFz
ZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjUxNjlDQTE0NDUyMjJEMDBFMEE5RDcgLyogV2Vi
S2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0LmZyYW1ld29yazsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY2MjJDRTgxQkJCM0ExQTAwODM4QUQz
IC8qIFRlc3RPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlc3RPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3M0I1NEYx
QkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNVSVNjcmlwdENvbnRyb2xsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkwRjczQjU1MDFCQTc4OTY4
MDA0QjNFRjQgLyogSlNVSVNjcmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSlNVSVNjcmlwdENvbnRyb2xsZXIuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdFRlc3RSdW5uZXIvSlNVSVNjcmlwdENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEY3M0I1NTcxQkE3OTI5RTAwNEIzRUY0IC8qIEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9KYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtNDA2LDYgKzQwOCw3IEBACiAJ
CQkJQkM3OTM0MkYxMThGN0YxOTAwNUVBOEUyIC8qIFRlc3RDb250cm9sbGVyLmggKi8sCiAJCQkJ
QkNEN0QyRjcxMTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmNwcCAqLywKIAkJCQlC
Q0Q3RDJGNjExOTIxMjc4MDA2REI3RUUgLyogVGVzdEludm9jYXRpb24uaCAqLywKKwkJCQkwRjYy
MkNFODFCQkIzQTFBMDA4MzhBRDMgLyogVGVzdE9wdGlvbnMuY3BwICovLAogCQkJCTFBMzMyNjA1
MUI3NTM5NjUwMEY4OUY2MiAvKiBUZXN0T3B0aW9ucy5oICovLAogCQkJCUJDMjUxQTE3MTFEMTY3
NzQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVubmVyUHJlZml4LmggKi8sCiAJCQkJMzE2NEM4RUYx
NUQxQURBMTAwRUYxRkUwIC8qIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCAqLywKQEAgLTkz
NSw2ICs5MzgsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEY2MjJDRTkxQkJCM0Ex
QTAwODM4QUQzIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzNCNTVB
MUJBNzkyRkYwMDRCM0VGNCAvKiBKU1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4
NTEwNDQxQjlBRTE0QTAwNzQ0QUVCIC8qIFdvcmtRdWV1ZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE4NTEwM0YxQjlBRTEyOTAwNzQ0QUVCIC8qIEdlb2xvY2F0aW9uUHJvdmlkZXJN
b2NrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwv
VGVzdENvbnRyb2xsZXJFZmwuY3BwCmluZGV4IGFhYWU4OGIyM2Y0NGRiMjA1MTFjMDg2MzEzZGQ4
ODI1M2E3NjI2M2IuLmI0ZTMxNTA0M2JiOWUwOTQyZGU2MGNlMGExYWVmN2UzMzVhNDUwY2YgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAK
QEAgLTEzNCwyMyArMTM0LDI0IEBAIGNvbnN0IGNoYXIqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUxpYnJhcnlQYXRoRm9yVGVzdGluZygpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBib29s
IHNob3VsZFVzZUZpeGVkTGF5b3V0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQorc3RhdGlj
IGJvb2wgcGF0aENvbnRhaW5zKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwsIGNvbnN0IGNo
YXIqIHN1YnN0cmluZykKIHsKLSNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQotICAg
IGlmICh0ZXN0LnVybENvbnRhaW5zKCJkZXZpY2UtYWRhcHQvIikgfHwgdGVzdC51cmxDb250YWlu
cygiZGV2aWNlLWFkYXB0XFwiKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKKyAgICBT
dHJpbmcgcGF0aChwYXRoT3JVUkwuY19zdHIoKSk7CisgICAgcmV0dXJuIHBhdGguY29udGFpbnMo
c3Vic3RyaW5nKTsgLy8gQ2FzZS1pbnNlbnNpdGl2ZS4KK30KIAorc3RhdGljIGJvb2wgc2hvdWxk
VXNlRml4ZWRMYXlvdXQoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVSTCkKK3sKICNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKHRlc3QudXJsQ29udGFpbnMoInN0aWNreS8i
KSB8fCB0ZXN0LnVybENvbnRhaW5zKCJzdGlja3lcXCIpKQorICAgIGlmIChwYXRoQ29udGFpbnMo
cGF0aE9yVVJMLCAic3RpY2t5LyIpIHx8IHBhdGhDb250YWlucyhwYXRoT3JVUkwsICJzdGlja3lc
XCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25z
Rm9yVGVzdChUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0
ZXN0KSBjb25zdAordm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rl
c3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwYXRoT3JVUkwpIGNvbnN0CiB7Ci0gICAgdGVzdE9wdGlvbnMudXNlRml4ZWRMYXlvdXQg
PSBzaG91bGRVc2VGaXhlZExheW91dCh0ZXN0KTsKKyAgICB0ZXN0T3B0aW9ucy51c2VGaXhlZExh
eW91dCA9IHNob3VsZFVzZUZpeGVkTGF5b3V0KHBhdGhPclVSTCk7CiB9CiAKIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRp
b24mKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xs
ZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsu
Y3BwCmluZGV4IDBhN2Y4YTkwYzM2N2U4MTUyZmY4NWZjMjJkNDVmNTRlYjkwNDY0NzkuLjIwY2Zk
YmNlNDk0MmQyMTkyZTEyYjE2OTFjMDE1YWUxMTRiNDgxZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTEyOCw3ICsxMjgsNyBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3Rl
bnRWYWx1ZXMoKQogICAgIG1fbWFpbldlYlZpZXctPmRpc21pc3NBbGxQb3B1cE1lbnVzKCk7CiB9
CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9u
c0ZvclRlc3QoVGVzdE9wdGlvbnMmLCBjb25zdCBUZXN0SW52b2NhdGlvbiYpIGNvbnN0Cit2b2lk
IFRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0
KFRlc3RPcHRpb25zJiwgY29uc3Qgc3RkOjpzdHJpbmcmKSBjb25zdAogewogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IDMxYWRh
YzA1ZjY0OTA0Yjg1NTEyNWI3MjAxNDljNTBkZThlODc0ZDMuLmFmMDgwNGYwMWUyZjM2ZjEzMTJj
ZmM3NTBlZWRhMjljMWFmNGQ4NjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mIHRl
c3QpCiAgICAgfQogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNp
ZmljVGVzdE9wdGlvbnNGb3JUZXN0KFRlc3RPcHRpb25zJiwgY29uc3QgVGVzdEludm9jYXRpb24m
KSBjb25zdAordm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RP
cHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0IHN0ZDo6c3RyaW5nJikgY29uc3QKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xs
ZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5t
bQppbmRleCAyY2FjMDdmZDkyZTBmYjNmN2RmZTJmOGU4Nzg3NWZhZWNiOTFmNGJhLi5hNTE2MzI4
YWVkODQ0MDY4OTI5MDkwZTQxMDk4MDdlMzQ4ZDE4MDViIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtOTEsNyArOTEsNyBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQog
ICAgIH0KIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rl
c3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgVGVzdEludm9jYXRp
b24mIHRlc3QpIGNvbnN0Cit2b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNp
ZmljVGVzdE9wdGlvbnNGb3JUZXN0KFRlc3RPcHRpb25zJiBvcHRpb25zLCBjb25zdCBzdGQ6OnN0
cmluZyYpIGNvbnN0CiB7CiAgICAgb3B0aW9ucy51c2VUaHJlYWRlZFNjcm9sbGluZyA9IHRydWU7
CiAgICAgb3B0aW9ucy51c2VSZW1vdGVMYXllclRyZWUgPSBzaG91bGRVc2VSZW1vdGVMYXllclRy
ZWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262128</attachid>
            <date>2015-09-29 18:04:43 -0700</date>
            <delta_ts>2015-09-29 18:21:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149650-20150929180419.patch</filename>
            <type>text/plain</type>
            <size>27119</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjIxOTA1MGYxZDhjNDU1MTFiY2NiYTRhOGM0YzUzNTk4
MmRlNjk4OS4uNDNmYmZiNDFlM2JkMTk2MWYyZjdhMDVkOTE1MTMzMjUyZDE0NWE3NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDE1LTA5LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgZmFpbHMgdG8gYXBwbHkgInVzZUZsZXhpYmxlVmll
d3BvcnQiIHdoZW4gaXQncyBzcGVjaWZpZWQgaW4gYSBmaWxlIGNvbW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTY1MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGVzdEludm9jYXRp
b246Omludm9rZSgpIGNvbnN1bHRlZCBzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZSgpLCBidXQg
dGhhdCBvbmx5CisgICAgICAgIGxvb2tzIGF0IHRoZSBmaWxlIHBhdGgsIGFuZCBub3QgdGhlIGN1
c3RvbSBvcHRpb25zIHRoYXQgY29tZSBmcm9tIGZpbGUgY29tbWVudHMuCisgICAgICAgIAorICAg
ICAgICBGaXggYnkgY29tcHV0aW5nIFRlc3RPcHRpb25zIGJlZm9yZSBtYWtpbmcgdGhlIFRlc3RJ
bnZvY2F0aW9uLCBhbmQgc2V0dGluZyB0aGVtCisgICAgICAgIGFzIGNvbnN0IFRlc3RJbnZvY2F0
aW9uIGRhdGEuIFRoaXMgbWVhbnQgY2hhbmdpbmcgdmFyaW91cyBjYWxsIHNpdGVzIHRvIHRha2UK
KyAgICAgICAgdGhlIHN0ZDo6c3RyaW5nIHBhdGhPclVSTCwgcmF0aGVyIHRoYW4gdGhlIFRlc3RJ
bnZvY2F0aW9uIGl0c2VsZi4KKyAgICAgICAgCisgICAgICAgIEFsc28gaW5pdGlhbGl6ZSBUZXN0
SW52b2NhdGlvbiB3aXRoIGEgV0tVUkxSZWYsIHJhdGhlciB0aGFuIGEgc3RkOjpzdHJpbmcuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QpOgorICAgICAgICAoV1RS
Ojp0ZXN0UGF0aCk6CisgICAgICAgIChXVFI6OmNyZWF0ZVRlc3RVUkwpOgorICAgICAgICAoV1RS
Ojp1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjp1cGRhdGVXZWJWaWV3U2l6ZUZvclRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6dXBkYXRlV2luZG93U2NhbGVGb3JUZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246Omludm9rZSk6CisgICAgICAgIChXVFI6OmNyZWF0ZVdLVVJMKTog
RGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3VsZE1ha2VWaWV3cG9y
dEZsZXhpYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnNob3Vs
ZFVzZUZpeGVkTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmg6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpvcHRpb25zKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcDogQ29waWVkIGZyb20g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oLgorICAgICAgICAoV1RSOjpwYXRo
Q29udGFpbnMpOgorICAgICAgICAoV1RSOjpzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZSk6Cisg
ICAgICAgIChXVFI6OnNob3VsZFVzZUZpeGVkTGF5b3V0KToKKyAgICAgICAgKFdUUjo6aXNTVkdU
ZXN0UGF0aCk6CisgICAgICAgIChXVFI6OmlzSGlEUElUZXN0UGF0aCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0T3B0aW9ucy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
ZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKFdUUjo6cGF0aENvbnRhaW5zKToK
KyAgICAgICAgKFdUUjo6c2hvdWxkVXNlRml4ZWRMYXlvdXQpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRp
b25zRm9yVGVzdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNw
ZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21h
Yy9UZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnVw
ZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QpOgorCiAyMDE1LTA5LTI5ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIEFsbG93
ICdwcmVwYXJlLUNoYW5nZUxvZycgdG8gYmUgdXNlZCB3aXRob3V0IEN5Z3dpbgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjNkOWYwMDE3NDY4NzI3NGNlNzUwY2VhMzk5
NGUyYmZkN2RlYjM2Ni4uYjgxMzc3YTZkYmIzOTcxYmUzZDU3ZTU2Mjg1N2JjMGExNDk4YzJmZiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0xMiw2ICsxMiw3IEBAIHNl
dChXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0v
UGl4ZWxEdW1wU3VwcG9ydC5jcHAKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vVGVzdENv
bnRyb2xsZXIuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1Rlc3RJbnZvY2F0aW9u
LmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9UZXN0T3B0aW9ucy5jcHAKICAgICAk
e1dFQktJVF9URVNUUlVOTkVSX0RJUn0vV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCiAgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L1dvcmtRdWV1ZU1hbmFnZXIuY3BwCiAgICAgJHtXRUJL
SVRfVEVTVFJVTk5FUl9VSVNDUklQVENPTlRFWFRfRElSfS9VSVNjcmlwdENvbnRleHQuY3BwCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDVlN2E1Njg0MzEz
NDM4NmE4ODJhNDkzNTAzYTQxZWVhYjBmN2I2NjAuLjVjODE4YjRkODQxMzJlZjgyYWRkMzUwMDM3
MmJiZTAxNjMwZGFhYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUg
PHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CkBAIC01ODUsNyArNTg2
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0
IFRlc3RPcHRpb25zJiBvcHRpb25zKQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjplbnN1cmVWaWV3
U3VwcG9ydHNPcHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAg
ICBhdXRvIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QodGVzdCk7CisgICAgYXV0byBvcHRp
b25zID0gdGVzdC5vcHRpb25zKCk7CiAKICAgICBpZiAobV9tYWluV2ViVmlldykgewogICAgICAg
ICBpZiAobV9tYWluV2ViVmlldy0+dmlld1N1cHBvcnRzT3B0aW9ucyhvcHRpb25zKSkKQEAgLTgw
Nyw3ICs4MDgsNyBAQCBjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6bmV0d29ya1Byb2Nlc3NO
YW1lKCkKICNlbmRpZgogfQogCi1zdGF0aWMgc3RkOjpzdHJpbmcgdGVzdFBhdGgoY29uc3QgV0tV
UkxSZWYgdXJsKQorc3RhdGljIHN0ZDo6c3RyaW5nIHRlc3RQYXRoKFdLVVJMUmVmIHVybCkKIHsK
ICAgICBhdXRvIHNjaGVtZSA9IGFkb3B0V0soV0tVUkxDb3B5U2NoZW1lKHVybCkpOwogICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nSWdub3JpbmdDYXNlKHNjaGVtZS5nZXQoKSwg
ImZpbGUiKSkgewpAQCAtODE5LDYgKzgyMCwzOSBAQCBzdGF0aWMgc3RkOjpzdHJpbmcgdGVzdFBh
dGgoY29uc3QgV0tVUkxSZWYgdXJsKQogICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwogfQogCitz
dGF0aWMgV0tVUkxSZWYgY3JlYXRlVGVzdFVSTChjb25zdCBjaGFyKiBwYXRoT3JVUkwpCit7Cisg
ICAgaWYgKHN0cnN0cihwYXRoT3JVUkwsICJodHRwOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwg
Imh0dHBzOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwgImZpbGU6Ly8iKSkKKyAgICAgICAgcmV0
dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGhPclVSTCk7CisKKyAgICAvLyBDcmVh
dGluZyBmcm9tIGZpbGVzeXRlbSBwYXRoLgorICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4ocGF0
aE9yVVJMKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25z
dCBjaGFyIHNlcGFyYXRvciA9ICcvJzsKKyAgICBib29sIGlzQWJzb2x1dGVQYXRoID0gcGF0aE9y
VVJMWzBdID09IHNlcGFyYXRvcjsKKyAgICBjb25zdCBjaGFyKiBmaWxlUHJlZml4ID0gImZpbGU6
Ly8iOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVuKGZpbGVQ
cmVmaXgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOworICAgIGlmIChp
c0Fic29sdXRlUGF0aCkgeworICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0
KCksIGZpbGVQcmVmaXgpOworICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVu
Z3RoLCBwYXRoT3JVUkwpOworICAgIH0gZWxzZSB7CisgICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAv
LyAxIGZvciB0aGUgc2VwYXJhdG9yCisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQ
cmVmaXgpOworICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgs
IFBBVEhfTUFYKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBzaXplX3QgbnVtQ2hh
cmFjdGVycyA9IHN0cmxlbihidWZmZXIuZ2V0KCkpOworICAgICAgICBidWZmZXJbbnVtQ2hhcmFj
dGVyc10gPSBzZXBhcmF0b3I7CisgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCkgKyBudW1DaGFy
YWN0ZXJzICsgMSwgcGF0aE9yVVJMKTsKKyAgICB9CisKKyAgICByZXR1cm4gV0tVUkxDcmVhdGVX
aXRoVVRGOENTdHJpbmcoYnVmZmVyLmdldCgpKTsKK30KKwogc3RhdGljIGJvb2wgcGFyc2VCb29s
ZWFuVGVzdEhlYWRlclZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gInRydWUiKQpAQCAtODMwLDkgKzg2NCwxMSBAQCBzdGF0aWMgYm9vbCBwYXJzZUJv
b2xlYW5UZXN0SGVhZGVyVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRl
cihUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQor
c3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihUZXN0T3B0aW9ucyYg
dGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCiB7Ci0gICAgc3RkOjpz
dHJpbmcgZmlsZW5hbWUgPSB0ZXN0UGF0aCh0ZXN0LnVybCgpKTsKKyAgICAvLyBHcm9zcy4gTmVl
ZCB0byByZWR1Y2UgY29udmVyc2lvbnMgYmV0d2VlbiBhbGwgdGhlIHN0cmluZyB0eXBlcyBhbmQg
VVJMcy4KKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwoQWRvcHRXSywgY3JlYXRlVGVz
dFVSTChwYXRoT3JVUkwuY19zdHIoKSkpOworICAgIHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0gdGVz
dFBhdGgod2tVUkwuZ2V0KCkpOwogICAgIGlmIChmaWxlbmFtZS5lbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTg3NCwyOSArOTEwLDI0IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRlc3RPcHRp
b25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRlc3RPcHRpb25zLCBjb25zdCBUZXN0CiAg
ICAgfQogfQogCi1UZXN0T3B0aW9ucyBUZXN0Q29udHJvbGxlcjo6dGVzdE9wdGlvbnNGb3JUZXN0
KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KSBjb25zdAorVGVzdE9wdGlvbnMgVGVzdENvbnRy
b2xsZXI6OnRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKSBj
b25zdAogewotICAgIFRlc3RPcHRpb25zIG9wdGlvbnM7CisgICAgVGVzdE9wdGlvbnMgb3B0aW9u
cyhwYXRoT3JVUkwpOwogCiAgICAgb3B0aW9ucy51c2VSZW1vdGVMYXllclRyZWUgPSBtX3Nob3Vs
ZFVzZVJlbW90ZUxheWVyVHJlZTsKICAgICBvcHRpb25zLnNob3VsZFNob3dXZWJWaWV3ID0gbV9z
aG91bGRTaG93V2ViVmlldzsKLSAgICBvcHRpb25zLnVzZUZpeGVkTGF5b3V0ID0gdGVzdC5zaG91
bGRVc2VGaXhlZExheW91dCgpOwotICAgIG9wdGlvbnMudXNlRmxleGlibGVWaWV3cG9ydCA9IHRl
c3Quc2hvdWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKTsKLQotICAgIHVwZGF0ZVBsYXRmb3JtU3Bl
Y2lmaWNUZXN0T3B0aW9uc0ZvclRlc3Qob3B0aW9ucywgdGVzdCk7CiAKLSAgICB1cGRhdGVUZXN0
T3B0aW9uc0Zyb21UZXN0SGVhZGVyKG9wdGlvbnMsIHRlc3QpOworICAgIHVwZGF0ZVBsYXRmb3Jt
U3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3Qob3B0aW9ucywgcGF0aE9yVVJMKTsKKyAgICB1cGRh
dGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKG9wdGlvbnMsIHBhdGhPclVSTCk7CiAKICAgICBy
ZXR1cm4gb3B0aW9uczsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlV2ViVmlld1Np
emVGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogewotICAgIGJvb2wgaXNTVkdX
M0NUZXN0ID0gdGVzdC51cmxDb250YWlucygic3ZnL1czQy1TVkctMS4xIikgfHwgdGVzdC51cmxD
b250YWlucygic3ZnXFxXM0MtU1ZHLTEuMSIpOwotCiAgICAgdW5zaWduZWQgd2lkdGggPSB2aWV3
V2lkdGg7CiAgICAgdW5zaWduZWQgaGVpZ2h0ID0gdmlld0hlaWdodDsKLSAgICBpZiAoaXNTVkdX
M0NUZXN0KSB7CisgICAgaWYgKHRlc3Qub3B0aW9ucygpLmlzU1ZHVGVzdCkgewogICAgICAgICB3
aWR0aCA9IHczY1NWR1ZpZXdXaWR0aDsKICAgICAgICAgaGVpZ2h0ID0gdzNjU1ZHVmlld0hlaWdo
dDsKICAgICB9CkBAIC05MDYsOCArOTM3LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRl
V2ViVmlld1NpemVGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQogCiB2b2lkIFRl
c3RDb250cm9sbGVyOjp1cGRhdGVXaW5kb3dTY2FsZUZvclRlc3QoUGxhdGZvcm1XZWJWaWV3KiB2
aWV3LCBjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAgICBib29sIG5lZWRzSGlnaERQ
SVdpbmRvdyA9IHRlc3QudXJsQ29udGFpbnMoIi9oaWRwaS0iKTsKLSAgICB2aWV3LT5jaGFuZ2VX
aW5kb3dTY2FsZUlmTmVlZGVkKG5lZWRzSGlnaERQSVdpbmRvdyA/IDIgOiAxKTsKKyAgICB2aWV3
LT5jaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKHRlc3Qub3B0aW9ucygpLmlzSGlEUElUZXN0ID8g
MiA6IDEpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjb25maWd1cmVWaWV3Rm9yVGVzdChj
b25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKQEAgLTEwMDksOCArMTAzOSwxMiBAQCBib29sIFRl
c3RDb250cm9sbGVyOjpydW5UZXN0KGNvbnN0IGNoYXIqIGlucHV0TGluZSkKICAgICBUZXN0Q29t
bWFuZCBjb21tYW5kID0gcGFyc2VJbnB1dExpbmUoc3RkOjpzdHJpbmcoaW5wdXRMaW5lKSk7CiAK
ICAgICBtX3N0YXRlID0gUnVubmluZ1Rlc3Q7CisgICAgCisgICAgVGVzdE9wdGlvbnMgb3B0aW9u
cyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21tYW5kLnBhdGhPclVSTCk7CisKKyAgICBXS1JldGFp
blB0cjxXS1VSTFJlZj4gd2tVUkwoQWRvcHRXSywgY3JlYXRlVGVzdFVSTChjb21tYW5kLnBhdGhP
clVSTC5jX3N0cigpKSk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKIAotICAgIG1fY3VycmVu
dEludm9jYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPihjb21tYW5kLnBh
dGhPclVSTCk7CiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8fCBtX3Nob3VsZER1
bXBQaXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+c2V0SXNQ
aXhlbFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CiAgICAgaWYgKGNvbW1hbmQudGlt
ZW91dCA+IDApCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYTZk
OWFmNWYwN2Y4ZTI0N2FiOWJkN2NhNGM2YjEyYzBhN2IzNGRkYS4uZTlkOWI2Zjk3OWY0YWY0YWQz
Y2Y0OWY0NjRmMDZkYjE0MmI0ZDg0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaApAQCAtMTU4LDggKzE1OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXpl
VGVzdFBsdWdpbkRpcmVjdG9yeSgpOwogCiAgICAgdm9pZCBlbnN1cmVWaWV3U3VwcG9ydHNPcHRp
b25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpOwotICAgIFRlc3RPcHRpb25zIHRlc3RP
cHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpIGNvbnN0OwotICAgIHZvaWQgdXBk
YXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0
IFRlc3RJbnZvY2F0aW9uJikgY29uc3Q7CisgICAgVGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JU
ZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpIGNvbnN0OworICAgIHZvaWQgdXBkYXRl
UGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBwYXRoT3JVUkwpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVXZWJWaWV3U2l6
ZUZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKTsKICAgICB2b2lkIHVwZGF0ZVdpbmRvd1Nj
YWxlRm9yVGVzdChQbGF0Zm9ybVdlYlZpZXcqLCBjb25zdCBUZXN0SW52b2NhdGlvbiYpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBmZDczNzI1NzViNDlh
YjhlMGJlNzkwOGY2ODFhMDczODA1MTNhYzk2Li4yZTBmNzc0ZWNjMmI3ZTkxNmVkYzBjNjVlNDI5
ZGY0ZDk0YTU5ZTBlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtNTEsNTYgKzUxLDE1IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZhdGVNYWMu
aD4KICNlbmRpZgogCi0jaW5jbHVkZSA8dW5pc3RkLmg+IC8vIEZvciBnZXRjd2QuCi0KIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0YXRpYyBXS1VSTFJlZiBjcmVhdGVXS1VSTChj
b25zdCBjaGFyKiBwYXRoT3JVUkwpCi17Ci0gICAgaWYgKHN0cnN0cihwYXRoT3JVUkwsICJodHRw
Oi8vIikgfHwgc3Ryc3RyKHBhdGhPclVSTCwgImh0dHBzOi8vIikgfHwgc3Ryc3RyKHBhdGhPclVS
TCwgImZpbGU6Ly8iKSkKLSAgICAgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHBhdGhPclVSTCk7Ci0KLSAgICAvLyBDcmVhdGluZyBmcm9tIGZpbGVzeXRlbSBwYXRoLgotICAg
IHNpemVfdCBsZW5ndGggPSBzdHJsZW4ocGF0aE9yVVJMKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBjaGFyIHNlcGFyYXRvciA9ICcvJzsKLSAgICBi
b29sIGlzQWJzb2x1dGVQYXRoID0gcGF0aE9yVVJMWzBdID09IHNlcGFyYXRvcjsKLSAgICBjb25z
dCBjaGFyKiBmaWxlUHJlZml4ID0gImZpbGU6Ly8iOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
cHJlZml4TGVuZ3RoID0gc3RybGVuKGZpbGVQcmVmaXgpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRy
PGNoYXJbXT4gYnVmZmVyOwotICAgIGlmIChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7
Ci0gICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwotICAgICAgICBzdHJj
cHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGgg
KyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgc2VwYXJhdG9yCi0gICAgICAg
IHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwotICAgICAgICBpZiAoIWdldGN3ZChi
dWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIFBBVEhfTUFYKSkKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICBzaXplX3QgbnVtQ2hhcmFjdGVycyA9IHN0cmxlbihidWZmZXIuZ2V0KCkp
OwotICAgICAgICBidWZmZXJbbnVtQ2hhcmFjdGVyc10gPSBzZXBhcmF0b3I7Ci0gICAgICAgIHN0
cmNweShidWZmZXIuZ2V0KCkgKyBudW1DaGFyYWN0ZXJzICsgMSwgcGF0aE9yVVJMKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVmZmVyLmdldCgpKTsK
LX0KLQotVGVzdEludm9jYXRpb246OlRlc3RJbnZvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBw
YXRoT3JVUkwpCi0gICAgOiBtX3VybChBZG9wdFdLLCBjcmVhdGVXS1VSTChwYXRoT3JVUkwuY19z
dHIoKSkpCi0gICAgLCBtX2R1bXBQaXhlbHMoZmFsc2UpCi0gICAgLCBtX3RpbWVvdXQoMCkKLSAg
ICAsIG1fZ290SW5pdGlhbFJlc3BvbnNlKGZhbHNlKQotICAgICwgbV9nb3RGaW5hbE1lc3NhZ2Uo
ZmFsc2UpCi0gICAgLCBtX2dvdFJlcGFpbnQoZmFsc2UpCi0gICAgLCBtX2Vycm9yKGZhbHNlKQot
ICAgICwgbV93ZWJQcm9jZXNzSXNVbnJlc3BvbnNpdmUoZmFsc2UpCitUZXN0SW52b2NhdGlvbjo6
VGVzdEludm9jYXRpb24oV0tVUkxSZWYgdXJsLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykK
KyAgICA6IG1fb3B0aW9ucyhvcHRpb25zKQorICAgICwgbV91cmwodXJsKQogewogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyht
X3VybC5nZXQoKSkpOwogCkBAIC0xNDQsMjEgKzEwMyw2IEBAIGJvb2wgVGVzdEludm9jYXRpb246
OnNob3VsZExvZ0hpc3RvcnlDbGllbnRDYWxsYmFja3MoKSBjb25zdAogICAgIHJldHVybiB1cmxD
b250YWlucygiZ2xvYmFsaGlzdG9yeS8iKTsKIH0KIAotYm9vbCBUZXN0SW52b2NhdGlvbjo6c2hv
dWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKSBjb25zdAotewotICAgIHJldHVybiB1cmxDb250YWlu
cygidmlld3BvcnQvIik7Ci19Ci0KLWJvb2wgVGVzdEludm9jYXRpb246OnNob3VsZFVzZUZpeGVk
TGF5b3V0KCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQotICAg
IGlmICh1cmxDb250YWlucygiZGV2aWNlLWFkYXB0LyIpIHx8IHVybENvbnRhaW5zKCJkZXZpY2Ut
YWRhcHRcXCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZva2UoKQogewogICAgIFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5jb25maWd1cmVWaWV3Rm9yVGVzdCgqdGhpcyk7CkBAIC0xODEs
NyArMTI1LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKICAgICBXS0RpY3Rpb25h
cnlTZXRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpLCBkdW1wRnJhbWVMb2FkRGVsZWdh
dGVzS2V5LmdldCgpLCBkdW1wRnJhbWVMb2FkRGVsZWdhdGVzVmFsdWUuZ2V0KCkpOwogCiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZUZsZXhpYmxlVmlld3BvcnRLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VGbGV4aWJsZVZpZXdwb3J0IikpOwot
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gdXNlRmxleGlibGVWaWV3cG9ydFZhbHVlID0g
YWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoc2hvdWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKSkpOwor
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gdXNlRmxleGlibGVWaWV3cG9ydFZhbHVlID0g
YWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUob3B0aW9ucygpLnVzZUZsZXhpYmxlVmlld3BvcnQpKTsK
ICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpLCB1c2VG
bGV4aWJsZVZpZXdwb3J0S2V5LmdldCgpLCB1c2VGbGV4aWJsZVZpZXdwb3J0VmFsdWUuZ2V0KCkp
OwogCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGR1bXBQaXhlbHNLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEdW1wUGl4ZWxzIikpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDg2MTI3Y2E4Y2MzOTQ1YzhhYTgzYjJm
ZDQ5ZTgxY2ZhYWUzNGE5NjkuLjdjM2JjMTc4NTM3ZDM5MDU4MjEzY2Q3MGFmZGNmMDM4YWE2NzA3
ODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTI3LDggKzI3
LDggQEAKICNkZWZpbmUgVGVzdEludm9jYXRpb25faAogCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUu
aCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlVJU2NyaXB0Q29udGV4dC5o
IgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgpAQCAtMzksMTEgKzM5LDEzIEBAIG5hbWVzcGFjZSBXVFIgewogY2xhc3MgVGVz
dEludm9jYXRpb24gOiBwdWJsaWMgVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFRlc3RJbnZvY2F0aW9uKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBU
ZXN0SW52b2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKTsKKyAgICBleHBsaWNp
dCBUZXN0SW52b2NhdGlvbihXS1VSTFJlZiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICB+VGVz
dEludm9jYXRpb24oKTsKIAogICAgIFdLVVJMUmVmIHVybCgpIGNvbnN0OwogICAgIGJvb2wgdXJs
Q29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OworICAgIAorICAgIGNvbnN0IFRlc3RPcHRpb25z
JiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKICAgICB2b2lkIHNldElz
UGl4ZWxUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKQEAgLTYz
LDkgKzY1LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW5kU3dpcGUoKTsKICAgICB2b2lkIGRp
ZFJlbW92ZVN3aXBlU25hcHNob3QoKTsKIAotICAgIGJvb2wgc2hvdWxkTWFrZVZpZXdwb3J0Rmxl
eGlibGUoKSBjb25zdDsKLSAgICBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0KCkgY29uc3Q7Ci0K
IHByaXZhdGU6CiAgICAgdm9pZCBkdW1wUmVzdWx0cygpOwogICAgIHN0YXRpYyB2b2lkIGR1bXAo
Y29uc3QgY2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIgPSAwLCBi
b29sIHNlZW5FcnJvciA9IGZhbHNlKTsKQEAgLTkwLDI3ICs4OSwzMCBAQCBwcml2YXRlOgogICAg
IC8vIFVJU2NyaXB0Q29udGV4dERlbGVnYXRlCiAgICAgdm9pZCB1aVNjcmlwdERpZENvbXBsZXRl
KFdLU3RyaW5nUmVmIHJlc3VsdCwgdW5zaWduZWQgY2FsbGJhY2tJRCkgb3ZlcnJpZGU7CiAKKyAg
ICBjb25zdCBUZXN0T3B0aW9ucyBtX29wdGlvbnM7CisgICAgCiAgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IG1fdXJsOwogICAgIFdURjo6U3RyaW5nIG1fdXJsU3RyaW5nOwogCi0gICAgYm9vbCBt
X2R1bXBQaXhlbHM7Ci0gICAgYm9vbCBtX3BpeGVsUmVzdWx0SXNQZW5kaW5nIHsgZmFsc2UgfTsK
ICAgICBzdGQ6OnN0cmluZyBtX2V4cGVjdGVkUGl4ZWxIYXNoOwogCi0gICAgaW50IG1fdGltZW91
dDsKKyAgICBpbnQgbV90aW1lb3V0IHsgMCB9OwogCiAgICAgLy8gSW52b2NhdGlvbiBzdGF0ZQot
ICAgIGJvb2wgbV9nb3RJbml0aWFsUmVzcG9uc2U7Ci0gICAgYm9vbCBtX2dvdEZpbmFsTWVzc2Fn
ZTsKLSAgICBib29sIG1fZ290UmVwYWludDsKLSAgICBib29sIG1fZXJyb3I7CisgICAgYm9vbCBt
X2dvdEluaXRpYWxSZXNwb25zZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2dvdEZpbmFsTWVzc2Fn
ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2dvdFJlcGFpbnQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9lcnJvciB7IGZhbHNlIH07CisKKyAgICBib29sIG1fZHVtcFBpeGVscyB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX3BpeGVsUmVzdWx0SXNQZW5kaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2Vi
UHJvY2Vzc0lzVW5yZXNwb25zaXZlIHsgZmFsc2UgfTsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV90
ZXh0T3V0cHV0OwogICAgIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gbV9hdWRpb1Jlc3VsdDsKICAg
ICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBtX3BpeGVsUmVzdWx0OwogICAgIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IG1fcmVwYWludFJlY3RzOwogICAgIHN0ZDo6c3RyaW5nIG1fZXJyb3JNZXNz
YWdlOwotICAgIGJvb2wgbV93ZWJQcm9jZXNzSXNVbnJlc3BvbnNpdmU7CiAgICAgCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFVJU2NyaXB0Q29udGV4dD4gbV9VSVNjcmlwdENvbnRleHQ7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUzZTA3N2NmZjFkMGQ5
MGIyZjMwNGMxNTZlNjAwMWIyOGZkNGYyNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKworI2luY2x1
ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdUUiB7CisKK3N0YXRpYyBib29sIHBhdGhDb250YWlucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0
aE9yVVJMLCBjb25zdCBjaGFyKiBzdWJzdHJpbmcpCit7CisgICAgU3RyaW5nIHBhdGgocGF0aE9y
VVJMLmNfc3RyKCkpOworICAgIHJldHVybiBwYXRoLmNvbnRhaW5zKHN1YnN0cmluZyk7IC8vIENh
c2UtaW5zZW5zaXRpdmUuCit9CisKK3N0YXRpYyBib29sIHNob3VsZE1ha2VWaWV3cG9ydEZsZXhp
YmxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHBhdGhDb250
YWlucyhwYXRoT3JVUkwsICJ2aWV3cG9ydC8iKTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkVXNl
Rml4ZWRMYXlvdXQoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVSTCkKK3sKKyNpZiBFTkFCTEUo
Q1NTX0RFVklDRV9BREFQVEFUSU9OKQorICAgIGlmIChwYXRoQ29udGFpbnMocGF0aE9yVVJMLCAi
ZGV2aWNlLWFkYXB0LyIpIHx8IHBhdGhDb250YWlucyhwYXRoT3JVUkwsICJkZXZpY2UtYWRhcHRc
XCIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30K
Kworc3RhdGljIGJvb2wgaXNTVkdUZXN0UGF0aChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJM
KQoreworICAgIHJldHVybiBwYXRoQ29udGFpbnMocGF0aE9yVVJMLCAic3ZnL1czQy1TVkctMS4x
IikgfHwgcGF0aENvbnRhaW5zKHBhdGhPclVSTCwgInN2Z1xcVzNDLVNWRy0xLjEiKTsKK30KKwor
c3RhdGljIGJvb2wgaXNIaURQSVRlc3RQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwp
Cit7CisgICAgcmV0dXJuIHBhdGhDb250YWlucyhwYXRoT3JVUkwsICIvaGlkcGktIik7Cit9CisK
K1Rlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMKQor
ICAgIDogdXNlRmxleGlibGVWaWV3cG9ydChzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShwYXRo
T3JVUkwpKQorICAgICwgdXNlRml4ZWRMYXlvdXQoc2hvdWxkVXNlRml4ZWRMYXlvdXQocGF0aE9y
VVJMKSkKKyAgICAsIGlzU1ZHVGVzdChpc1NWR1Rlc3RQYXRoKHBhdGhPclVSTCkpCisgICAgLCBp
c0hpRFBJVGVzdChpc0hpRFBJVGVzdFBhdGgocGF0aE9yVVJMKSkKK3sKK30KKworfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCmluZGV4IDUzZDdkMjhjMTViOTM2NDYzZGMxZTE3ZDY1
MGMyMGYyMjAwNTkxOWEuLjZkOWNiNDA3ZGIwMjAyZWMyNjE3YTQxZWFkMDI2ZjcxZWQ0MTIwMDQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgKQEAgLTM3LDcgKzM3LDEyIEBAIHN0
cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgYm9vbCBzaG91bGRTaG93V2ViVmlldyB7IGZhbHNlIH07
CiAgICAgYm9vbCB1c2VGbGV4aWJsZVZpZXdwb3J0IHsgZmFsc2UgfTsKICAgICBib29sIHVzZUZp
eGVkTGF5b3V0IHsgZmFsc2UgfTsKKyAgICBib29sIGlzU1ZHVGVzdCB7IGZhbHNlIH07CisgICAg
Ym9vbCBpc0hpRFBJVGVzdCB7IGZhbHNlIH07CisKICAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlk
ZUxhbmd1YWdlczsKKyAgICAKKyAgICBUZXN0T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0
aE9yVVJMKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2Vi
S2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MTQ0NGE5OGZmNTc4ODM2ODdjOThlZTkwMWNhYjg4N2IwMzYyY2RhZS4uYjFjODkwYmI3M2UxNjZl
NmMwYjFlNzUzMTk0ZmQ4NjZmYTE0OGRjNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTM0LDYgKzM0LDcgQEAKIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KIAkJMEY1MTY5Q0MxNDQ1MjIyRDAwRTBBOUQ3IC8qIFdlYktpdC5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUxNjlDQTE0NDUy
MjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJMEY2MjJDRTkxQkJCM0Ex
QTAwODM4QUQzIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIyQ0U4MUJCQjNBMUEwMDgzOEFEMyAvKiBUZXN0T3B0aW9u
cy5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJMEY3M0I1NTEx
QkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNCNTRGMUJBNzg5NjgwMDRCM0VG
NCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTBGNzNCNTUyMUJBNzg5Njgw
MDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3M0I1NTAxQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlT
Y3JpcHRDb250cm9sbGVyLmggKi87IH07CiAJCTBGNzNCNTVBMUJBNzkyRkYwMDRCM0VGNCAvKiBK
U1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM5NTJDMEMxMUYzQjk2NTAwMzM5OEI0IC8qIEpTV3JhcHBlci5jcHAgKi87IH07CkBAIC0x
NzAsNiArMTcxLDcgQEAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkw
RjIxMDlDNzE4OUM2NTBEMDBGODc5QTMgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjUxNjlDQTE0NDUyMjJEMDBFMEE5RDcgLyogV2ViS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBw
YXRoID0gV2ViS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKKwkJMEY2MjJDRTgxQkJCM0ExQTAwODM4QUQzIC8qIFRlc3RPcHRpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3M0I1NEYxQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3Jp
cHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpT
VUlTY3JpcHRDb250cm9sbGVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RS
dW5uZXIvSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQkwRjczQjU1MDFCQTc4OTY4MDA0QjNFRjQgLyogSlNVSVNjcmlwdENvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNVSVNjcmlwdENvbnRy
b2xsZXIuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNVSVNjcmlw
dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEY3
M0I1NTcxQkE3OTI5RTAwNEIzRUY0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3
b3JrOyBuYW1lID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtS
T09UOyB9OwpAQCAtNDA2LDYgKzQwOCw3IEBACiAJCQkJQkM3OTM0MkYxMThGN0YxOTAwNUVBOEUy
IC8qIFRlc3RDb250cm9sbGVyLmggKi8sCiAJCQkJQkNEN0QyRjcxMTkyMTI3ODAwNkRCN0VFIC8q
IFRlc3RJbnZvY2F0aW9uLmNwcCAqLywKIAkJCQlCQ0Q3RDJGNjExOTIxMjc4MDA2REI3RUUgLyog
VGVzdEludm9jYXRpb24uaCAqLywKKwkJCQkwRjYyMkNFODFCQkIzQTFBMDA4MzhBRDMgLyogVGVz
dE9wdGlvbnMuY3BwICovLAogCQkJCTFBMzMyNjA1MUI3NTM5NjUwMEY4OUY2MiAvKiBUZXN0T3B0
aW9ucy5oICovLAogCQkJCUJDMjUxQTE3MTFEMTY3NzQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVu
bmVyUHJlZml4LmggKi8sCiAJCQkJMzE2NEM4RUYxNUQxQURBMTAwRUYxRkUwIC8qIFdlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLmNwcCAqLywKQEAgLTkzNSw2ICs5MzgsNyBAQAogCQkJaXNhID0gUEJY
U291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJ
ZmlsZXMgPSAoCisJCQkJMEY2MjJDRTkxQkJCM0ExQTAwODM4QUQzIC8qIFRlc3RPcHRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzNCNTVBMUJBNzkyRkYwMDRCM0VGNCAvKiBKU1dyYXBw
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4NTEwNDQxQjlBRTE0QTAwNzQ0QUVCIC8qIFdv
cmtRdWV1ZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4NTEwM0YxQjlBRTEyOTAw
NzQ0QUVCIC8qIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCmluZGV4
IGFhYWU4OGIyM2Y0NGRiMjA1MTFjMDg2MzEzZGQ4ODI1M2E3NjI2M2IuLmI0ZTMxNTA0M2JiOWUw
OTQyZGU2MGNlMGExYWVmN2UzMzVhNDUwY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTEzNCwyMyArMTM0LDI0IEBAIGNvbnN0
IGNoYXIqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZygpCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0KGNvbnN0
IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KQorc3RhdGljIGJvb2wgcGF0aENvbnRhaW5zKGNvbnN0IHN0
ZDo6c3RyaW5nJiBwYXRoT3JVUkwsIGNvbnN0IGNoYXIqIHN1YnN0cmluZykKIHsKLSNpZiBFTkFC
TEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQotICAgIGlmICh0ZXN0LnVybENvbnRhaW5zKCJkZXZp
Y2UtYWRhcHQvIikgfHwgdGVzdC51cmxDb250YWlucygiZGV2aWNlLWFkYXB0XFwiKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKKyAgICBTdHJpbmcgcGF0aChwYXRoT3JVUkwuY19zdHIo
KSk7CisgICAgcmV0dXJuIHBhdGguY29udGFpbnMoc3Vic3RyaW5nKTsgLy8gQ2FzZS1pbnNlbnNp
dGl2ZS4KK30KIAorc3RhdGljIGJvb2wgc2hvdWxkVXNlRml4ZWRMYXlvdXQoY29uc3Qgc3RkOjpz
dHJpbmcmIHBhdGhPclVSTCkKK3sKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAg
aWYgKHRlc3QudXJsQ29udGFpbnMoInN0aWNreS8iKSB8fCB0ZXN0LnVybENvbnRhaW5zKCJzdGlj
a3lcXCIpKQorICAgIGlmIChwYXRoQ29udGFpbnMocGF0aE9yVVJMLCAic3RpY2t5LyIpIHx8IHBh
dGhDb250YWlucyhwYXRoT3JVUkwsICJzdGlja3lcXCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6dXBk
YXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYgdGVzdE9w
dGlvbnMsIGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0KSBjb25zdAordm9pZCBUZXN0Q29udHJv
bGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9u
cyYgdGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpIGNvbnN0CiB7Ci0g
ICAgdGVzdE9wdGlvbnMudXNlRml4ZWRMYXlvdXQgPSBzaG91bGRVc2VGaXhlZExheW91dCh0ZXN0
KTsKKyAgICB0ZXN0T3B0aW9ucy51c2VGaXhlZExheW91dCA9IHNob3VsZFVzZUZpeGVkTGF5b3V0
KHBhdGhPclVSTCk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJl
Vmlld0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDBhN2Y4YTkwYzM2N2U4MTUy
ZmY4NWZjMjJkNDVmNTRlYjkwNDY0NzkuLjIwY2ZkYmNlNDk0MmQyMTkyZTEyYjE2OTFjMDE1YWUx
MTRiNDgxZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250
cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJv
bGxlckd0ay5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgIG1fbWFpbldlYlZp
ZXctPmRpc21pc3NBbGxQb3B1cE1lbnVzKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnVw
ZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QoVGVzdE9wdGlvbnMmLCBjb25z
dCBUZXN0SW52b2NhdGlvbiYpIGNvbnN0Cit2b2lkIFRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0
Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KFRlc3RPcHRpb25zJiwgY29uc3Qgc3RkOjpz
dHJpbmcmKSBjb25zdAogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rl
c3RDb250cm9sbGVySU9TLm1tCmluZGV4IDMxYWRhYzA1ZjY0OTA0Yjg1NTEyNWI3MjAxNDljNTBk
ZThlODc0ZDMuLjJmOThkOWQzMDhmZDVlNTdlNzFjYjFjYzg1OTAzOTJhNzQ0NjViM2YgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC04
OCw3ICs4OCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29u
c2lzdGVudFZhbHVlcygpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJl
Vmlld0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QpCiB7Ci0gICAgaWYgKHRlc3Qu
c2hvdWxkTWFrZVZpZXdwb3J0RmxleGlibGUoKSkgeworICAgIGlmICh0ZXN0Lm9wdGlvbnMoKS51
c2VGbGV4aWJsZVZpZXdwb3J0KSB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHBob25lVmlld0hl
aWdodCA9IDQ4MDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgcGhvbmVWaWV3V2lkdGggPSAzMjA7
CiAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db25maWd1
cmVWaWV3Rm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkKICAgICB9CiB9CiAKLXZv
aWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRl
c3QoVGVzdE9wdGlvbnMmLCBjb25zdCBUZXN0SW52b2NhdGlvbiYpIGNvbnN0Cit2b2lkIFRlc3RD
b250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KFRlc3RP
cHRpb25zJiwgY29uc3Qgc3RkOjpzdHJpbmcmKSBjb25zdAogewogfQogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDJjYWMwN2ZkOTJl
MGZiM2Y3ZGZlMmY4ZTg3ODc1ZmFlY2I5MWY0YmEuLmE1MTYzMjhhZWQ4NDQwNjg5MjkwOTBlNDEw
OTgwN2UzNDhkMTgwNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rl
c3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RD
b250cm9sbGVyTWFjLm1tCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcygpCiAgICAgfQogfQogCi12b2lkIFRl
c3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0KFRl
c3RPcHRpb25zJiBvcHRpb25zLCBjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdCkgY29uc3QKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRl
c3QoVGVzdE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IHN0ZDo6c3RyaW5nJikgY29uc3QKIHsKICAg
ICBvcHRpb25zLnVzZVRocmVhZGVkU2Nyb2xsaW5nID0gdHJ1ZTsKICAgICBvcHRpb25zLnVzZVJl
bW90ZUxheWVyVHJlZSA9IHNob3VsZFVzZVJlbW90ZUxheWVyVHJlZSgpOwo=
</data>
<flag name="review"
          id="287304"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>