<?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>24039</bug_id>
          
          <creation_ts>2009-02-19 12:35:29 -0800</creation_ts>
          <short_desc>Separate gtk unit tests</short_desc>
          <delta_ts>2009-03-20 12:47:02 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Christian Dywan">christian</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110272</commentid>
    <comment_count>0</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-02-19 12:35:29 -0800</bug_when>
    <thetext>The few gtk specific tests we have at this point are all contained in one source file. I&apos;d like to split up the tests per feature and keep that in mind for the future.

For instance &quot;web view&quot;, &quot;web frame&quot;, &quot;back forward list&quot; would seem like a start.

On a related matter, what about running these tests in &quot;make check&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112753</commentid>
    <comment_count>1</comment_count>
      <attachid>28395</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-03-07 22:38:50 -0800</bug_when>
    <thetext>Created attachment 28395
Separate the tests

This patch also includes the build support needed to build the separate tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113137</commentid>
    <comment_count>2</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-03-11 01:59:16 -0700</bug_when>
    <thetext>Could you explain the reasoning behind creating multiple programs. The only benefit is that one run of a test is not influencing other parts. The downsides are runtime overhead to start the app, repeated boilerplate code, people driving the tests need to know the multiple binary names...

I think the different files/areas should be separate GTestSuite&apos;s.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113843</commentid>
    <comment_count>3</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-03-15 12:36:21 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Could you explain the reasoning behind creating multiple programs. The only
&gt; benefit is that one run of a test is not influencing other parts. The downsides
&gt; are runtime overhead to start the app, repeated boilerplate code, people
&gt; driving the tests need to know the multiple binary names...
&gt; 
&gt; I think the different files/areas should be separate GTestSuite&apos;s.

Well, the main reason is modularity which makes it easy to maintain, run particular tests independently, add new tests, avoid having to edit a file that is several megabytes large...

The overhead isn&apos;t really noticible. Arguably WebCore should live in a single file because that decreases linking overhead, what do you think? ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114055</commentid>
    <comment_count>4</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-03-17 10:31:49 -0700</bug_when>
    <thetext>It is not about the linking overhead. But think of automatic execution of the test executables, collecting the results, generating coverage data... having a single executable makes it a lot more easy to have a stable test setup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114056</commentid>
    <comment_count>5</comment_count>
      <attachid>28395</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-03-17 10:37:06 -0700</bug_when>
    <thetext>Comment on attachment 28395
Separate the tests


&gt; +2009-03-07  Jan Michael Alonzo  &lt;jmalonzo@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Separate gtk unit tests
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=24039

Could you please describe the reasoning of the split up here?

and please use svn cp to copy the file when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114541</commentid>
    <comment_count>6</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-03-20 12:47:02 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 28395 [review])
&gt; 
&gt; &gt; +2009-03-07  Jan Michael Alonzo  &lt;jmalonzo@webkit.org&gt;
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        Separate gtk unit tests
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=24039
&gt; 
&gt; Could you please describe the reasoning of the split up here?
&gt; 
&gt; and please use svn cp to copy the file when landing.
&gt; 

Thanks. Landed in r41864</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28395</attachid>
            <date>2009-03-07 22:38:50 -0800</date>
            <delta_ts>2009-03-17 10:37:06 -0700</delta_ts>
            <desc>Separate the tests</desc>
            <filename>webkitgtk-unittest-separation.patch</filename>
            <type>text/plain</type>
            <size>27121</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxYWY2ZTRhLi5kY2M0ZTA2
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDMtMDcgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VwYXJhdGUg
Z3RrIHVuaXQgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0MDM5CisKKyAgICAgICAgQnVpbGQgdGhlIHVuaXQgdGVzdHMgYWNjb3JkaW5nbHku
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAwOS0wMy0wMiAgWGFuIExvcGV6ICA8
eGFuQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCmRpZmYgLS1n
aXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IGE5MjY3NzQuLjAyM2Fk
NzcgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC00
Nyw2ICs0Nyw4IEBAIGxpYl9MSUJSQVJJRVMgOj0KIAogSURMX0JJTkRJTkdTIDo9CiAKK1RFU1Rf
UFJPR1MgOj0KKwogIyBHbG9iYWwgZmxhZ3MgdG8gQ1BQCiBnbG9iYWxfY3BwZmxhZ3MgOj0KIApA
QCAtNDYzLDI5ICs0NjUsMzcgQEAgaW5jbHVkZSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5h
bQogaW5jbHVkZSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFdlYktpdFRvb2xzL0dO
VW1ha2VmaWxlLmFtCiAKLSMgQnVpbGQgdW5pdCB0ZXN0Ci1ub2luc3RfUFJPR1JBTVMgKz0gUHJv
Z3JhbXMvVW5pdFRlc3RzCi1Qcm9ncmFtc19Vbml0VGVzdHNfQ1BQRkxBR1MgPSBcCi0JLUkkKHNy
Y2RpcikvV2ViS2l0L2d0ayBcCi0JLUkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0ayBcCi0JJChn
bG9iYWxfY3BwZmxhZ3MpIFwKLQkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKQotCi1Qcm9ncmFt
c19Vbml0VGVzdHNfU09VUkNFUyA9IFwKLQlXZWJLaXQvZ3RrL3Rlc3RzL21haW4uYworIyBCdWls
ZCB1bml0IHRlc3RzCitub2luc3RfUFJPR1JBTVMgKz0gJChURVNUX1BST0dTKQogCi1Qcm9ncmFt
c19Vbml0VGVzdHNfQ0ZMQUdTID0gXAord2Via2l0X3Rlc3RzX2NmbGFncyA9IFwKIAktZm5vLXN0
cmljdC1hbGlhc2luZyBcCiAJLU8yIFwKKwktSSQoc3JjZGlyKS9KYXZhU2NyaXB0Q29yZS9Gb3J3
YXJkaW5nSGVhZGVycyBcCisJLUkkKHNyY2RpcikvV2ViS2l0L2d0ayBcCisJLUkkKHRvcF9idWls
ZGRpcikvV2ViS2l0L2d0ayBcCiAJJChnbG9iYWxfY2ZsYWdzKSBcCiAJJChHTElCX0NGTEFHUykg
XAogCSQoR1RLX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpCiAKLVByb2dyYW1zX1VuaXRU
ZXN0c19MREFERCA9IFwKK3dlYmtpdF90ZXN0c19sZGFkZCA9IFwKIAlsaWJ3ZWJraXQtMS4wLmxh
IFwKIAkkKEdUS19MSUJTKQlcCi0JJChHTElCX0xJQlMpCisJJChHTElCX0xJQlMpIFwKKwkkKExJ
QlNPVVBfTElCUykKKworVEVTVF9QUk9HUyArPSBQcm9ncmFtcy91bml0dGVzdHMvdGVzdHdlYmZy
YW1lIFwKKwlQcm9ncmFtcy91bml0dGVzdHMvdGVzdHdlYmJhY2tmb3J3YXJkbGlzdAorCisjIEFk
ZCBhZGRpdGlvbmFsIHRlc3RzIGhlcmUKK1Byb2dyYW1zX3VuaXR0ZXN0c190ZXN0d2ViZnJhbWVf
U09VUkNFUyA9IFdlYktpdC9ndGsvdGVzdHMvdGVzdHdlYmZyYW1lLmMKK1Byb2dyYW1zX3VuaXR0
ZXN0c190ZXN0d2ViZnJhbWVfQ0ZMQUdTID0gJCh3ZWJraXRfdGVzdHNfY2ZsYWdzKQorUHJvZ3Jh
bXNfdW5pdHRlc3RzX3Rlc3R3ZWJmcmFtZV9MREFERCA9ICQod2Via2l0X3Rlc3RzX2xkYWRkKQor
CitQcm9ncmFtc191bml0dGVzdHNfdGVzdHdlYmJhY2tmb3J3YXJkbGlzdF9TT1VSQ0VTID0gV2Vi
S2l0L2d0ay90ZXN0cy90ZXN0d2ViYmFja2ZvcndhcmRsaXN0LmMKK1Byb2dyYW1zX3VuaXR0ZXN0
c190ZXN0d2ViYmFja2ZvcndhcmRsaXN0X0NGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2NmbGFncykK
K1Byb2dyYW1zX3VuaXR0ZXN0c190ZXN0d2ViYmFja2ZvcndhcmRsaXN0X0xEQUREID0gJCh3ZWJr
aXRfdGVzdHNfbGRhZGQpCiAKICMgQXV0b2dlbmVyYXRlZCBzb3VyY2VzCiBCVUlMVF9TT1VSQ0VT
IDo9IFwKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggOTYyYjJkMC4uMDM1MjViNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0w
My0wNyAgSmFuIE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXBhcmF0ZSBndGsgdW5p
dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjQwMzkKKworICAgICAgICBTcGxpdCB0aGUgY3VycmVudCB0ZXN0cyBpbnRvIHRlc3R3ZWJmcmFt
ZSBhbmQgdGVzdHdlYmJhY2tmb3J3YXJkbGlzdC4KKworICAgICAgICAqIHRlc3RzL21haW4uYzog
UmVtb3ZlZC4KKyAgICAgICAgKiB0ZXN0cy90ZXN0d2ViYmFja2ZvcndhcmRsaXN0LmM6IEFkZGVk
LgorICAgICAgICAodGVzdF93ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X29yZGVyKToKKyAg
ICAgICAgKHRlc3Rfd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9hZGRfaXRlbSk6CisgICAg
ICAgIChtYWluKToKKyAgICAgICAgKiB0ZXN0cy90ZXN0d2ViZnJhbWUuYzogQWRkZWQuCisgICAg
ICAgICh0ZXN0X3dlYmtpdF93ZWJfZnJhbWVfY3JlYXRlX2Rlc3Ryb3kpOgorICAgICAgICAodGVz
dF93ZWJraXRfd2ViX2ZyYW1lX2xpZmV0aW1lKToKKyAgICAgICAgKG1haW4pOgorCiAyMDA5LTAz
LTA1ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE9sbGllai4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvdGVzdHMvbWFpbi5jIGIv
V2ViS2l0L2d0ay90ZXN0cy9tYWluLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVj
ZGVkOGUuLjAwMDAwMDAKLS0tIGEvV2ViS2l0L2d0ay90ZXN0cy9tYWluLmMKKysrIC9kZXYvbnVs
bApAQCAtMSwyNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFu
cyBQZXRlciBGcmV5dGhlcgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPGd0ay9ndGsuaD4K
LSNpbmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+Ci0KLSNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwg
MTYsIDApICYmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE0LCAwKQotCi1zdGF0aWMgdm9pZCB0ZXN0
X3dlYmtpdF93ZWJfZnJhbWVfY3JlYXRlX2Rlc3Ryb3kodm9pZCkKLXsKLSAgICBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3OwotICAgIGdfdGVzdF9idWcoIjIxODM3Iik7Ci0KLSAgICB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVm
X3Npbmsod2ViVmlldyk7Ci0gICAgZ19hc3NlcnRfY21waW50KEdfT0JKRUNUKHdlYlZpZXcpLT5y
ZWZfY291bnQsID09LCAxKTsKLQotICAgIC8vIFRoaXMgY3Jhc2hlZCB3aXRoIHRoZSBvcmlnaW5h
bCB2ZXJzaW9uCi0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHRlc3Rfd2Via2l0X3dlYl9mcmFtZV9saWZldGltZSh2b2lkKQotewotICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXc7Ci0gICAgV2ViS2l0V2ViRnJhbWUqIHdlYkZyYW1lOwotICAgIGdfdGVzdF9i
dWcoIjIxODM3Iik7Ci0KLSAgICB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJf
dmlld19uZXcoKSk7Ci0gICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7Ci0gICAgZ19hc3Nl
cnRfY21waW50KEdfT0JKRUNUKHdlYlZpZXcpLT5yZWZfY291bnQsID09LCAxKTsKLSAgICB3ZWJG
cmFtZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZSh3ZWJWaWV3KTsKLSAgICBnX2Fz
c2VydF9jbXBpbnQoR19PQkpFQ1Qod2ViRnJhbWUpLT5yZWZfY291bnQsID09LCAxKTsKLQotICAg
IC8vIEFkZCBkdW1teSByZWZlcmVuY2Ugb24gdGhlIFdlYktpdFdlYkZyYW1lIHRvIGtlZXAgaXQg
YWxpdmUKLSAgICBnX29iamVjdF9yZWYod2ViRnJhbWUpOwotICAgIGdfYXNzZXJ0X2NtcGludChH
X09CSkVDVCh3ZWJGcmFtZSktPnJlZl9jb3VudCwgPT0sIDIpOwotCi0gICAgLy8gVGhpcyBjcmFz
aGVkIHdpdGggdGhlIG9yaWdpbmFsIHZlcnNpb24KLSAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3
KTsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBmcmFtZSBnb3QgZGVsZXRlZCBhcyB3ZWxs
LiBXZSBkaWQgdGhpcwotICAgIC8vIGJ5IGFkZGluZyBhbiBleHRyYSByZWYgb24gdGhlIFdlYktp
dFdlYkZyYW1lIGFuZCB3ZSBzaG91bGQKLSAgICAvLyBiZSB0aGUgb25lIGhvbGRpbmcgdGhlIGxh
c3QgcmVmZXJlbmNlLgotICAgIGdfYXNzZXJ0X2NtcGludChHX09CSkVDVCh3ZWJGcmFtZSktPnJl
Zl9jb3VudCwgPT0sIDEpOwotICAgIGdfb2JqZWN0X3VucmVmKHdlYkZyYW1lKTsKLX0KLQotc3Rh
dGljIHZvaWQKLXRlc3Rfd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9vcmRlcih2b2lkKQot
ewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7Ci0gICAgV2ViS2l0V2ViQmFja0ZvcndhcmRM
aXN0KiB3ZWJCYWNrRm9yd2FyZExpc3Q7Ci0gICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIGl0ZW0x
OwotICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBpdGVtMjsKLSAgICBXZWJLaXRXZWJIaXN0b3J5
SXRlbSogaXRlbTM7Ci0gICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIGl0ZW00OwotICAgIFdlYktp
dFdlYkhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbTsKLSAgICBHTGlzdCogYmFja0xpc3QgPSBOVUxM
OwotICAgIEdMaXN0KiBmb3J3YXJkTGlzdCA9IE5VTEw7Ci0gICAgZ190ZXN0X2J1ZygiMjI2OTQi
KTsKLQotICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygp
KTsKLSAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLQotICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfbWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0KHdlYlZpZXcsIFRSVUUpOwotICAgIHdl
YkJhY2tGb3J3YXJkTGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qo
d2ViVmlldyk7Ci0gICAgZ19hc3NlcnQod2ViQmFja0ZvcndhcmRMaXN0KTsKLQotICAgIC8vIENo
ZWNrIHRoYXQgdGhlcmUgaXMgbm8gaXRlbS4KLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9iYWNr
X2ZvcndhcmRfbGlzdF9nZXRfY3VycmVudF9pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCkpOwotICAg
IGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJk
X2xlbmd0aCh3ZWJCYWNrRm9yd2FyZExpc3QpLCA9PSwgMCk7Ci0gICAgZ19hc3NlcnRfY21waW50
KHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGVuZ3RoKHdlYkJhY2tGb3J3
YXJkTGlzdCksID09LCAwKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19m
b3J3YXJkKHdlYlZpZXcpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19i
YWNrKHdlYlZpZXcpKTsKLQotICAgIC8vIEFkZCBhIG5ldyBpdGVtcwotICAgIGl0ZW0xID0gd2Vi
a2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfZGF0YSgiaHR0cDovL2V4YW1wbGUuY29tLzEv
IiwgIlNpdGUgMSIpOwotICAgIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfYWRkX2l0ZW0o
d2ViQmFja0ZvcndhcmRMaXN0LCBpdGVtMSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl9iYWNr
X2ZvcndhcmRfbGlzdF9jb250YWluc19pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCwgaXRlbTEpKTsK
LQotICAgIGl0ZW0yID0gd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfZGF0YSgiaHR0
cDovL2V4YW1wbGUuY29tLzIvIiwgIlNpdGUgMiIpOwotICAgIHdlYmtpdF93ZWJfYmFja19mb3J3
YXJkX2xpc3RfYWRkX2l0ZW0od2ViQmFja0ZvcndhcmRMaXN0LCBpdGVtMik7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jb250YWluc19pdGVtKHdlYkJhY2tGb3J3
YXJkTGlzdCwgaXRlbTIpKTsKLQotICAgIGl0ZW0zID0gd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1f
bmV3X3dpdGhfZGF0YSgiaHR0cDovL2V4YW1wbGUuY29tLzMvIiwgIlNpdGUgMyIpOwotICAgIHdl
YmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfYWRkX2l0ZW0od2ViQmFja0ZvcndhcmRMaXN0LCBp
dGVtMyk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jb250YWlu
c19pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCwgaXRlbTMpKTsKLQotICAgIGl0ZW00ID0gd2Via2l0
X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfZGF0YSgiaHR0cDovL2V4YW1wbGUuY29tLzQvIiwg
IlNpdGUgNCIpOwotICAgIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfYWRkX2l0ZW0od2Vi
QmFja0ZvcndhcmRMaXN0LCBpdGVtNCk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl9iYWNrX2Zv
cndhcmRfbGlzdF9jb250YWluc19pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCwgaXRlbTQpKTsKLQot
ICAgIC8vIGNoZWNrIHRoZSBiYWNrIGxpc3Qgb3JkZXIKLSAgICBiYWNrTGlzdCA9IHdlYmtpdF93
ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGlzdF93aXRoX2xpbWl0KHdlYkJhY2tGb3J3
YXJkTGlzdCwgNSk7Ci0gICAgZ19hc3NlcnQoYmFja0xpc3QpOwotCi0gICAgY3VycmVudEl0ZW0g
PSBXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShiYWNrTGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF91cmkoY3VycmVudEl0ZW0pLCA9PSwg
Imh0dHA6Ly9leGFtcGxlLmNvbS8zLyIpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vi
X2hpc3RvcnlfaXRlbV9nZXRfdGl0bGUoY3VycmVudEl0ZW0pLCA9PSwgIlNpdGUgMyIpOwotICAg
IGJhY2tMaXN0ID0gYmFja0xpc3QtPm5leHQ7Ci0KLSAgICBjdXJyZW50SXRlbSA9IFdFQktJVF9X
RUJfSElTVE9SWV9JVEVNKGJhY2tMaXN0LT5kYXRhKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Vi
a2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3VyaShjdXJyZW50SXRlbSksID09LCAiaHR0cDovL2V4
YW1wbGUuY29tLzIvIik7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfaGlzdG9yeV9p
dGVtX2dldF90aXRsZShjdXJyZW50SXRlbSksID09LCAiU2l0ZSAyIik7Ci0gICAgYmFja0xpc3Qg
PSBiYWNrTGlzdC0+bmV4dDsKLQotICAgIGN1cnJlbnRJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZ
X0lURU0oYmFja0xpc3QtPmRhdGEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2hp
c3RvcnlfaXRlbV9nZXRfdXJpKGN1cnJlbnRJdGVtKSwgPT0sICJodHRwOi8vZXhhbXBsZS5jb20v
MS8iKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3Rp
dGxlKGN1cnJlbnRJdGVtKSwgPT0sICJTaXRlIDEiKTsKLSAgICBnX2xpc3RfZnJlZShiYWNrTGlz
dCk7Ci0KLSAgICAvLyBjaGVjayB0aGUgZm9yd2FyZCBsaXN0IG9yZGVyCi0gICAgZ19hc3NlcnQo
d2Via2l0X3dlYl92aWV3X2dvX3RvX2JhY2tfZm9yd2FyZF9pdGVtKHdlYlZpZXcsIGl0ZW0xKSk7
Ci0gICAgZm9yd2FyZExpc3QgPSB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3
YXJkX2xpc3Rfd2l0aF9saW1pdCh3ZWJCYWNrRm9yd2FyZExpc3QsNSk7Ci0gICAgZ19hc3NlcnQo
Zm9yd2FyZExpc3QpOwotCi0gICAgY3VycmVudEl0ZW0gPSBXRUJLSVRfV0VCX0hJU1RPUllfSVRF
TShmb3J3YXJkTGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfaGlz
dG9yeV9pdGVtX2dldF91cmkoY3VycmVudEl0ZW0pLCA9PSwgImh0dHA6Ly9leGFtcGxlLmNvbS80
LyIpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdGl0
bGUoY3VycmVudEl0ZW0pLCA9PSwgIlNpdGUgNCIpOwotICAgIGZvcndhcmRMaXN0ID0gZm9yd2Fy
ZExpc3QtPm5leHQ7Ci0KLSAgICBjdXJyZW50SXRlbSA9IFdFQktJVF9XRUJfSElTVE9SWV9JVEVN
KGZvcndhcmRMaXN0LT5kYXRhKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9oaXN0
b3J5X2l0ZW1fZ2V0X3VyaShjdXJyZW50SXRlbSksID09LCAiaHR0cDovL2V4YW1wbGUuY29tLzMv
Iik7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90aXRs
ZShjdXJyZW50SXRlbSksID09LCAiU2l0ZSAzIik7Ci0gICAgZm9yd2FyZExpc3QgPSBmb3J3YXJk
TGlzdC0+bmV4dDsKLQotICAgIGN1cnJlbnRJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0o
Zm9yd2FyZExpc3QtPmRhdGEpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2hpc3Rv
cnlfaXRlbV9nZXRfdXJpKGN1cnJlbnRJdGVtKSwgPT0sICJodHRwOi8vZXhhbXBsZS5jb20vMi8i
KTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RpdGxl
KGN1cnJlbnRJdGVtKSwgPT0sICJTaXRlIDIiKTsKLQotICAgIGdfb2JqZWN0X3VucmVmKGN1cnJl
bnRJdGVtKTsKLSAgICBnX29iamVjdF91bnJlZihpdGVtMSk7Ci0gICAgZ19vYmplY3RfdW5yZWYo
aXRlbTIpOwotICAgIGdfb2JqZWN0X3VucmVmKGl0ZW0zKTsKLSAgICBnX29iamVjdF91bnJlZihp
dGVtNCk7Ci0gICAgZ19saXN0X2ZyZWUoZm9yd2FyZExpc3QpOwotICAgIGdfb2JqZWN0X3VucmVm
KHdlYlZpZXcpOwotfQotCi1zdGF0aWMgdm9pZAotdGVzdF93ZWJraXRfd2ViX2JhY2tfZm9yd2Fy
ZF9saXN0X2FkZF9pdGVtKHZvaWQpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKLSAg
ICBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIHdlYkJhY2tGb3J3YXJkTGlzdDsKLSAgICBXZWJL
aXRXZWJIaXN0b3J5SXRlbSogYWRkSXRlbTE7Ci0gICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIGFk
ZEl0ZW0yOwotICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBiYWNrSXRlbTsKLSAgICBXZWJLaXRX
ZWJIaXN0b3J5SXRlbSogY3VycmVudEl0ZW07Ci0gICAgZ190ZXN0X2J1ZygiMjI5ODgiKTsKLQot
ICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKLSAg
ICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKLQotICAgIHdlYmtpdF93ZWJfdmlld19zZXRf
bWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0KHdlYlZpZXcsIFRSVUUpOwotICAgIHdlYkJhY2tG
b3J3YXJkTGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qod2ViVmll
dyk7Ci0gICAgZ19hc3NlcnQod2ViQmFja0ZvcndhcmRMaXN0KTsKLQotICAgIC8vIENoZWNrIHRo
YXQgdGhlcmUgaXMgbm8gaXRlbS4KLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9iYWNrX2Zvcndh
cmRfbGlzdF9nZXRfY3VycmVudF9pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCkpOwotICAgIGdfYXNz
ZXJ0X2NtcGludCh3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xlbmd0
aCh3ZWJCYWNrRm9yd2FyZExpc3QpLCA9PSwgMCk7Ci0gICAgZ19hc3NlcnRfY21waW50KHdlYmtp
dF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGVuZ3RoKHdlYkJhY2tGb3J3YXJkTGlz
dCksID09LCAwKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJk
KHdlYlZpZXcpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHdl
YlZpZXcpKTsKLQotICAgIC8vIEFkZCBhIG5ldyBpdGVtCi0gICAgYWRkSXRlbTEgPSB3ZWJraXRf
d2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9kYXRhKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIkFk
ZGVkIHNpdGUiKTsKLSAgICB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2FkZF9pdGVtKHdl
YkJhY2tGb3J3YXJkTGlzdCwgYWRkSXRlbTEpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfYmFj
a19mb3J3YXJkX2xpc3RfY29udGFpbnNfaXRlbSh3ZWJCYWNrRm9yd2FyZExpc3QsIGFkZEl0ZW0x
KSk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IHRoZSBhZGRlZCBpdGVtIGlzIHRoZSBjdXJyZW50IGl0
ZW0uCi0gICAgY3VycmVudEl0ZW0gPSB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9j
dXJyZW50X2l0ZW0od2ViQmFja0ZvcndhcmRMaXN0KTsKLSAgICBnX2Fzc2VydChjdXJyZW50SXRl
bSk7Ci0gICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0
X2ZvcndhcmRfbGVuZ3RoKHdlYkJhY2tGb3J3YXJkTGlzdCksID09LCAwKTsKLSAgICBnX2Fzc2Vy
dF9jbXBpbnQod2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19sZW5ndGgod2Vi
QmFja0ZvcndhcmRMaXN0KSwgPT0sIDApOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdf
Y2FuX2dvX2ZvcndhcmQod2ViVmlldykpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdf
Y2FuX2dvX2JhY2sod2ViVmlldykpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2hp
c3RvcnlfaXRlbV9nZXRfdXJpKGN1cnJlbnRJdGVtKSwgPT0sICJodHRwOi8vZXhhbXBsZS5jb20v
Iik7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90aXRs
ZShjdXJyZW50SXRlbSksID09LCAiQWRkZWQgc2l0ZSIpOwotCi0gICAgLy8gQWRkIGFub3RoZXIg
aXRlbS4KLSAgICBhZGRJdGVtMiA9IHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2Rh
dGEoImh0dHA6Ly9leGFtcGxlLmNvbS8yLyIsICJBZGRlZCBzaXRlIDIiKTsKLSAgICB3ZWJraXRf
d2ViX2JhY2tfZm9yd2FyZF9saXN0X2FkZF9pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCwgYWRkSXRl
bTIpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfY29udGFpbnNf
aXRlbSh3ZWJCYWNrRm9yd2FyZExpc3QsIGFkZEl0ZW0yKSk7Ci0gICAgZ19vYmplY3RfdW5yZWYo
YWRkSXRlbTIpOwotCi0gICAgLy8gQ2hlY2sgdGhhdCB0aGUgYWRkZWQgaXRlbSBpcyBuZXcgY3Vy
cmVudCBpdGVtLgotICAgIGN1cnJlbnRJdGVtID0gd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlz
dF9nZXRfY3VycmVudF9pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCk7Ci0gICAgZ19hc3NlcnQoY3Vy
cmVudEl0ZW0pOwotICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9s
aXN0X2dldF9mb3J3YXJkX2xlbmd0aCh3ZWJCYWNrRm9yd2FyZExpc3QpLCA9PSwgMCk7Ci0gICAg
Z19hc3NlcnRfY21waW50KHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGVu
Z3RoKHdlYkJhY2tGb3J3YXJkTGlzdCksID09LCAxKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dl
Yl92aWV3X2Nhbl9nb19mb3J3YXJkKHdlYlZpZXcpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
X3ZpZXdfY2FuX2dvX2JhY2sod2ViVmlldykpOwotICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRf
d2ViX2hpc3RvcnlfaXRlbV9nZXRfdXJpKGN1cnJlbnRJdGVtKSwgPT0sICJodHRwOi8vZXhhbXBs
ZS5jb20vMi8iKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1f
Z2V0X3RpdGxlKGN1cnJlbnRJdGVtKSwgPT0sICJBZGRlZCBzaXRlIDIiKTsKLQotICAgIGJhY2tJ
dGVtID0gd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19pdGVtKHdlYkJhY2tG
b3J3YXJkTGlzdCk7Ci0gICAgZ19hc3NlcnQoYmFja0l0ZW0pOwotICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdXJpKGJhY2tJdGVtKSwgPT0sICJodHRwOi8v
ZXhhbXBsZS5jb20vIik7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfaGlzdG9yeV9p
dGVtX2dldF90aXRsZShiYWNrSXRlbSksID09LCAiQWRkZWQgc2l0ZSIpOwotCi0gICAgLy8gR28g
dG8gdGhlIGZpcnN0IGFkZGVkIGl0ZW0uCi0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dv
X3RvX2JhY2tfZm9yd2FyZF9pdGVtKHdlYlZpZXcsIGFkZEl0ZW0xKSk7Ci0gICAgZ19hc3NlcnRf
Y21waW50KHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfbGVuZ3RoKHdl
YkJhY2tGb3J3YXJkTGlzdCksID09LCAxKTsKLSAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3dl
Yl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19sZW5ndGgod2ViQmFja0ZvcndhcmRMaXN0KSwg
PT0sIDApOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19jYW5fZ29fZm9yd2FyZCh3ZWJW
aWV3KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh3ZWJWaWV3
KSk7Ci0KLSAgICBnX29iamVjdF91bnJlZihhZGRJdGVtMSk7Ci0gICAgZ19vYmplY3RfdW5yZWYo
d2ViVmlldyk7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLXsKLSAgICBn
X3RocmVhZF9pbml0KE5VTEwpOwotICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBOVUxM
KTsKLQotICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7Ci0g
ICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcvY3JlYXRlX2Rlc3Ryb3kiLCB0ZXN0
X3dlYmtpdF93ZWJfZnJhbWVfY3JlYXRlX2Rlc3Ryb3kpOwotICAgIGdfdGVzdF9hZGRfZnVuYygi
L3dlYmtpdC93ZWJmcmFtZS9saWZldGltZSIsIHRlc3Rfd2Via2l0X3dlYl9mcmFtZV9saWZldGlt
ZSk7Ci0gICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYmJhY2tmb3J3YXJkbGlzdC9hZGRf
aXRlbSIsIHRlc3Rfd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9hZGRfaXRlbSk7Ci0gICAg
Z190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYmJhY2tmb3J3YXJkbGlzdC9saXN0X29yZGVyIiwg
dGVzdF93ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X29yZGVyKTsKLSAgICByZXR1cm4gZ190
ZXN0X3J1biAoKTsKLX0KLQotI2Vsc2UKLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK
LXsKLSAgICBnX2NyaXRpY2FsKCJZb3Ugd2lsbCBuZWVkIGF0IGxlYXN0IGdsaWItMi4xNi4wIGFu
ZCBndGstMi4xNC4wIHRvIHJ1biB0aGUgdW5pdCB0ZXN0cy4gRG9pbmcgbm90aGluZyBub3cuIik7
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay90ZXN0
cy90ZXN0d2ViYmFja2ZvcndhcmRsaXN0LmMgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJiYWNr
Zm9yd2FyZGxpc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGM0OWQz
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2ViYmFja2ZvcndhcmRs
aXN0LmMKQEAgLTAsMCArMSwyMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2Vy
IEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdC5oPgorCisjaWYgR0xJQl9DSEVDS19WRVJTSU9O
KDIsIDE2LCAwKSAmJiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKKworc3RhdGljIHZvaWQK
K3Rlc3Rfd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9vcmRlcih2b2lkKQoreworICAgIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiB3ZWJC
YWNrRm9yd2FyZExpc3Q7CisgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIGl0ZW0xOworICAgIFdl
YktpdFdlYkhpc3RvcnlJdGVtKiBpdGVtMjsKKyAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogaXRl
bTM7CisgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIGl0ZW00OworICAgIFdlYktpdFdlYkhpc3Rv
cnlJdGVtKiBjdXJyZW50SXRlbTsKKyAgICBHTGlzdCogYmFja0xpc3QgPSBOVUxMOworICAgIEdM
aXN0KiBmb3J3YXJkTGlzdCA9IE5VTEw7CisgICAgZ190ZXN0X2J1ZygiMjI2OTQiKTsKKworICAg
IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBn
X29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKKworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfbWFp
bnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0KHdlYlZpZXcsIFRSVUUpOworICAgIHdlYkJhY2tGb3J3
YXJkTGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qod2ViVmlldyk7
CisgICAgZ19hc3NlcnQod2ViQmFja0ZvcndhcmRMaXN0KTsKKworICAgIC8vIENoZWNrIHRoYXQg
dGhlcmUgaXMgbm8gaXRlbS4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRf
bGlzdF9nZXRfY3VycmVudF9pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCkpOworICAgIGdfYXNzZXJ0
X2NtcGludCh3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xlbmd0aCh3
ZWJCYWNrRm9yd2FyZExpc3QpLCA9PSwgMCk7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF93
ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGVuZ3RoKHdlYkJhY2tGb3J3YXJkTGlzdCks
ID09LCAwKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKHdl
YlZpZXcpKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHdlYlZp
ZXcpKTsKKworICAgIC8vIEFkZCBhIG5ldyBpdGVtcworICAgIGl0ZW0xID0gd2Via2l0X3dlYl9o
aXN0b3J5X2l0ZW1fbmV3X3dpdGhfZGF0YSgiaHR0cDovL2V4YW1wbGUuY29tLzEvIiwgIlNpdGUg
MSIpOworICAgIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfYWRkX2l0ZW0od2ViQmFja0Zv
cndhcmRMaXN0LCBpdGVtMSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9iYWNrX2ZvcndhcmRf
bGlzdF9jb250YWluc19pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCwgaXRlbTEpKTsKKworICAgIGl0
ZW0yID0gd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfZGF0YSgiaHR0cDovL2V4YW1w
bGUuY29tLzIvIiwgIlNpdGUgMiIpOworICAgIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3Rf
YWRkX2l0ZW0od2ViQmFja0ZvcndhcmRMaXN0LCBpdGVtMik7CisgICAgZ19hc3NlcnQod2Via2l0
X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jb250YWluc19pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCwg
aXRlbTIpKTsKKworICAgIGl0ZW0zID0gd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhf
ZGF0YSgiaHR0cDovL2V4YW1wbGUuY29tLzMvIiwgIlNpdGUgMyIpOworICAgIHdlYmtpdF93ZWJf
YmFja19mb3J3YXJkX2xpc3RfYWRkX2l0ZW0od2ViQmFja0ZvcndhcmRMaXN0LCBpdGVtMyk7Cisg
ICAgZ19hc3NlcnQod2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jb250YWluc19pdGVtKHdl
YkJhY2tGb3J3YXJkTGlzdCwgaXRlbTMpKTsKKworICAgIGl0ZW00ID0gd2Via2l0X3dlYl9oaXN0
b3J5X2l0ZW1fbmV3X3dpdGhfZGF0YSgiaHR0cDovL2V4YW1wbGUuY29tLzQvIiwgIlNpdGUgNCIp
OworICAgIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfYWRkX2l0ZW0od2ViQmFja0Zvcndh
cmRMaXN0LCBpdGVtNCk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlz
dF9jb250YWluc19pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCwgaXRlbTQpKTsKKworICAgIC8vIGNo
ZWNrIHRoZSBiYWNrIGxpc3Qgb3JkZXIKKyAgICBiYWNrTGlzdCA9IHdlYmtpdF93ZWJfYmFja19m
b3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGlzdF93aXRoX2xpbWl0KHdlYkJhY2tGb3J3YXJkTGlzdCwg
NSk7CisgICAgZ19hc3NlcnQoYmFja0xpc3QpOworCisgICAgY3VycmVudEl0ZW0gPSBXRUJLSVRf
V0VCX0hJU1RPUllfSVRFTShiYWNrTGlzdC0+ZGF0YSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF91cmkoY3VycmVudEl0ZW0pLCA9PSwgImh0dHA6Ly9l
eGFtcGxlLmNvbS8zLyIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2hpc3Rvcnlf
aXRlbV9nZXRfdGl0bGUoY3VycmVudEl0ZW0pLCA9PSwgIlNpdGUgMyIpOworICAgIGJhY2tMaXN0
ID0gYmFja0xpc3QtPm5leHQ7CisKKyAgICBjdXJyZW50SXRlbSA9IFdFQktJVF9XRUJfSElTVE9S
WV9JVEVNKGJhY2tMaXN0LT5kYXRhKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9o
aXN0b3J5X2l0ZW1fZ2V0X3VyaShjdXJyZW50SXRlbSksID09LCAiaHR0cDovL2V4YW1wbGUuY29t
LzIvIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90
aXRsZShjdXJyZW50SXRlbSksID09LCAiU2l0ZSAyIik7CisgICAgYmFja0xpc3QgPSBiYWNrTGlz
dC0+bmV4dDsKKworICAgIGN1cnJlbnRJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0oYmFj
a0xpc3QtPmRhdGEpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2hpc3RvcnlfaXRl
bV9nZXRfdXJpKGN1cnJlbnRJdGVtKSwgPT0sICJodHRwOi8vZXhhbXBsZS5jb20vMS8iKTsKKyAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RpdGxlKGN1cnJl
bnRJdGVtKSwgPT0sICJTaXRlIDEiKTsKKyAgICBnX2xpc3RfZnJlZShiYWNrTGlzdCk7CisKKyAg
ICAvLyBjaGVjayB0aGUgZm9yd2FyZCBsaXN0IG9yZGVyCisgICAgZ19hc3NlcnQod2Via2l0X3dl
Yl92aWV3X2dvX3RvX2JhY2tfZm9yd2FyZF9pdGVtKHdlYlZpZXcsIGl0ZW0xKSk7CisgICAgZm9y
d2FyZExpc3QgPSB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xpc3Rf
d2l0aF9saW1pdCh3ZWJCYWNrRm9yd2FyZExpc3QsNSk7CisgICAgZ19hc3NlcnQoZm9yd2FyZExp
c3QpOworCisgICAgY3VycmVudEl0ZW0gPSBXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShmb3J3YXJk
TGlzdC0+ZGF0YSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVt
X2dldF91cmkoY3VycmVudEl0ZW0pLCA9PSwgImh0dHA6Ly9leGFtcGxlLmNvbS80LyIpOworICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdGl0bGUoY3VycmVu
dEl0ZW0pLCA9PSwgIlNpdGUgNCIpOworICAgIGZvcndhcmRMaXN0ID0gZm9yd2FyZExpc3QtPm5l
eHQ7CisKKyAgICBjdXJyZW50SXRlbSA9IFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKGZvcndhcmRM
aXN0LT5kYXRhKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1f
Z2V0X3VyaShjdXJyZW50SXRlbSksID09LCAiaHR0cDovL2V4YW1wbGUuY29tLzMvIik7CisgICAg
Z19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90aXRsZShjdXJyZW50
SXRlbSksID09LCAiU2l0ZSAzIik7CisgICAgZm9yd2FyZExpc3QgPSBmb3J3YXJkTGlzdC0+bmV4
dDsKKworICAgIGN1cnJlbnRJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0oZm9yd2FyZExp
c3QtPmRhdGEpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9n
ZXRfdXJpKGN1cnJlbnRJdGVtKSwgPT0sICJodHRwOi8vZXhhbXBsZS5jb20vMi8iKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RpdGxlKGN1cnJlbnRJ
dGVtKSwgPT0sICJTaXRlIDIiKTsKKworICAgIGdfb2JqZWN0X3VucmVmKGN1cnJlbnRJdGVtKTsK
KyAgICBnX29iamVjdF91bnJlZihpdGVtMSk7CisgICAgZ19vYmplY3RfdW5yZWYoaXRlbTIpOwor
ICAgIGdfb2JqZWN0X3VucmVmKGl0ZW0zKTsKKyAgICBnX29iamVjdF91bnJlZihpdGVtNCk7Cisg
ICAgZ19saXN0X2ZyZWUoZm9yd2FyZExpc3QpOworICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcp
OworfQorCitzdGF0aWMgdm9pZAordGVzdF93ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2Fk
ZF9pdGVtKHZvaWQpCit7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKKyAgICBXZWJLaXRX
ZWJCYWNrRm9yd2FyZExpc3QqIHdlYkJhY2tGb3J3YXJkTGlzdDsKKyAgICBXZWJLaXRXZWJIaXN0
b3J5SXRlbSogYWRkSXRlbTE7CisgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIGFkZEl0ZW0yOwor
ICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBiYWNrSXRlbTsKKyAgICBXZWJLaXRXZWJIaXN0b3J5
SXRlbSogY3VycmVudEl0ZW07CisgICAgZ190ZXN0X2J1ZygiMjI5ODgiKTsKKworICAgIHdlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBnX29iamVj
dF9yZWZfc2luayh3ZWJWaWV3KTsKKworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfbWFpbnRhaW5z
X2JhY2tfZm9yd2FyZF9saXN0KHdlYlZpZXcsIFRSVUUpOworICAgIHdlYkJhY2tGb3J3YXJkTGlz
dCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qod2ViVmlldyk7CisgICAg
Z19hc3NlcnQod2ViQmFja0ZvcndhcmRMaXN0KTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlcmUg
aXMgbm8gaXRlbS4KKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9n
ZXRfY3VycmVudF9pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCkpOworICAgIGdfYXNzZXJ0X2NtcGlu
dCh3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xlbmd0aCh3ZWJCYWNr
Rm9yd2FyZExpc3QpLCA9PSwgMCk7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF93ZWJfYmFj
a19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGVuZ3RoKHdlYkJhY2tGb3J3YXJkTGlzdCksID09LCAw
KTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKHdlYlZpZXcp
KTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHdlYlZpZXcpKTsK
KworICAgIC8vIEFkZCBhIG5ldyBpdGVtCisgICAgYWRkSXRlbTEgPSB3ZWJraXRfd2ViX2hpc3Rv
cnlfaXRlbV9uZXdfd2l0aF9kYXRhKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgIkFkZGVkIHNpdGUi
KTsKKyAgICB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2FkZF9pdGVtKHdlYkJhY2tGb3J3
YXJkTGlzdCwgYWRkSXRlbTEpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfYmFja19mb3J3YXJk
X2xpc3RfY29udGFpbnNfaXRlbSh3ZWJCYWNrRm9yd2FyZExpc3QsIGFkZEl0ZW0xKSk7CisKKyAg
ICAvLyBDaGVjayB0aGF0IHRoZSBhZGRlZCBpdGVtIGlzIHRoZSBjdXJyZW50IGl0ZW0uCisgICAg
Y3VycmVudEl0ZW0gPSB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJyZW50X2l0
ZW0od2ViQmFja0ZvcndhcmRMaXN0KTsKKyAgICBnX2Fzc2VydChjdXJyZW50SXRlbSk7CisgICAg
Z19hc3NlcnRfY21waW50KHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRf
bGVuZ3RoKHdlYkJhY2tGb3J3YXJkTGlzdCksID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
d2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19sZW5ndGgod2ViQmFja0Zvcndh
cmRMaXN0KSwgPT0sIDApOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2Zv
cndhcmQod2ViVmlldykpOworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2Jh
Y2sod2ViVmlldykpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2hpc3RvcnlfaXRl
bV9nZXRfdXJpKGN1cnJlbnRJdGVtKSwgPT0sICJodHRwOi8vZXhhbXBsZS5jb20vIik7CisgICAg
Z19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90aXRsZShjdXJyZW50
SXRlbSksID09LCAiQWRkZWQgc2l0ZSIpOworCisgICAgLy8gQWRkIGFub3RoZXIgaXRlbS4KKyAg
ICBhZGRJdGVtMiA9IHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGEoImh0dHA6
Ly9leGFtcGxlLmNvbS8yLyIsICJBZGRlZCBzaXRlIDIiKTsKKyAgICB3ZWJraXRfd2ViX2JhY2tf
Zm9yd2FyZF9saXN0X2FkZF9pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCwgYWRkSXRlbTIpOworICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfY29udGFpbnNfaXRlbSh3ZWJC
YWNrRm9yd2FyZExpc3QsIGFkZEl0ZW0yKSk7CisgICAgZ19vYmplY3RfdW5yZWYoYWRkSXRlbTIp
OworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgYWRkZWQgaXRlbSBpcyBuZXcgY3VycmVudCBpdGVt
LgorICAgIGN1cnJlbnRJdGVtID0gd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfY3Vy
cmVudF9pdGVtKHdlYkJhY2tGb3J3YXJkTGlzdCk7CisgICAgZ19hc3NlcnQoY3VycmVudEl0ZW0p
OworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9m
b3J3YXJkX2xlbmd0aCh3ZWJCYWNrRm9yd2FyZExpc3QpLCA9PSwgMCk7CisgICAgZ19hc3NlcnRf
Y21waW50KHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGVuZ3RoKHdlYkJh
Y2tGb3J3YXJkTGlzdCksID09LCAxKTsKKyAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nh
bl9nb19mb3J3YXJkKHdlYlZpZXcpKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfY2Fu
X2dvX2JhY2sod2ViVmlldykpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX2hpc3Rv
cnlfaXRlbV9nZXRfdXJpKGN1cnJlbnRJdGVtKSwgPT0sICJodHRwOi8vZXhhbXBsZS5jb20vMi8i
KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RpdGxl
KGN1cnJlbnRJdGVtKSwgPT0sICJBZGRlZCBzaXRlIDIiKTsKKworICAgIGJhY2tJdGVtID0gd2Vi
a2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19pdGVtKHdlYkJhY2tGb3J3YXJkTGlz
dCk7CisgICAgZ19hc3NlcnQoYmFja0l0ZW0pOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRf
d2ViX2hpc3RvcnlfaXRlbV9nZXRfdXJpKGJhY2tJdGVtKSwgPT0sICJodHRwOi8vZXhhbXBsZS5j
b20vIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90
aXRsZShiYWNrSXRlbSksID09LCAiQWRkZWQgc2l0ZSIpOworCisgICAgLy8gR28gdG8gdGhlIGZp
cnN0IGFkZGVkIGl0ZW0uCisgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dvX3RvX2JhY2tf
Zm9yd2FyZF9pdGVtKHdlYlZpZXcsIGFkZEl0ZW0xKSk7CisgICAgZ19hc3NlcnRfY21waW50KHdl
YmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfbGVuZ3RoKHdlYkJhY2tGb3J3
YXJkTGlzdCksID09LCAxKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3dlYl9iYWNrX2Zv
cndhcmRfbGlzdF9nZXRfYmFja19sZW5ndGgod2ViQmFja0ZvcndhcmRMaXN0KSwgPT0sIDApOwor
ICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19jYW5fZ29fZm9yd2FyZCh3ZWJWaWV3KSk7Cisg
ICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh3ZWJWaWV3KSk7CisKKyAg
ICBnX29iamVjdF91bnJlZihhZGRJdGVtMSk7CisgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7
Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBnX3RocmVhZF9p
bml0KE5VTEwpOworICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBOVUxMKTsKKworICAg
IGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7CisgICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0L3dlYmJhY2tmb3J3YXJkbGlzdC9hZGRfaXRlbSIsIHRlc3Rfd2Vi
a2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9hZGRfaXRlbSk7CisgICAgZ190ZXN0X2FkZF9mdW5j
KCIvd2Via2l0L3dlYmJhY2tmb3J3YXJkbGlzdC9saXN0X29yZGVyIiwgdGVzdF93ZWJraXRfd2Vi
X2JhY2tfZm9yd2FyZF9saXN0X29yZGVyKTsKKyAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKK30K
KworI2Vsc2UKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBnX2NyaXRp
Y2FsKCJZb3Ugd2lsbCBuZWVkIGF0IGxlYXN0IGdsaWItMi4xNi4wIGFuZCBndGstMi4xNC4wIHRv
IHJ1biB0aGUgdW5pdCB0ZXN0cy4gRG9pbmcgbm90aGluZyBub3cuIik7CisgICAgcmV0dXJuIDA7
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2ViZnJhbWUu
YyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYmZyYW1lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNjhmNmQ3MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvdGVz
dHMvdGVzdHdlYmZyYW1lLmMKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1
ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+CisKKyNpZiBHTElCX0NI
RUNLX1ZFUlNJT04oMiwgMTYsIDApICYmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE0LCAwKQorCitz
dGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfZnJhbWVfY3JlYXRlX2Rlc3Ryb3kodm9pZCkKK3sK
KyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OworICAgIGdfdGVzdF9idWcoIjIxODM3Iik7CisK
KyAgICB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7Cisg
ICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7CisgICAgZ19hc3NlcnRfY21waW50KEdfT0JK
RUNUKHdlYlZpZXcpLT5yZWZfY291bnQsID09LCAxKTsKKworICAgIC8vIFRoaXMgY3Jhc2hlZCB3
aXRoIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCisgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Cit9
CisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl9mcmFtZV9saWZldGltZSh2b2lkKQorewor
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgV2ViS2l0V2ViRnJhbWUqIHdlYkZyYW1l
OworICAgIGdfdGVzdF9idWcoIjIxODM3Iik7CisKKyAgICB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmll
dyk7CisgICAgZ19hc3NlcnRfY21waW50KEdfT0JKRUNUKHdlYlZpZXcpLT5yZWZfY291bnQsID09
LCAxKTsKKyAgICB3ZWJGcmFtZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZSh3ZWJW
aWV3KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoR19PQkpFQ1Qod2ViRnJhbWUpLT5yZWZfY291bnQs
ID09LCAxKTsKKworICAgIC8vIEFkZCBkdW1teSByZWZlcmVuY2Ugb24gdGhlIFdlYktpdFdlYkZy
YW1lIHRvIGtlZXAgaXQgYWxpdmUKKyAgICBnX29iamVjdF9yZWYod2ViRnJhbWUpOworICAgIGdf
YXNzZXJ0X2NtcGludChHX09CSkVDVCh3ZWJGcmFtZSktPnJlZl9jb3VudCwgPT0sIDIpOworCisg
ICAgLy8gVGhpcyBjcmFzaGVkIHdpdGggdGhlIG9yaWdpbmFsIHZlcnNpb24KKyAgICBnX29iamVj
dF91bnJlZih3ZWJWaWV3KTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBmcmFtZSBnb3Qg
ZGVsZXRlZCBhcyB3ZWxsLiBXZSBkaWQgdGhpcworICAgIC8vIGJ5IGFkZGluZyBhbiBleHRyYSBy
ZWYgb24gdGhlIFdlYktpdFdlYkZyYW1lIGFuZCB3ZSBzaG91bGQKKyAgICAvLyBiZSB0aGUgb25l
IGhvbGRpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgorICAgIGdfYXNzZXJ0X2NtcGludChHX09CSkVD
VCh3ZWJGcmFtZSktPnJlZl9jb3VudCwgPT0sIDEpOworICAgIGdfb2JqZWN0X3VucmVmKHdlYkZy
YW1lKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGdfdGhy
ZWFkX2luaXQoTlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOwor
CisgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBn
X3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9jcmVhdGVfZGVzdHJveSIsIHRlc3Rfd2Vi
a2l0X3dlYl9mcmFtZV9jcmVhdGVfZGVzdHJveSk7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Vi
a2l0L3dlYmZyYW1lL2xpZmV0aW1lIiwgdGVzdF93ZWJraXRfd2ViX2ZyYW1lX2xpZmV0aW1lKTsK
KworICAgIHJldHVybiBnX3Rlc3RfcnVuICgpOworfQorCisjZWxzZQoraW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQoreworICAgIGdfY3JpdGljYWwoIllvdSB3aWxsIG5lZWQgYXQgbGVh
c3QgZ2xpYi0yLjE2LjAgYW5kIGd0ay0yLjE0LjAgdG8gcnVuIHRoZSB1bml0IHRlc3RzLiBEb2lu
ZyBub3RoaW5nIG5vdy4iKTsKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmCg==
</data>
<flag name="review"
          id="13913"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
      

    </bug>

</bugzilla>