<?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>15561</bug_id>
          
          <creation_ts>2007-10-19 03:54:42 -0700</creation_ts>
          <short_desc>GTK port needs DumpRenderTree implementation</short_desc>
          <delta_ts>2007-12-04 04:17:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>523.x (Safari 3)</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>
          <dependson>15569</dependson>
          <blocked>14725</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alp</cc>
    
    <cc>christian</cc>
    
    <cc>mrowe</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>58843</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-19 03:54:42 -0700</bug_when>
    <thetext>GTK port needs DumpRenderTree implementation

See attached patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58844</commentid>
    <comment_count>1</comment_count>
      <attachid>16729</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-19 03:55:11 -0700</bug_when>
    <thetext>Created attachment 16729
partial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58846</commentid>
    <comment_count>2</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-10-19 04:57:38 -0700</bug_when>
    <thetext>Add the gtk keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58848</commentid>
    <comment_count>3</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-10-19 04:58:18 -0700</bug_when>
    <thetext>*** Bug 14735 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58849</commentid>
    <comment_count>4</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-10-19 04:59:24 -0700</bug_when>
    <thetext>Add the blocking as well...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58884</commentid>
    <comment_count>5</comment_count>
      <attachid>16738</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-19 20:46:58 -0700</bug_when>
    <thetext>Created attachment 16738
updated partial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58921</commentid>
    <comment_count>6</comment_count>
      <attachid>16743</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-20 11:55:20 -0700</bug_when>
    <thetext>Created attachment 16743
a more complete patch

Ok, I give up.  Someone else will have to finish this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58922</commentid>
    <comment_count>7</comment_count>
      <attachid>16744</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-20 11:57:34 -0700</bug_when>
    <thetext>Created attachment 16744
a more complete patch (previous one was missing files)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62057</commentid>
    <comment_count>8</comment_count>
      <attachid>17456</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-22 23:49:53 -0800</bug_when>
    <thetext>Created attachment 17456
WebKitFrame changes needed to support DRT

This patch implements and documents more of the WebKitFrame public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62061</commentid>
    <comment_count>9</comment_count>
      <attachid>17456</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-11-23 01:22:13 -0800</bug_when>
    <thetext>Comment on attachment 17456
WebKitFrame changes needed to support DRT

I&apos;m ok with contributing to this file under LGPL assuming other WebKit/Gtk hackers are ok with this direction. However, I don&apos;t think you can just delete the BSD-style license. I think you need to preserve the notice, although of course the LGPL will take precedence.

The code changes look ok to me but I think I should r- over the license detail. Please fix and resubmit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62062</commentid>
    <comment_count>10</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-23 01:37:38 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 17456 [edit])
&gt; I&apos;m ok with contributing to this file under LGPL assuming other WebKit/Gtk
&gt; hackers are ok with this direction. However, I don&apos;t think you can just delete
&gt; the BSD-style license. I think you need to preserve the notice, although of
&gt; course the LGPL will take precedence.

The only way you can re-license is to completely remove the old text, otherwise new code will remain optionally available under the BSD license, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62112</commentid>
    <comment_count>11</comment_count>
      <attachid>17470</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-23 12:52:19 -0800</bug_when>
    <thetext>Created attachment 17470
WebKitFrame changes needed to support DRT, with fixed licensing

Guess we&apos;ll have to punt on the re-licensing until those issues are solved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62114</commentid>
    <comment_count>12</comment_count>
      <attachid>17470</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-11-23 13:18:35 -0800</bug_when>
    <thetext>Comment on attachment 17470
WebKitFrame changes needed to support DRT, with fixed licensing

r=me, except you should be using 0 consistently instead of both 0 and NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62536</commentid>
    <comment_count>13</comment_count>
      <attachid>17470</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-27 22:11:19 -0800</bug_when>
    <thetext>Comment on attachment 17470
WebKitFrame changes needed to support DRT, with fixed licensing

Patch already landed, but the bug report needs to remain open. Removing r+ flag to clear the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62947</commentid>
    <comment_count>14</comment_count>
      <attachid>17641</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2007-12-02 03:38:59 -0800</bug_when>
    <thetext>Created attachment 17641
0001-First-stub-at-DRT-for-Gtk.patch

Patch updated to work with trunk.

Few things I had to do (also using WorkQueueItemGtk from Alp):

- Implement get_children and get_inner_text for WebKitWebFrame.
- Make JSStringCopyUTF8CString return something.
- Make ScriptItem::invoke() use script() instead of url()
- Generally update to use new APIs

And probably some other things I forget :)

Have to run now, please have a look at the patch and later I can update a new version addressing any comment and with ChangeLog etc.
-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62970</commentid>
    <comment_count>15</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2007-12-02 09:12:36 -0800</bug_when>
    <thetext>Another small comment: the Qt port seems to have a class explicitely named FrameLoaderClientQt, while we have two classes named FrameLoaderClient, but in different namespaces. Is this intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63225</commentid>
    <comment_count>16</comment_count>
      <attachid>17641</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-04 04:08:47 -0800</bug_when>
    <thetext>Comment on attachment 17641
0001-First-stub-at-DRT-for-Gtk.patch

r=me

This patch needs some amount of style cleanup, less clobbering of the shared headers, and the new API needs to be made internal-only till discussed, but basically fine and a good start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63226</commentid>
    <comment_count>17</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-04 04:17:55 -0800</bug_when>
    <thetext>Landed in r28384. Still needs lots of work.

I&apos;ll watch the build bots to make sure nothing breaks, and disable DRT in the default GTK+ build if it causes trouble.

Thanks Xan!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16729</attachid>
            <date>2007-10-19 03:55:11 -0700</date>
            <delta_ts>2007-10-20 11:55:20 -0700</delta_ts>
            <desc>partial patch</desc>
            <filename>drt.patch</filename>
            <type>text/plain</type>
            <size>6671</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0Fz
c2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9KYXZhU2NyaXB0Q29yZS9Bc3NlcnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9Bc3NlcnRpb25zLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpJbmRleDog
SmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZh
U2NyaXB0Q29yZS9KU1JldGFpblB0ci5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSS9KU1JldGFpblB0
ci5oPgpJbmRleDogSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENv
cmUvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybS5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlw
dENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm0uaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJU
cmVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
IAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIGZhbHNlVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gZmFsc2UgRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBmYWxzZVQgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAid2Via2l0Z3RrcGFnZS5oIgorI2luY2x1ZGUgIndlYmtpdGd0a2dsb2JhbC5oIgorCisjaW5j
bHVkZSA8Z3RrL2d0ay5oPgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRS
ZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNWYWx1ZVJlZi5oPgorCisjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJXb3JrUXVldWUuaCIKKyNpbmNsdWRlICJXb3JrUXVldWVJdGVtLmgiCisKKyNpbmNsdWRl
IDxnZXRvcHQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworc3RhdGljIGJvb2wgZG9uZTsKK3N0
YXRpYyBib29sIHByaW50U2VwYXJhdG9yczsKK3N0YXRpYyBpbnQgdGVzdFJlcGFpbnREZWZhdWx0
Oworc3RhdGljIGludCByZXBhaW50U3dlZXBIb3Jpem9udGFsbHlEZWZhdWx0Oworc3RhdGljIGlu
dCBkdW1wUGl4ZWxzOworc3RhdGljIGludCBkdW1wVHJlZTsKK3N0YXRpYyBMYXlvdXRUZXN0Q29u
dHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXI7CitzdGF0aWMgV2ViS2l0UGFnZSogd2Via2l0
UGFnZTsKKworc3RhdGljIGdjaGFyKiBhdXRvY29ycmVjdFVSTChjb25zdCBnY2hhciogdXJsKQor
eworICAgIGlmIChzdHJuY21wKCJodHRwOi8vIiwgdXJsLCA3KSAhPSAwICYmIHN0cm5jbXAoImh0
dHBzOi8vIiwgdXJsLCA4KSAhPSAwKSB7CisgICAgICAgIEdTdHJpbmcqIHN0cmluZyA9IGdfc3Ry
aW5nX25ldygiZmlsZTovLyIpOworICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyaW5nLCB1cmwp
OworICAgICAgICByZXR1cm4gZ19zdHJpbmdfZnJlZShzdHJpbmcsIEZBTFNFKTsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIGdfc3RyZHVwKHVybCk7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZExv
Z0ZyYW1lTG9hZERlbGVnYXRlcyhjb25zdCBjaGFyICpwYXRoT3JVUkwpCit7CisgICAgcmV0dXJu
IHN0cnN0cihwYXRoT3JVUkwsICJsb2FkaW5nLyIpOworfQorCitzdGF0aWMgdm9pZCBydW5UZXN0
KGNvbnN0IGNoYXIgKnBhdGhPclVSTCkKK3sKKyAgICBnY2hhciogdXJsID0gYXV0b2NvcnJlY3RV
UkwocGF0aE9yVVJMKTsKKyAgICAKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlciA9IG5ldyBMYXlv
dXRUZXN0Q29udHJvbGxlcih0ZXN0UmVwYWludERlZmF1bHQsIHJlcGFpbnRTd2VlcEhvcml6b250
YWxseURlZmF1bHQpOworCisgICAgZG9uZSA9IGZhbHNlOworCisgICAgaWYgKHNob3VsZExvZ0Zy
YW1lTG9hZERlbGVnYXRlcyhwYXRoT3JVUkwpKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci0+c2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKKworICAgIFdvcmtRdWV1ZTo6c2hh
cmVkKCktPmNsZWFyKCk7CisKKyAgICB3ZWJraXRfcGFnZV9vcGVuKHdlYmtpdFBhZ2UsIHVybCk7
CisgICAgZ19mcmVlKHVybCk7CisKKyAgICB3aGlsZSAoIWRvbmUpCisgICAgICAgIGdfbWFpbl9j
b250ZXh0X2l0ZXJhdGlvbihOVUxMLCB0cnVlKTsKKworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCkt
PmNsZWFyKCk7CisKKyAgICBkZWxldGUgbGF5b3V0VGVzdENvbnRyb2xsZXI7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIgPSAwOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltd
KQoreworCisgICAgc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CisgICAgICAgIHsiaG9yaXpv
bnRhbC1zd2VlcCIsIG5vX2FyZ3VtZW50LCAmcmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5RGVmYXVs
dCwgdHJ1ZX0sCisgICAgICAgIHsibm90cmVlIiwgbm9fYXJndW1lbnQsICZkdW1wVHJlZSwgZmFs
c2V9LAorICAgICAgICB7InBpeGVsLXRlc3RzIiwgbm9fYXJndW1lbnQsICZkdW1wUGl4ZWxzLCB0
cnVlfSwKKyAgICAgICAgeyJyZXBhaW50Iiwgbm9fYXJndW1lbnQsICZ0ZXN0UmVwYWludERlZmF1
bHQsIHRydWV9LAorICAgICAgICB7InRyZWUiLCBub19hcmd1bWVudCwgJmR1bXBUcmVlLCB0cnVl
fSwKKyAgICAgICAge05VTEwsIDAsIE5VTEwsIDB9CisgICAgfTsKKyAgICAKKyAgICBpbnQgb3B0
aW9uOworICAgIHdoaWxlICgob3B0aW9uID0gZ2V0b3B0X2xvbmcoYXJnYywgKGNoYXIgKiBjb25z
dCAqKWFyZ3YsICIiLCBvcHRpb25zLCBOVUxMKSkgIT0gLTEpCisgICAgICAgIHN3aXRjaCAob3B0
aW9uKSB7CisgICAgICAgICAgICBjYXNlICc/JzogICAvLyB1bmtub3duIG9yIGFtYmlndW91cyBv
cHRpb24KKyAgICAgICAgICAgIGNhc2UgJzonOiAgIC8vIG1pc3NpbmcgYXJndW1lbnQKKyAgICAg
ICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICB3ZWJraXRQYWdlID0gV0VCS0lUX1BBR0Uod2Via2l0X3BhZ2VfbmV3KCkpOworICAgIAor
ICAgIGlmIChhcmdjID09IG9wdGluZCsxICYmIHN0cmNtcChhcmd2W29wdGluZF0sICItIikgPT0g
MCkgeworICAgICAgICBjaGFyIGZpbGVuYW1lQnVmZmVyWzIwNDhdOworICAgICAgICBwcmludFNl
cGFyYXRvcnMgPSB0cnVlOworICAgICAgICB3aGlsZSAoZmdldHMoZmlsZW5hbWVCdWZmZXIsIHNp
emVvZihmaWxlbmFtZUJ1ZmZlciksIHN0ZGluKSkgeworICAgICAgICAgICAgY2hhciAqbmV3TGlu
ZUNoYXJhY3RlciA9IHN0cmNocihmaWxlbmFtZUJ1ZmZlciwgJ1xuJyk7CisgICAgICAgICAgICBp
ZiAobmV3TGluZUNoYXJhY3RlcikKKyAgICAgICAgICAgICAgICAqbmV3TGluZUNoYXJhY3RlciA9
ICdcMCc7CisKKyAgICAgICAgICAgIGlmIChzdHJsZW4oZmlsZW5hbWVCdWZmZXIpID09IDApCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHJ1blRlc3QoZmlsZW5hbWVC
dWZmZXIpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJpbnRTZXBhcmF0b3Jz
ID0gKG9wdGluZCA8IGFyZ2MtMSB8fCAoZHVtcFBpeGVscyAmJiBkdW1wVHJlZSkpOworICAgICAg
ICBmb3IgKGludCBpID0gb3B0aW5kOyBpICE9IGFyZ2M7ICsraSkKKyAgICAgICAgICAgIHJ1blRl
c3QoYXJndltpXSk7CisgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQpJbmRleDogV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLnBybwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUucHJvCShyZXZp
c2lvbiAwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVl
LnBybwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVEVNUExBVEUgPSBhcHAKK1NPVVJD
RVMgKz0gRHVtcFJlbmRlclRyZWUuY3BwIFwKKyAgICAgICAgICAgLi4vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwIFwKKyAgICAgICAgICAgLi4vR0NDb250cm9sbGVyLmNwcAorCitDT05GSUcgLT0g
YXBwX2J1bmRsZQorCitCQVNFX0RJUiA9ICQkUFdELy4uLy4uLy4uCisKK2luY2x1ZGUoLi4vLi4v
Li4vV2ViS2l0LnByaSkKKworSU5DTFVERVBBVEggKz0gXAorICAgICQkQkFTRV9ESVIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUKKworUU1BS0VfUlBBVEhESVIgKz0gJCRPVVRQVVRfRElSL2xp
Ygo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16738</attachid>
            <date>2007-10-19 20:46:58 -0700</date>
            <delta_ts>2007-10-20 11:55:20 -0700</delta_ts>
            <desc>updated partial patch</desc>
            <filename>drt.patch</filename>
            <type>text/plain</type>
            <size>8099</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0LnByaQkocmV2aXNpb24gMjY3
NjIpCisrKyBXZWJLaXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw4IEBAIElOQ0xV
REVQQVRIICs9IFwKICAgICAkJEJBU0VfRElSL1dlYkNvcmUvcmVuZGVyaW5nIFwKICAgICAkJEJB
U0VfRElSL1dlYkNvcmUvaGlzdG9yeSBcCiAgICAgJCRCQVNFX0RJUi9XZWJDb3JlL3htbCBcCi0g
ICAgJCRCQVNFX0RJUi9XZWJDb3JlL2h0bWwKKyAgICAkJEJBU0VfRElSL1dlYkNvcmUvaHRtbCBc
CisgICAgJCRCQVNFX0RJUgogCiAKIG1hY3ggewpJbmRleDogV2ViS2l0LnBybwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQucHJvCShyZXZpc2lvbiAyNjc2MikKKysrIFdlYktpdC5wcm8JKHdvcmtpbmcg
Y29weSkKQEAgLTE0LDQgKzE0LDUgQEAgcXQtcG9ydCB7CiB9CiAKIGd0ay1wb3J0OlNVQkRJUlMg
Kz0gXAotICAgICAgICBXZWJLaXRUb29scy9HdGtMYXVuY2hlcgorICAgICAgICBXZWJLaXRUb29s
cy9HdGtMYXVuY2hlciBcCisJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5k
ZXJUcmVlLnBybwpJbmRleDogSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNj
cmlwdENvcmUvQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gMCkKKysr
IEphdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0Fzc2VydGlv
bnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29y
ZS9KU1JldGFpblB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL0phdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmgJKHJldmlzaW9uIDApCisrKyBKYXZh
U2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
L0pTUmV0YWluUHRyLmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9K
YXZhU2NyaXB0Q29yZS9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtLmgJKHJldmlzaW9uIDApCisr
KyBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9y
bS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmgJKHJl
dmlzaW9uIDI2NzY1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTcgKzMzLDE5IEBACiAKICNpZiBQTEFURk9STShN
QUMpCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVNYWMuaCIKLSNlbHNlIGlmIFBMQVRGT1JNKFdJ
TikKKyNlbGlmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVdpbi5oIgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShDRikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgorZXh0ZXJuIENGUnVuTG9vcFRpbWVyUmVmIHdhaXRUb0R1bXBXYXRjaGRv
ZzsKKyNlbmRpZgogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKIAogZXh0ZXJuIHZvbGF0
aWxlIGJvb2wgZG9uZTsKIAotZXh0ZXJuIENGUnVuTG9vcFRpbWVyUmVmIHdhaXRUb0R1bXBXYXRj
aGRvZzsKIGV4dGVybiBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXI7
CiAKIHZvaWQgZHVtcCgpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1
bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIGZhbHNlVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gZmFsc2Ug
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBmYWxzZVQgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAid2Via2l0Z3RrcGFnZS5oIgorI2luY2x1ZGUg
IndlYmtpdGd0a2dsb2JhbC5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCisjaW5jbHVkZSA8
c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1N0cmluZ1JlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgorCisjaW5jbHVkZSAiTGF5
b3V0VGVzdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKyNpbmNsdWRlICJX
b3JrUXVldWVJdGVtLmgiCisKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNpbmNsdWRlIDxzdGRsaWIu
aD4KKworc3RhdGljIGJvb2wgZG9uZTsKK3N0YXRpYyBib29sIHByaW50U2VwYXJhdG9yczsKK3N0
YXRpYyBpbnQgdGVzdFJlcGFpbnREZWZhdWx0Oworc3RhdGljIGludCByZXBhaW50U3dlZXBIb3Jp
em9udGFsbHlEZWZhdWx0Oworc3RhdGljIGludCBkdW1wUGl4ZWxzOworc3RhdGljIGludCBkdW1w
VHJlZTsKK3N0YXRpYyBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXI7
CitzdGF0aWMgV2ViS2l0UGFnZSogd2Via2l0UGFnZTsKKworc3RhdGljIGdjaGFyKiBhdXRvY29y
cmVjdFVSTChjb25zdCBnY2hhciogdXJsKQoreworICAgIGlmIChzdHJuY21wKCJodHRwOi8vIiwg
dXJsLCA3KSAhPSAwICYmIHN0cm5jbXAoImh0dHBzOi8vIiwgdXJsLCA4KSAhPSAwKSB7CisgICAg
ICAgIEdTdHJpbmcqIHN0cmluZyA9IGdfc3RyaW5nX25ldygiZmlsZTovLyIpOworICAgICAgICBn
X3N0cmluZ19hcHBlbmQoc3RyaW5nLCB1cmwpOworICAgICAgICByZXR1cm4gZ19zdHJpbmdfZnJl
ZShzdHJpbmcsIEZBTFNFKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGdfc3RyZHVwKHVybCk7
Cit9CisKK3N0YXRpYyBib29sIHNob3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhjb25zdCBjaGFy
ICpwYXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHN0cnN0cihwYXRoT3JVUkwsICJsb2FkaW5nLyIp
OworfQorCitzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IGNoYXIgKnBhdGhPclVSTCkKK3sKKyAg
ICBnY2hhciogdXJsID0gYXV0b2NvcnJlY3RVUkwocGF0aE9yVVJMKTsKKyAgICAKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlciA9IG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlcih0ZXN0UmVwYWludERl
ZmF1bHQsIHJlcGFpbnRTd2VlcEhvcml6b250YWxseURlZmF1bHQpOworCisgICAgZG9uZSA9IGZh
bHNlOworCisgICAgaWYgKHNob3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhwYXRoT3JVUkwpKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci0+c2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0
cnVlKTsKKworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPmNsZWFyKCk7CisKKyAgICB3ZWJraXRf
cGFnZV9vcGVuKHdlYmtpdFBhZ2UsIHVybCk7CisgICAgZ19mcmVlKHVybCk7CisKKyAgICB3aGls
ZSAoIWRvbmUpCisgICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihOVUxMLCB0cnVlKTsK
KworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPmNsZWFyKCk7CisKKyAgICBkZWxldGUgbGF5b3V0
VGVzdENvbnRyb2xsZXI7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIgPSAwOworfQorCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQoreworCisgICAgc3RydWN0IG9wdGlvbiBvcHRp
b25zW10gPSB7CisgICAgICAgIHsiaG9yaXpvbnRhbC1zd2VlcCIsIG5vX2FyZ3VtZW50LCAmcmVw
YWludFN3ZWVwSG9yaXpvbnRhbGx5RGVmYXVsdCwgdHJ1ZX0sCisgICAgICAgIHsibm90cmVlIiwg
bm9fYXJndW1lbnQsICZkdW1wVHJlZSwgZmFsc2V9LAorICAgICAgICB7InBpeGVsLXRlc3RzIiwg
bm9fYXJndW1lbnQsICZkdW1wUGl4ZWxzLCB0cnVlfSwKKyAgICAgICAgeyJyZXBhaW50Iiwgbm9f
YXJndW1lbnQsICZ0ZXN0UmVwYWludERlZmF1bHQsIHRydWV9LAorICAgICAgICB7InRyZWUiLCBu
b19hcmd1bWVudCwgJmR1bXBUcmVlLCB0cnVlfSwKKyAgICAgICAge05VTEwsIDAsIE5VTEwsIDB9
CisgICAgfTsKKyAgICAKKyAgICBpbnQgb3B0aW9uOworICAgIHdoaWxlICgob3B0aW9uID0gZ2V0
b3B0X2xvbmcoYXJnYywgKGNoYXIgKiBjb25zdCAqKWFyZ3YsICIiLCBvcHRpb25zLCBOVUxMKSkg
IT0gLTEpCisgICAgICAgIHN3aXRjaCAob3B0aW9uKSB7CisgICAgICAgICAgICBjYXNlICc/Jzog
ICAvLyB1bmtub3duIG9yIGFtYmlndW91cyBvcHRpb24KKyAgICAgICAgICAgIGNhc2UgJzonOiAg
IC8vIG1pc3NpbmcgYXJndW1lbnQKKyAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICB3ZWJraXRQYWdlID0gV0VCS0lUX1BBR0Uo
d2Via2l0X3BhZ2VfbmV3KCkpOworICAgIAorICAgIGlmIChhcmdjID09IG9wdGluZCsxICYmIHN0
cmNtcChhcmd2W29wdGluZF0sICItIikgPT0gMCkgeworICAgICAgICBjaGFyIGZpbGVuYW1lQnVm
ZmVyWzIwNDhdOworICAgICAgICBwcmludFNlcGFyYXRvcnMgPSB0cnVlOworICAgICAgICB3aGls
ZSAoZmdldHMoZmlsZW5hbWVCdWZmZXIsIHNpemVvZihmaWxlbmFtZUJ1ZmZlciksIHN0ZGluKSkg
eworICAgICAgICAgICAgY2hhciAqbmV3TGluZUNoYXJhY3RlciA9IHN0cmNocihmaWxlbmFtZUJ1
ZmZlciwgJ1xuJyk7CisgICAgICAgICAgICBpZiAobmV3TGluZUNoYXJhY3RlcikKKyAgICAgICAg
ICAgICAgICAqbmV3TGluZUNoYXJhY3RlciA9ICdcMCc7CisKKyAgICAgICAgICAgIGlmIChzdHJs
ZW4oZmlsZW5hbWVCdWZmZXIpID09IDApCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIHJ1blRlc3QoZmlsZW5hbWVCdWZmZXIpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgcHJpbnRTZXBhcmF0b3JzID0gKG9wdGluZCA8IGFyZ2MtMSB8fCAoZHVtcFBp
eGVscyAmJiBkdW1wVHJlZSkpOworICAgICAgICBmb3IgKGludCBpID0gb3B0aW5kOyBpICE9IGFy
Z2M7ICsraSkKKyAgICAgICAgICAgIHJ1blRlc3QoYXJndltpXSk7CisgICAgfQorICAgIAorICAg
IHJldHVybiAwOworfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBS
ZW5kZXJUcmVlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvRHVtcFJlbmRlclRyZWUucHJvCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLnBybwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NiBAQAorVEVNUExBVEUgPSBhcHAKK1NPVVJDRVMgKz0gRHVtcFJlbmRlclRyZWUuY3BwIFwKKyAg
ICAgICAgICAgLi4vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIFwKKyAgICAgICAgICAgLi4vR0ND
b250cm9sbGVyLmNwcCBcCisgICAgICAgICAgIC4uL1dvcmtRdWV1ZS5jcHAgXAorCitDT05GSUcg
LT0gYXBwX2J1bmRsZQorCitCQVNFX0RJUiA9ICQkUFdELy4uLy4uLy4uCisKK2luY2x1ZGUoLi4v
Li4vLi4vV2ViS2l0LnByaSkKKworSU5DTFVERVBBVEggKz0gXAorICAgICQkQkFTRV9ESVIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUKKworUU1BS0VfUlBBVEhESVIgKz0gJCRPVVRQVVRfRElS
L2xpYgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16743</attachid>
            <date>2007-10-20 11:55:20 -0700</date>
            <delta_ts>2007-10-20 11:57:34 -0700</delta_ts>
            <desc>a more complete patch</desc>
            <filename>drt.patch</filename>
            <type>text/plain</type>
            <size>8099</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0LnByaQkocmV2aXNpb24gMjY3
NjIpCisrKyBXZWJLaXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw4IEBAIElOQ0xV
REVQQVRIICs9IFwKICAgICAkJEJBU0VfRElSL1dlYkNvcmUvcmVuZGVyaW5nIFwKICAgICAkJEJB
U0VfRElSL1dlYkNvcmUvaGlzdG9yeSBcCiAgICAgJCRCQVNFX0RJUi9XZWJDb3JlL3htbCBcCi0g
ICAgJCRCQVNFX0RJUi9XZWJDb3JlL2h0bWwKKyAgICAkJEJBU0VfRElSL1dlYkNvcmUvaHRtbCBc
CisgICAgJCRCQVNFX0RJUgogCiAKIG1hY3ggewpJbmRleDogV2ViS2l0LnBybwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQucHJvCShyZXZpc2lvbiAyNjc2MikKKysrIFdlYktpdC5wcm8JKHdvcmtpbmcg
Y29weSkKQEAgLTE0LDQgKzE0LDUgQEAgcXQtcG9ydCB7CiB9CiAKIGd0ay1wb3J0OlNVQkRJUlMg
Kz0gXAotICAgICAgICBXZWJLaXRUb29scy9HdGtMYXVuY2hlcgorICAgICAgICBXZWJLaXRUb29s
cy9HdGtMYXVuY2hlciBcCisJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5k
ZXJUcmVlLnBybwpJbmRleDogSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNj
cmlwdENvcmUvQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gMCkKKysr
IEphdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0Fzc2VydGlv
bnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29y
ZS9KU1JldGFpblB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL0phdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmgJKHJldmlzaW9uIDApCisrKyBKYXZh
U2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
L0pTUmV0YWluUHRyLmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9K
YXZhU2NyaXB0Q29yZS9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtLmgJKHJldmlzaW9uIDApCisr
KyBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9y
bS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmgJKHJl
dmlzaW9uIDI2NzY1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTcgKzMzLDE5IEBACiAKICNpZiBQTEFURk9STShN
QUMpCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVNYWMuaCIKLSNlbHNlIGlmIFBMQVRGT1JNKFdJ
TikKKyNlbGlmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVdpbi5oIgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShDRikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgorZXh0ZXJuIENGUnVuTG9vcFRpbWVyUmVmIHdhaXRUb0R1bXBXYXRjaGRv
ZzsKKyNlbmRpZgogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKIAogZXh0ZXJuIHZvbGF0
aWxlIGJvb2wgZG9uZTsKIAotZXh0ZXJuIENGUnVuTG9vcFRpbWVyUmVmIHdhaXRUb0R1bXBXYXRj
aGRvZzsKIGV4dGVybiBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXI7
CiAKIHZvaWQgZHVtcCgpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1
bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIGZhbHNlVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gZmFsc2Ug
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBmYWxzZVQgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAid2Via2l0Z3RrcGFnZS5oIgorI2luY2x1ZGUg
IndlYmtpdGd0a2dsb2JhbC5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCisjaW5jbHVkZSA8
c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1N0cmluZ1JlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgorCisjaW5jbHVkZSAiTGF5
b3V0VGVzdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKyNpbmNsdWRlICJX
b3JrUXVldWVJdGVtLmgiCisKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNpbmNsdWRlIDxzdGRsaWIu
aD4KKworc3RhdGljIGJvb2wgZG9uZTsKK3N0YXRpYyBib29sIHByaW50U2VwYXJhdG9yczsKK3N0
YXRpYyBpbnQgdGVzdFJlcGFpbnREZWZhdWx0Oworc3RhdGljIGludCByZXBhaW50U3dlZXBIb3Jp
em9udGFsbHlEZWZhdWx0Oworc3RhdGljIGludCBkdW1wUGl4ZWxzOworc3RhdGljIGludCBkdW1w
VHJlZTsKK3N0YXRpYyBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXI7
CitzdGF0aWMgV2ViS2l0UGFnZSogd2Via2l0UGFnZTsKKworc3RhdGljIGdjaGFyKiBhdXRvY29y
cmVjdFVSTChjb25zdCBnY2hhciogdXJsKQoreworICAgIGlmIChzdHJuY21wKCJodHRwOi8vIiwg
dXJsLCA3KSAhPSAwICYmIHN0cm5jbXAoImh0dHBzOi8vIiwgdXJsLCA4KSAhPSAwKSB7CisgICAg
ICAgIEdTdHJpbmcqIHN0cmluZyA9IGdfc3RyaW5nX25ldygiZmlsZTovLyIpOworICAgICAgICBn
X3N0cmluZ19hcHBlbmQoc3RyaW5nLCB1cmwpOworICAgICAgICByZXR1cm4gZ19zdHJpbmdfZnJl
ZShzdHJpbmcsIEZBTFNFKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGdfc3RyZHVwKHVybCk7
Cit9CisKK3N0YXRpYyBib29sIHNob3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhjb25zdCBjaGFy
ICpwYXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHN0cnN0cihwYXRoT3JVUkwsICJsb2FkaW5nLyIp
OworfQorCitzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IGNoYXIgKnBhdGhPclVSTCkKK3sKKyAg
ICBnY2hhciogdXJsID0gYXV0b2NvcnJlY3RVUkwocGF0aE9yVVJMKTsKKyAgICAKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlciA9IG5ldyBMYXlvdXRUZXN0Q29udHJvbGxlcih0ZXN0UmVwYWludERl
ZmF1bHQsIHJlcGFpbnRTd2VlcEhvcml6b250YWxseURlZmF1bHQpOworCisgICAgZG9uZSA9IGZh
bHNlOworCisgICAgaWYgKHNob3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhwYXRoT3JVUkwpKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci0+c2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0
cnVlKTsKKworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPmNsZWFyKCk7CisKKyAgICB3ZWJraXRf
cGFnZV9vcGVuKHdlYmtpdFBhZ2UsIHVybCk7CisgICAgZ19mcmVlKHVybCk7CisKKyAgICB3aGls
ZSAoIWRvbmUpCisgICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihOVUxMLCB0cnVlKTsK
KworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPmNsZWFyKCk7CisKKyAgICBkZWxldGUgbGF5b3V0
VGVzdENvbnRyb2xsZXI7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIgPSAwOworfQorCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQoreworCisgICAgc3RydWN0IG9wdGlvbiBvcHRp
b25zW10gPSB7CisgICAgICAgIHsiaG9yaXpvbnRhbC1zd2VlcCIsIG5vX2FyZ3VtZW50LCAmcmVw
YWludFN3ZWVwSG9yaXpvbnRhbGx5RGVmYXVsdCwgdHJ1ZX0sCisgICAgICAgIHsibm90cmVlIiwg
bm9fYXJndW1lbnQsICZkdW1wVHJlZSwgZmFsc2V9LAorICAgICAgICB7InBpeGVsLXRlc3RzIiwg
bm9fYXJndW1lbnQsICZkdW1wUGl4ZWxzLCB0cnVlfSwKKyAgICAgICAgeyJyZXBhaW50Iiwgbm9f
YXJndW1lbnQsICZ0ZXN0UmVwYWludERlZmF1bHQsIHRydWV9LAorICAgICAgICB7InRyZWUiLCBu
b19hcmd1bWVudCwgJmR1bXBUcmVlLCB0cnVlfSwKKyAgICAgICAge05VTEwsIDAsIE5VTEwsIDB9
CisgICAgfTsKKyAgICAKKyAgICBpbnQgb3B0aW9uOworICAgIHdoaWxlICgob3B0aW9uID0gZ2V0
b3B0X2xvbmcoYXJnYywgKGNoYXIgKiBjb25zdCAqKWFyZ3YsICIiLCBvcHRpb25zLCBOVUxMKSkg
IT0gLTEpCisgICAgICAgIHN3aXRjaCAob3B0aW9uKSB7CisgICAgICAgICAgICBjYXNlICc/Jzog
ICAvLyB1bmtub3duIG9yIGFtYmlndW91cyBvcHRpb24KKyAgICAgICAgICAgIGNhc2UgJzonOiAg
IC8vIG1pc3NpbmcgYXJndW1lbnQKKyAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICB3ZWJraXRQYWdlID0gV0VCS0lUX1BBR0Uo
d2Via2l0X3BhZ2VfbmV3KCkpOworICAgIAorICAgIGlmIChhcmdjID09IG9wdGluZCsxICYmIHN0
cmNtcChhcmd2W29wdGluZF0sICItIikgPT0gMCkgeworICAgICAgICBjaGFyIGZpbGVuYW1lQnVm
ZmVyWzIwNDhdOworICAgICAgICBwcmludFNlcGFyYXRvcnMgPSB0cnVlOworICAgICAgICB3aGls
ZSAoZmdldHMoZmlsZW5hbWVCdWZmZXIsIHNpemVvZihmaWxlbmFtZUJ1ZmZlciksIHN0ZGluKSkg
eworICAgICAgICAgICAgY2hhciAqbmV3TGluZUNoYXJhY3RlciA9IHN0cmNocihmaWxlbmFtZUJ1
ZmZlciwgJ1xuJyk7CisgICAgICAgICAgICBpZiAobmV3TGluZUNoYXJhY3RlcikKKyAgICAgICAg
ICAgICAgICAqbmV3TGluZUNoYXJhY3RlciA9ICdcMCc7CisKKyAgICAgICAgICAgIGlmIChzdHJs
ZW4oZmlsZW5hbWVCdWZmZXIpID09IDApCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIHJ1blRlc3QoZmlsZW5hbWVCdWZmZXIpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgcHJpbnRTZXBhcmF0b3JzID0gKG9wdGluZCA8IGFyZ2MtMSB8fCAoZHVtcFBp
eGVscyAmJiBkdW1wVHJlZSkpOworICAgICAgICBmb3IgKGludCBpID0gb3B0aW5kOyBpICE9IGFy
Z2M7ICsraSkKKyAgICAgICAgICAgIHJ1blRlc3QoYXJndltpXSk7CisgICAgfQorICAgIAorICAg
IHJldHVybiAwOworfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBS
ZW5kZXJUcmVlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvRHVtcFJlbmRlclRyZWUucHJvCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLnBybwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NiBAQAorVEVNUExBVEUgPSBhcHAKK1NPVVJDRVMgKz0gRHVtcFJlbmRlclRyZWUuY3BwIFwKKyAg
ICAgICAgICAgLi4vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIFwKKyAgICAgICAgICAgLi4vR0ND
b250cm9sbGVyLmNwcCBcCisgICAgICAgICAgIC4uL1dvcmtRdWV1ZS5jcHAgXAorCitDT05GSUcg
LT0gYXBwX2J1bmRsZQorCitCQVNFX0RJUiA9ICQkUFdELy4uLy4uLy4uCisKK2luY2x1ZGUoLi4v
Li4vLi4vV2ViS2l0LnByaSkKKworSU5DTFVERVBBVEggKz0gXAorICAgICQkQkFTRV9ESVIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUKKworUU1BS0VfUlBBVEhESVIgKz0gJCRPVVRQVVRfRElS
L2xpYgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16744</attachid>
            <date>2007-10-20 11:57:34 -0700</date>
            <delta_ts>2007-10-20 11:57:34 -0700</delta_ts>
            <desc>a more complete patch (previous one was missing files)</desc>
            <filename>drt.patch</filename>
            <type>text/plain</type>
            <size>25025</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0LnByaQkocmV2aXNpb24gMjY3
NjIpCisrKyBXZWJLaXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw4IEBAIElOQ0xV
REVQQVRIICs9IFwKICAgICAkJEJBU0VfRElSL1dlYkNvcmUvcmVuZGVyaW5nIFwKICAgICAkJEJB
U0VfRElSL1dlYkNvcmUvaGlzdG9yeSBcCiAgICAgJCRCQVNFX0RJUi9XZWJDb3JlL3htbCBcCi0g
ICAgJCRCQVNFX0RJUi9XZWJDb3JlL2h0bWwKKyAgICAkJEJBU0VfRElSL1dlYkNvcmUvaHRtbCBc
CisgICAgJCRCQVNFX0RJUgogCiAKIG1hY3ggewpJbmRleDogV2ViS2l0LnBybwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQucHJvCShyZXZpc2lvbiAyNjc2MikKKysrIFdlYktpdC5wcm8JKHdvcmtpbmcg
Y29weSkKQEAgLTE0LDQgKzE0LDUgQEAgcXQtcG9ydCB7CiB9CiAKIGd0ay1wb3J0OlNVQkRJUlMg
Kz0gXAotICAgICAgICBXZWJLaXRUb29scy9HdGtMYXVuY2hlcgorICAgICAgICBXZWJLaXRUb29s
cy9HdGtMYXVuY2hlciBcCisJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5k
ZXJUcmVlLnBybwpJbmRleDogSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNj
cmlwdENvcmUvQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gMCkKKysr
IEphdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0Fzc2VydGlv
bnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29y
ZS9KU1JldGFpblB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL0phdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmgJKHJldmlzaW9uIDApCisrKyBKYXZh
U2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
L0pTUmV0YWluUHRyLmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9K
YXZhU2NyaXB0Q29yZS9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtLmgJKHJldmlzaW9uIDApCisr
KyBKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9y
bS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS5wcm8JKHJldmlzaW9uIDI2ODI0KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNyBAQCBDT05GSUcgLT0gd2Fybl9vbgogKi1nKysqOlFNQUtFX0NY
WEZMQUdTICs9IC1XcmV0dXJuLXR5cGUgLWZuby1zdHJpY3QtYWxpYXNpbmcKICNRTUFLRV9DWFhG
TEFHUyArPSAtV2FsbCAtV25vLXVuZGVmIC1Xbm8tdW51c2VkLXBhcmFtZXRlcgogCi1jb250YWlu
cyhRVF9DT05GSUcsIHJlZHVjZV9leHBvcnRzKTpDT05GSUcgKz0gaGlkZV9zeW1ib2xzCisjY29u
dGFpbnMoUVRfQ09ORklHLCByZWR1Y2VfZXhwb3J0cyk6Q09ORklHICs9IGhpZGVfc3ltYm9scwog
dW5peDpjb250YWlucyhRVF9DT05GSUcsIHJlZHVjZV9yZWxvY2F0aW9ucyk6Q09ORklHICs9IGJz
eW1ib2xpY19mdW5jdGlvbnMKIAogbGludXgtKjogREVGSU5FUyArPSBIQVZFX1NURElOVF9ICklu
ZGV4OiBXZWJLaXQvZ3RrL0FwaS93ZWJraXRndGtmcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9ndGsvQXBpL3dlYmtpdGd0a2ZyYW1lLmgJKHJldmlzaW9uIDI2ODI0KQorKysgV2ViS2l0L2d0
ay9BcGkvd2Via2l0Z3RrZnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsOSArOTYsNiBAQCB3
ZWJraXRfZnJhbWVfZ2V0X3Bvc2l0aW9uIChXZWJLaXRGcmFtZSogCiBXRUJLSVRfQVBJIEdka1Jl
Y3RhbmdsZSoKIHdlYmtpdF9mcmFtZV9nZXRfcmVjdGFuZ2xlIChXZWJLaXRGcmFtZSogZnJhbWUp
OwogCi1XRUJLSVRfQVBJIFdlYktpdFBhZ2UqCi13ZWJraXRfZnJhbWVfZ2V0X3BhZ2UgKFdlYktp
dEZyYW1lKiBmcmFtZSk7Ci0KIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCShyZXZpc2lvbiAyNjc2NSkKKysr
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDE3ICszMywyMSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkR1
bXBSZW5kZXJUcmVlTWFjLmgiCi0jZWxzZSBpZiBQTEFURk9STShXSU4pCisjZWxpZiBQTEFURk9S
TShXSU4pCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVXaW4uaCIKKyNlbGlmIFBMQVRGT1JNKEdU
SykKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZUd0ay5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShDRikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorZXh0ZXJu
IENGUnVuTG9vcFRpbWVyUmVmIHdhaXRUb0R1bXBXYXRjaGRvZzsKKyNlbmRpZgogCiBjbGFzcyBM
YXlvdXRUZXN0Q29udHJvbGxlcjsKIAogZXh0ZXJuIHZvbGF0aWxlIGJvb2wgZG9uZTsKIAotZXh0
ZXJuIENGUnVuTG9vcFRpbWVyUmVmIHdhaXRUb0R1bXBXYXRjaGRvZzsKIGV4dGVybiBMYXlvdXRU
ZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXI7CiAKIHZvaWQgZHVtcCgpOwpJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUu
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBS
ZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIGZhbHNlVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gZmFsc2UgRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBmYWxzZVQgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAid2Via2l0Z3RrcGFnZS5oIgorI2luY2x1ZGUgIndlYmtpdGd0a2ZyYW1lLmgiCisj
aW5jbHVkZSAid2Via2l0Z3RrZ2xvYmFsLmgiCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKKyNp
bmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmpl
Y3RSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CisKKyNpbmNs
dWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorI2lu
Y2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKKworI2luY2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUg
PHN0ZGxpYi5oPgorCit2b2xhdGlsZSBib29sIGRvbmU7CitzdGF0aWMgYm9vbCBwcmludFNlcGFy
YXRvcnM7CitzdGF0aWMgaW50IHRlc3RSZXBhaW50RGVmYXVsdDsKK3N0YXRpYyBpbnQgcmVwYWlu
dFN3ZWVwSG9yaXpvbnRhbGx5RGVmYXVsdDsKK3N0YXRpYyBpbnQgZHVtcFBpeGVsczsKK3N0YXRp
YyBpbnQgZHVtcFRyZWU7CitzdGF0aWMgZ2NoYXIqIGN1cnJlbnRUZXN0OworCitMYXlvdXRUZXN0
Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXIgPSAwOworc3RhdGljIFdlYktpdFBhZ2Uq
IHBhZ2U7CitXZWJLaXRGcmFtZSogbWFpbkZyYW1lID0gMDsKKworY29uc3QgdW5zaWduZWQgbWF4
Vmlld0hlaWdodCA9IDYwMDsKK2NvbnN0IHVuc2lnbmVkIG1heFZpZXdXaWR0aCA9IDgwMDsKKwor
c3RhdGljIGdjaGFyKiBhdXRvY29ycmVjdFVSTChjb25zdCBnY2hhciogdXJsKQoreworICAgIGlm
IChzdHJuY21wKCJodHRwOi8vIiwgdXJsLCA3KSAhPSAwICYmIHN0cm5jbXAoImh0dHBzOi8vIiwg
dXJsLCA4KSAhPSAwKSB7CisgICAgICAgIEdTdHJpbmcqIHN0cmluZyA9IGdfc3RyaW5nX25ldygi
ZmlsZTovLyIpOworICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyaW5nLCB1cmwpOworICAgICAg
ICByZXR1cm4gZ19zdHJpbmdfZnJlZShzdHJpbmcsIEZBTFNFKTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIGdfc3RyZHVwKHVybCk7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZExvZ0ZyYW1lTG9h
ZERlbGVnYXRlcyhjb25zdCBjaGFyICpwYXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHN0cnN0cihw
YXRoT3JVUkwsICJsb2FkaW5nLyIpOworfQorCit2b2lkIGR1bXBGcmFtZVNjcm9sbFBvc2l0aW9u
KFdlYktpdEZyYW1lKiBmcmFtZSkKK3sKKworfQorCit2b2lkIGRpc3BsYXlXZWJWaWV3KCkKK3sK
KworfQorCitzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmcoZ2NoYXIqJiB0YXJnZXQsIGdjaGFyKiBz
dHJpbmcpCit7CisgICAgZ2NoYXIqIG9sZFN0cmluZyA9IHRhcmdldDsKKyAgICB0YXJnZXQgPSBn
X3N0cmNvbmNhdCh0YXJnZXQsIHN0cmluZywgTlVMTCk7CisgICAgZ19mcmVlKG9sZFN0cmluZyk7
Cit9CisKK3N0YXRpYyBnY2hhciogZHVtcEZyYW1lc0FzVGV4dChXZWJLaXRGcmFtZSogZnJhbWUp
Cit7CisgICAgZ2NoYXIgKnJlc3VsdCA9IDA7CisKKyAgICAvLyBBZGQgaGVhZGVyIGZvciBhbGwg
YnV0IHRoZSBtYWluIGZyYW1lLgorCisgICAgZ2NoYXIqIGlubmVyVGV4dCA9IHdlYmtpdF9mcmFt
ZV9nZXRfaW5uZXJfdGV4dChmcmFtZSk7CisKKyAgICBib29sIGlzTWFpbkZyYW1lID0gKHdlYmtp
dF9wYWdlX2dldF9tYWluX2ZyYW1lKHBhZ2UpID09IGZyYW1lKTsKKyAgICBpZiAoaXNNYWluRnJh
bWUpIHsKKwlnY2hhciogZnJhbWVOYW1lID0gIiI7IC8vIEZJWE1FOiB3ZWJraXRfZnJhbWVfZ2V0
X25hbWUoKSBkb2VzIG5vdCBleGlzdAorICAgICAgICByZXN1bHQgPSBnX3N0cmR1cF9wcmludGYo
IlxuLS0tLS0tLS1cbkZyYW1lOiAnJXMnXG4tLS0tLS0tLVxuJXMiLCBmcmFtZU5hbWUsIGlubmVy
VGV4dCk7CisgICAgfQorCisgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQ2hpbGRG
cmFtZXNBc1RleHQoKSkgeworICAgICAgICBHU0xpc3QqIGtpZCA9IHdlYmtpdF9mcmFtZV9nZXRf
Y2hpbGRfZnJhbWVzKGZyYW1lKTsKKyAgICAgICAgZm9yICg7a2lkOyBraWQgPSBnX3NsaXN0X25l
eHQoa2lkKSkKKyAgICAgICAgICAgYXBwZW5kU3RyaW5nKHJlc3VsdCwgZHVtcEZyYW1lc0FzVGV4
dCgoV2ViS2l0RnJhbWUqKWdfc2xpc3RfbnRoX2RhdGEoa2lkLCAwKSkpOworICAgIH0KKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBnY2hhciogZHVtcFJlbmRlclRyZWVBc1RleHQo
V2ViS2l0RnJhbWUqIGZyYW1lKQoreworICAgIC8vIEZJWE1FOiB0aGlzIHdpbGwgcmVxdWlyZSBu
ZXcgV2ViS2l0R3RrIFNQSQorICAgIHJldHVybiBzdHJkdXAoImZvbyIpOworfQorCit2b2lkIGR1
bXAoKQoreworICAgIGlmIChkdW1wVHJlZSkgeworICAgICAgICBjaGFyKiByZXN1bHQgPSAwOwor
ICAgICAgICAKKyAgICAgICAgYm9vbCBkdW1wQXNUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBBc1RleHQoKTsKKwkvLyBGSVhNRTogQWxzbyBkdW1wIHRleHQgcmVzdWxzIGFzIHRleHQu
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLT5zZXREdW1wQXNUZXh0KGR1bXBBc1RleHQp
OworICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1RleHQoKSkKKyAgICAg
ICAgICAgIHJlc3VsdCA9IGR1bXBGcmFtZXNBc1RleHQobWFpbkZyYW1lKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBib29sIGlzU1ZHVzNDVGVzdCA9IChnX3N0cnJzdHIoY3VycmVudFRl
c3QsICJzdmcvVzNDLVNWRy0xLjEiKSk7CisgICAgICAgICAgICBpZiAoaXNTVkdXM0NUZXN0KQor
CSAgICAgICAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0KEdUS19XSURHRVQocGFnZSksIDQ4
MCwgMzYwKTsKKyAgICAgICAgICAgIGVsc2UgCisJICAgICAgICBndGtfd2lkZ2V0X3NldF9zaXpl
X3JlcXVlc3QoR1RLX1dJREdFVChwYWdlKSwgbWF4Vmlld1dpZHRoLCBtYXhWaWV3SGVpZ2h0KTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IGR1bXBSZW5kZXJUcmVlQXNUZXh0KG1haW5GcmFtZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY29uc3QgY2hh
ciAqZXJyb3JNZXNzYWdlOworICAgICAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wQXNUZXh0KCkpCisgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gIltkb2N1bWVudEVs
ZW1lbnQgaW5uZXJUZXh0XSI7CisgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRUZXN0Q29udHJv
bGxlci0+ZHVtcERPTUFzV2ViQXJjaGl2ZSgpKQorICAgICAgICAgICAgICAgIGVycm9yTWVzc2Fn
ZSA9ICJbW21haW5GcmFtZSBET01Eb2N1bWVudF0gd2ViQXJjaGl2ZV0iOworICAgICAgICAgICAg
ZWxzZSBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkK
KyAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiW1ttYWluRnJhbWUgZGF0YVNvdXJjZV0g
d2ViQXJjaGl2ZV0iOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9ICJbbWFpbkZyYW1lIHJlbmRlclRyZWVBc0V4dGVybmFsUmVwcmVzZW50YXRpb25dIjsK
KyAgICAgICAgICAgIHByaW50ZigiRVJST1I6IG5pbCByZXN1bHQgZnJvbSAlcyIsIGVycm9yTWVz
c2FnZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcmludGYoIiVzIiwgcmVzdWx0
KTsKKwkgICAgZ19mcmVlKHJlc3VsdCk7CisgICAgICAgICAgICBpZiAoIWxheW91dFRlc3RDb250
cm9sbGVyLT5kdW1wQXNUZXh0KCkgJiYgIWxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRE9NQXNX
ZWJBcmNoaXZlKCkgJiYgIWxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wU291cmNlQXNXZWJBcmNo
aXZlKCkpCisgICAgICAgICAgICAgICAgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24obWFpbkZyYW1l
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEJh
Y2tGb3J3YXJkTGlzdCgpKSB7CisJICAgIC8vIEZJWE1FOiBub3QgaW1wbGVtZW50ZWQKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChwcmludFNlcGFyYXRvcnMpCisgICAgICAgICAgICBwdXRzKCIj
RU9GIik7CisgICAgfQorCisgICAgaWYgKGR1bXBQaXhlbHMpIHsKKyAgICAgICAgaWYgKCFsYXlv
dXRUZXN0Q29udHJvbGxlci0+ZHVtcEFzVGV4dCgpICYmICFsYXlvdXRUZXN0Q29udHJvbGxlci0+
ZHVtcERPTUFzV2ViQXJjaGl2ZSgpICYmICFsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFNvdXJj
ZUFzV2ViQXJjaGl2ZSgpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IGR1bXBpbmcgcGl4ZWxzCisJfQorICAgIH0KKyAgICAKKyAgICBmZmx1c2goc3Rkb3V0KTsKKwor
ICAgIC8vIEZJWE1FOiBjYWxsIGRpc3BsYXlXZWJWaWV3IGhlcmUgd2hlbiB3ZSBzdXBwb3J0IC0t
cGFpbnQKKworICAgIGRvbmUgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0
IGNoYXIgKnBhdGhPclVSTCkKK3sKKyAgICBnY2hhciogdXJsID0gYXV0b2NvcnJlY3RVUkwocGF0
aE9yVVJMKTsKKyAgICAKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlciA9IG5ldyBMYXlvdXRUZXN0
Q29udHJvbGxlcih0ZXN0UmVwYWludERlZmF1bHQsIHJlcGFpbnRTd2VlcEhvcml6b250YWxseURl
ZmF1bHQpOworCisgICAgZG9uZSA9IGZhbHNlOworCisgICAgaWYgKHNob3VsZExvZ0ZyYW1lTG9h
ZERlbGVnYXRlcyhwYXRoT3JVUkwpKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci0+c2V0
RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKKworICAgIGlmIChjdXJyZW50VGVzdCkKKyAg
ICAgICAgZ19mcmVlKGN1cnJlbnRUZXN0KTsKKyAgICBjdXJyZW50VGVzdCA9IHVybDsKKworICAg
IFdvcmtRdWV1ZTo6c2hhcmVkKCktPmNsZWFyKCk7CisgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+
c2V0RnJvemVuKGZhbHNlKTsKKworICAgIHdlYmtpdF9wYWdlX29wZW4ocGFnZSwgdXJsKTsKKwor
ICAgIHdoaWxlICghZG9uZSkKKyAgICAgICAgZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uKE5VTEws
IHRydWUpOworCisgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+Y2xlYXIoKTsKKworICAgIGRlbGV0
ZSBsYXlvdXRUZXN0Q29udHJvbGxlcjsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlciA9IDA7Cit9
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCit7CisKKyAgICBzdHJ1Y3Qgb3B0
aW9uIG9wdGlvbnNbXSA9IHsKKyAgICAgICAgeyJob3Jpem9udGFsLXN3ZWVwIiwgbm9fYXJndW1l
bnQsICZyZXBhaW50U3dlZXBIb3Jpem9udGFsbHlEZWZhdWx0LCB0cnVlfSwKKyAgICAgICAgeyJu
b3RyZWUiLCBub19hcmd1bWVudCwgJmR1bXBUcmVlLCBmYWxzZX0sCisgICAgICAgIHsicGl4ZWwt
dGVzdHMiLCBub19hcmd1bWVudCwgJmR1bXBQaXhlbHMsIHRydWV9LAorICAgICAgICB7InJlcGFp
bnQiLCBub19hcmd1bWVudCwgJnRlc3RSZXBhaW50RGVmYXVsdCwgdHJ1ZX0sCisgICAgICAgIHsi
dHJlZSIsIG5vX2FyZ3VtZW50LCAmZHVtcFRyZWUsIHRydWV9LAorICAgICAgICB7TlVMTCwgMCwg
TlVMTCwgMH0KKyAgICB9OworICAgIAorICAgIGludCBvcHRpb247CisgICAgd2hpbGUgKChvcHRp
b24gPSBnZXRvcHRfbG9uZyhhcmdjLCAoY2hhciAqIGNvbnN0ICopYXJndiwgIiIsIG9wdGlvbnMs
IE5VTEwpKSAhPSAtMSkKKyAgICAgICAgc3dpdGNoIChvcHRpb24pIHsKKyAgICAgICAgICAgIGNh
c2UgJz8nOiAgIC8vIHVua25vd24gb3IgYW1iaWd1b3VzIG9wdGlvbgorICAgICAgICAgICAgY2Fz
ZSAnOic6ICAgLy8gbWlzc2luZyBhcmd1bWVudAorICAgICAgICAgICAgICAgIGV4aXQoMSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgIHBhZ2UgPSBXRUJLSVRfUEFH
RSh3ZWJraXRfcGFnZV9uZXcoKSk7CisgICAgbWFpbkZyYW1lID0gd2Via2l0X3BhZ2VfZ2V0X21h
aW5fZnJhbWUocGFnZSk7CisKKyAgICBpZiAoYXJnYyA9PSBvcHRpbmQrMSAmJiBzdHJjbXAoYXJn
dltvcHRpbmRdLCAiLSIpID09IDApIHsKKyAgICAgICAgY2hhciBmaWxlbmFtZUJ1ZmZlclsyMDQ4
XTsKKyAgICAgICAgcHJpbnRTZXBhcmF0b3JzID0gdHJ1ZTsKKyAgICAgICAgd2hpbGUgKGZnZXRz
KGZpbGVuYW1lQnVmZmVyLCBzaXplb2YoZmlsZW5hbWVCdWZmZXIpLCBzdGRpbikpIHsKKyAgICAg
ICAgICAgIGNoYXIgKm5ld0xpbmVDaGFyYWN0ZXIgPSBzdHJjaHIoZmlsZW5hbWVCdWZmZXIsICdc
bicpOworICAgICAgICAgICAgaWYgKG5ld0xpbmVDaGFyYWN0ZXIpCisgICAgICAgICAgICAgICAg
Km5ld0xpbmVDaGFyYWN0ZXIgPSAnXDAnOworCisgICAgICAgICAgICBpZiAoc3RybGVuKGZpbGVu
YW1lQnVmZmVyKSA9PSAwKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBydW5UZXN0KGZpbGVuYW1lQnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIHByaW50U2VwYXJhdG9ycyA9IChvcHRpbmQgPCBhcmdjLTEgfHwgKGR1bXBQaXhlbHMgJiYg
ZHVtcFRyZWUpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IG9wdGluZDsgaSAhPSBhcmdjOyArK2kp
CisgICAgICAgICAgICBydW5UZXN0KGFyZ3ZbaV0pOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
MDsKK30KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJl
ZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBS
ZW5kZXJUcmVlLnBybwkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9EdW1wUmVuZGVyVHJlZS5wcm8JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKK1RF
TVBMQVRFID0gYXBwCitTT1VSQ0VTICs9IER1bXBSZW5kZXJUcmVlLmNwcCBcCisgICAgICAgICAg
IC4uL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBcCisgICAgICAgICAgIC4uL0dDQ29udHJvbGxl
ci5jcHAgXAorICAgICAgICAgICAuLi9Xb3JrUXVldWUuY3BwIFwKKwkgICBHQ0NvbnRyb2xsZXJH
dGsuY3BwIFwKKwkgICBMYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgXAorCSAgIFdvcmtRdWV1
ZUl0ZW1HdGsuY3BwIFwKKworQ09ORklHIC09IGFwcF9idW5kbGUKKworQkFTRV9ESVIgPSAkJFBX
RC8uLi8uLi8uLgorCitpbmNsdWRlKC4uLy4uLy4uL1dlYktpdC5wcmkpCisKK0lOQ0xVREVQQVRI
ICs9IFwKKyAgICAkJEJBU0VfRElSL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlCisKK1FNQUtF
X1JQQVRIRElSICs9ICQkT1VUUFVUX0RJUi9saWIKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZUd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZUd0ay5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlR3RrLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBT
ZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIER1bXBSZW5kZXJUcmVlR3RrX2gKKyNk
ZWZpbmUgRHVtcFJlbmRlclRyZWVHdGtfaAorCisjaW5jbHVkZSAid2Via2l0Z3RrZGVmaW5lcy5o
IgorCitleHRlcm4gV2ViS2l0RnJhbWUqIG1haW5GcmFtZTsKKworI2VuZGlmIC8vIER1bXBSZW5k
ZXJUcmVlR3RrX2ggCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvR0NDb250
cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvR0NDb250cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9HQ0NvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtp
dC5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgorCit2b2lkIEdDQ29udHJvbGxlcjo6
Y29sbGVjdCgpIGNvbnN0Cit7Cit9CisKK3ZvaWQgR0NDb250cm9sbGVyOjpjb2xsZWN0T25BbHRl
cm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdAoreworfQorCitzaXplX3QgR0ND
b250cm9sbGVyOjpnZXRKU09iamVjdENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8
ZXJpY0B3ZWJraXQub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgorCisj
aW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKyNpbmNs
dWRlICJXb3JrUXVldWVJdGVtLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjphZGREaXNhbGxvd2VkVVJMKEpTU3RyaW5nUmVmIHVybCkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmNsZWFyQmFja0ZvcndhcmRMaXN0KCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisK
K0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpjb3B5RGVjb2RlZEhvc3ROYW1lKEpT
U3RyaW5nUmVmIG5hbWUpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAw
OworfQorCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y29weUVuY29kZWRIb3N0
TmFtZShKU1N0cmluZ1JlZiBuYW1lKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gMDsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzcGxheSgpCit7Cisg
ICAgZGlzcGxheVdlYlZpZXcoKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6a2Vl
cFdlYkhpc3RvcnkoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgpCit7CisgICAgLy8gRklYTUU6IFRoZSBmcmFt
ZSBtaWdodCBub3QgYmUgZmluaXNoZWQgbG9hZGluZyB5ZXQKKyAgICBpZiAobV93YWl0VG9EdW1w
ICYmICFXb3JrUXVldWU6OnNoYXJlZCgpLT5jb3VudCgpKQorICAgICAgICBkdW1wKCk7CisgICAg
bV93YWl0VG9EdW1wID0gZmFsc2U7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1
ZXVlQmFja05hdmlnYXRpb24oaW50IGhvd0ZhckJhY2spCit7CisgICAgV29ya1F1ZXVlOjpzaGFy
ZWQoKS0+cXVldWUobmV3IEJhY2tJdGVtKGhvd0ZhckJhY2spKTsKK30KKwordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cXVldWVGb3J3YXJkTmF2aWdhdGlvbihpbnQgaG93RmFyRm9yd2FyZCkK
K3sKKyAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcgRm9yd2FyZEl0ZW0oaG93RmFy
Rm9yd2FyZCkpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWQoSlNT
dHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpCit7CisgICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSBVUkxzIGhlcmUKKyAgICBXb3JrUXVldWU6OnNoYXJlZCgp
LT5xdWV1ZShuZXcgTG9hZEl0ZW0odXJsLCB0YXJnZXQpKTsKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cXVldWVSZWxvYWQoKQoreworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1
ZXVlKG5ldyBSZWxvYWRJdGVtKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVl
dWVTY3JpcHQoSlNTdHJpbmdSZWYgc2NyaXB0KQoreworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCkt
PnF1ZXVlKG5ldyBTY3JpcHRJdGVtKHNjcmlwdCkpOworfQorCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRBY2NlcHRzRWRpdGluZyhib29sIG5ld0FjY2VwdHNFZGl0aW5nKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0ZSkKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1haW5GcmFtZUlz
Rmlyc3RSZXNwb25kZXIoYm9vbCBmbGFnKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30K
Kwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1l
bnRzKGJvb2wgY3ljbGVzKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUoYm9v
bCBmbGFnKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCkKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFdpbmRvd0lzS2V5
KGJvb2wgd2luZG93SXNLZXkpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXYWl0VG9EdW1wKGJvb2wgd2FpdFVudGlsRG9uZSkK
K3sKKyAgICBtX3dhaXRUb0R1bXAgPSB3YWl0VW50aWxEb25lOworICAgIC8vIEZJWE1FOiBTaG91
bGQgaGF2ZSBzb21lIHNvcnQgb2Ygd2F0Y2hkb2cgdGltZXIgaGVyZQorfQorCitpbnQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OndpbmRvd0NvdW50KCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
CisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
V29ya1F1ZXVlSXRlbUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKKworI2luY2x1ZGUg
IkR1bXBSZW5kZXJUcmVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYu
aD4KKworI2luY2x1ZGUgIndlYmtpdGd0a3BhZ2UuaCIKKyNpbmNsdWRlICJ3ZWJraXRndGtmcmFt
ZS5oIgorCit2b2lkIExvYWRJdGVtOjppbnZva2UoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBU
aGUgZ3RrIEFQSSBkb2Vzbid0IHlldCBzdXBwb3J0IGZyYW1lIGxvb2t1cCBieSB0YXJnZXQKKyAg
ICAvLyBvciBldmVuIGlzc3VpbmcgYSBmcmFtZS1zcGVjaWZpYyBsb2FkLgorICAgIFdlYktpdFBh
Z2UqIHBhZ2UgPSB3ZWJraXRfZnJhbWVfZ2V0X3BhZ2UobWFpbkZyYW1lKTsKKyAgICBzaXplX3Qg
bGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHVybCgpKTsKKyAgICBj
aGFyKiB1cmxTdHIgPSAoY2hhciopbWFsbG9jKGxlbmd0aCk7CisgICAgSlNTdHJpbmdHZXRVVEY4
Q1N0cmluZyh1cmwoKSwgdXJsU3RyLCBsZW5ndGgpOworICAgIHdlYmtpdF9wYWdlX29wZW4ocGFn
ZSwgdXJsU3RyKTsKKyAgICBmcmVlKHVybFN0cik7Cit9CisKK3ZvaWQgUmVsb2FkSXRlbTo6aW52
b2tlKCkgY29uc3QKK3sKKyAgICBXZWJLaXRQYWdlKiBwYWdlID0gd2Via2l0X2ZyYW1lX2dldF9w
YWdlKG1haW5GcmFtZSk7CisgICAgd2Via2l0X3BhZ2VfcmVsb2FkKHBhZ2UpOworfQorCit2b2lk
IFNjcmlwdEl0ZW06Omludm9rZSgpIGNvbnN0Cit7CisgICAgV2ViS2l0UGFnZSogcGFnZSA9IHdl
YmtpdF9mcmFtZV9nZXRfcGFnZShtYWluRnJhbWUpOworICAgIHNpemVfdCBsZW5ndGggPSBKU1N0
cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc2NyaXB0KCkpOworICAgIGNoYXIqIHNjcmlw
dFN0ciA9IChjaGFyKiltYWxsb2MobGVuZ3RoKTsKKyAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5n
KHNjcmlwdCgpLCBzY3JpcHRTdHIsIGxlbmd0aCk7CisgICAgd2Via2l0X3BhZ2VfZXhlY3V0ZV9z
Y3JpcHQocGFnZSwgc2NyaXB0U3RyKTsKKyAgICBmcmVlKHNjcmlwdFN0cik7Cit9CisKK3ZvaWQg
QmFja0ZvcndhcmRJdGVtOjppbnZva2UoKSBjb25zdAoreworICAgIFdlYktpdFBhZ2UqIHBhZ2Ug
PSB3ZWJraXRfZnJhbWVfZ2V0X3BhZ2UobWFpbkZyYW1lKTsKKyAgICBpZiAobV9ob3dGYXIgPT0g
MSkKKwl3ZWJraXRfcGFnZV9nb19mb3J3YXJkKHBhZ2UpOworICAgIGVsc2UgaWYgKG1faG93RmFy
ID09IC0xKQorCXdlYmtpdF9wYWdlX2dvX2JhY2t3YXJkKHBhZ2UpOworICAgIGVsc2UgeworCS8v
IEZJWE1FOiBXZWJLaXRHdGsgZG9lcyBub3Qgc3VwcG9ydCBnb2luZyB0byBhbiBhcmJpdHJhcnkg
QmFja0ZvcndhcmRMaXN0IGl0ZW0KKwkvLyBnb2luZyBiYWNrd2FyZHMvZm9yd2FyZHMgbiB0aW1l
cyBpcyBub3QgdGhlIHNhbWUgYXMganVtcGluZyBkaXJlY3RseSB0byBhbiBpdGVtCisgICAgfQor
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17456</attachid>
            <date>2007-11-22 23:49:53 -0800</date>
            <delta_ts>2007-11-23 12:52:19 -0800</delta_ts>
            <desc>WebKitFrame changes needed to support DRT</desc>
            <filename>frame-api-lgpl.patch</filename>
            <type>text/plain</type>
            <size>10994</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzk4MykKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMTEtMjIgIEFscCBUb2tlciAgPGFscEBhdG9r
ZXIuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBhbmQgZG9jdW1lbnQgc2V2ZXJhbCBXZWJLaXRGcmFtZSBmdW5jdGlvbnMsIHNv
bWUgb2Ygd2hpY2gKKyAgICAgICAgYXJlIG5lY2Vzc2FyeSB0byBzdXBwb3J0IERSVC4KKworICAg
ICAgICBUaGVzZSBjb250cmlidXRpb25zIG1hZGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBMR1BM
LCB3aXRoIGFwcHJvcHJpYXRlCisgICAgICAgIGhlYWRlciBjaGFuZ2VzLgorCisgICAgICAgICog
QXBpL3dlYmtpdGd0a2ZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkvd2Via2l0Z3RrZnJhbWUuaDoK
KwogMjAwNy0xMS0yMiAgQWxwIFRva2VyICA8YWxwQGF0b2tlci5jb20+CiAKICAgICAgICAgV2hp
dGVzcGFjZSBmaXhlcyBvbmx5LgpJbmRleDogV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrZnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQXBpL3dlYmtpdGd0a2ZyYW1lLmNwcAkocmV2
aXNpb24gMjc5ODMpCisrKyBXZWJLaXQvZ3RrL0FwaS93ZWJraXRndGtmcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsMjkgKzEsMjMgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNyBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBA
YXRva2VyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCiAgKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgpAQCAtMzMsOSArMjcsMTYgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRHdGsuaCIKKyNpbmNsdWRlICJGcmFt
ZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25l
ckVsZW1lbnQuaCIKKyNpbmNsdWRlICJranNfYmluZGluZy5oIgorI2luY2x1ZGUgImtqc19wcm94
eS5oIgorI2luY2x1ZGUgImtqc193aW5kb3cuaCIKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBleHRlcm4gIkMiIHsKQEAgLTE5OSw0ICsyMDAsMTIyIEBAIGdjaGFyKiB3ZWJr
aXRfZnJhbWVfZ2V0X2xvY2F0aW9uKFdlYktpdEYKICAgICByZXR1cm4gZnJhbWVEYXRhLT5sb2Nh
dGlvbjsKIH0KIAorLyoqCisgKiB3ZWJraXRfZnJhbWVfZ2V0X3BhcmVudDoKKyAqIEBmcmFtZTog
YSAjV2ViS2l0RnJhbWUKKyAqCisgKiBSZXR1cm5zIHRoZSBAZnJhbWUncyBwYXJlbnQgZnJhbWUs
IG9yICVOVUxMIGlmIGl0IGhhcyBub25lLgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlIHBhcmVu
dCAjV2ViS2l0RnJhbWUgb3IgJU5VTEwgaW4gY2FzZSB0aGVyZSBpcyBub25lCisgKi8KK1dlYktp
dEZyYW1lKiB3ZWJraXRfZnJhbWVfZ2V0X3BhcmVudChXZWJLaXRGcmFtZSogZnJhbWUpCit7Cisg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBraXQoY29yZUZyYW1lLT50cmVlKCktPnBh
cmVudCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfZnJhbWVfbG9hZF9yZXF1ZXN0OgorICogQGZy
YW1lOiBhICNXZWJLaXRGcmFtZQorICogQHJlcXVlc3Q6IGEgI1dlYktpdE5ldHdvcmtSZXF1ZXN0
CisgKgorICogQ29ubmVjdHMgdG8gYSBnaXZlbiBVUkwgYnkgaW5pdGlhdGluZyBhbiBhc3luY2hy
b25vdXMgY2xpZW50IHJlcXVlc3QuCisgKgorICogQ3JlYXRlcyBhIHByb3Zpc2lvbmFsIGRhdGEg
c291cmNlIHRoYXQgd2lsbCB0cmFuc2l0aW9uIHRvIGEgY29tbWl0dGVkIGRhdGEKKyAqIHNvdXJj
ZSBvbmNlIGFueSBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLiBVc2Ugd2Via2l0X2ZyYW1lX3N0b3Bf
bG9hZGluZygpIHRvCisgKiBzdG9wIHRoZSBsb2FkLiBUaGlzIGZ1bmN0aW9uIGlzIHR5cGljYWxs
eSBpbnZva2VkIG9uIHRoZSBtYWluIGZyYW1lLgorICovCit2b2lkIHdlYmtpdF9mcmFtZV9sb2Fk
X3JlcXVlc3QoV2ViS2l0RnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAgaWYgKCFjb3Jl
RnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRPRE86IFVzZSB0aGUgUmVzb3VyY2VS
ZXF1ZXN0IGNhcnJpZWQgYnkgV2ViS2l0TmV0d29ya1JlcXVlc3Qgd2hlbiBpdCBnZXRzIGltcGxl
bWVudGVkLgorICAgIERlcHJlY2F0ZWRTdHJpbmcgc3RyaW5nID0gRGVwcmVjYXRlZFN0cmluZzo6
ZnJvbVV0Zjgod2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJsKHJlcXVlc3QpKTsKKyAgICBj
b3JlRnJhbWUtPmxvYWRlcigpLT5sb2FkKFJlc291cmNlUmVxdWVzdChLVVJMKHN0cmluZykpKTsK
K30KKworLyoqCisgKiB3ZWJraXRfZnJhbWVfc3RvcF9sb2FkaW5nOgorICogQGZyYW1lOiBhICNX
ZWJLaXRGcmFtZQorICoKKyAqIFN0b3BzIGFueSBwZW5kaW5nIGxvYWRzIG9uIEBmcmFtZSdzIGRh
dGEgc291cmNlLCBhbmQgdGhvc2Ugb2YgaXRzIGNoaWxkcmVuLgorICovCit2b2lkIHdlYmtpdF9m
cmFtZV9zdG9wX2xvYWRpbmcoV2ViS2l0RnJhbWUqIGZyYW1lKQoreworICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsKK30KKworLyoq
CisgKiB3ZWJraXRfZnJhbWVfcmVsb2FkOgorICogQGZyYW1lOiBhICNXZWJLaXRGcmFtZQorICoK
KyAqIFJlbG9hZHMgdGhlIGluaXRpYWwgcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRfZnJhbWVf
cmVsb2FkKFdlYktpdEZyYW1lKiBmcmFtZSkKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShmcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGNv
cmVGcmFtZS0+bG9hZGVyKCktPnJlbG9hZCgpOworfQorCisvKioKKyAqIHdlYmtpdF9mcmFtZV9m
aW5kX2ZyYW1lOgorICogQGZyYW1lOiBhICNXZWJLaXRGcmFtZQorICogQG5hbWU6IHRoZSBuYW1l
IG9mIHRoZSBmcmFtZSB0byBiZSBmb3VuZAorICoKKyAqIEZvciBwcmUtZGVmaW5lZCBuYW1lcywg
cmV0dXJucyBAZnJhbWUgaWYgQG5hbWUgaXMgIl9zZWxmIiBvciAiX2N1cnJlbnQiLAorICogcmV0
dXJucyBAZnJhbWUncyBwYXJlbnQgZnJhbWUgaWYgQG5hbWUgaXMgIl9wYXJlbnQiLCBhbmQgcmV0
dXJucyB0aGUgbWFpbgorICogZnJhbWUgaWYgQG5hbWUgaXMgIl90b3AiLiBBbHNvIHJldHVybnMg
QGZyYW1lIGlmIGl0IGlzIHRoZSBtYWluIGZyYW1lIGFuZAorICogQG5hbWUgaXMgZWl0aGVyICJf
cGFyZW50IiBvciAiX3RvcCIuIEZvciBvdGhlciBuYW1lcywgdGhpcyBmdW5jdGlvbiByZXR1cm5z
CisgKiB0aGUgZmlyc3QgZnJhbWUgdGhhdCBtYXRjaGVzIEBuYW1lLiBUaGlzIGZ1bmN0aW9uIHNl
YXJjaGVzIEBmcmFtZSBhbmQgaXRzCisgKiBkZXNjZW5kZW50cyBmaXJzdCwgdGhlbiBAZnJhbWUn
cyBwYXJlbnQgYW5kIGl0cyBjaGlsZHJlbiBtb3ZpbmcgdXAgdGhlCisgKiBoaWVyYXJjaHkgdW50
aWwgYSBtYXRjaCBpcyBmb3VuZC4gSWYgbm8gbWF0Y2ggaXMgZm91bmQgaW4gQGZyYW1lJ3MKKyAq
IGhpZXJhcmNoeSwgdGhpcyBmdW5jdGlvbiB3aWxsIHNlYXJjaCBmb3IgYSBtYXRjaGluZyBmcmFt
ZSBpbiBvdGhlciBtYWluCisgKiBmcmFtZSBoaWVyYXJjaGllcy4gUmV0dXJucyAlTlVMTCBpZiBu
byBtYXRjaCBpcyBmb3VuZC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBmb3VuZCAjV2ViS2l0
RnJhbWUgb3IgJU5VTEwgaW4gY2FzZSBub25lIGlzIGZvdW5kCisgKi8KK1dlYktpdEZyYW1lKiB3
ZWJraXRfZnJhbWVfZmluZF9mcmFtZShXZWJLaXRGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBu
YW1lKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNv
cmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBTdHJpbmcgbmFtZVN0cmluZyA9IFN0
cmluZzo6ZnJvbVVURjgobmFtZSk7CisgICAgRnJhbWUqIGZvdW5kRnJhbWUgPSBjb3JlRnJhbWUt
PnRyZWUoKS0+ZmluZChBdG9taWNTdHJpbmcobmFtZVN0cmluZykpOworICAgIGlmICghZm91bmRG
cmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4ga2l0KGZvdW5kRnJhbWUpOwor
fQorCisvKioKKyAqIHdlYmtpdF9mcmFtZV9nZXRfZ2xvYmFsX2NvbnRleHQ6CisgKiBAZnJhbWU6
IGEgI1dlYktpdEZyYW1lCisgKgorICogR2V0cyB0aGUgZ2xvYmFsIEphdmFTY3JpcHQgZXhlY3V0
aW9uIGNvbnRleHQuIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGJyaWRnZQorICogYmV0d2VlbiB0aGUg
V2ViS2l0IGFuZCBKYXZhU2NyaXB0Q29yZSBBUElzLgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhl
IGdsb2JhbCBKYXZhU2NyaXB0IGNvbnRleHQKKyAqLworSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtp
dF9mcmFtZV9nZXRfZ2xvYmFsX2NvbnRleHQoV2ViS2l0RnJhbWUqIGZyYW1lKQoreworICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gdG9HbG9iYWxSZWYoY29yZUZyYW1lLT5zY3JpcHRQ
cm94eSgpLT5pbnRlcnByZXRlcigpLT5nbG9iYWxFeGVjKCkpOworfQorCiB9CkluZGV4OiBXZWJL
aXQvZ3RrL0FwaS93ZWJraXRndGtmcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQXBp
L3dlYmtpdGd0a2ZyYW1lLmgJKHJldmlzaW9uIDI3OTgzKQorKysgV2ViS2l0L2d0ay9BcGkvd2Vi
a2l0Z3RrZnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwyOSArMSwyMiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0
IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCiAgKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCiAjaWZuZGVmIFdFQktJVF9GUkFNRV9ICkBAIC0zNCw2ICsyNywxMCBAQAog
CiAjaW5jbHVkZSAid2Via2l0Z3RrZGVmaW5lcy5oIgogCit0eXBlZGVmIHN0cnVjdCBPcGFxdWVK
U0NvbnRleHQqIEpTR2xvYmFsQ29udGV4dFJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSog
SlNPYmplY3RSZWY7CisKIEdfQkVHSU5fREVDTFMKIAogI2RlZmluZSBXRUJLSVRfVFlQRV9GUkFN
RSAgICAgICAgICAgICh3ZWJraXRfZnJhbWVfZ2V0X3R5cGUoKSkKQEAgLTk5LDYgKzk2LDI0IEBA
IHdlYmtpdF9mcmFtZV9nZXRfcmVjdGFuZ2xlIChXZWJLaXRGcmFtZSoKIFdFQktJVF9BUEkgV2Vi
S2l0UGFnZSoKIHdlYmtpdF9mcmFtZV9nZXRfcGFnZSAoV2ViS2l0RnJhbWUqIGZyYW1lKTsKIAor
V0VCS0lUX0FQSSBXZWJLaXRGcmFtZSoKK3dlYmtpdF9mcmFtZV9nZXRfcGFyZW50IChXZWJLaXRG
cmFtZSogZnJhbWUpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9mcmFtZV9sb2FkX3JlcXVl
c3QgKFdlYktpdEZyYW1lKiBmcmFtZSwgV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9mcmFtZV9zdG9wX2xvYWRpbmcgKFdlYktpdEZyYW1l
KiBmcmFtZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2ZyYW1lX3JlbG9hZCAoV2ViS2l0
RnJhbWUqIGZyYW1lKTsKKworV0VCS0lUX0FQSSBXZWJLaXRGcmFtZSoKK3dlYmtpdF9mcmFtZV9m
aW5kX2ZyYW1lIChXZWJLaXRGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lKTsKKworV0VC
S0lUX0FQSSBKU0dsb2JhbENvbnRleHRSZWYKK3dlYmtpdF9mcmFtZV9nZXRfZ2xvYmFsX2NvbnRl
eHQgKFdlYktpdEZyYW1lKiBmcmFtZSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgo=
</data>
<flag name="review"
          id="7493"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17470</attachid>
            <date>2007-11-23 12:52:19 -0800</date>
            <delta_ts>2007-11-27 22:11:19 -0800</delta_ts>
            <desc>WebKitFrame changes needed to support DRT, with fixed licensing</desc>
            <filename>frame-api-bsd.patch</filename>
            <type>text/plain</type>
            <size>8246</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzk4OSkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMTEtMjIgIEFscCBUb2tlciAgPGFscEBhdG9r
ZXIuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBhbmQgZG9jdW1lbnQgc2V2ZXJhbCBXZWJLaXRGcmFtZSBmdW5jdGlvbnMsIHNv
bWUgb2Ygd2hpY2gKKyAgICAgICAgYXJlIG5lY2Vzc2FyeSB0byBzdXBwb3J0IERSVC4KKworICAg
ICAgICBDb3JyZWN0IE5VTEwgaGFuZGxpbmcgYW5kIGltcHJvdmUgcnVuLXRpbWUgY2hlY2tzLgor
CisgICAgICAgICogQXBpL3dlYmtpdGd0a2ZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkvd2Via2l0
Z3RrZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvd2Via2l0Z3RrcHJpdmF0ZS5jcHA6CisKIDIwMDct
MTEtMjIgIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgogCiAgICAgICAgIFdoaXRlc3BhY2Ug
Zml4ZXMgb25seS4KSW5kZXg6IFdlYktpdC9ndGsvQXBpL3dlYmtpdGd0a2ZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0FwaS93ZWJraXRndGtmcmFtZS5jcHAJKHJldmlzaW9uIDI3
OTg5KQorKysgV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQ
ZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tl
ci5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDkgKzM0LDE2IEBA
CiAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
R3RrLmgiCisjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAj
aW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCisjaW5jbHVkZSAia2pzX2JpbmRpbmcu
aCIKKyNpbmNsdWRlICJranNfcHJveHkuaCIKKyNpbmNsdWRlICJranNfd2luZG93LmgiCiAKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogZXh0ZXJuICJDIiB7CkBAIC0xOTksNCAr
MjA3LDEyNiBAQCBnY2hhciogd2Via2l0X2ZyYW1lX2dldF9sb2NhdGlvbihXZWJLaXRGCiAgICAg
cmV0dXJuIGZyYW1lRGF0YS0+bG9jYXRpb247CiB9CiAKKy8qKgorICogd2Via2l0X2ZyYW1lX2dl
dF9wYXJlbnQ6CisgKiBAZnJhbWU6IGEgI1dlYktpdEZyYW1lCisgKgorICogUmV0dXJucyB0aGUg
QGZyYW1lJ3MgcGFyZW50IGZyYW1lLCBvciAlTlVMTCBpZiBpdCBoYXMgbm9uZS4KKyAqCisgKiBS
ZXR1cm4gdmFsdWU6IHRoZSBwYXJlbnQgI1dlYktpdEZyYW1lIG9yICVOVUxMIGluIGNhc2UgdGhl
cmUgaXMgbm9uZQorICovCitXZWJLaXRGcmFtZSogd2Via2l0X2ZyYW1lX2dldF9wYXJlbnQoV2Vi
S2l0RnJhbWUqIGZyYW1lKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19G
UkFNRShmcmFtZSksIE5VTEwpOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUp
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVGcmFtZSwgTlVMTCk7CisKKyAgICByZXR1
cm4ga2l0KGNvcmVGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSk7Cit9CisKKy8qKgorICogd2Via2l0
X2ZyYW1lX2xvYWRfcmVxdWVzdDoKKyAqIEBmcmFtZTogYSAjV2ViS2l0RnJhbWUKKyAqIEByZXF1
ZXN0OiBhICNXZWJLaXROZXR3b3JrUmVxdWVzdAorICoKKyAqIENvbm5lY3RzIHRvIGEgZ2l2ZW4g
VVJMIGJ5IGluaXRpYXRpbmcgYW4gYXN5bmNocm9ub3VzIGNsaWVudCByZXF1ZXN0LgorICoKKyAq
IENyZWF0ZXMgYSBwcm92aXNpb25hbCBkYXRhIHNvdXJjZSB0aGF0IHdpbGwgdHJhbnNpdGlvbiB0
byBhIGNvbW1pdHRlZCBkYXRhCisgKiBzb3VyY2Ugb25jZSBhbnkgZGF0YSBoYXMgYmVlbiByZWNl
aXZlZC4gVXNlIHdlYmtpdF9mcmFtZV9zdG9wX2xvYWRpbmcoKSB0bworICogc3RvcCB0aGUgbG9h
ZC4gVGhpcyBmdW5jdGlvbiBpcyB0eXBpY2FsbHkgaW52b2tlZCBvbiB0aGUgbWFpbiBmcmFtZS4K
KyAqLwordm9pZCB3ZWJraXRfZnJhbWVfbG9hZF9yZXF1ZXN0KFdlYktpdEZyYW1lKiBmcmFtZSwg
V2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfRlJBTUUoZnJhbWUpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19O
RVRXT1JLX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
ZnJhbWUpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29yZUZyYW1lKTsKKworICAgIC8vIFRPRE86
IFVzZSB0aGUgUmVzb3VyY2VSZXF1ZXN0IGNhcnJpZWQgYnkgV2ViS2l0TmV0d29ya1JlcXVlc3Qg
d2hlbiBpdCBnZXRzIGltcGxlbWVudGVkLgorICAgIERlcHJlY2F0ZWRTdHJpbmcgc3RyaW5nID0g
RGVwcmVjYXRlZFN0cmluZzo6ZnJvbVV0Zjgod2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJs
KHJlcXVlc3QpKTsKKyAgICBjb3JlRnJhbWUtPmxvYWRlcigpLT5sb2FkKFJlc291cmNlUmVxdWVz
dChLVVJMKHN0cmluZykpKTsKK30KKworLyoqCisgKiB3ZWJraXRfZnJhbWVfc3RvcF9sb2FkaW5n
OgorICogQGZyYW1lOiBhICNXZWJLaXRGcmFtZQorICoKKyAqIFN0b3BzIGFueSBwZW5kaW5nIGxv
YWRzIG9uIEBmcmFtZSdzIGRhdGEgc291cmNlLCBhbmQgdGhvc2Ugb2YgaXRzIGNoaWxkcmVuLgor
ICovCit2b2lkIHdlYmtpdF9mcmFtZV9zdG9wX2xvYWRpbmcoV2ViS2l0RnJhbWUqIGZyYW1lKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0ZSQU1FKGZyYW1lKSk7CisKKyAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChjb3Jl
RnJhbWUpOworCisgICAgY29yZUZyYW1lLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsKK30K
KworLyoqCisgKiB3ZWJraXRfZnJhbWVfcmVsb2FkOgorICogQGZyYW1lOiBhICNXZWJLaXRGcmFt
ZQorICoKKyAqIFJlbG9hZHMgdGhlIGluaXRpYWwgcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRf
ZnJhbWVfcmVsb2FkKFdlYktpdEZyYW1lKiBmcmFtZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19GUkFNRShmcmFtZSkpOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
ZnJhbWUpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29yZUZyYW1lKTsKKworICAgIGNvcmVGcmFt
ZS0+bG9hZGVyKCktPnJlbG9hZCgpOworfQorCisvKioKKyAqIHdlYmtpdF9mcmFtZV9maW5kX2Zy
YW1lOgorICogQGZyYW1lOiBhICNXZWJLaXRGcmFtZQorICogQG5hbWU6IHRoZSBuYW1lIG9mIHRo
ZSBmcmFtZSB0byBiZSBmb3VuZAorICoKKyAqIEZvciBwcmUtZGVmaW5lZCBuYW1lcywgcmV0dXJu
cyBAZnJhbWUgaWYgQG5hbWUgaXMgIl9zZWxmIiBvciAiX2N1cnJlbnQiLAorICogcmV0dXJucyBA
ZnJhbWUncyBwYXJlbnQgZnJhbWUgaWYgQG5hbWUgaXMgIl9wYXJlbnQiLCBhbmQgcmV0dXJucyB0
aGUgbWFpbgorICogZnJhbWUgaWYgQG5hbWUgaXMgIl90b3AiLiBBbHNvIHJldHVybnMgQGZyYW1l
IGlmIGl0IGlzIHRoZSBtYWluIGZyYW1lIGFuZAorICogQG5hbWUgaXMgZWl0aGVyICJfcGFyZW50
IiBvciAiX3RvcCIuIEZvciBvdGhlciBuYW1lcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zCisgKiB0
aGUgZmlyc3QgZnJhbWUgdGhhdCBtYXRjaGVzIEBuYW1lLiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVz
IEBmcmFtZSBhbmQgaXRzCisgKiBkZXNjZW5kZW50cyBmaXJzdCwgdGhlbiBAZnJhbWUncyBwYXJl
bnQgYW5kIGl0cyBjaGlsZHJlbiBtb3ZpbmcgdXAgdGhlCisgKiBoaWVyYXJjaHkgdW50aWwgYSBt
YXRjaCBpcyBmb3VuZC4gSWYgbm8gbWF0Y2ggaXMgZm91bmQgaW4gQGZyYW1lJ3MKKyAqIGhpZXJh
cmNoeSwgdGhpcyBmdW5jdGlvbiB3aWxsIHNlYXJjaCBmb3IgYSBtYXRjaGluZyBmcmFtZSBpbiBv
dGhlciBtYWluCisgKiBmcmFtZSBoaWVyYXJjaGllcy4gUmV0dXJucyAlTlVMTCBpZiBubyBtYXRj
aCBpcyBmb3VuZC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBmb3VuZCAjV2ViS2l0RnJhbWUg
b3IgJU5VTEwgaW4gY2FzZSBub25lIGlzIGZvdW5kCisgKi8KK1dlYktpdEZyYW1lKiB3ZWJraXRf
ZnJhbWVfZmluZF9mcmFtZShXZWJLaXRGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19GUkFNRShmcmFtZSksIE5VTEwp
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG5hbWUsIE5VTEwpOworCisgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoZnJhbWUpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVGcmFt
ZSwgTlVMTCk7CisKKyAgICBTdHJpbmcgbmFtZVN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobmFt
ZSk7CisgICAgcmV0dXJuIGtpdChjb3JlRnJhbWUtPnRyZWUoKS0+ZmluZChBdG9taWNTdHJpbmco
bmFtZVN0cmluZykpKTsKK30KKworLyoqCisgKiB3ZWJraXRfZnJhbWVfZ2V0X2dsb2JhbF9jb250
ZXh0OgorICogQGZyYW1lOiBhICNXZWJLaXRGcmFtZQorICoKKyAqIEdldHMgdGhlIGdsb2JhbCBK
YXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LiBVc2UgdGhpcyBmdW5jdGlvbiB0byBicmlkZ2UK
KyAqIGJldHdlZW4gdGhlIFdlYktpdCBhbmQgSmF2YVNjcmlwdENvcmUgQVBJcy4KKyAqCisgKiBS
ZXR1cm4gdmFsdWU6IHRoZSBnbG9iYWwgSmF2YVNjcmlwdCBjb250ZXh0CisgKi8KK0pTR2xvYmFs
Q29udGV4dFJlZiB3ZWJraXRfZnJhbWVfZ2V0X2dsb2JhbF9jb250ZXh0KFdlYktpdEZyYW1lKiBm
cmFtZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRlJBTUUoZnJhbWUp
LCAwKTsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChjb3JlRnJhbWUsIDApOworCisgICAgcmV0dXJuIHRvR2xvYmFsUmVmKGNv
cmVGcmFtZS0+c2NyaXB0UHJveHkoKS0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFsRXhlYygpKTsKK30K
KwogfQpJbmRleDogV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrZnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL0FwaS93ZWJraXRndGtmcmFtZS5oCShyZXZpc2lvbiAyNzk4OSkKKysrIFdl
YktpdC9ndGsvQXBpL3dlYmtpdGd0a2ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNiArMzUsMTAgQEAKIAogI2luY2x1ZGUg
IndlYmtpdGd0a2RlZmluZXMuaCIKIAordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBK
U0dsb2JhbENvbnRleHRSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQq
IEpTQ29udGV4dFJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTT2JqZWN0UmVm
OworCiBHX0JFR0lOX0RFQ0xTCiAKICNkZWZpbmUgV0VCS0lUX1RZUEVfRlJBTUUgICAgICAgICAg
ICAod2Via2l0X2ZyYW1lX2dldF90eXBlKCkpCkBAIC05OSw2ICsxMDQsMjQgQEAgd2Via2l0X2Zy
YW1lX2dldF9yZWN0YW5nbGUgKFdlYktpdEZyYW1lKgogV0VCS0lUX0FQSSBXZWJLaXRQYWdlKgog
d2Via2l0X2ZyYW1lX2dldF9wYWdlIChXZWJLaXRGcmFtZSogZnJhbWUpOwogCitXRUJLSVRfQVBJ
IFdlYktpdEZyYW1lKgord2Via2l0X2ZyYW1lX2dldF9wYXJlbnQgKFdlYktpdEZyYW1lKiBmcmFt
ZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2ZyYW1lX2xvYWRfcmVxdWVzdCAoV2ViS2l0
RnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCk7CisKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X2ZyYW1lX3N0b3BfbG9hZGluZyAoV2ViS2l0RnJhbWUqIGZyYW1lKTsK
KworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZnJhbWVfcmVsb2FkIChXZWJLaXRGcmFtZSogZnJh
bWUpOworCitXRUJLSVRfQVBJIFdlYktpdEZyYW1lKgord2Via2l0X2ZyYW1lX2ZpbmRfZnJhbWUg
KFdlYktpdEZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG5hbWUpOworCitXRUJLSVRfQVBJIEpT
R2xvYmFsQ29udGV4dFJlZgord2Via2l0X2ZyYW1lX2dldF9nbG9iYWxfY29udGV4dCAoV2ViS2l0
RnJhbWUqIGZyYW1lKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQvZ3Rr
L0FwaS93ZWJraXRndGtwcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0FwaS93
ZWJraXRndGtwcml2YXRlLmNwcAkocmV2aXNpb24gMjc5ODkpCisrKyBXZWJLaXQvZ3RrL0FwaS93
ZWJraXRndGtwcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMjUgKzYwLDM5IEBAIFdl
YktpdFBhZ2UqIGdldFBhZ2VGcm9tRnJhbWUoV2ViS2l0RnJhbWUKIAogV2ViQ29yZTo6RnJhbWUq
IGNvcmUoV2ViS2l0RnJhbWUqIGZyYW1lKQogeworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybiAwOworCiAgICAgV2ViS2l0RnJhbWVQcml2YXRlKiBmcmFtZV9kYXRhID0gV0VCS0lUX0ZS
QU1FX0dFVF9QUklWQVRFKGZyYW1lKTsKLSAgICByZXR1cm4gZnJhbWVfZGF0YS0+ZnJhbWU7Cisg
ICAgcmV0dXJuIGZyYW1lX2RhdGEgPyBmcmFtZV9kYXRhLT5mcmFtZSA6IDA7CiB9CiAKIFdlYktp
dEZyYW1lKiBraXQoV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSkKIHsKKyAgICBpZiAoIWNvcmVG
cmFtZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBBU1NFUlQoY29yZUZyYW1lLT5sb2Fk
ZXIoKSk7CiAgICAgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nh
c3Q8V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudCo+KGNvcmVGcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpKTsKLSAgICByZXR1cm4gY2xpZW50LT53ZWJGcmFtZSgpOworICAgIHJldHVybiBjbGllbnQg
PyBjbGllbnQtPndlYkZyYW1lKCkgOiBOVUxMOwogfQogCiBXZWJDb3JlOjpQYWdlKiBjb3JlKFdl
YktpdFBhZ2UqIHBhZ2UpCiB7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKwog
ICAgIFdlYktpdFBhZ2VQcml2YXRlKiBwYWdlX2RhdGEgPSBXRUJLSVRfUEFHRV9HRVRfUFJJVkFU
RShwYWdlKTsKLSAgICByZXR1cm4gcGFnZV9kYXRhLT5wYWdlOworICAgIHJldHVybiBwYWdlX2Rh
dGEgPyBwYWdlX2RhdGEtPnBhZ2UgOiAwOwogfQogCiBXZWJLaXRQYWdlKiBraXQoV2ViQ29yZTo6
UGFnZSogcGFnZSkKIHsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBOVUxMOworCisg
ICAgQVNTRVJUKHBhZ2UtPmNocm9tZSgpKTsKICAgICBXZWJLaXQ6OkNocm9tZUNsaWVudCogY2xp
ZW50ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCkpOwotICAgIHJldHVybiBjbGllbnQtPndlYlBhZ2UoKTsKKyAgICByZXR1cm4gY2xp
ZW50ID8gY2xpZW50LT53ZWJQYWdlKCkgOiBOVUxMOwogfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17641</attachid>
            <date>2007-12-02 03:38:59 -0800</date>
            <delta_ts>2007-12-04 04:08:47 -0800</delta_ts>
            <desc>0001-First-stub-at-DRT-for-Gtk.patch</desc>
            <filename>0001-First-stub-at-DRT-for-Gtk.patch</filename>
            <type>text/plain</type>
            <size>28168</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA4ZDgzZjgzZGMxMjY5ZmEzYjk1YjYzMGNiOTA5ZGY5YTc4ZGNiZGU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IFN1biwg
MiBEZWMgMjAwNyAxMzozMDozNiArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEZpcnN0IHN0dWIgYXQg
RFJUIGZvciBHdGsuCgotLS0KIC4uLi9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9K
U1JldGFpblB0ci5oIHwgICAgMSArCiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYktpdC5wcmkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQogV2ViS2l0LnBybyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCiBXZWJLaXQvZ3RrL1dlYlZpZXcv
d2Via2l0d2ViZnJhbWUuY3BwICAgICAgICAgICAgICB8ICAgNDQgKysrKwogV2ViS2l0L2d0ay9X
ZWJWaWV3L3dlYmtpdHdlYmZyYW1lLmggICAgICAgICAgICAgICAgfCAgICA2ICsKIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmggICAgICAgIHwgICAxMCArLQogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCAgfCAgMjU5ICsr
KysrKysrKysrKysrKysrKysrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJl
bmRlclRyZWUucHJvICB8ICAgMTkgKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9E
dW1wUmVuZGVyVHJlZUd0ay5oIHwgICAzNiArKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9HQ0NvbnRyb2xsZXJHdGsuY3BwIHwgICA0MiArKysrCiAuLi4vRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCB8ICAxNzAgKysrKysrKysrKysrKwogLi4u
L0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcCAgICAgICAgfCAgIDk2ICsr
KysrKysKIDE0IGZpbGVzIGNoYW5nZWQsIDY4NiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1w
UmVuZGVyVHJlZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvRHVtcFJlbmRlclRyZWUucHJvCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlR3RrLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvR0NDb250cm9sbGVyR3RrLmNwcAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvV29ya1F1ZXVlSXRlbUd0ay5jcHAKCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oIGIv
SmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaAppbmRleCBlMDQ4ZDM0Li4zNTg2OTY5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9G
b3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmgK
QEAgLTEgKzEsMiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSS9KU1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSS9KU1JldGFpblB0ci5oPgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvd3RmL1RDU3BpbkxvY2suaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9U
Q1NwaW5Mb2NrLmgKaW5kZXggNzJjNWNmNS4uZmIwOGVkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zNyw3ICszNyw3IEBAIENP
TkZJRyAtPSB3YXJuX29uCiAjUU1BS0VfQ1hYRkxBR1MgKz0gLVdhbGwgLVduby11bmRlZiAtV25v
LXVudXNlZC1wYXJhbWV0ZXIKIAogQ09ORklHKHJlbGVhc2UpOiFDT05GSUcoUVRESVJfYnVpbGQp
IHsKLSAgICBjb250YWlucyhRVF9DT05GSUcsIHJlZHVjZV9leHBvcnRzKTpDT05GSUcgKz0gaGlk
ZV9zeW1ib2xzCisgICAgI2NvbnRhaW5zKFFUX0NPTkZJRywgcmVkdWNlX2V4cG9ydHMpOkNPTkZJ
RyArPSBoaWRlX3N5bWJvbHMKICAgICB1bml4OmNvbnRhaW5zKFFUX0NPTkZJRywgcmVkdWNlX3Jl
bG9jYXRpb25zKTpDT05GSUcgKz0gYnN5bWJvbGljX2Z1bmN0aW9ucwogfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQucHJpIGIvV2ViS2l0LnByaQppbmRleCBlMDQxNjBkLi4wYzNjZTY1IDEwMDY0NAot
LS0gYS9XZWJLaXQucHJpCisrKyBiL1dlYktpdC5wcmkKQEAgLTg2LDcgKzg2LDggQEAgSU5DTFVE
RVBBVEggKz0gXAogICAgICQkQkFTRV9ESVIvV2ViQ29yZS9yZW5kZXJpbmcgXAogICAgICQkQkFT
RV9ESVIvV2ViQ29yZS9oaXN0b3J5IFwKICAgICAkJEJBU0VfRElSL1dlYkNvcmUveG1sIFwKLSAg
ICAkJEJBU0VfRElSL1dlYkNvcmUvaHRtbAorICAgICQkQkFTRV9ESVIvV2ViQ29yZS9odG1sIFwK
KyAgICAkJEJBU0VfRElSCiAKIAogbWFjeCB7CmRpZmYgLS1naXQgYS9XZWJLaXQucHJvIGIvV2Vi
S2l0LnBybwppbmRleCBjMDM2ZTI1Li44NzNiYzQwIDEwMDY0NAotLS0gYS9XZWJLaXQucHJvCisr
KyBiL1dlYktpdC5wcm8KQEAgLTE0LDQgKzE0LDUgQEAgcXQtcG9ydCB7CiB9CiAKIGd0ay1wb3J0
OlNVQkRJUlMgKz0gXAotICAgICAgICBXZWJLaXRUb29scy9HdGtMYXVuY2hlcgorICAgICAgICBX
ZWJLaXRUb29scy9HdGtMYXVuY2hlciBcCisJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0R1bXBSZW5kZXJUcmVlLnBybwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtp
dHdlYmZyYW1lLmNwcCBiL1dlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3ZWJmcmFtZS5jcHAKaW5k
ZXggZWUxNzlhMC4uOGU0NGZlNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJWaWV3L3dlYmtp
dHdlYmZyYW1lLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViZnJhbWUuY3Bw
CkBAIC0zODUsNCArMzg1LDQ4IEBAIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfd2ViX2ZyYW1l
X2dldF9nbG9iYWxfY29udGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHRv
R2xvYmFsUmVmKGNvcmVGcmFtZS0+c2NyaXB0UHJveHkoKS0+aW50ZXJwcmV0ZXIoKS0+Z2xvYmFs
RXhlYygpKTsKIH0KIAorLyoqCisgKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJlbjoKKyAq
IEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKKyAqCisgKiBSZXR1cm4gdmFsdWU6IGNoaWxkIGZy
YW1lcyBvZiBAZnJhbWUKKyAqLworR1NMaXN0KiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJl
bihXZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOworCisgICAgR1NMaXN0KiBjaGlsZHJlbiA9
IE5VTEw7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOworCisgICAgZm9yIChG
cmFtZSAqY2hpbGQgPSBjb3JlRnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIEZyYW1lTG9hZGVy
ICpsb2FkZXIgPSBjaGlsZC0+bG9hZGVyKCk7CisgICAgICAgIFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnQgKmNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQqPihs
b2FkZXItPmNsaWVudCgpKTsKKyAgICAgICAgaWYgKGNsaWVudCkKKyAgICAgICAgICBjaGlsZHJl
biA9IGdfc2xpc3RfYXBwZW5kKGNoaWxkcmVuLCBjbGllbnQtPndlYkZyYW1lKCkpOworICAgIH0K
KworICAgIHJldHVybiBjaGlsZHJlbjsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2ZyYW1lX2dl
dF9pbm5lcl90ZXh0OgorICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQorICoKKyAqIFJldHVy
biB2YWx1ZTogaW5uZXIgdGV4dCBvZiBAZnJhbWUKKyAqLworZ2NoYXIqIHdlYmtpdF93ZWJfZnJh
bWVfZ2V0X2lubmVyX3RleHQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKKworICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3Jl
RnJhbWUtPnZpZXcoKTsKKworICAgIGlmICh2aWV3LT5sYXlvdXRQZW5kaW5nKCkpCisgICAgICAg
IHZpZXctPmxheW91dCgpOworCisgICAgRWxlbWVudCAqZG9jdW1lbnRFbGVtZW50ID0gY29yZUZy
YW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBTdHJpbmcgc3RyaW5nID0g
IGRvY3VtZW50RWxlbWVudC0+aW5uZXJUZXh0KCk7CisgICAgcmV0dXJuIGdfc3RyZHVwKHN0cmlu
Zy51dGY4KCkuZGF0YSgpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJWaWV3
L3dlYmtpdHdlYmZyYW1lLmggYi9XZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViZnJhbWUuaApp
bmRleCBjMDcyZTA4Li44YWMxM2VjIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYlZpZXcvd2Vi
a2l0d2ViZnJhbWUuaAorKysgYi9XZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0d2ViZnJhbWUuaApA
QCAtOTcsNiArOTcsMTIgQEAgd2Via2l0X3dlYl9mcmFtZV9maW5kX2ZyYW1lIChXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lKTsKIFdFQktJVF9BUEkgSlNHbG9iYWxDb250
ZXh0UmVmCiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9nbG9iYWxfY29udGV4dCAoV2ViS2l0V2ViRnJh
bWUqIGZyYW1lKTsKIAorV0VCS0lUX0FQSSBHU0xpc3QqCit3ZWJraXRfd2ViX2ZyYW1lX2dldF9j
aGlsZHJlbihXZWJLaXRXZWJGcmFtZSogZnJhbWUpOworCitXRUJLSVRfQVBJIGdjaGFyKgord2Vi
a2l0X3dlYl9mcmFtZV9nZXRfaW5uZXJfdGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOworCiBH
X0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5oCmluZGV4IDY5NjgzOTguLmFiMzczYjIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaApAQCAtMzMsMTkgKzMzLDIxIEBACiAKICNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVNYWMuaCIKLSNlbHNlIGlmIFBMQVRG
T1JNKFdJTikKKyNlbGlmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVdp
bi5oIgorI2VsaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlR3RrLmgi
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENGKQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0Nv
cmVGb3VuZGF0aW9uLmg+CitleHRlcm4gQ0ZSdW5Mb29wVGltZXJSZWYgd2FpdFRvRHVtcFdhdGNo
ZG9nOworI2VuZGlmCiAKIGNsYXNzIExheW91dFRlc3RDb250cm9sbGVyOwogCiBleHRlcm4gdm9s
YXRpbGUgYm9vbCBkb25lOwogCi1leHRlcm4gQ0ZSdW5Mb29wVGltZXJSZWYgd2FpdFRvRHVtcFdh
dGNoZG9nOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIGJhZCBhYnN0cmFjdGlvbi4gIFdlIHNob3Vs
ZCBpbnN0ZWQgcGFzcyB0aGlzIHRvIG90aGVyIGNvbnRyb2xsZXIgb2JqZWN0cyB3aGljaCBuZWVk
IGFjY2VzcyB0byBpdC4KIGV4dGVybiBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENv
bnRyb2xsZXI7CiAKIHZvaWQgZHVtcCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNzkwZDZhOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTAsMCArMSwyNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIGZhbHNlVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gZmFsc2UgRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBmYWxzZVQgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdHdlYmZyYW1lLmgiCisK
KyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29u
dGV4dFJlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1ZhbHVlUmVmLmg+CisKKyNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKKworI2lu
Y2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCit2b2xhdGlsZSBib29sIGRv
bmU7CitzdGF0aWMgYm9vbCBwcmludFNlcGFyYXRvcnM7CitzdGF0aWMgaW50IHRlc3RSZXBhaW50
RGVmYXVsdDsKK3N0YXRpYyBpbnQgcmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5RGVmYXVsdDsKK3N0
YXRpYyBpbnQgZHVtcFBpeGVsczsKK3N0YXRpYyBpbnQgZHVtcFRyZWU7CitzdGF0aWMgZ2NoYXIq
IGN1cnJlbnRUZXN0OworCitMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xs
ZXIgPSAwOworc3RhdGljIFdlYktpdFdlYlZpZXcqIHZpZXc7CitXZWJLaXRXZWJGcmFtZSogbWFp
bkZyYW1lID0gMDsKKworY29uc3QgdW5zaWduZWQgbWF4Vmlld0hlaWdodCA9IDYwMDsKK2NvbnN0
IHVuc2lnbmVkIG1heFZpZXdXaWR0aCA9IDgwMDsKKworc3RhdGljIGdjaGFyKiBhdXRvY29ycmVj
dFVSTChjb25zdCBnY2hhciogdXJsKQoreworICAgIGlmIChzdHJuY21wKCJodHRwOi8vIiwgdXJs
LCA3KSAhPSAwICYmIHN0cm5jbXAoImh0dHBzOi8vIiwgdXJsLCA4KSAhPSAwKSB7CisgICAgICAg
IEdTdHJpbmcqIHN0cmluZyA9IGdfc3RyaW5nX25ldygiZmlsZTovLyIpOworICAgICAgICBnX3N0
cmluZ19hcHBlbmQoc3RyaW5nLCB1cmwpOworICAgICAgICByZXR1cm4gZ19zdHJpbmdfZnJlZShz
dHJpbmcsIEZBTFNFKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGdfc3RyZHVwKHVybCk7Cit9
CisKK3N0YXRpYyBib29sIHNob3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhjb25zdCBjaGFyICpw
YXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHN0cnN0cihwYXRoT3JVUkwsICJsb2FkaW5nLyIpOwor
fQorCit2b2lkIGR1bXBGcmFtZVNjcm9sbFBvc2l0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkK
K3sKKworfQorCit2b2lkIGRpc3BsYXlXZWJWaWV3KCkKK3sKKworfQorCitzdGF0aWMgdm9pZCBh
cHBlbmRTdHJpbmcoZ2NoYXIqJiB0YXJnZXQsIGdjaGFyKiBzdHJpbmcpCit7CisgICAgZ2NoYXIq
IG9sZFN0cmluZyA9IHRhcmdldDsKKyAgICB0YXJnZXQgPSBnX3N0cmNvbmNhdCh0YXJnZXQsIHN0
cmluZywgTlVMTCk7CisgICAgZ19mcmVlKG9sZFN0cmluZyk7Cit9CisKK3N0YXRpYyBnY2hhciog
ZHVtcEZyYW1lc0FzVGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7CisgICAgZ2NoYXIgKnJl
c3VsdCA9IDA7CisKKyAgICAvLyBBZGQgaGVhZGVyIGZvciBhbGwgYnV0IHRoZSBtYWluIGZyYW1l
LgorICAgIGJvb2wgaXNNYWluRnJhbWUgPSAod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1l
KHZpZXcpID09IGZyYW1lKTsKKworICAgIGlmIChpc01haW5GcmFtZSkgeworICAgICAgICBjb25z
dCBnY2hhciogZnJhbWVOYW1lID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfbmFtZSAoZnJhbWUpOwor
ICAgICAgICBnY2hhciogaW5uZXJUZXh0ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfaW5uZXJfdGV4
dChmcmFtZSk7CisKKyAgICAgICAgcmVzdWx0ID0gZ19zdHJkdXBfcHJpbnRmKCJcbi0tLS0tLS0t
XG5GcmFtZTogJyVzJ1xuLS0tLS0tLS1cbiVzIiwgZnJhbWVOYW1lLCBpbm5lclRleHQpOworCisg
ICAgICAgIGdfZnJlZShpbm5lclRleHQpOworICAgIH0KKworICAgIGlmIChsYXlvdXRUZXN0Q29u
dHJvbGxlci0+ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCkpIHsKKyAgICAgICAgR1NMaXN0KiBjaGls
ZHJlbiA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2NoaWxkcmVuKGZyYW1lKTsKKyAgICAgICAgZm9y
ICg7Y2hpbGRyZW47IGNoaWxkcmVuID0gZ19zbGlzdF9uZXh0KGNoaWxkcmVuKSkKKyAgICAgICAg
ICAgYXBwZW5kU3RyaW5nKHJlc3VsdCwgZHVtcEZyYW1lc0FzVGV4dCgoV2ViS2l0V2ViRnJhbWUq
KWNoaWxkcmVuLT5kYXRhKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3Rh
dGljIGdjaGFyKiBkdW1wUmVuZGVyVHJlZUFzVGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7
CisgICAgLy8gRklYTUU6IHRoaXMgd2lsbCByZXF1aXJlIG5ldyBXZWJLaXRHdGsgU1BJCisgICAg
cmV0dXJuIHN0cmR1cCgiZm9vIik7Cit9CisKK3ZvaWQgZHVtcCgpCit7CisgICAgaWYgKGR1bXBU
cmVlKSB7CisgICAgICAgIGNoYXIqIHJlc3VsdCA9IDA7CisgICAgICAgIAorICAgICAgICBib29s
IGR1bXBBc1RleHQgPSBsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEFzVGV4dCgpOworCS8vIEZJ
WE1FOiBBbHNvIGR1bXAgdGV4dCByZXN1bHMgYXMgdGV4dC4KKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXItPnNldER1bXBBc1RleHQoZHVtcEFzVGV4dCk7CisgICAgICAgIGlmIChsYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcEFzVGV4dCgpKQorICAgICAgICAgICAgcmVzdWx0ID0gZHVtcEZy
YW1lc0FzVGV4dChtYWluRnJhbWUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJvb2wg
aXNTVkdXM0NUZXN0ID0gKGdfc3RycnN0cihjdXJyZW50VGVzdCwgInN2Zy9XM0MtU1ZHLTEuMSIp
KTsKKyAgICAgICAgICAgIGlmIChpc1NWR1czQ1Rlc3QpCisJICAgICAgICBndGtfd2lkZ2V0X3Nl
dF9zaXplX3JlcXVlc3QoR1RLX1dJREdFVCh2aWV3KSwgNDgwLCAzNjApOworICAgICAgICAgICAg
ZWxzZSAKKwkgICAgICAgIGd0a193aWRnZXRfc2V0X3NpemVfcmVxdWVzdChHVEtfV0lER0VUKHZp
ZXcpLCBtYXhWaWV3V2lkdGgsIG1heFZpZXdIZWlnaHQpOworICAgICAgICAgICAgcmVzdWx0ID0g
ZHVtcFJlbmRlclRyZWVBc1RleHQobWFpbkZyYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghcmVzdWx0KSB7CisgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvck1lc3NhZ2U7CisgICAg
ICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1RleHQoKSkKKyAgICAgICAg
ICAgICAgICBlcnJvck1lc3NhZ2UgPSAiW2RvY3VtZW50RWxlbWVudCBpbm5lclRleHRdIjsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRE9NQXNXZWJBcmNo
aXZlKCkpCisgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gIltbbWFpbkZyYW1lIERPTURv
Y3VtZW50XSB3ZWJBcmNoaXZlXSI7CisgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRUZXN0Q29u
dHJvbGxlci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSgpKQorICAgICAgICAgICAgICAgIGVycm9y
TWVzc2FnZSA9ICJbW21haW5GcmFtZSBkYXRhU291cmNlXSB3ZWJBcmNoaXZlXSI7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gIlttYWluRnJhbWUgcmVu
ZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbl0iOworICAgICAgICAgICAgcHJpbnRmKCJF
UlJPUjogbmlsIHJlc3VsdCBmcm9tICVzIiwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHByaW50ZigiJXMiLCByZXN1bHQpOworCSAgICBnX2ZyZWUocmVzdWx0
KTsKKyAgICAgICAgICAgIGlmICghbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1RleHQoKSAm
JiAhbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBET01Bc1dlYkFyY2hpdmUoKSAmJiAhbGF5b3V0
VGVzdENvbnRyb2xsZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkKKyAgICAgICAgICAgICAg
ICBkdW1wRnJhbWVTY3JvbGxQb3NpdGlvbihtYWluRnJhbWUpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQmFja0ZvcndhcmRMaXN0KCkpIHsKKwkg
ICAgLy8gRklYTUU6IG5vdCBpbXBsZW1lbnRlZAorICAgICAgICB9CisKKyAgICAgICAgaWYgKHBy
aW50U2VwYXJhdG9ycykKKyAgICAgICAgICAgIHB1dHMoIiNFT0YiKTsKKyAgICB9CisKKyAgICBp
ZiAoZHVtcFBpeGVscykgeworICAgICAgICBpZiAoIWxheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
QXNUZXh0KCkgJiYgIWxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkg
JiYgIWxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wU291cmNlQXNXZWJBcmNoaXZlKCkpIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgZHVtcGluZyBwaXhlbHMKKwl9Cisg
ICAgfQorICAgIAorICAgIGZmbHVzaChzdGRvdXQpOworCisgICAgLy8gRklYTUU6IGNhbGwgZGlz
cGxheVdlYlZpZXcgaGVyZSB3aGVuIHdlIHN1cHBvcnQgLS1wYWludAorCisgICAgZG9uZSA9IHRy
dWU7Cit9CisKK3N0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3QgY2hhciAqcGF0aE9yVVJMKQorewor
ICAgIGdjaGFyKiB1cmwgPSBhdXRvY29ycmVjdFVSTChwYXRoT3JVUkwpOworICAgIAorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyID0gbmV3IExheW91dFRlc3RDb250cm9sbGVyKHRlc3RSZXBhaW50
RGVmYXVsdCwgcmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5RGVmYXVsdCk7CisKKyAgICBkb25lID0g
ZmFsc2U7CisKKyAgICBpZiAoc2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdhdGVzKHBhdGhPclVSTCkp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLT5zZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KHRydWUpOworCisgICAgaWYgKGN1cnJlbnRUZXN0KQorICAgICAgICBnX2ZyZWUoY3VycmVudFRl
c3QpOworICAgIGN1cnJlbnRUZXN0ID0gdXJsOworCisgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+
Y2xlYXIoKTsKKyAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5zZXRGcm96ZW4oZmFsc2UpOworCisg
ICAgd2Via2l0X3dlYl92aWV3X29wZW4odmlldywgdXJsKTsKKworICAgIHdoaWxlICghZG9uZSkK
KyAgICAgICAgZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uKE5VTEwsIHRydWUpOworCisgICAgV29y
a1F1ZXVlOjpzaGFyZWQoKS0+Y2xlYXIoKTsKKworICAgIGRlbGV0ZSBsYXlvdXRUZXN0Q29udHJv
bGxlcjsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlciA9IDA7Cit9CisKK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pCit7CisKKyAgICBzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsK
KyAgICAgICAgeyJob3Jpem9udGFsLXN3ZWVwIiwgbm9fYXJndW1lbnQsICZyZXBhaW50U3dlZXBI
b3Jpem9udGFsbHlEZWZhdWx0LCB0cnVlfSwKKyAgICAgICAgeyJub3RyZWUiLCBub19hcmd1bWVu
dCwgJmR1bXBUcmVlLCBmYWxzZX0sCisgICAgICAgIHsicGl4ZWwtdGVzdHMiLCBub19hcmd1bWVu
dCwgJmR1bXBQaXhlbHMsIHRydWV9LAorICAgICAgICB7InJlcGFpbnQiLCBub19hcmd1bWVudCwg
JnRlc3RSZXBhaW50RGVmYXVsdCwgdHJ1ZX0sCisgICAgICAgIHsidHJlZSIsIG5vX2FyZ3VtZW50
LCAmZHVtcFRyZWUsIHRydWV9LAorICAgICAgICB7TlVMTCwgMCwgTlVMTCwgMH0KKyAgICB9Owor
ICAgIAorICAgIGludCBvcHRpb247CisgICAgd2hpbGUgKChvcHRpb24gPSBnZXRvcHRfbG9uZyhh
cmdjLCAoY2hhciAqIGNvbnN0ICopYXJndiwgIiIsIG9wdGlvbnMsIE5VTEwpKSAhPSAtMSkKKyAg
ICAgICAgc3dpdGNoIChvcHRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgJz8nOiAgIC8vIHVua25v
d24gb3IgYW1iaWd1b3VzIG9wdGlvbgorICAgICAgICAgICAgY2FzZSAnOic6ICAgLy8gbWlzc2lu
ZyBhcmd1bWVudAorICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgIHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92
aWV3X25ldygpKTsKKyAgICBtYWluRnJhbWUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJh
bWUodmlldyk7CisKKyAgICBpZiAoYXJnYyA9PSBvcHRpbmQrMSAmJiBzdHJjbXAoYXJndltvcHRp
bmRdLCAiLSIpID09IDApIHsKKyAgICAgICAgY2hhciBmaWxlbmFtZUJ1ZmZlclsyMDQ4XTsKKyAg
ICAgICAgcHJpbnRTZXBhcmF0b3JzID0gdHJ1ZTsKKyAgICAgICAgd2hpbGUgKGZnZXRzKGZpbGVu
YW1lQnVmZmVyLCBzaXplb2YoZmlsZW5hbWVCdWZmZXIpLCBzdGRpbikpIHsKKyAgICAgICAgICAg
IGNoYXIgKm5ld0xpbmVDaGFyYWN0ZXIgPSBzdHJjaHIoZmlsZW5hbWVCdWZmZXIsICdcbicpOwor
ICAgICAgICAgICAgaWYgKG5ld0xpbmVDaGFyYWN0ZXIpCisgICAgICAgICAgICAgICAgKm5ld0xp
bmVDaGFyYWN0ZXIgPSAnXDAnOworCisgICAgICAgICAgICBpZiAoc3RybGVuKGZpbGVuYW1lQnVm
ZmVyKSA9PSAwKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBydW5U
ZXN0KGZpbGVuYW1lQnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHBy
aW50U2VwYXJhdG9ycyA9IChvcHRpbmQgPCBhcmdjLTEgfHwgKGR1bXBQaXhlbHMgJiYgZHVtcFRy
ZWUpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IG9wdGluZDsgaSAhPSBhcmdjOyArK2kpCisgICAg
ICAgICAgICBydW5UZXN0KGFyZ3ZbaV0pOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJl
ZS5wcm8gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUucHJv
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZmU1ZjcKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUucHJv
CkBAIC0wLDAgKzEsMTkgQEAKK1RFTVBMQVRFID0gYXBwCitTT1VSQ0VTICs9IER1bXBSZW5kZXJU
cmVlLmNwcCBcCisgICAgICAgICAgIC4uL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBcCisgICAg
ICAgICAgIC4uL0dDQ29udHJvbGxlci5jcHAgXAorICAgICAgICAgICAuLi9Xb3JrUXVldWUuY3Bw
IFwKKwkgICBHQ0NvbnRyb2xsZXJHdGsuY3BwIFwKKwkgICBMYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAgXAorCSAgIFdvcmtRdWV1ZUl0ZW1HdGsuY3BwIFwKKworQ09ORklHIC09IGFwcF9idW5k
bGUKKworQkFTRV9ESVIgPSAkJFBXRC8uLi8uLi8uLgorCitpbmNsdWRlKC4uLy4uLy4uL1dlYktp
dC5wcmkpCisKK0lOQ0xVREVQQVRIICs9IFwKKyAgICAkJEJBU0VfRElSL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlCisKK1FNQUtFX1JQQVRIRElSICs9ICQkT1VUUFVUX0RJUi9saWIKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZUd0ay5o
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlR3RrLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI2OTBlMwotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZUd0ay5oCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVy
aWNAd2Via2l0Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIER1bXBSZW5kZXJUcmVlR3RrX2gKKyNkZWZpbmUgRHVt
cFJlbmRlclRyZWVHdGtfaAorCisjaW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgorCitleHRlcm4g
V2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKKworI2VuZGlmIC8vIER1bXBSZW5kZXJUcmVlR3Rr
X2ggCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvR0NDb250cm9s
bGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9HQ0NvbnRyb2xsZXJH
dGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZmMzMTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvR0NDb250cm9sbGVy
R3RrLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMg
U2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgorCit2
b2lkIEdDQ29udHJvbGxlcjo6Y29sbGVjdCgpIGNvbnN0Cit7Cit9CisKK3ZvaWQgR0NDb250cm9s
bGVyOjpjb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdAor
eworfQorCitzaXplX3QgR0NDb250cm9sbGVyOjpnZXRKU09iamVjdENvdW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjI0NjM2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC0wLDAgKzEs
MTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiRHVt
cFJlbmRlclRyZWUuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKyNpbmNsdWRlICJXb3JrUXVl
dWVJdGVtLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorCitMYXlvdXRUZXN0Q29udHJvbGxl
cjo6fkxheW91dFRlc3RDb250cm9sbGVyKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9
CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZERpc2FsbG93ZWRVUkwoSlNTdHJpbmdS
ZWYgdXJsKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6Y2xlYXJCYWNrRm9yd2FyZExpc3QoKQoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKK30KKworSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNvcHlEZWNvZGVk
SG9zdE5hbWUoSlNTdHJpbmdSZWYgbmFtZSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cisg
ICAgcmV0dXJuIDA7Cit9CisKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpjb3B5
RW5jb2RlZEhvc3ROYW1lKEpTU3RyaW5nUmVmIG5hbWUpCit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudAorICAgIHJldHVybiAwOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkaXNw
bGF5KCkKK3sKKyAgICBkaXNwbGF5V2ViVmlldygpOworfQorCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjprZWVwV2ViSGlzdG9yeSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQor
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKCkKK3sKKyAgICAvLyBGSVhN
RTogVGhlIGZyYW1lIG1pZ2h0IG5vdCBiZSBmaW5pc2hlZCBsb2FkaW5nIHlldAorICAgIGlmICht
X3dhaXRUb0R1bXAgJiYgIVdvcmtRdWV1ZTo6c2hhcmVkKCktPmNvdW50KCkpCisgICAgICAgIGR1
bXAoKTsKKyAgICBtX3dhaXRUb0R1bXAgPSBmYWxzZTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cXVldWVCYWNrTmF2aWdhdGlvbihpbnQgaG93RmFyQmFjaykKK3sKKyAgICBXb3Jr
UXVldWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcgQmFja0l0ZW0oaG93RmFyQmFjaykpOworfQorCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKGludCBob3dG
YXJGb3J3YXJkKQoreworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBGb3J3YXJk
SXRlbShob3dGYXJGb3J3YXJkKSk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1
ZXVlTG9hZChKU1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVmIHRhcmdldCkKK3sKKyAgICAvLyBG
SVhNRTogV2UgbmVlZCB0byByZXNvbHZlIHJlbGF0aXZlIFVSTHMgaGVyZQorICAgIFdvcmtRdWV1
ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkSXRlbSh1cmwsIHRhcmdldCkpOworfQorCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZVJlbG9hZCgpCit7CisgICAgV29ya1F1ZXVlOjpz
aGFyZWQoKS0+cXVldWUobmV3IFJlbG9hZEl0ZW0pOworfQorCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpxdWV1ZVNjcmlwdChKU1N0cmluZ1JlZiBzY3JpcHQpCit7CisgICAgV29ya1F1ZXVl
OjpzaGFyZWQoKS0+cXVldWUobmV3IFNjcmlwdEl0ZW0oc2NyaXB0KSk7Cit9CisKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEFjY2VwdHNFZGl0aW5nKGJvb2wgbmV3QWNjZXB0c0VkaXRp
bmcpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGZsYWcpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUYWJLZXlDeWNsZXNU
aHJvdWdoRWxlbWVudHMoYm9vbCBjeWNsZXMpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAor
fQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmls
aXR5TW9kZShib29sIGZsYWcpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFn
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
V2luZG93SXNLZXkoYm9vbCB3aW5kb3dJc0tleSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFdhaXRUb0R1bXAoYm9vbCB3YWl0
VW50aWxEb25lKQoreworICAgIG1fd2FpdFRvRHVtcCA9IHdhaXRVbnRpbERvbmU7CisgICAgLy8g
RklYTUU6IFNob3VsZCBoYXZlIHNvbWUgc29ydCBvZiB3YXRjaGRvZyB0aW1lciBoZXJlCit9CisK
K2ludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2luZG93Q291bnQoKQoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorfQorCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvV29ya1F1ZXVlSXRlbUd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvV29ya1F1ZXVlSXRlbUd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOTI1NDFmYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJXb3Jr
UXVldWVJdGVtLmgiCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Vi
a2l0d2ViZnJhbWUuaCIKKyNpbmNsdWRlICJ3ZWJraXRuZXR3b3JrcmVxdWVzdC5oIgorCisjaW5j
bHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmlu
Z1JlZi5oPgorLy8jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZHTGliLmg+Cisv
LyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZXRhaW5QdHIuaD4KKy8qCisjaW5jbHVkZSA8V2Vi
S2l0L1dlYkJhY2tGb3J3YXJkTGlzdC5oPgorI2luY2x1ZGUgPFdlYktpdC9XZWJGcmFtZS5oPgor
I2luY2x1ZGUgPFdlYktpdC9XZWJTY3JpcHRPYmplY3QuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV2Vi
Vmlldy5oPgorKi8KKy8vIFJldHVybnMgYSBuZXdseSBhbGxvY2F0ZWQgVVRGLTggY2hhcmFjdGVy
IGJ1ZmZlciB3aGljaCBtdXN0IGJlIGZyZWVkIHdpdGggZ19mcmVlKCkKK3N0YXRpYyBnY2hhciog
SlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoSlNTdHJpbmdSZWYganNTdHJpbmcpCit7CisgICAgc2l6
ZV90IGRhdGFTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGpzU3RyaW5n
KTsKKyAgICBnY2hhciogdXRmOCA9IChnY2hhciopZ19tYWxsb2MoZGF0YVNpemUpOworICAgIEpT
U3RyaW5nR2V0VVRGOENTdHJpbmcoanNTdHJpbmcsIHV0ZjgsIGRhdGFTaXplKTsKKworICAgIHJl
dHVybiB1dGY4OworfQorCit2b2lkIExvYWRJdGVtOjppbnZva2UoKSBjb25zdAoreworICAgIGdj
aGFyKiB0YXJnZXRTdHJpbmcgPSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyh0YXJnZXQoKSk7CisK
KyAgICBXZWJLaXRXZWJGcmFtZSogdGFyZ2V0RnJhbWU7CisgICAgaWYgKCFzdHJsZW4odGFyZ2V0
U3RyaW5nKSkKKyAgICAgICAgdGFyZ2V0RnJhbWUgPSBtYWluRnJhbWU7CisgICAgZWxzZQorICAg
ICAgICB0YXJnZXRGcmFtZSA9IHdlYmtpdF93ZWJfZnJhbWVfZmluZF9mcmFtZShtYWluRnJhbWUs
IHRhcmdldFN0cmluZyk7CisgICAgZ19mcmVlKHRhcmdldFN0cmluZyk7CisKKyAgICBnY2hhciog
dXJsU3RyaW5nID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcodXJsKCkpOworICAgIFdlYktpdE5l
dHdvcmtSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcodXJsU3Ry
aW5nKTsKKyAgICBnX2ZyZWUodXJsU3RyaW5nKTsKKyAgICB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRf
cmVxdWVzdCh0YXJnZXRGcmFtZSwgcmVxdWVzdCk7CisgICAgZ19vYmplY3RfdW5yZWYocmVxdWVz
dCk7Cit9CisKK3ZvaWQgUmVsb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICAvLyBUT0RP
OiBXaHkgbm90IGp1c3QgcmVsb2FkIHRoZSBmcmFtZT8KKyAgICBXZWJLaXRXZWJWaWV3KiBwYWdl
ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKKyAgICB3ZWJraXRf
d2ViX3ZpZXdfcmVsb2FkKHBhZ2UpOworfQorCit2b2lkIFNjcmlwdEl0ZW06Omludm9rZSgpIGNv
bnN0Cit7CisgICAgV2ViS2l0V2ViVmlldyogcGFnZSA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dl
Yl92aWV3KG1haW5GcmFtZSk7CisgICAgZ2NoYXIqIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5nQ29w
eVVURjhDU3RyaW5nKHNjcmlwdCgpKTsKKyAgICAvLyBUT0RPOiBkb2VzIHRoaXMgcmV0dXJuIHNv
bWV0aGluZyB3ZSBuZWVkIHRvIGZyZWU/IElmIG5vdCwgd2h5IG5vdD8KKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfZXhlY3V0ZV9zY3JpcHQocGFnZSwgc2NyaXB0U3RyaW5nKTsKKyAgICBnX2ZyZWUoc2Ny
aXB0U3RyaW5nKTsKK30KKwordm9pZCBCYWNrRm9yd2FyZEl0ZW06Omludm9rZSgpIGNvbnN0Cit7
CisgICAgV2ViS2l0V2ViVmlldyogcGFnZSA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3
KG1haW5GcmFtZSk7CisgICAgaWYgKG1faG93RmFyID09IDEpCisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19nb19mb3J3YXJkKHBhZ2UpOworICAgIGVsc2UgaWYgKG1faG93RmFyID09IC0xKQorICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFja3dhcmQocGFnZSk7CisgICAgZWxzZSB7CisgICAg
ICAgIGdfd2FybmluZygiQ2FuJ3QgZ28gYmFja3dhcmQvZm9yd2FyZFxuIik7CisgICAgICAgIC8v
bm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgLy8gVE9ETworICAgICAgICAvL1dlYkJhY2tGb3J3
YXJkTGlzdCAqYmZMaXN0ID0gW1ttYWluRnJhbWUgd2ViVmlld10gYmFja0ZvcndhcmRMaXN0XTsK
KyAgICAgICAgLy9bW21haW5GcmFtZSB3ZWJWaWV3XSBnb1RvQmFja0ZvcndhcmRJdGVtOltiZkxp
c3QgaXRlbUF0SW5kZXg6bV9ob3dGYXJdXTsKKyAgICAgICAgLy93ZWJraXRfd2ViX3ZpZXdfZ29f
dG8ocGFnZSwgbV9ob3dGYXIpOworICAgICAgICAvL3dlYmtpdF93ZWJfdmlld19nb190b19pdGVt
KHBhZ2UsIHdlYmtpdF93ZWJfdmlld19nZXRfaXRlbShtX2hvd0ZhcikpOworICAgIH0KK30KLS0g
CjEuNS4zLjQKCg==
</data>
<flag name="review"
          id="7592"
          type_id="1"
          status="+"
          setter="alp"
    />
          </attachment>
      

    </bug>

</bugzilla>