<?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>39810</bug_id>
          
          <creation_ts>2010-05-26 23:18:54 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: Support DRT on Chromium-win</short_desc>
          <delta_ts>2010-05-30 21:08:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Windows Vista</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>28395</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>231124</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-26 23:18:54 -0700</bug_when>
    <thetext>See the discussion in https://bugs.webkit.org/show_bug.cgi?id=39203

Summary:
 DRT protocol needs non-blocking file read.
 Windows Python (non-Cygwin) can&apos;t set non-blocking mode by fcntl().
 Cygwin Python can do it.


Possible solutions:
 a) Use Cygwin Python
  I tried it.  I needed some cygpath conversion hacks, but still have mysterious hangup.
 b) Use ctypes
  Can we use ReadFileEx() through ctypes.windll.kernel32?
 c) Implement test_shell protocol for Chromium DRT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231623</commentid>
    <comment_count>1</comment_count>
      <attachid>57310</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-28 03:10:48 -0700</bug_when>
    <thetext>Created attachment 57310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231690</commentid>
    <comment_count>2</comment_count>
      <attachid>57310</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-05-28 07:06:01 -0700</bug_when>
    <thetext>Comment on attachment 57310
Patch

I like this refactoring, it makes management of the output code easier. We should probably do the same thing in the DRT proper -- but not today.


WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:49
 +  # Chromium DRT on non-Windows uses WebKitDriver.
I am curious how platform/win DRT works then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231926</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-05-28 14:02:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:49
&gt;  +  # Chromium DRT on non-Windows uses WebKitDriver.
&gt; I am curious how platform/win DRT works then?

I don&apos;t think it does. AFAIK, it was only a partial implementation that doesn&apos;t fully work yet. Copying abarth, who did the port and probably knows best the status.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232250</commentid>
    <comment_count>4</comment_count>
      <attachid>57310</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-30 21:08:04 -0700</bug_when>
    <thetext>Comment on attachment 57310
Patch

Clearing flags on attachment: 57310

Committed r60427: &lt;http://trac.webkit.org/changeset/60427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232251</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-30 21:08:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57310</attachid>
            <date>2010-05-28 03:10:48 -0700</date>
            <delta_ts>2010-05-30 21:08:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39810-20100528191046.patch</filename>
            <type>text/plain</type>
            <size>30787</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBhNmYxMzliY2FlM2M5OTYwODYzZTJlNmFlNDI3NDg2MTI4MzA2NmQ2Li4wOGFmMjJj
ZmEyODI3Y2U2YjUyNjFiZjQ0OGIxYjE2N2E2OWExZDZlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAK
KzIwMTAtMDUtMjggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG5ldy1ydW4td2Via2l0LXRl
c3RzOiBTdXBwb3J0IERSVCBvbiBDaHJvbWl1bS13aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODEwCisKKyAgICAgICAgQWRkIC0tdGVzdC1zaGVs
bCBmbGFnIHRvIERSVC9DaHJvbWl1bSwgYW5kIGl0IGNoYW5nZXMgRFJUIHNvIHRoYXQKKyAgICAg
ICAgaXQgYmVoYXZlcyBsaWtlIHRlc3Rfc2hlbGwgYWJvdXQgY29tbWFuZCBhbmFseXNpcywgcHJp
bnRpbmcKKyAgICAgICAgZm9ybWF0LCBwaXhlbCBkdW1waW5nLCBhbmQgdGltZW91dCBoYW5kbGlu
Zy4KKworICAgICAgICBjaHJvbWl1bS5weSBhbmQgY2hyb21pdW1fd2luLnB5IHN1cHBvcnRzIHRo
ZSAtLXRlc3Qtc2hlbGwgZmxhZyBhbmQKKyAgICAgICAgRFJUL0Nocm9taXVtLXdpbiBiaW5hcnkg
bmFtZXMuCisgICAgICAgIAorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGk6IEFkZCBuZXcgZmlsZXMuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocnVuVGVzdCk6IFN1cHBvcnQgZm9yIHRlc3Rf
c2hlbGwtc3R5bGUgY29tbWFuZC4KKyAgICAgICAgKG1haW4pOiBJbnRyb2R1Y2UgLS10ZXN0LXNo
ZWxsLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RFdmVudFByaW50ZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0RXZlbnRQ
cmludGVyLmg6IEFkZGVkLgorICAgICAgICAgIFRlc3RFdmVudFByaW50ZXIgY2xhc3MgbWFuYWdl
cyBzdGRpbyBvdXRwdXQgYW5kIGltYWdlIG91dHB1dC4KKyAgICAgICAgICBUZXN0RXZlbnRQcmlu
dGVyLmNwcCBoYXMgdHdvIGltcGxlbWVudGF0aW9uczsgRFJUUHJpbnRlciBhbmQKKyAgICAgICAg
ICBUZXN0U2hlbGxQcmludGVyLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RTaGVsbC5jcHA6CisgICAgICAgICAgU29tZSBjaGFuZ2VzIGZvciBUZXN0RXZlbnRQcmludGVy
LgorICAgICAgICAoVGVzdFNoZWxsOjpUZXN0U2hlbGwpOgorICAgICAgICAoVGVzdFNoZWxsOjpy
dW5GaWxlVGVzdCk6CisgICAgICAgIChUZXN0U2hlbGw6OnRlc3RUaW1lZE91dCk6CisgICAgICAg
IChUZXN0U2hlbGw6OmR1bXApOgorICAgICAgICAoVGVzdFNoZWxsOjpkdW1wSW1hZ2UpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVz
dFNoZWxsOjpwcmludGVyKToKKyAgICAgICAgKFRlc3RTaGVsbDo6bGF5b3V0VGVzdFRpbWVvdXQp
OgorICAgICAgICAoVGVzdFNoZWxsOjpsYXlvdXRUZXN0VGltZW91dEZvcldhdGNoRG9nKToKKyAg
ICAgICAgKFRlc3RTaGVsbDo6c2V0TGF5b3V0VGVzdFRpbWVvdXQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHA6CisgICAgICAgICh3YXRjaERvZ1Ro
cmVhZCk6IFVzZSBUZXN0U2hlbGw6OmxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKS4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2lu
LnB5OgorCiAyMDEwLTA1LTI3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDY5M2YwMmUwYjky
ZjMyMGM5MGE2OWI1MzAyM2I5MzI0MmVhN2NjMzkuLjI4MGM4ZGQzODZlYmMxY2QxZWUxOGZmZGZk
ZmE0YjQ4ZDNiZjc5MTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuZ3lwaQpAQCAtMjAsNiArMjAsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL05v
dGlmaWNhdGlvblByZXNlbnRlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1BsYWluVGV4
dENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9QbGFpblRleHRDb250cm9s
bGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RFdmVudFByaW50ZXIuaCcsCisgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdEV2ZW50UHJpbnRlci5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3ROYXZpZ2F0aW9uQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9U
ZXN0U2hlbGwuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCA4ZjI5MmVkZTRkNTc3NTUwNjFmZWIyZWY3
ZDhkMWE0ZDEzYmQwNWRkLi5iMGNmZjgyZGZhOWQ2ZDk4ZmM5YzAxYmQ1OTIxMjkwYjMwMTgyMmM3
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EdW1wUmVu
ZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC00NSwxNyArNDUsMzggQEAgc3RhdGljIGNvbnN0IGNoYXIgb3B0
aW9uUGl4ZWxUZXN0c1tdID0gIi0tcGl4ZWwtdGVzdHMiOwogc3RhdGljIGNvbnN0IGNoYXIgb3B0
aW9uVGhyZWFkZWRbXSA9ICItLXRocmVhZGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIG9wdGlvblRy
ZWVbXSA9ICItLXRyZWUiOwogCi1zdGF0aWMgdm9pZCBydW5UZXN0KFRlc3RTaGVsbCYgc2hlbGws
IFRlc3RQYXJhbXMmIHBhcmFtcywgY29uc3Qgc3RyaW5nJiB0ZXN0TmFtZSkKK3N0YXRpYyBjb25z
dCBjaGFyIG9wdGlvblBpeGVsVGVzdHNXaXRoTmFtZVtdID0gIi0tcGl4ZWwtdGVzdHM9IjsKK3N0
YXRpYyBjb25zdCBjaGFyIG9wdGlvblRlc3RTaGVsbFtdID0gIi0tdGVzdC1zaGVsbCI7CisKK3N0
YXRpYyB2b2lkIHJ1blRlc3QoVGVzdFNoZWxsJiBzaGVsbCwgVGVzdFBhcmFtcyYgcGFyYW1zLCBj
b25zdCBzdHJpbmcmIHRlc3ROYW1lLCBib29sIHRlc3RTaGVsbE1vZGUpCiB7CisgICAgaW50IG9s
ZFRpbWVvdXRNc2VjID0gc2hlbGwubGF5b3V0VGVzdFRpbWVvdXQoKTsKKyAgICBwYXJhbXMucGl4
ZWxIYXNoID0gIiI7CiAgICAgc3RyaW5nIHBhdGhPclVSTCA9IHRlc3ROYW1lOwotICAgIHN0cmlu
Zzo6c2l6ZV90eXBlIHNlcGFyYXRvclBvc2l0aW9uID0gcGF0aE9yVVJMLmZpbmQoIiciKTsKLSAg
ICBpZiAoc2VwYXJhdG9yUG9zaXRpb24gIT0gc3RyaW5nOjpucG9zKSB7Ci0gICAgICAgIHBhcmFt
cy5waXhlbEhhc2ggPSBwYXRoT3JVUkwuc3Vic3RyKHNlcGFyYXRvclBvc2l0aW9uICsgMSk7Ci0g
ICAgICAgIHBhdGhPclVSTC5lcmFzZShzZXBhcmF0b3JQb3NpdGlvbik7CisgICAgaWYgKHRlc3RT
aGVsbE1vZGUpIHsKKyAgICAgICAgc3RyaW5nIHRpbWVPdXQ7CisgICAgICAgIHN0cmluZzo6c2l6
ZV90eXBlIHNlcGFyYXRvclBvc2l0aW9uID0gcGF0aE9yVVJMLmZpbmQoJyAnKTsKKyAgICAgICAg
aWYgKHNlcGFyYXRvclBvc2l0aW9uICE9IHN0cmluZzo6bnBvcykgeworICAgICAgICAgICAgdGlt
ZU91dCA9IHBhdGhPclVSTC5zdWJzdHIoc2VwYXJhdG9yUG9zaXRpb24gKyAxKTsKKyAgICAgICAg
ICAgIHBhdGhPclVSTC5lcmFzZShzZXBhcmF0b3JQb3NpdGlvbik7CisgICAgICAgICAgICBzZXBh
cmF0b3JQb3NpdGlvbiA9IHRpbWVPdXQuZmluZF9maXJzdF9vZignICcpOworICAgICAgICAgICAg
aWYgKHNlcGFyYXRvclBvc2l0aW9uICE9IHN0cmluZzo6bnBvcykgeworICAgICAgICAgICAgICAg
IHBhcmFtcy5waXhlbEhhc2ggPSB0aW1lT3V0LnN1YnN0cihzZXBhcmF0b3JQb3NpdGlvbiArIDEp
OworICAgICAgICAgICAgICAgIHRpbWVPdXQuZXJhc2Uoc2VwYXJhdG9yUG9zaXRpb24pOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgc2hlbGwuc2V0TGF5b3V0VGVzdFRpbWVvdXQoYXRvaSh0
aW1lT3V0LmNfc3RyKCkpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHN0cmlu
Zzo6c2l6ZV90eXBlIHNlcGFyYXRvclBvc2l0aW9uID0gcGF0aE9yVVJMLmZpbmQoIiciKTsKKyAg
ICAgICAgaWYgKHNlcGFyYXRvclBvc2l0aW9uICE9IHN0cmluZzo6bnBvcykgeworICAgICAgICAg
ICAgcGFyYW1zLnBpeGVsSGFzaCA9IHBhdGhPclVSTC5zdWJzdHIoc2VwYXJhdG9yUG9zaXRpb24g
KyAxKTsKKyAgICAgICAgICAgIHBhdGhPclVSTC5lcmFzZShzZXBhcmF0b3JQb3NpdGlvbik7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgcGFyYW1zLnRlc3RVcmwgPSB3ZWJraXRfc3VwcG9ydDo6Q3Jl
YXRlVVJMRm9yUGF0aE9yVVJMKHBhdGhPclVSTCk7CiAgICAgc2hlbGwucmVzZXRUZXN0Q29udHJv
bGxlcigpOwogICAgIHNoZWxsLnJ1bkZpbGVUZXN0KHBhcmFtcyk7CisgICAgc2hlbGwuc2V0TGF5
b3V0VGVzdFRpbWVvdXQob2xkVGltZW91dE1zZWMpOwogfQogCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciogYXJndltdKQpAQCAtNjYsNiArODcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciog
YXJndltdKQogICAgIFRlc3RQYXJhbXMgcGFyYW1zOwogICAgIFZlY3RvcjxzdHJpbmc+IHRlc3Rz
OwogICAgIGJvb2wgc2VydmVyTW9kZSA9IGZhbHNlOworICAgIGJvb2wgdGVzdFNoZWxsTW9kZSA9
IGZhbHNlOwogICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAgIHN0
cmluZyBhcmd1bWVudChhcmd2W2ldKTsKICAgICAgICAgaWYgKGFyZ3VtZW50ID09ICItIikKQEAg
LTc0LDE0ICs5NiwyNCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAg
ICAgICAgcGFyYW1zLmR1bXBUcmVlID0gZmFsc2U7CiAgICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50
ID09IG9wdGlvblBpeGVsVGVzdHMpCiAgICAgICAgICAgICBwYXJhbXMuZHVtcFBpeGVscyA9IHRy
dWU7Ci0gICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50LnNpemUoKSAmJiBhcmd1bWVudFswXSA9PSAn
LScpCisgICAgICAgIGVsc2UgaWYgKCFhcmd1bWVudC5maW5kKG9wdGlvblBpeGVsVGVzdHNXaXRo
TmFtZSkpIHsKKyAgICAgICAgICAgIHBhcmFtcy5kdW1wUGl4ZWxzID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHBhcmFtcy5waXhlbEZpbGVOYW1lID0gYXJndW1lbnQuc3Vic3RyKHN0cmxlbihvcHRpb25Q
aXhlbFRlc3RzV2l0aE5hbWUpKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmd1bWVudCA9PSBvcHRp
b25UZXN0U2hlbGwpIHsKKyAgICAgICAgICAgIHRlc3RTaGVsbE1vZGUgPSB0cnVlOworICAgICAg
ICAgICAgc2VydmVyTW9kZSA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoYXJndW1lbnQuc2l6
ZSgpICYmIGFyZ3VtZW50WzBdID09ICctJykKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
VW5rbm93biBvcHRpb246ICVzXG4iLCBhcmd2W2ldKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgdGVzdHMuYXBwZW5kKGFyZ3VtZW50KTsKICAgICB9CisgICAgaWYgKHRlc3RTaGVsbE1vZGUg
JiYgcGFyYW1zLmR1bXBQaXhlbHMgJiYgcGFyYW1zLnBpeGVsRmlsZU5hbWUuZW1wdHkoKSkgewor
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tcGl4ZWwtdGVzdHMgd2l0aCAtLXRlc3Qtc2hlbGwg
cmVxdWlyZXMgYSBmaWxlIG5hbWUuXG4iKTsKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsK
KyAgICB9CiAKICAgICB7IC8vIEV4cGxpY2l0IHNjb3BlIGZvciB0aGUgVGVzdFNoZWxsIGluc3Rh
bmNlLgotICAgICAgICBUZXN0U2hlbGwgc2hlbGw7CisgICAgICAgIFRlc3RTaGVsbCBzaGVsbCh0
ZXN0U2hlbGxNb2RlKTsKICAgICAgICAgaWYgKHNlcnZlck1vZGUgJiYgIXRlc3RzLnNpemUoKSkg
ewogICAgICAgICAgICAgcGFyYW1zLnByaW50U2VwYXJhdG9ycyA9IHRydWU7CiAgICAgICAgICAg
ICBjaGFyIHRlc3RTdHJpbmdbMjA0OF07IC8vIDIwNDggaXMgdGhlIHNhbWUgYXMgdGhlIHNpemVz
IG9mIG90aGVyIHBsYXRmb3Jtcy4KQEAgLTkxLDE0ICsxMjMsMTQgQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgICAgICAgICAgICAgKm5ld0xpbmVQb3NpdGlvbiA9
ICdcMCc7CiAgICAgICAgICAgICAgICAgaWYgKHRlc3RTdHJpbmdbMF0gPT0gJ1wwJykKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcnVuVGVzdChzaGVsbCwg
cGFyYW1zLCB0ZXN0U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBydW5UZXN0KHNoZWxsLCBwYXJh
bXMsIHRlc3RTdHJpbmcsIHRlc3RTaGVsbE1vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKCF0ZXN0cy5zaXplKCkpCiAgICAgICAgICAgICBwcmludGYoIiNFT0ZcbiIpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHBhcmFtcy5wcmludFNlcGFyYXRvcnMgPSB0ZXN0
cy5zaXplKCkgPiAxOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRlc3Rz
LnNpemUoKTsgaSsrKQotICAgICAgICAgICAgICAgIHJ1blRlc3Qoc2hlbGwsIHBhcmFtcywgdGVz
dHNbaV0pOworICAgICAgICAgICAgICAgIHJ1blRlc3Qoc2hlbGwsIHBhcmFtcywgdGVzdHNbaV0s
IHRlc3RTaGVsbE1vZGUpOwogICAgICAgICB9CiAKICAgICAgICAgc2hlbGwuY2FsbEpTR0MoKTsK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RFdmVu
dFByaW50ZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdEV2
ZW50UHJpbnRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI5NjU2ZGZmNzQ2MjE1NmY1MTFhMzI3MDIwODY4
M2NmMTM5ZDgwZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RFdmVudFByaW50ZXIuY3BwCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RFdmVudFByaW50ZXIuaCIKKworI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
KworY2xhc3MgRFJUUHJpbnRlciA6IHB1YmxpYyBUZXN0RXZlbnRQcmludGVyIHsKK3B1YmxpYzoK
KyAgICBEUlRQcmludGVyKCkge30KKyAgICB2b2lkIGhhbmRsZVRlc3RIZWFkZXIoY29uc3QgY2hh
ciogdXJsKSBjb25zdDsKKyAgICB2b2lkIGhhbmRsZVRpbWVkT3V0KCkgY29uc3Q7CisgICAgdm9p
ZCBoYW5kbGVUZXh0SGVhZGVyKCkgY29uc3Q7CisgICAgdm9pZCBoYW5kbGVUZXh0Rm9vdGVyKCkg
Y29uc3Q7CisgICAgdm9pZCBoYW5kbGVJbWFnZShjb25zdCBjaGFyKiBhY3R1YWxIYXNoLCBjb25z
dCBjaGFyKiBleHBlY3RlZEhhc2gsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgc2l6
ZV90IGltYWdlU2l6ZSwgY29uc3QgY2hhciogZmlsZU5hbWUpIGNvbnN0OworICAgIHZvaWQgaGFu
ZGxlSW1hZ2VGb290ZXIoKSBjb25zdDsKKyAgICB2b2lkIGhhbmRsZVRlc3RGb290ZXIoYm9vbCBk
dW1wZWRBbnl0aGluZykgY29uc3Q7Cit9OworCitjbGFzcyBUZXN0U2hlbGxQcmludGVyIDogcHVi
bGljIFRlc3RFdmVudFByaW50ZXIgeworcHVibGljOgorICAgIFRlc3RTaGVsbFByaW50ZXIoKSB7
fQorICAgIHZvaWQgaGFuZGxlVGVzdEhlYWRlcihjb25zdCBjaGFyKiB1cmwpIGNvbnN0OworICAg
IHZvaWQgaGFuZGxlVGltZWRPdXQoKSBjb25zdDsKKyAgICB2b2lkIGhhbmRsZVRleHRIZWFkZXIo
KSBjb25zdDsKKyAgICB2b2lkIGhhbmRsZVRleHRGb290ZXIoKSBjb25zdDsKKyAgICB2b2lkIGhh
bmRsZUltYWdlKGNvbnN0IGNoYXIqIGFjdHVhbEhhc2gsIGNvbnN0IGNoYXIqIGV4cGVjdGVkSGFz
aCwgY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VEYXRhLCBzaXplX3QgaW1hZ2VTaXplLCBjb25z
dCBjaGFyKiBmaWxlTmFtZSkgY29uc3Q7CisgICAgdm9pZCBoYW5kbGVJbWFnZUZvb3RlcigpIGNv
bnN0OworICAgIHZvaWQgaGFuZGxlVGVzdEZvb3Rlcihib29sIGR1bXBlZEFueXRoaW5nKSBjb25z
dDsKK307CisKK1Rlc3RFdmVudFByaW50ZXIqIFRlc3RFdmVudFByaW50ZXI6OmNyZWF0ZURSVFBy
aW50ZXIoKQoreworICAgIHJldHVybiBuZXcgRFJUUHJpbnRlcjsKK30KKworVGVzdEV2ZW50UHJp
bnRlciogVGVzdEV2ZW50UHJpbnRlcjo6Y3JlYXRlVGVzdFNoZWxsUHJpbnRlcigpCit7CisgICAg
cmV0dXJuIG5ldyBUZXN0U2hlbGxQcmludGVyOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgRFJU
UHJpbnRlcjo6aGFuZGxlVGVzdEhlYWRlcihjb25zdCBjaGFyKikgY29uc3QKK3sKK30KKwordm9p
ZCBEUlRQcmludGVyOjpoYW5kbGVUaW1lZE91dCgpIGNvbnN0Cit7CisgICAgZnByaW50ZihzdGRl
cnIsICJGQUlMOiBUaW1lZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWRc
biIpOworICAgIGZwcmludGYoc3Rkb3V0LCAiRkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5v
dGlmeURvbmUgdG8gYmUgY2FsbGVkXG4iKTsKK30KKwordm9pZCBEUlRQcmludGVyOjpoYW5kbGVU
ZXh0SGVhZGVyKCkgY29uc3QKK3sKKyAgICBwcmludGYoIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFp
blxuIik7Cit9CisKK3ZvaWQgRFJUUHJpbnRlcjo6aGFuZGxlVGV4dEZvb3RlcigpIGNvbnN0Cit7
CisgICAgcHJpbnRmKCIjRU9GXG4iKTsKK30KKwordm9pZCBEUlRQcmludGVyOjpoYW5kbGVJbWFn
ZShjb25zdCBjaGFyKiBhY3R1YWxIYXNoLCBjb25zdCBjaGFyKiBleHBlY3RlZEhhc2gsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgY2hhciop
IGNvbnN0Cit7CisgICAgQVNTRVJUKGFjdHVhbEhhc2gpOworICAgIHByaW50ZigiXG5BY3R1YWxI
YXNoOiAlc1xuIiwgYWN0dWFsSGFzaCk7CisgICAgaWYgKGV4cGVjdGVkSGFzaCAmJiBleHBlY3Rl
ZEhhc2hbMF0pCisgICAgICAgIHByaW50ZigiXG5FeHBlY3RlZEhhc2g6ICVzXG4iLCBleHBlY3Rl
ZEhhc2gpOworICAgIGlmIChpbWFnZURhdGEgJiYgaW1hZ2VTaXplKSB7CisgICAgICAgIHByaW50
ZigiQ29udGVudC1UeXBlOiBpbWFnZS9wbmdcbiIpOworICAgICAgICBwcmludGYoIkNvbnRlbnQt
TGVuZ3RoOiAlbHVcbiIsIGltYWdlU2l6ZSk7CisgICAgICAgIGlmIChmd3JpdGUoaW1hZ2VEYXRh
LCAxLCBpbWFnZVNpemUsIHN0ZG91dCkgIT0gaW1hZ2VTaXplKSB7CisgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIlNob3J0IHdyaXRlIHRvIHN0ZG91dC5cbiIpOworICAgICAgICAgICAgZXhp
dCgxKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBEUlRQcmludGVyOjpoYW5kbGVJbWFn
ZUZvb3RlcigpIGNvbnN0Cit7CisgICAgcHJpbnRmKCIjRU9GXG4iKTsKK30KKwordm9pZCBEUlRQ
cmludGVyOjpoYW5kbGVUZXN0Rm9vdGVyKGJvb2wpIGNvbnN0Cit7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Kwordm9pZCBUZXN0U2hlbGxQcmludGVyOjpoYW5kbGVUZXN0SGVhZGVyKGNvbnN0IGNoYXIqIHVy
bCkgY29uc3QKK3sKKyAgICBwcmludGYoIiNVUkw6JXNcbiIsIHVybCk7Cit9CisKK3ZvaWQgVGVz
dFNoZWxsUHJpbnRlcjo6aGFuZGxlVGltZWRPdXQoKSBjb25zdAoreworICAgIHB1dHMoIiNURVNU
X1RJTUVEX09VVFxuIik7Cit9CisKK3ZvaWQgVGVzdFNoZWxsUHJpbnRlcjo6aGFuZGxlVGV4dEhl
YWRlcigpIGNvbnN0Cit7Cit9CisKK3ZvaWQgVGVzdFNoZWxsUHJpbnRlcjo6aGFuZGxlVGV4dEZv
b3RlcigpIGNvbnN0Cit7Cit9CisKK3ZvaWQgVGVzdFNoZWxsUHJpbnRlcjo6aGFuZGxlSW1hZ2Uo
Y29uc3QgY2hhciogYWN0dWFsSGFzaCwgY29uc3QgY2hhciosIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGltYWdlRGF0YSwgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgY2hhciogZmlsZU5hbWUpIGNvbnN0
Cit7CisgICAgQVNTRVJUKGFjdHVhbEhhc2gpOworICAgIGlmIChpbWFnZURhdGEgJiYgaW1hZ2VT
aXplKSB7CisgICAgICAgIEFTU0VSVChmaWxlTmFtZSk7CisgICAgICAgIEZJTEUqIGZwID0gZm9w
ZW4oZmlsZU5hbWUsICJ3YiIpOworICAgICAgICBpZiAoZnApIHsKKyAgICAgICAgICAgIHBlcnJv
cihmaWxlTmFtZSk7CisgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGZ3cml0ZShpbWFnZURhdGEsIDEsIGltYWdlU2l6ZSwgZnApICE9IGltYWdl
U2l6ZSkgeworICAgICAgICAgICAgcGVycm9yKGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGZjbG9z
ZShmcCk7CisgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgIH0KKyAgICAg
ICAgZmNsb3NlKGZwKTsKKyAgICB9CisgICAgcHJpbnRmKCIjTUQ1OiVzXG4iLCBhY3R1YWxIYXNo
KTsKK30KKwordm9pZCBUZXN0U2hlbGxQcmludGVyOjpoYW5kbGVJbWFnZUZvb3RlcigpIGNvbnN0
Cit7Cit9CisKK3ZvaWQgVGVzdFNoZWxsUHJpbnRlcjo6aGFuZGxlVGVzdEZvb3Rlcihib29sIGR1
bXBlZEFueXRoaW5nKSBjb25zdAoreworICAgIGlmIChkdW1wZWRBbnl0aGluZykKKyAgICAgICAg
cHJpbnRmKCIjRU9GXG4iKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RFdmVudFByaW50ZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RFdmVudFByaW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGJmZDAyNWNhMmIy
MjRjNDg0YjAzNDNhYjUzZTUwYTMzNmM0NDdjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdEV2ZW50UHJpbnRlci5oCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitjbGFzcyBUZXN0RXZlbnRQcmludGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgVGVzdEV2
ZW50UHJpbnRlciogY3JlYXRlRFJUUHJpbnRlcigpOworICAgIHN0YXRpYyBUZXN0RXZlbnRQcmlu
dGVyKiBjcmVhdGVUZXN0U2hlbGxQcmludGVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
VGVzdEhlYWRlcihjb25zdCBjaGFyKiB1cmwpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlVGltZWRPdXQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVRleHRI
ZWFkZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVRleHRGb290ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUltYWdlKGNvbnN0IGNoYXIqIGFjdHVh
bEhhc2gsIGNvbnN0IGNoYXIqIGV4cGVjdGVkSGFzaCwgY29uc3QgdW5zaWduZWQgY2hhciogaW1h
Z2VEYXRhLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCBjaGFyKiBmaWxlTmFtZSkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJbWFnZUZvb3RlcigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlVGVzdEZvb3Rlcihib29sIGR1bXBlZEFueXRoaW5nKSBjb25zdCA9
IDA7Cit9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbC5jcHAKaW5kZXggMjkyNTE4NjY5NzRkZGEyMWZjZjFhY2JhYWM3YjU0NmQ5YTNmOTVhNi4u
YjFlMTI1OWZiY2ZhNTBiZTRiYzE3MTk0ZjRlN2YyNzhjNGVhM2NiMyAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC03NSwxMCAr
NzUsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIgZmlsZVRlc3RQcmVmaXhbXSA9ICIoZmlsZSB0ZXN0
KToiOwogc3RhdGljIGNvbnN0IGNoYXIgZGF0YVVybFBhdHRlcm5bXSA9ICJkYXRhOiI7CiBzdGF0
aWMgY29uc3Qgc3RyaW5nOjpzaXplX3R5cGUgZGF0YVVybFBhdHRlcm5TaXplID0gc2l6ZW9mKGRh
dGFVcmxQYXR0ZXJuKSAtIDE7CiAKLVRlc3RTaGVsbDo6VGVzdFNoZWxsKCkKK1Rlc3RTaGVsbDo6
VGVzdFNoZWxsKGJvb2wgdGVzdFNoZWxsTW9kZSkKICAgICA6IG1fdGVzdElzUGVuZGluZyhmYWxz
ZSkKICAgICAsIG1fdGVzdElzUHJlcGFyaW5nKGZhbHNlKQogICAgICwgbV9mb2N1c2VkV2lkZ2V0
KDApCisgICAgLCBtX3Rlc3RTaGVsbE1vZGUodGVzdFNoZWxsTW9kZSkKIHsKICAgICBXZWJSdW50
aW1lRmVhdHVyZXM6OmVuYWJsZUdlb2xvY2F0aW9uKHRydWUpOwogICAgIG1fYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuc2V0KG5ldyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcih0aGlzKSk7CkBAIC04
Nyw2ICs4OCwxMyBAQCBUZXN0U2hlbGw6OlRlc3RTaGVsbCgpCiAgICAgbV9wbGFpblRleHRDb250
cm9sbGVyLnNldChuZXcgUGxhaW5UZXh0Q29udHJvbGxlcigpKTsKICAgICBtX3RleHRJbnB1dENv
bnRyb2xsZXIuc2V0KG5ldyBUZXh0SW5wdXRDb250cm9sbGVyKHRoaXMpKTsKICAgICBtX25vdGlm
aWNhdGlvblByZXNlbnRlci5zZXQobmV3IE5vdGlmaWNhdGlvblByZXNlbnRlcih0aGlzKSk7Cisg
ICAgbV9wcmludGVyLnNldChtX3Rlc3RTaGVsbE1vZGUgPyBUZXN0RXZlbnRQcmludGVyOjpjcmVh
dGVUZXN0U2hlbGxQcmludGVyKCkgOiBUZXN0RXZlbnRQcmludGVyOjpjcmVhdGVEUlRQcmludGVy
KCkpOworCisgICAgLy8gMzAgc2Vjb25kIGlzIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZSBpbiBNYWMg
RFJULgorICAgIC8vIElmIHdlIHVzZSBhIHZhbHVlIHNtYWxsZXIgdGhhbiB0aGUgdGltZW91dCB2
YWx1ZSBvZgorICAgIC8vIChuZXctKXJ1bi13ZWJraXQtdGVzdHMsIChuZXctKXJ1bi13ZWJraXQt
dGVzdHMgbWlzdW5kZXJzdGFuZHMgdGhhdCBhCisgICAgLy8gdGltZWQtb3V0IERSVCBwcm9jZXNz
IHdhcyBjcmFzaGVkLgorICAgIG1fdGltZW91dCA9IDMwICogMTAwMDsKIAogICAgIG1fd2ViVmll
d0hvc3QgPSBjcmVhdGVXZWJWaWV3KCk7CiAgICAgbV93ZWJWaWV3ID0gbV93ZWJWaWV3SG9zdC0+
d2ViVmlldygpOwpAQCAtMTkyLDYgKzIwMCw3IEBAIHZvaWQgVGVzdFNoZWxsOjpydW5GaWxlVGVz
dChjb25zdCBUZXN0UGFyYW1zJiBwYXJhbXMpCiAgICAgYm9vbCBpbnNwZWN0b3JUZXN0TW9kZSA9
IHRlc3RVcmwuZmluZCgiL2luc3BlY3Rvci8iKSAhPSBzdHJpbmc6Om5wb3MKICAgICAgICAgfHwg
dGVzdFVybC5maW5kKCJcXGluc3BlY3RvclxcIikgIT0gc3RyaW5nOjpucG9zOwogICAgIG1fd2Vi
Vmlldy0+c2V0dGluZ3MoKS0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChpbnNwZWN0b3JUZXN0
TW9kZSk7CisgICAgbV9wcmludGVyLT5oYW5kbGVUZXN0SGVhZGVyKHRlc3RVcmwuY19zdHIoKSk7
CiAgICAgbG9hZFVSTChtX3BhcmFtcy50ZXN0VXJsKTsKIAogICAgIG1fdGVzdElzUHJlcGFyaW5n
ID0gZmFsc2U7CkBAIC0yODMsOCArMjkyLDcgQEAgdm9pZCBUZXN0U2hlbGw6OnRlc3RGaW5pc2hl
ZCgpCiAKIHZvaWQgVGVzdFNoZWxsOjp0ZXN0VGltZWRPdXQoKQogewotICAgIGZwcmludGYoc3Rk
ZXJyLCAiRkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVk
XG4iKTsKLSAgICBmcHJpbnRmKHN0ZG91dCwgIkZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBu
b3RpZnlEb25lIHRvIGJlIGNhbGxlZFxuIik7CisgICAgbV9wcmludGVyLT5oYW5kbGVUaW1lZE91
dCgpOwogICAgIHRlc3RGaW5pc2hlZCgpOwogfQogCkBAIC00MzQsNyArNDQyLDcgQEAgdm9pZCBU
ZXN0U2hlbGw6OmR1bXAoKQogICAgIGJvb2wgZHVtcGVkQW55dGhpbmcgPSBmYWxzZTsKICAgICBp
ZiAobV9wYXJhbXMuZHVtcFRyZWUpIHsKICAgICAgICAgZHVtcGVkQW55dGhpbmcgPSB0cnVlOwot
ICAgICAgICBwcmludGYoIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxuIik7CisgICAgICAgIG1f
cHJpbnRlci0+aGFuZGxlVGV4dEhlYWRlcigpOwogICAgICAgICAvLyBUZXh0IG91dHB1dDogdGhl
IHRlc3QgcGFnZSBjYW4gcmVxdWVzdCBkaWZmZXJlbnQgdHlwZXMgb2Ygb3V0cHV0CiAgICAgICAg
IC8vIHdoaWNoIHdlIGhhbmRsZSBoZXJlLgogICAgICAgICBpZiAoIXNob3VsZER1bXBBc1RleHQp
IHsKQEAgLTQ1Niw3ICs0NjQsNyBAQCB2b2lkIFRlc3RTaGVsbDo6ZHVtcCgpCiAgICAgICAgICAg
ICBwcmludGYoIiVzIiwgZHVtcEFsbEJhY2tGb3J3YXJkTGlzdHMoKS5jX3N0cigpKTsKICAgICB9
CiAgICAgaWYgKGR1bXBlZEFueXRoaW5nICYmIG1fcGFyYW1zLnByaW50U2VwYXJhdG9ycykKLSAg
ICAgICAgcHJpbnRmKCIjRU9GXG4iKTsKKyAgICAgICAgbV9wcmludGVyLT5oYW5kbGVUZXh0Rm9v
dGVyKCk7CiAKICAgICBpZiAobV9wYXJhbXMuZHVtcFBpeGVscyAmJiAhc2hvdWxkRHVtcEFzVGV4
dCkgewogICAgICAgICAvLyBJbWFnZSBvdXRwdXQ6IHdlIHdyaXRlIHRoZSBpbWFnZSBkYXRhIHRv
IHRoZSBmaWxlIGdpdmVuIG9uIHRoZQpAQCAtNDk3LDE0ICs1MDUsMTUgQEAgdm9pZCBUZXN0U2hl
bGw6OmR1bXAoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgc3RyaW5nIG1k
NXN1bSA9IGR1bXBJbWFnZShtX3dlYlZpZXdIb3N0LT5jYW52YXMoKSwgbV9wYXJhbXMucGl4ZWxI
YXNoKTsKKyAgICAgICAgZHVtcEltYWdlKG1fd2ViVmlld0hvc3QtPmNhbnZhcygpKTsKICAgICB9
Ci0gICAgcHJpbnRmKCIjRU9GXG4iKTsgLy8gRm9yIHRoZSBpbWFnZS4KKyAgICBtX3ByaW50ZXIt
PmhhbmRsZUltYWdlRm9vdGVyKCk7CisgICAgbV9wcmludGVyLT5oYW5kbGVUZXN0Rm9vdGVyKGR1
bXBlZEFueXRoaW5nKTsKICAgICBmZmx1c2goc3Rkb3V0KTsKICAgICBmZmx1c2goc3RkZXJyKTsK
IH0KIAotc3RyaW5nIFRlc3RTaGVsbDo6ZHVtcEltYWdlKHNraWE6OlBsYXRmb3JtQ2FudmFzKiBj
YW52YXMsIGNvbnN0IHN0cmluZyYgZXhwZWN0ZWRIYXNoKQordm9pZCBUZXN0U2hlbGw6OmR1bXBJ
bWFnZShza2lhOjpQbGF0Zm9ybUNhbnZhcyogY2FudmFzKSBjb25zdAogewogICAgIHNraWE6OkJp
dG1hcFBsYXRmb3JtRGV2aWNlJiBkZXZpY2UgPQogICAgICAgICBzdGF0aWNfY2FzdDxza2lhOjpC
aXRtYXBQbGF0Zm9ybURldmljZSY+KGNhbnZhcy0+Z2V0VG9wUGxhdGZvcm1EZXZpY2UoKSk7CkBA
IC01MzgsMTMgKzU0NywxMCBAQCBzdHJpbmcgVGVzdFNoZWxsOjpkdW1wSW1hZ2Uoc2tpYTo6UGxh
dGZvcm1DYW52YXMqIGNhbnZhcywgY29uc3Qgc3RyaW5nJiBleHBlY3RlZAogICAgIE1ENURpZ2Vz
dCBkaWdlc3Q7CiAgICAgTUQ1RmluYWwoJmRpZ2VzdCwgJmN0eCk7CiAgICAgc3RyaW5nIG1kNWhh
c2ggPSBNRDVEaWdlc3RUb0Jhc2UxNihkaWdlc3QpOwotICAgIHByaW50ZigiXG5BY3R1YWxIYXNo
OiAlc1xuIiwgbWQ1aGFzaC5jX3N0cigpKTsKLSAgICBpZiAoIWV4cGVjdGVkSGFzaC5lbXB0eSgp
KQotICAgICAgICBwcmludGYoIlxuRXhwZWN0ZWRIYXNoOiAlc1xuIiwgZXhwZWN0ZWRIYXNoLmNf
c3RyKCkpOwogCiAgICAgLy8gT25seSBlbmNvZGUgYW5kIGR1bXAgdGhlIHBuZyBpZiB0aGUgaGFz
aGVzIGRvbid0IG1hdGNoLiBFbmNvZGluZyB0aGUgaW1hZ2UKICAgICAvLyBpcyByZWFsbHkgZXhw
ZW5zaXZlLgotICAgIGlmIChtZDVoYXNoLmNvbXBhcmUoZXhwZWN0ZWRIYXNoKSkgeworICAgIGlm
IChtZDVoYXNoLmNvbXBhcmUobV9wYXJhbXMucGl4ZWxIYXNoKSkgewogICAgICAgICBzdGQ6OnZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPiBwbmc7CiAgICAgICAgIGdmeDo6UE5HQ29kZWM6OkNvbG9yRm9y
bWF0IGNvbG9yRm9ybWF0ID0gZ2Z4OjpQTkdDb2RlYzo6Rk9STUFUX0JHUkE7CiAgICAgICAgIGdm
eDo6UE5HQ29kZWM6OkVuY29kZSgKQEAgLTU1MiwxNCArNTU4LDkgQEAgc3RyaW5nIFRlc3RTaGVs
bDo6ZHVtcEltYWdlKHNraWE6OlBsYXRmb3JtQ2FudmFzKiBjYW52YXMsIGNvbnN0IHN0cmluZyYg
ZXhwZWN0ZWQKICAgICAgICAgICAgIGNvbG9yRm9ybWF0LCBzb3VyY2VCaXRtYXAud2lkdGgoKSwg
c291cmNlQml0bWFwLmhlaWdodCgpLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihzb3Vy
Y2VCaXRtYXAucm93Qnl0ZXMoKSksIGRpc2NhcmRUcmFuc3BhcmVuY3ksICZwbmcpOwogCi0gICAg
ICAgIHByaW50ZigiQ29udGVudC1UeXBlOiBpbWFnZS9wbmdcbiIpOwotICAgICAgICBwcmludGYo
IkNvbnRlbnQtTGVuZ3RoOiAlbHVcbiIsIHBuZy5zaXplKCkpOwotICAgICAgICAvLyBXcml0ZSB0
byBkaXNrLgotICAgICAgICBpZiAoZndyaXRlKCZwbmdbMF0sIDEsIHBuZy5zaXplKCksIHN0ZG91
dCkgIT0gcG5nLnNpemUoKSkKLSAgICAgICAgICAgIEZBVEFMKCJTaG9ydCB3cml0ZSB0byBzdGRv
dXQuXG4iKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWQ1aGFzaDsKKyAgICAgICAgbV9wcmludGVy
LT5oYW5kbGVJbWFnZShtZDVoYXNoLmNfc3RyKCksIG1fcGFyYW1zLnBpeGVsSGFzaC5jX3N0cigp
LCAmcG5nWzBdLCBwbmcuc2l6ZSgpLCBtX3BhcmFtcy5waXhlbEZpbGVOYW1lLmNfc3RyKCkpOwor
ICAgIH0gZWxzZQorICAgICAgICBtX3ByaW50ZXItPmhhbmRsZUltYWdlKG1kNWhhc2guY19zdHIo
KSwgbV9wYXJhbXMucGl4ZWxIYXNoLmNfc3RyKCksIDAsIDAsIG1fcGFyYW1zLnBpeGVsRmlsZU5h
bWUuY19zdHIoKSk7CiB9CiAKIHZvaWQgVGVzdFNoZWxsOjpiaW5kSlNPYmplY3RzVG9XaW5kb3co
V2ViRnJhbWUqIGZyYW1lKQpAQCAtNTcxLDE1ICs1NzIsNiBAQCB2b2lkIFRlc3RTaGVsbDo6Ymlu
ZEpTT2JqZWN0c1RvV2luZG93KFdlYkZyYW1lKiBmcmFtZSkKICAgICBtX3RleHRJbnB1dENvbnRy
b2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJvbVVURjgoInRleHRJ
bnB1dENvbnRyb2xsZXIiKSk7CiB9CiAKLWludCBUZXN0U2hlbGw6OmxheW91dFRlc3RUaW1lb3V0
KCkKLXsKLSAgICAvLyAzMCBzZWNvbmQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlIGluIE1hYyBE
UlQuCi0gICAgLy8gSWYgd2UgdXNlIGEgdmFsdWUgc21hbGxlciB0aGFuIHRoZSB0aW1lb3V0IHZh
bHVlIG9mCi0gICAgLy8gKG5ldy0pcnVuLXdlYmtpdC10ZXN0cywgKG5ldy0pcnVuLXdlYmtpdC10
ZXN0cyBtaXN1bmRlcnN0YW5kcyB0aGF0IGEKLSAgICAvLyB0aW1lZC1vdXQgRFJUIHByb2Nlc3Mg
d2FzIGNyYXNoZWQuCi0gICAgcmV0dXJuIDMwICogMTAwMDsKLX0KLQogV2ViVmlld0hvc3QqIFRl
c3RTaGVsbDo6Y3JlYXRlV2ViVmlldygpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZU5ld1dpbmRvdyhX
ZWJVUkwoKSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbC5oCmluZGV4IDZkZDAxOTg4NzNjZGQzNTMzZGEyYzQyZTI0NGRkYTU0MjZkOWQ5MTguLjJi
OTliM2Q2NGU2NTFjZDE4ZmFlMzdmNzQ3NjcxZTgxNDEzYjllOWEgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOb3RpZmljYXRp
b25QcmVzZW50ZXIuaCIKICNpbmNsdWRlICJQbGFpblRleHRDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiVGVzdEV2ZW50UHJpbnRlci5oIgogI2luY2x1ZGUgIlRleHRJbnB1dENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXZWJWaWV3SG9zdC5oIgogI2luY2x1ZGUgPHN0cmluZz4KQEAgLTU4LDYgKzU5
LDcgQEAgc3RydWN0IFRlc3RQYXJhbXMgewogICAgIGJvb2wgZHVtcFBpeGVsczsKICAgICBib29s
IHByaW50U2VwYXJhdG9yczsKICAgICBXZWJLaXQ6OldlYlVSTCB0ZXN0VXJsOworICAgIC8vIFJl
c3VsdGFudCBpbWFnZSBmaWxlIG5hbWUuIFJlcXJ1aXJlZCBvbmx5IGlmIHRoZSB0ZXN0X3NoZWxs
IG1vZGUuCiAgICAgc3RkOjpzdHJpbmcgcGl4ZWxGaWxlTmFtZTsKICAgICBzdGQ6OnN0cmluZyBw
aXhlbEhhc2g7CiAKQEAgLTY5LDcgKzcxLDcgQEAgc3RydWN0IFRlc3RQYXJhbXMgewogCiBjbGFz
cyBUZXN0U2hlbGwgewogcHVibGljOgotICAgIFRlc3RTaGVsbCgpOworICAgIFRlc3RTaGVsbChi
b29sIHRlc3RTaGVsbE1vZGUpOwogICAgIH5UZXN0U2hlbGwoKTsKICAgICAvLyBUaGUgbWFpbiBX
ZWJWaWV3LgogICAgIFdlYktpdDo6V2ViVmlldyogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIG1f
d2ViVmlldzsgfQpAQCAtNzksNiArODEsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRTZW5kZXIqIGV2
ZW50U2VuZGVyKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFNlbmRlci5nZXQoKTsgfQogICAgIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICBOb3RpZmljYXRp
b25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbm90
aWZpY2F0aW9uUHJlc2VudGVyLmdldCgpOyB9CisgICAgVGVzdEV2ZW50UHJpbnRlciogcHJpbnRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnRlci5nZXQoKTsgfQogCiAgICAgdm9pZCBiaW5kSlNP
YmplY3RzVG9XaW5kb3coV2ViS2l0OjpXZWJGcmFtZSopOwogICAgIHZvaWQgcnVuRmlsZVRlc3Qo
Y29uc3QgVGVzdFBhcmFtcyYpOwpAQCAtMTEwLDggKzExMyw5IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgLy8gR2V0IHRoZSB0aW1lb3V0IGZvciBydW5uaW5nIGEgdGVzdCBpbiBtaWxsaXNlY29u
ZHMuCi0gICAgc3RhdGljIGludCBsYXlvdXRUZXN0VGltZW91dCgpOwotICAgIHN0YXRpYyBpbnQg
bGF5b3V0VGVzdFRpbWVvdXRGb3JXYXRjaERvZygpIHsgcmV0dXJuIGxheW91dFRlc3RUaW1lb3V0
KCkgKyAxMDAwOyB9CisgICAgaW50IGxheW91dFRlc3RUaW1lb3V0KCkgeyByZXR1cm4gbV90aW1l
b3V0OyB9CisgICAgaW50IGxheW91dFRlc3RUaW1lb3V0Rm9yV2F0Y2hEb2coKSB7IHJldHVybiBs
YXlvdXRUZXN0VGltZW91dCgpICsgMTAwMDsgfQorICAgIHZvaWQgc2V0TGF5b3V0VGVzdFRpbWVv
dXQoaW50IHRpbWVvdXQpIHsgbV90aW1lb3V0ID0gdGltZW91dDsgfQogCiAgICAgV2ViVmlld0hv
c3QqIGNyZWF0ZVdlYlZpZXcoKTsKICAgICBXZWJWaWV3SG9zdCogY3JlYXRlTmV3V2luZG93KGNv
bnN0IFdlYktpdDo6V2ViVVJMJik7CkBAIC0xMjcsMTMgKzEzMSwxNCBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIHJlc2V0V2ViU2V0dGluZ3MoV2ViS2l0OjpXZWJWaWV3Jik7CiAgICAgdm9p
ZCBkdW1wKCk7CiAgICAgc3RkOjpzdHJpbmcgZHVtcEFsbEJhY2tGb3J3YXJkTGlzdHMoKTsKLSAg
ICBzdGF0aWMgc3RkOjpzdHJpbmcgZHVtcEltYWdlKHNraWE6OlBsYXRmb3JtQ2FudmFzKiwgY29u
c3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkSGFzaCk7CisgICAgdm9pZCBkdW1wSW1hZ2Uoc2tpYTo6
UGxhdGZvcm1DYW52YXMqKSBjb25zdDsKIAogICAgIGJvb2wgbV90ZXN0SXNQZW5kaW5nOwogICAg
IGJvb2wgbV90ZXN0SXNQcmVwYXJpbmc7CiAgICAgYm9vbCBtX2lzTG9hZGluZzsKICAgICBXZWJL
aXQ6OldlYlZpZXcqIG1fd2ViVmlldzsKICAgICBXZWJLaXQ6OldlYldpZGdldCogbV9mb2N1c2Vk
V2lkZ2V0OworICAgIGJvb2wgbV90ZXN0U2hlbGxNb2RlOwogICAgIFdlYlZpZXdIb3N0KiBtX3dl
YlZpZXdIb3N0OwogICAgIE93blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcio+IG1fYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI7CiAgICAgT3duUHRyPEV2ZW50U2VuZGVyKj4gbV9ldmVudFNlbmRl
cjsKQEAgLTE0MSw3ICsxNDYsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxQbGFpblRleHRDb250
cm9sbGVyKj4gbV9wbGFpblRleHRDb250cm9sbGVyOwogICAgIE93blB0cjxUZXh0SW5wdXRDb250
cm9sbGVyKj4gbV90ZXh0SW5wdXRDb250cm9sbGVyOwogICAgIE93blB0cjxOb3RpZmljYXRpb25Q
cmVzZW50ZXIqPiBtX25vdGlmaWNhdGlvblByZXNlbnRlcjsKKyAgICBPd25QdHI8VGVzdEV2ZW50
UHJpbnRlcio+IG1fcHJpbnRlcjsKICAgICBUZXN0UGFyYW1zIG1fcGFyYW1zOworICAgIGludCBt
X3RpbWVvdXQ7IC8vIHRpbWVvdXQgdmFsdWUgaW4gbWlsbGlzZWNvbmQKIAogICAgIC8vIExpc3Qg
b2YgYWxsIHdpbmRvd3MgaW4gdGhpcyBwcm9jZXNzLgogICAgIC8vIFRoZSBtYWluIHdpbmRvdyBz
aG91bGQgYmUgcHV0IGludG8gd2luZG93TGlzdFswXS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwCmluZGV4IGUwZTBhZjFiMzFj
MzNmZmJkNjkzNDVkNmJiMWRhYTRkYzdhYmZiNTguLjM4ODRlOTQ1NDYxYzEzNmI4Mzc3ZGQ2ZjNk
NzFjNzk3NzhlZWZkOWMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcApAQCAtMzgsMjcgKzM4LDIzIEBACiAjaW5jbHVkZSA8
c2hsd2FwaS5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKLS8vIERlZmF1bHQgdGltZW91dCBp
biBtcyBmb3IgZmlsZSBwYWdlIGxvYWRzIHdoZW4gaW4gbGF5b3V0IHRlc3QgbW9kZS4KLWNvbnN0
IGludCBrRGVmYXVsdEZpbGVUZXN0VGltZW91dE1pbGxpc2VjcyA9IDEwICogMTAwMDsKLWNvbnN0
IGludCBrRGVmYXVsdFdhdGNoRG9nVGltZW91dE1pbGxpc2VjcyA9IGtEZWZhdWx0RmlsZVRlc3RU
aW1lb3V0TWlsbGlzZWNzICsgMSAqIDEwMDA7Ci0KIC8vIFRocmVhZCBtYWluIHRvIHJ1biBmb3Ig
dGhlIHRocmVhZCB3aGljaCBqdXN0IHRlc3RzIGZvciB0aW1lb3V0LgotdW5zaWduZWQgaW50IF9f
c3RkY2FsbCB3YXRjaERvZ1RocmVhZCh2b2lkICphcmcpCit1bnNpZ25lZCBpbnQgX19zdGRjYWxs
IHdhdGNoRG9nVGhyZWFkKHZvaWQqIGFyZykKIHsKICAgICAvLyBJZiB3ZSdyZSBkZWJ1Z2dpbmcg
YSBsYXlvdXQgdGVzdCwgZG9uJ3QgdGltZW91dC4KICAgICBpZiAoOjpJc0RlYnVnZ2VyUHJlc2Vu
dCgpKQotICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMDsKIAogICAgIFRlc3RTaGVsbCog
c2hlbGwgPSBzdGF0aWNfY2FzdDxUZXN0U2hlbGwqPihhcmcpOwogICAgIC8vIEZJWE1FOiBEbyB3
ZSBuZWVkIHVzZXItc3BlY2lmaWVkIHRpbWUgc2V0dGluZ3MgYXMgd2l0aCB0aGUgb3JpZ2luYWwK
ICAgICAvLyBDaHJvbWl1bSBpbXBsZW1lbnRhdGlvbj8KLSAgICBEV09SRCB0aW1lb3V0ID0gc3Rh
dGljX2Nhc3Q8RFdPUkQ+KGtEZWZhdWx0V2F0Y2hEb2dUaW1lb3V0TWlsbGlzZWNzKTsKKyAgICBE
V09SRCB0aW1lb3V0ID0gc3RhdGljX2Nhc3Q8RFdPUkQ+KHNoZWxsLT5sYXlvdXRUZXN0VGltZW91
dEZvcldhdGNoRG9nKCkpOwogICAgIERXT1JEIHJ2ID0gV2FpdEZvclNpbmdsZU9iamVjdChzaGVs
bC0+ZmluaXNoZWRFdmVudCgpLCB0aW1lb3V0KTsKICAgICBpZiAocnYgPT0gV0FJVF9USU1FT1VU
KSB7CiAgICAgICAgIC8vIFByaW50IGEgd2FybmluZyB0byBiZSBjYXVnaHQgYnkgdGhlIGxheW91
dC10ZXN0IHNjcmlwdC4KICAgICAgICAgLy8gTm90ZTogdGhlIGxheW91dCB0ZXN0IGRyaXZlciBt
YXkgb3IgbWF5IG5vdCByZWNvZ25pemUKICAgICAgICAgLy8gdGhpcyBhcyBhIHRpbWVvdXQuCi0g
ICAgICAgIHB1dHMoIiNURVNUX1RJTUVEX09VVFxuIik7CisgICAgICAgIHB1dHMoIlxuI1RFU1Rf
VElNRURfT1VUXG4iKTsKICAgICAgICAgcHV0cygiI0VPRlxuIik7CiAgICAgICAgIGZmbHVzaChz
dGRvdXQpOwogICAgICAgICBUZXJtaW5hdGVQcm9jZXNzKEdldEN1cnJlbnRQcm9jZXNzKCksIDAp
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggYjcxNWY3YmU2MGU1MGY1OTgxOGFlNGRhODhmMjEx
ZDk3YjZlOWJhNi4uZGIyM2ViOGQyOWNiMTRmNzIyOTY1ODI5NDVlYmZkYTcxZWViMmEyZSAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtLnB5CkBAIC00NiwxMCArNDYsNyBAQCBpbXBvcnQgaHR0cF9zZXJ2ZXIK
IAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZl
CiAKLSMgRklYTUU6IFRvIHVzZSB0aGUgRFJULWJhc2VkIHZlcnNpb24gb2YgdGhpcyBmaWxlLCB3
ZSBuZWVkIHRvIGJlIGFibGUgdG8KLSMgcnVuIHRoZSB3ZWJraXQgY29kZSwgd2hpY2ggdXNlcyBz
ZXJ2ZXJfcHJvY2Vzcywgd2hpY2ggcmVxdWlyZXMgVU5JWC1zdHlsZQotIyBub24tYmxvY2tpbmcg
SS9PIHdpdGggc2VsZWN0cygpLCB3aGljaCByZXF1aXJlcyBmY250bCgpIHdoaWNoIGRvZXNuJ3Qg
ZXhpc3QKLSMgb24gV2luZG93cy4KKyMgQ2hyb21pdW0gRFJUIG9uIG5vbi1XaW5kb3dzIHVzZXMg
V2ViS2l0RHJpdmVyLgogaWYgc3lzLnBsYXRmb3JtIG5vdCBpbiAoJ3dpbjMyJywgJ2N5Z3dpbicp
OgogICAgIGltcG9ydCB3ZWJraXQKIApAQCAtOTIsMTMgKzg5LDYgQEAgY2xhc3MgQ2hyb21pdW1Q
b3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApOgog
ICAgICAgICByZXN1bHQgPSBUcnVlCiAKLSAgICAgICAgIyBGSVhNRTogc2VlIGNvbW1lbnQgYWJv
dmUgcmU6IGltcG9ydCB3ZWJraXQKLSAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybSBpbiAoJ3dpbjMy
JywgJ2N5Z3dpbicpIGFuZCBzZWxmLl9vcHRpb25zIGFuZAotICAgICAgICAgICAgaGFzYXR0cihz
ZWxmLl9vcHRpb25zLCAndXNlX2RydCcpIGFuZCBzZWxmLl9vcHRpb25zLnVzZV9kcnQpOgotICAg
ICAgICAgICAgX2xvZy5lcnJvcignLS11c2UtZHJ0IGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93
cyB5ZXQnKQotICAgICAgICAgICAgX2xvZy5lcnJvcignJykKLSAgICAgICAgICAgIHJlc3VsdCA9
IEZhbHNlCi0KICAgICAgICAgZHVtcF9yZW5kZXJfdHJlZV9iaW5hcnlfcGF0aCA9IHNlbGYuX3Bh
dGhfdG9fZHJpdmVyKCkKICAgICAgICAgcmVzdWx0ID0gY2hlY2tfZmlsZV9leGlzdHMoZHVtcF9y
ZW5kZXJfdHJlZV9iaW5hcnlfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd0ZXN0IGRyaXZlcicpIGFuZCByZXN1bHQKQEAgLTE0MywxMCArMTMzLDExIEBAIGNsYXNz
IENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICAgICAgYWJzcGF0aCA9IG9zLnBhdGgu
YWJzcGF0aChfX2ZpbGVfXykKICAgICAgICAgICAgIG9mZnNldCA9IGFic3BhdGguZmluZCgndGhp
cmRfcGFydHknKQogICAgICAgICAgICAgaWYgb2Zmc2V0ID09IC0xOgotICAgICAgICAgICAgICAg
ICMgRklYTUU6IFRoaXMgc2VlbXMgbGlrZSB0aGUgd3JvbmcgZXJyb3IgdG8gdGhyb3cuCi0gICAg
ICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ2NvdWxkIG5vdCBmaW5kIENocm9taXVt
IGJhc2UgZGlyIGZyb20gJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWJzcGF0aCkKLSAgICAgICAgICAgIHNlbGYuX2Nocm9taXVtX2Jhc2VfZGlyID0gYWJzcGF0aFsw
Om9mZnNldF0KKyAgICAgICAgICAgICAgICBzZWxmLl9jaHJvbWl1bV9iYXNlX2RpciA9IG9zLnBh
dGguam9pbigKKyAgICAgICAgICAgICAgICAgICAgYWJzcGF0aFswOmFic3BhdGguZmluZCgnV2Vi
S2l0VG9vbHMnKV0sCisgICAgICAgICAgICAgICAgICAgICdXZWJLaXQnLCAnY2hyb21pdW0nKQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9jaHJvbWl1bV9iYXNlX2Rp
ciA9IGFic3BhdGhbMDpvZmZzZXRdCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5f
Y2hyb21pdW1fYmFzZV9kaXIsICpjb21wcykKIAogICAgIGRlZiBwYXRoX3RvX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUoc2VsZik6CkBAIC0xODAsOCArMTcxLDEyIEBAIGNsYXNzIENocm9taXVtUG9y
dChiYXNlLlBvcnQpOgogCiAgICAgZGVmIGNyZWF0ZV9kcml2ZXIoc2VsZiwgaW1hZ2VfcGF0aCwg
b3B0aW9ucyk6CiAgICAgICAgICIiIlN0YXJ0cyBhIG5ldyBEcml2ZXIgYW5kIHJldHVybnMgYSBo
YW5kbGUgdG8gaXQuIiIiCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0IGFuZCBzeXMucGxhdGZvcm0gbm90IGluICgnd2lu
MzInLCAnY3lnd2luJyk6CiAgICAgICAgICAgICByZXR1cm4gd2Via2l0LldlYktpdERyaXZlcihz
ZWxmLCBpbWFnZV9wYXRoLCBvcHRpb25zLCBleGVjdXRpdmU9c2VsZi5fZXhlY3V0aXZlKQorICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgICAgICBvcHRpb25zICs9IFsn
LS10ZXN0LXNoZWxsJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wdGlvbnMgKz0gWyct
LWxheW91dC10ZXN0cyddCiAgICAgICAgIHJldHVybiBDaHJvbWl1bURyaXZlcihzZWxmLCBpbWFn
ZV9wYXRoLCBvcHRpb25zLCBleGVjdXRpdmU9c2VsZi5fZXhlY3V0aXZlKQogCiAgICAgZGVmIHN0
YXJ0X2hlbHBlcihzZWxmKToKQEAgLTI5Nyw3ICsyOTIsNyBAQCBjbGFzcyBDaHJvbWl1bURyaXZl
cihiYXNlLkRyaXZlcik6CiAgICAgICAgIGNtZCA9IFtdCiAgICAgICAgICMgRklYTUU6IFdlIHNo
b3VsZCBub3QgYmUgZ3JhYmJpbmcgYXQgc2VsZi5fcG9ydC5fb3B0aW9ucy53cmFwcGVyIGRpcmVj
dGx5LgogICAgICAgICBjbWQgKz0gc2VsZi5fY29tbWFuZF93cmFwcGVyKHNlbGYuX3BvcnQuX29w
dGlvbnMud3JhcHBlcikKLSAgICAgICAgY21kICs9IFtzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZl
cigpLCAnLS1sYXlvdXQtdGVzdHMnXQorICAgICAgICBjbWQgKz0gW3NlbGYuX3BvcnQuX3BhdGhf
dG9fZHJpdmVyKCldCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnM6CiAgICAgICAgICAgICBjbWQg
Kz0gc2VsZi5fb3B0aW9ucwogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CmluZGV4IDNiMTE0
MjljMDZjYTVjYWRiZmE3ZWQyM2UyYTYwZDQwODFhZTYxZjUuLmVjMWMzM2NhMzBiZDZlMGM4ZTc0
MmIxODZlMDA3NWNmZWY1ZDU5YTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CkBAIC0x
NDksMTMgKzE0OSwyMiBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Q
b3J0KToKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSk6
CiAgICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uOgogICAgICAgICAgICAgY29uZmlndXJhdGlv
biA9IHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbgotICAgICAgICByZXR1cm4gc2VsZi5fYnVp
bGRfcGF0aChjb25maWd1cmF0aW9uLCAndGVzdF9zaGVsbC5leGUnKQorICAgICAgICBiaW5hcnlf
bmFtZSA9ICd0ZXN0X3NoZWxsLmV4ZScKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0
OgorICAgICAgICAgICAgYmluYXJ5X25hbWUgPSAnRHVtcFJlbmRlclRyZWUuZXhlJworICAgICAg
ICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKIAog
ICAgIGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiwgJ2xheW91dF90ZXN0X2hlbHBlci5l
eGUnKQorICAgICAgICBiaW5hcnlfbmFtZSA9ICdsYXlvdXRfdGVzdF9oZWxwZXIuZXhlJworICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgICAgICBiaW5hcnlfbmFtZSA9
ICdMYXlvdXRUZXN0SGVscGVyLmV4ZScKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgo
c2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0
aF90b19pbWFnZV9kaWZmKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChz
ZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24sICdpbWFnZV9kaWZmLmV4ZScpCisgICAgICAgIGJp
bmFyeV9uYW1lID0gJ2ltYWdlX2RpZmYuZXhlJworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVz
ZV9kcnQ6CisgICAgICAgICAgICBiaW5hcnlfbmFtZSA9ICdJbWFnZURpZmYuZXhlJworICAgICAg
ICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24sIGJp
bmFyeV9uYW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1
cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFydHknLCAnY3lnd2luJywg
J2JpbicsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>